@wowok/agent-mcp 3.2.6 → 3.2.7

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 (222) hide show
  1. package/dist/chain-semantics/field-capability.js +1 -1
  2. package/dist/chain-semantics/freeze-map.js +1 -1
  3. package/dist/chain-semantics/object-graph.js +1 -1
  4. package/dist/communication/wts-attestation.js +1 -1
  5. package/dist/composition/audit.js +1 -1
  6. package/dist/composition/compile.d.ts +3 -2
  7. package/dist/composition/compile.js +1 -1
  8. package/dist/composition/inflight.d.ts +17 -0
  9. package/dist/composition/inflight.js +1 -0
  10. package/dist/config/config-audit.spec.js +1 -1
  11. package/dist/customer/account-events.js +1 -1
  12. package/dist/customer/order-monitor.js +1 -1
  13. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  14. package/dist/evaluation/engine.js +1 -1
  15. package/dist/experience/realtime-feedback.js +1 -1
  16. package/dist/extensions/constraint-registry.d.ts +6 -1
  17. package/dist/extensions/constraint-registry.js +1 -1
  18. package/dist/extensions/index.d.ts +1 -1
  19. package/dist/extensions/index.js +1 -1
  20. package/dist/extensions/industry-pack.d.ts +5 -0
  21. package/dist/extensions/industry-pack.js +1 -1
  22. package/dist/extensions/mode-evaluator.d.ts +3 -2
  23. package/dist/extensions/mode-evaluator.js +1 -1
  24. package/dist/extensions/modes.js +1 -1
  25. package/dist/graph/onchain/analyze.js +1 -1
  26. package/dist/graph/onchain/analyze.spec.js +1 -1
  27. package/dist/graph/onchain/anti-cheat.d.ts +32 -2
  28. package/dist/graph/onchain/anti-cheat.js +1 -1
  29. package/dist/graph/onchain/anti-cheat.spec.js +1 -1
  30. package/dist/graph/onchain/expand.js +1 -1
  31. package/dist/graph/onchain/exposure.js +1 -1
  32. package/dist/graph/onchain/extract.js +1 -1
  33. package/dist/graph/onchain/graph-policy.spec.js +1 -1
  34. package/dist/graph/onchain/index.d.ts +2 -2
  35. package/dist/graph/onchain/index.js +1 -1
  36. package/dist/graph/onchain/project-relationship.js +1 -1
  37. package/dist/graph/onchain/table-ledger.spec.js +1 -1
  38. package/dist/graph/onchain/types.d.ts +3 -0
  39. package/dist/harness/recover.js +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/knowledge/arbitration-venue-order.d.ts +25 -0
  42. package/dist/knowledge/arbitration-venue-order.js +1 -0
  43. package/dist/knowledge/audit-rules.d.ts +10 -0
  44. package/dist/knowledge/audit-rules.js +1 -1
  45. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
  46. package/dist/knowledge/baselines/rules/graph.json +81 -0
  47. package/dist/knowledge/baselines/rules/machine.json +3 -3
  48. package/dist/knowledge/baselines/rules/plan.json +80 -2
  49. package/dist/knowledge/builtin-templates.d.ts +17 -2
  50. package/dist/knowledge/builtin-templates.js +1 -1
  51. package/dist/knowledge/discount-threshold.js +1 -1
  52. package/dist/knowledge/event-semantics.js +1 -1
  53. package/dist/knowledge/getting-started.js +1 -1
  54. package/dist/knowledge/guard-bindings.js +1 -1
  55. package/dist/knowledge/guard-design-patterns.js +1 -1
  56. package/dist/knowledge/guard-field-cognition.js +1 -1
  57. package/dist/knowledge/guard-ledger.js +1 -1
  58. package/dist/knowledge/guard-lint.d.ts +1 -0
  59. package/dist/knowledge/guard-lint.js +1 -1
  60. package/dist/knowledge/guard-node-gates.d.ts +4 -0
  61. package/dist/knowledge/guard-node-gates.js +1 -0
  62. package/dist/knowledge/guard-puzzle.js +1 -1
  63. package/dist/knowledge/guard-risk.js +1 -1
  64. package/dist/knowledge/guard-submission-prompt.d.ts +1 -0
  65. package/dist/knowledge/guard-submission-prompt.js +1 -1
  66. package/dist/knowledge/guard-templates.d.ts +2 -1
  67. package/dist/knowledge/guard-templates.js +1 -1
  68. package/dist/knowledge/guard-translation.js +1 -1
  69. package/dist/knowledge/index.d.ts +2 -2
  70. package/dist/knowledge/index.js +1 -1
  71. package/dist/knowledge/industry-registry.js +1 -1
  72. package/dist/knowledge/jsonrpc-enum.js +1 -1
  73. package/dist/knowledge/machine-topology.d.ts +6 -0
  74. package/dist/knowledge/machine-topology.js +1 -1
  75. package/dist/knowledge/reputation-rules.d.ts +3 -9
  76. package/dist/knowledge/reputation-rules.js +1 -1
  77. package/dist/knowledge/safety-rules.d.ts +10 -1
  78. package/dist/knowledge/safety-rules.js +1 -1
  79. package/dist/knowledge/scenario-modes.js +1 -1
  80. package/dist/knowledge/settlement-semantics.d.ts +1 -0
  81. package/dist/knowledge/settlement-semantics.js +1 -0
  82. package/dist/knowledge/template-loader.d.ts +22 -0
  83. package/dist/knowledge/template-loader.js +1 -1
  84. package/dist/knowledge/template-registry.js +1 -1
  85. package/dist/knowledge/template-scanner.d.ts +14 -0
  86. package/dist/knowledge/template-scanner.js +1 -1
  87. package/dist/knowledge/tools-reference.js +1 -1
  88. package/dist/knowledge/workflow-guidance.d.ts +1 -0
  89. package/dist/knowledge/workflow-guidance.js +1 -1
  90. package/dist/monitor/MonitorLoop.js +1 -1
  91. package/dist/participation/allocation-advice.js +1 -1
  92. package/dist/participation/customer-interest.js +1 -1
  93. package/dist/participation/radar-core.d.ts +6 -1
  94. package/dist/participation/radar-core.js +1 -1
  95. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  96. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  97. package/dist/playbooks/service-build/merchant-guide.d.ts +38 -15
  98. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  99. package/dist/playbooks/service-build/migration-planner.d.ts +7 -0
  100. package/dist/playbooks/service-build/migration-planner.js +1 -1
  101. package/dist/playbooks/service-build/object-panorama.js +1 -1
  102. package/dist/playbooks/service-build/participation-radar.js +1 -1
  103. package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
  104. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  105. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  106. package/dist/playbooks/service-build/risk-aggregator.d.ts +1 -1
  107. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  108. package/dist/playbooks/service-build/service-panorama.js +1 -1
  109. package/dist/playbooks/service-build/service-quote.js +1 -1
  110. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  111. package/dist/relationship/derivation.d.ts +1 -0
  112. package/dist/review/index.js +1 -1
  113. package/dist/runtime/instance-registry.d.ts +8 -0
  114. package/dist/runtime/instance-registry.js +1 -0
  115. package/dist/safety/confirm-gate.js +1 -1
  116. package/dist/schema/benchmark-migration/index.d.ts +14 -0
  117. package/dist/schema/benchmark-migration/index.js +1 -1
  118. package/dist/schema/call/arbitration.js +1 -1
  119. package/dist/schema/call/base.d.ts +109 -0
  120. package/dist/schema/call/base.js +1 -1
  121. package/dist/schema/call/bridge.d.ts +14 -0
  122. package/dist/schema/call/contact.js +1 -1
  123. package/dist/schema/call/error-codes.d.ts +1 -1
  124. package/dist/schema/call/error-codes.js +1 -1
  125. package/dist/schema/call/guard.d.ts +7 -0
  126. package/dist/schema/call/guard.js +1 -1
  127. package/dist/schema/call/handler.js +1 -1
  128. package/dist/schema/call/machine.d.ts +7 -0
  129. package/dist/schema/call/machine.js +1 -1
  130. package/dist/schema/call/payment.js +1 -1
  131. package/dist/schema/call/permission-handler.js +1 -1
  132. package/dist/schema/call/progress.d.ts +46 -0
  133. package/dist/schema/call/progress.js +1 -1
  134. package/dist/schema/call/semantic.js +1 -1
  135. package/dist/schema/call/service.d.ts +8 -8
  136. package/dist/schema/call/service.js +1 -1
  137. package/dist/schema/common/index.js +1 -1
  138. package/dist/schema/goal/index.d.ts +11 -0
  139. package/dist/schema/goal/planning.d.ts +32 -1
  140. package/dist/schema/goal/planning.js +1 -1
  141. package/dist/schema/industry-pack/index.d.ts +40 -0
  142. package/dist/schema/industry-pack/index.js +1 -1
  143. package/dist/schema/keeper/index.d.ts +13 -0
  144. package/dist/schema/local/index.d.ts +75 -0
  145. package/dist/schema/local/index.js +1 -1
  146. package/dist/schema/messenger/index.d.ts +17 -0
  147. package/dist/schema/messenger/index.js +1 -1
  148. package/dist/schema/operations.d.ts +39 -2
  149. package/dist/schema/operations.js +1 -1
  150. package/dist/schema/query/bi.d.ts +64 -0
  151. package/dist/schema/query/bi.js +1 -1
  152. package/dist/schema/query/index.d.ts +94 -0
  153. package/dist/schema/query/index.js +1 -1
  154. package/dist/schema/schema-version.d.ts +1 -1
  155. package/dist/schema/schema-version.js +1 -1
  156. package/dist/schema/utils/permission-machine-check.js +1 -1
  157. package/dist/schema/workspace/index.d.ts +1 -1
  158. package/dist/schema-query-impl/index.js +1 -1
  159. package/dist/schemas/account_operation.output.json +45 -0
  160. package/dist/schemas/benchmark_migration_operation.output.json +24 -4
  161. package/dist/schemas/benchmark_migration_operation.schema.json +70 -0
  162. package/dist/schemas/bridge_operation.output.json +45 -0
  163. package/dist/schemas/goal_operation.schema.json +78 -0
  164. package/dist/schemas/guard2file.output.json +6 -1
  165. package/dist/schemas/guard2file.schema.json +9 -0
  166. package/dist/schemas/index.json +1 -1
  167. package/dist/schemas/industry_pack_operation.output.json +91 -0
  168. package/dist/schemas/industry_pack_operation.schema.json +19 -1
  169. package/dist/schemas/keeper_operation.output.json +44 -0
  170. package/dist/schemas/local_cache_operation.output.json +45 -0
  171. package/dist/schemas/local_history_operation.output.json +45 -0
  172. package/dist/schemas/local_info_operation.output.json +45 -0
  173. package/dist/schemas/local_mark_operation.output.json +45 -0
  174. package/dist/schemas/machineNode2file.output.json +6 -1
  175. package/dist/schemas/machineNode2file.schema.json +9 -0
  176. package/dist/schemas/messenger_operation.output.json +52 -0
  177. package/dist/schemas/monitor_events.output.json +44 -0
  178. package/dist/schemas/monitor_subscription.output.json +44 -0
  179. package/dist/schemas/onchain_events.output.json +44 -0
  180. package/dist/schemas/onchain_operations.output.json +133 -0
  181. package/dist/schemas/onchain_operations.schema.json +73 -16
  182. package/dist/schemas/onchain_operations_arbitration.schema.json +2 -1
  183. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  184. package/dist/schemas/onchain_operations_guard.schema.json +2 -2
  185. package/dist/schemas/onchain_operations_machine.schema.json +2 -2
  186. package/dist/schemas/onchain_operations_payment.schema.json +1 -1
  187. package/dist/schemas/onchain_operations_progress.schema.json +57 -0
  188. package/dist/schemas/onchain_operations_service.schema.json +7 -8
  189. package/dist/schemas/onchain_table_data.output.json +81 -13
  190. package/dist/schemas/onchain_table_data.schema.json +21 -21
  191. package/dist/schemas/query_toolkit.output.json +218 -9
  192. package/dist/schemas/query_toolkit.schema.json +50 -26
  193. package/dist/schemas/wowok_buildin_info.output.json +80 -1
  194. package/dist/schemas/wowok_buildin_info.schema.json +1 -1
  195. package/dist/tools/handlers/benchmark-migration.d.ts +1 -0
  196. package/dist/tools/handlers/benchmark-migration.js +1 -1
  197. package/dist/tools/handlers/config.js +1 -1
  198. package/dist/tools/handlers/file-export.js +1 -1
  199. package/dist/tools/handlers/industry-pack.js +1 -1
  200. package/dist/tools/handlers/messenger.js +1 -1
  201. package/dist/tools/handlers/onchain.js +1 -1
  202. package/dist/tools/handlers/review-chain.d.ts +22 -0
  203. package/dist/tools/handlers/review-chain.js +1 -0
  204. package/dist/tools/registry/agent.js +1 -1
  205. package/dist/tools/registry/business.js +1 -1
  206. package/dist/tools/registry/config.js +1 -1
  207. package/dist/tools/registry/evaluation.js +1 -1
  208. package/dist/tools/registry/files.js +1 -1
  209. package/dist/tools/registry/identity.js +1 -1
  210. package/dist/tools/registry/local.js +1 -1
  211. package/dist/tools/registry/messenger.js +1 -1
  212. package/dist/tools/registry/monitor.js +1 -1
  213. package/dist/tools/registry/onchain.js +1 -1
  214. package/dist/tools/registry/query.js +1 -1
  215. package/dist/tools/rules-hook.js +1 -1
  216. package/dist/tools/runtime-health.d.ts +10 -0
  217. package/dist/tools/runtime-health.js +1 -0
  218. package/dist/tools/upgrade-check.d.ts +10 -1
  219. package/dist/tools/upgrade-check.js +1 -1
  220. package/dist/tools/wrap.d.ts +3 -0
  221. package/dist/tools/wrap.js +1 -1
  222. package/package.json +2 -2
@@ -1 +1 @@
1
- import{MAX_SUBMISSION_SIZE_PASSPORT,WOW_SYSTEM_SINGLETONS}from'@wowok/wowok';export function checkPuzzleCompleteness(a){const b={'intent':isIntentComplete(a['intent']),'binding':isBindingComplete(a['binding']),'data_sources':isDataSourcesComplete(a['data_sources']),'query':isQueryComplete(a['queries']),'logic':isLogicComplete(a['logic']),'constraints':isConstraintsComplete(a['constraints'])},c=Object['keys'](b)['filter'](g=>!b[g]),d=[];!b['intent']&&d['push']('A.\x20Intent:\x20protected\x20action,\x20validation\x20rule,\x20or\x20failure\x20conditions\x20not\x20clarified');!b['binding']&&d['push']('B.\x20Binding:\x20Host\x20Object,\x20binding\x20field,\x20or\x20circular\x20reference\x20mode\x20not\x20determined');!b['data_sources']&&d['push']('C.\x20Data\x20sources:\x20data\x20sources\x20not\x20declared\x20by\x204\x20classifications\x20(on-chain\x20constant\x20/\x20witness-derived\x20/\x20submitted\x20object\x20/\x20system\x20context)');!b['query']&&d['push']('D.\x20Query:\x20query\x20instruction\x20not\x20determined\x20(if\x20the\x20Guard\x20needs\x20to\x20query\x20on-chain\x20data)');!b['logic']&&d['push']('E.\x20Logic:\x20computation\x20tree\x20root\x20or\x20rely\x20composition\x20not\x20designed');!b['constraints']&&d['push']('F.\x20Constraints:\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checks\x20not\x20completed');const e=c['length']===0x0,f=recommendNextStep(a,c);return{'dimensions':b,'missing':c,'missing_details':d,'complete':e,'next_step':f};}function isIntentComplete(a){return!!a&&!!a['action']&&!!a['rule_sentence']&&a['failure_conditions']['length']>0x0;}function isBindingComplete(a){return!!a&&!!a['host_object']&&!!a['binding_field'];}function isDataSourcesComplete(a){if(!a)return![];const b=a['on_chain_constants']['length']>0x0,c=a['witness_derived']['length']>0x0,d=a['submitted_objects']['length']>0x0,e=a['submitted_values']['length']>0x0,f=a['system_contexts']['length']>0x0;if(!b&&!c&&!d&&!e&&!f)return![];const g=a['submitted_objects']['some'](h=>!h['binding_constraint']);if(g)return![];return!![];}function isQueryComplete(a){return!![];}function isLogicComplete(a){return!!a&&!!a['root']&&a['root']['return_type']==='Bool';}function isConstraintsComplete(a){if(!a)return![];return Object['values'](a)['every'](b=>b===!![]);}function recommendNextStep(a,b){if(b['includes']('intent'))return{'round':'R1','action':'Capture\x20validation\x20intent','questions':['What\x20action\x20do\x20you\x20want\x20to\x20protect?\x20(buy/forward/claim/vote/dispute/write/allocate)','Describe\x20the\x20validation\x20rule\x20in\x20one\x20sentence','List\x20the\x20conditions\x20under\x20which\x20the\x20Guard\x20should\x20FAIL']};if(b['includes']('binding'))return{'round':'R5','action':'Determine\x20binding\x20target','questions':['Which\x20Host\x20Object\x20will\x20the\x20Guard\x20bind\x20to?\x20(Service/Machine/Arbitration/Reward/Repository)','Which\x20field\x20will\x20it\x20bind\x20to?\x20(buy_guard/order_allocators/Forward.guard/...)','Does\x20the\x20Guard\x20need\x20to\x20reference\x20the\x20Host\x20Object?\x20(circular\x20reference\x20mode)']};if(b['includes']('data_sources'))return{'round':'R2','action':'Declare\x20data\x20sources\x20by\x204\x20classifications','questions':['Type1\x20(on-chain\x20constant):\x20Which\x20already-published\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?\x20(Service/Machine/Reward\x20addresses)','Type2\x20(witness-derived):\x20Do\x20you\x20need\x20to\x20derive\x20Progress/Machine/Service\x20from\x20Order/Arb?\x20(choose\x20witness\x20100-108)','Type3\x20(submitted\x20object):\x20Which\x20object\x20addresses\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(Order/Reward/Progress)\x20—\x20constraint\x20rules\x20must\x20be\x20designed','Type3\x20(submitted\x20value):\x20Which\x20scalar\x20values\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(amount/weight/node\x20name)','Type4\x20(system\x20context):\x20Do\x20you\x20need\x20Signer\x20(identity)\x20/\x20Clock\x20(time)\x20/\x20Guard\x20(self-reference)?','Do\x20you\x20need\x20to\x20query\x20EntityRegistrar(0xaab)\x20or\x20EntityLinker(0xaaa)?']};if(b['includes']('query'))return{'round':'R3','action':'Design\x20query\x20nodes','questions':['Which\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?','Which\x20instruction\x20ID\x20does\x20each\x20query\x20use?\x20(look\x20up\x20from\x20GUARDQUERY)','Do\x20you\x20need\x20convert_witness\x20to\x20convert\x20objects?\x20(linked\x20to\x20Type2\x20declaration)']};if(b['includes']('logic'))return{'round':'R3','action':'Design\x20computation\x20tree','questions':['What\x20is\x20the\x20root\x20node?\x20(must\x20return\x20Bool)','Which\x20data\x20source\x20nodes\x20are\x20there?\x20(by\x204\x20classifications:\x20identifier/context/query)','Which\x20intermediate\x20conversion\x20nodes\x20are\x20there?\x20(calc_*/convert_*/vec_*)','Do\x20you\x20need\x20rely\x20to\x20compose\x20with\x20other\x20Guards?']};if(b['includes']('constraints'))return{'round':'R6','action':'Pre-creation\x20review','questions':['Run\x20the\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checklist']};return{'round':'R7','action':'Prepare\x20for\x20on-chain\x20creation','questions':['All\x20dimensions\x20are\x20complete;\x20ready\x20to\x20generate\x20the\x20semantic\x20confirmation\x20text']};}export function generateConfirmationText(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic'])return'[Puzzle\x20incomplete]\x20Cannot\x20generate\x20confirmation\x20text;\x20please\x20complete\x20all\x20dimensions\x20first';const b=[];b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Guard\x20Semantic\x20Confirmation\x20Report\x20(User\x20Review\x20Edition)'),b['push']('═══════════════════════════════════════════════════════'),b['push'](''),b['push']('[Intent]'),b['push']('Protected\x20action:\x20'+a['intent']['action']),b['push']('Validation\x20rule:\x20'+a['intent']['rule_sentence']),b['push']('Failure\x20conditions:'),a['intent']['failure_conditions']['forEach']((d,e)=>{b['push']('\x20\x20'+(e+0x1)+'.\x20'+d);}),b['push'](''),b['push']('[Binding]'),b['push']('Host\x20Object:\x20'+a['binding']['host_object']);a['binding']['host_object_name']&&b['push']('Host\x20Object\x20name:\x20'+a['binding']['host_object_name']);b['push']('Binding\x20field:\x20'+a['binding']['binding_field']),b['push']('Circular\x20reference:\x20'+(a['binding']['circular_reference']?'Yes\x20(Guard\x20references\x20Host\x20Object)':'No')),b['push']('Host\x20Object\x20state:\x20'+a['binding']['host_object_state']),b['push'](''),b['push']('[Data\x20sources\x20(4\x20classifications)]'),printDataSources(b,a['data_sources']),b['push']('');a['queries']&&a['queries']['length']>0x0&&(b['push']('[Query\x20instructions]'),b['push']('┌──────┬──────────────────────────┬────────────┬──────────┬──────────┐'),b['push']('│\x20ID\x20\x20\x20│\x20Query\x20instruction\x20\x20\x20\x20\x20\x20\x20\x20│\x20Target\x20obj\x20│\x20Params\x20\x20\x20│\x20Return\x20\x20\x20│'),b['push']('├──────┼──────────────────────────┼────────────┼──────────┼──────────┤'),a['queries']['forEach'](d=>{const e=String(d['query_id'])['padEnd'](0x4),f=d['query_name']['length']>0x18?d['query_name']['slice'](0x0,0x17)+'…':d['query_name']['padEnd'](0x18),g=d['object_type']['padEnd'](0xa),h=(d['parameters']['length']===0x0?'(none)':d['parameters']['join'](','))['padEnd'](0x8),i=d['return_type']['padEnd'](0x8);b['push']('│\x20'+e+'\x20│\x20'+f+'\x20│\x20'+g+'\x20│\x20'+h+'\x20│\x20'+i+'\x20│');}),b['push']('└──────┴──────────────────────────┴────────────┴──────────┴──────────┘'),b['push'](''));b['push']('[Computation\x20tree]'),b['push']('root:\x20'+a['logic']['root']['node_type']+'\x20(returns:\x20'+a['logic']['root']['return_type']+')'),b['push']('\x20\x20'+a['logic']['root']['description']);a['logic']['root']['children']&&printLogicTree(b,a['logic']['root']['children'],0x1);b['push']('');a['logic']['rely']&&(b['push']('[rely\x20composition]'),b['push']('Dependent\x20Guards:\x20'+a['logic']['rely']['guards']['join'](',\x20')),b['push']('Logic:\x20'+(a['logic']['rely']['logic_or']?'OR\x20(any\x20passes)':'AND\x20(all\x20must\x20pass)')),b['push']('rep\x20verification:\x20'+(a['logic']['rely']['rep_verified']['every'](d=>d)?'all\x20passed':'some\x20unverified')),b['push'](''));if(a['constraints']){b['push']('[Constraint\x20checklist\x20(creation-time\x2022\x20+\x20runtime\x2011\x20=\x2033;\x20MCP\x20layer\x20static\x20check\x2016)]');const d=[['01','All\x20identifiers\x20exist\x20in\x20the\x20table',a['constraints']['pitfall_01_identifiers_in_table']],['02','Comparison\x20node\x20types\x20are\x20compatible',a['constraints']['pitfall_02_type_compatibility']],['03','Query\x20instruction\x20ID\x20and\x20parameter\x20count\x20are\x20correct',a['constraints']['pitfall_03_query_instruction_valid']],['04','convert_witness\x20type\x20is\x20correct',a['constraints']['pitfall_04_witness_correct']],['05','Time-lock\x20tests\x20use\x20small\x20values',a['constraints']['pitfall_05_time_lock_test_safe']],['06','Old\x20Guard\x20exported\x20before\x20iteration',a['constraints']['pitfall_06_exported_before_recreate']],['07','root\x20returns\x20Bool',a['constraints']['pitfall_07_root_returns_bool']],['08','rely\x20dependency\x20rep=true',a['constraints']['pitfall_08_rely_rep_true']],['09','voting_guard\x20GuardIdentifier\x20numeric',a['constraints']['pitfall_09_voting_weight_numeric']],['10','Arbitration\x20not\x20paused',a['constraints']['pitfall_10_arbitration_not_paused']]],e=[['R1','Guard\x20immutable=true\x20to\x20verify',a['constraints']['runtime_01_guard_immutable']],['R2','submission\x20type\x20bytes\x20match\x20table\x20declaration',a['constraints']['runtime_02_submission_type_match']],['R3','b_submission=true\x20entry\x20found\x20in\x20submission',a['constraints']['runtime_03_submission_complete']],['R4','submission\x20total\x20bytes\x20≤\x20'+MAX_SUBMISSION_SIZE_PASSPORT,a['constraints']['runtime_04_submission_size']],['R5','witness\x20derivation\x20source\x20object\x20has\x20related\x20field',a['constraints']['runtime_05_witness_source_valid']],['R6','query\x20target\x20object\x20exists\x20and\x20types\x20match',a['constraints']['runtime_06_query_object_valid']]];b['push']('\x20\x20Creation-time\x20constraints:'),d['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('\x20\x20Runtime\x20constraints:'),e['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('');}b['push']('[Risk\x20warnings]'),b['push']('\x20\x20⚠\x20Guard\x20cannot\x20be\x20modified\x20or\x20deleted\x20after\x20creation\x20(CREATE-only)'),b['push']('\x20\x20⚠\x20On-chain\x20execution\x20will\x20consume\x20gas'),b['push']('\x20\x20⚠\x20To\x20modify\x20after\x20creation:\x20export\x20→\x20edit\x20→\x20create\x20new\x20→\x20rebind'),b['push'](''),b['push']('[Test\x20plan\x20(gen_passport\x20static\x20test)]'),b['push']('\x20\x20Expected\x20pass\x20scenario:\x20submit\x20data\x20meeting\x20conditions\x20→\x20PASS\x20→\x20Passport\x20generated'),b['push']('\x20\x20Expected\x20fail\x20scenario:\x20submit\x20data\x20not\x20meeting\x20conditions\x20→\x20FAIL\x20→\x20verify\x20logic\x20direction'),b['push'](''),b['push']('[Post-creation\x20actions\x20(important)]'),b['push']('\x20\x201.\x20Use\x20guard2file\x20to\x20export\x20the\x20Guard\x20backup\x20(JSON\x20file)\x20for\x20later\x20rebuild\x20or\x20migration'),b['push']('\x20\x202.\x20Record\x20the\x20Guard\x20object\x20ID\x20for\x20subsequent\x20binding\x20and\x20invocation'),b['push']('\x20\x203.\x20If\x20the\x20Guard\x20binds\x20to\x20a\x20Host\x20Object,\x20ensure\x20the\x20Host\x20Object\x20is\x20published\x20after\x20Guard\x20creation'),b['push']('\x20\x204.\x20Verify\x20the\x20Guard\x20logic\x20direction\x20via\x20gen_passport\x20static\x20test'),b['push']('');const c=creationChecksForReadiness(a);return b['push']('[Creation\x20readiness\x20signal]'),b['push']('\x20\x20Puzzle\x20completeness:\x20'+(c?'✓\x20All\x20passed\x20—\x20ready\x20for\x20on-chain\x20CREATE':'✗\x20Some\x20items\x20not\x20passed\x20—\x20please\x20fix\x20first')),b['push'](''),b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Please\x20review\x20the\x20Guard\x20semantic\x20confirmation\x20report\x20above'),b['push']('\x20\x20After\x20confirming\x20no\x20issues,\x20reply\x20\x22confirm\x20creation\x22\x20to\x20execute\x20on-chain\x20CREATE'),b['push']('\x20\x20If\x20modifications\x20are\x20needed,\x20please\x20point\x20out\x20the\x20parts\x20to\x20adjust'),b['push']('═══════════════════════════════════════════════════════'),b['join']('\x0a');}function creationChecksForReadiness(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic']||!a['constraints'])return![];const b=a['constraints'],d=b['pitfall_01_identifiers_in_table']&&b['pitfall_02_type_compatibility']&&b['pitfall_03_query_instruction_valid']&&b['pitfall_04_witness_correct']&&b['pitfall_05_time_lock_test_safe']&&b['pitfall_06_exported_before_recreate']&&b['pitfall_07_root_returns_bool']&&b['pitfall_08_rely_rep_true']&&b['pitfall_09_voting_weight_numeric']&&b['pitfall_10_arbitration_not_paused'],e=b['runtime_01_guard_immutable']&&b['runtime_02_submission_type_match']&&b['runtime_03_submission_complete']&&b['runtime_04_submission_size']&&b['runtime_05_witness_source_valid']&&b['runtime_06_query_object_valid'];return d&&e;}function printDataSources(a,b){b['on_chain_constants']['length']>0x0&&(a['push']('\x20\x20Type1\x20—\x20On-chain\x20constant\x20objects\x20(OnChainConstant,\x20b_submission=false):'),b['on_chain_constants']['forEach'](c=>{const d=c['is_system_address']?'\x20[system\x20address]':'';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['object_type']+'('+c['object_address']+')'+d+'\x20—\x20'+c['name']);})),b['witness_derived']['length']>0x0&&(a['push']('\x20\x20Type2\x20—\x20Witness-derived\x20objects\x20(WitnessDerived,\x20convert_witness\x20100-108):'),b['witness_derived']['forEach'](c=>{const d=c['source_b_submission']?'submitted':'constant';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['source_type']+'('+d+')\x20→\x20'+c['target_type']+'\x20via\x20'+c['witness_name']+'('+c['witness_type']+')\x20—\x20'+c['name']);})),b['submitted_objects']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20objects\x20(SubmittedObject,\x20b_submission=true):'),b['submitted_objects']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['expected_object_type']+'('+c['value_type']+')\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['submitted_values']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20values\x20(SubmittedValue,\x20b_submission=true,\x20scalar):'),b['submitted_values']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['value_type']+'\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['system_contexts']['length']>0x0&&(a['push']('\x20\x20Type4\x20—\x20System\x20contexts\x20(SystemContext,\x20not\x20in\x20table):'),b['system_contexts']['forEach'](c=>{a['push']('\x20\x20\x20\x20context('+c['context_type']+')\x20—\x20'+c['usage']);})),b['on_chain_constants']['length']===0x0&&b['witness_derived']['length']===0x0&&b['submitted_objects']['length']===0x0&&b['submitted_values']['length']===0x0&&b['system_contexts']['length']===0x0&&a['push']('\x20\x20(No\x20data\x20sources\x20declared)');}function printLogicTree(a,b,c){const d='\x20\x20'['repeat'](c+0x1);b['forEach']((e,f)=>{const g=f===b['length']-0x1?'└──\x20':'├──\x20';a['push'](''+d+g+e['node_type']+'\x20('+e['return_type']+')\x20—\x20'+e['description']),e['references_identifier']!==undefined&&a['push'](d+'\x20\x20\x20\x20→\x20table['+e['references_identifier']+']'),e['query']&&a['push'](d+'\x20\x20\x20\x20→\x20query('+e['query']['query_id']+':\x20'+e['query']['query_name']+')'),e['children']&&printLogicTree(a,e['children'],c+0x1);});}export function initPuzzleFromIntent(a){return{'current_round':'R1','intent':{'action':a['action']??'custom','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}};}export function inferBindingFromAction(a){const b={'buy':{'host_object':'Service','binding_field':'buy_guard'},'forward':{'host_object':'Machine','binding_field':'Forward.guard'},'allocate':{'host_object':'Service','binding_field':'order_allocators'},'claim_reward':{'host_object':'Reward','binding_field':'guard'},'vote':{'host_object':'Arbitration','binding_field':'voting_guard'},'dispute':{'host_object':'Arbitration','binding_field':'usage_guard'},'write_repository':{'host_object':'Repository','binding_field':'write_guard'},'submit_progress':{'host_object':'Progress','binding_field':'submission'},'gen_passport':{'host_object':'Standalone','binding_field':'none'},'custom':{}};return b[a]??{};}export function emptyDataSources(){return{'on_chain_constants':[],'witness_derived':[],'submitted_objects':[],'submitted_values':[],'system_contexts':[]};}export const WITNESS_NAME_MAP={0x64:{'name':'TypeOrderProgress','source':'Order','target':'Progress'},0x65:{'name':'TypeOrderMachine','source':'Order','target':'Machine'},0x66:{'name':'TypeOrderService','source':'Order','target':'Service'},0x67:{'name':'TypeProgressMachine','source':'Progress','target':'Machine'},0x68:{'name':'TypeArbOrder','source':'Arb','target':'Order'},0x69:{'name':'TypeArbArbitration','source':'Arb','target':'Arbitration'},0x6a:{'name':'TypeArbProgress','source':'Arb','target':'Progress'},0x6b:{'name':'TypeArbMachine','source':'Arb','target':'Machine'},0x6c:{'name':'TypeArbService','source':'Arb','target':'Service'}};export function getWitnessInfo(a){return WITNESS_NAME_MAP[a];}function traverseRoot(a,b){if(!a)return;a['type']==='identifier'&&typeof a['identifier']==='number'&&b['referencedIdentifiers']['add'](a['identifier']);a['type']==='context'&&a['context']&&b['contexts']['add'](a['context']);if(a['type']==='query'&&a['object']){const c=a['object']['identifier'];b['referencedIdentifiers']['add'](c);const d=a['object']['convert_witness'];typeof d==='number'&&d>=0x64&&d<=0x6c&&b['witnessCodes']['push']({'code':d,'objectIdentifier':c});b['queries']['push']({'query':a['query']??'','objectIdentifier':c,'convertWitness':d,'parametersCount':a['parameters']?.['length']??0x0});if(a['parameters'])for(const e of a['parameters']){traverseRoot(e,b);}}if(a['nodes'])for(const f of a['nodes']){traverseRoot(f,b);}a['node']&&traverseRoot(a['node'],b),a['nodeLeft']&&traverseRoot(a['nodeLeft'],b),a['nodeRight']&&traverseRoot(a['nodeRight'],b);}function buildLogicTree(a){if(!a)return undefined;const b={'node_type':a['type'],'return_type':inferNodeType(a['type']),'description':describeNode(a)};a['type']==='identifier'&&typeof a['identifier']==='number'&&(b['references_identifier']=a['identifier']);if(a['type']==='query'&&a['object']){b['query']={'query_id':typeof a['query']==='number'?a['query']:0x0,'query_name':typeof a['query']==='string'?a['query']:String(a['query']??''),'object_type':'','parameters':[],'return_type':'','purpose':''};if(a['object']['convert_witness']){const c=getWitnessInfo(a['object']['convert_witness']);c&&(b['query']['witness']={'witness_type':a['object']['convert_witness'],'witness_name':c['name'],'source_type':c['source'],'target_type':c['target'],'scenario':''});}}if(a['nodes']){const d=a['nodes']['map'](e=>buildLogicTree(e))['filter'](e=>e!==undefined);d['length']>0x0&&(b['children']=d);}if(a['node']){const e=buildLogicTree(a['node']);e&&(b['children']=[e]);}if(a['nodeLeft']){const f=buildLogicTree(a['nodeLeft']);f&&(b['children']=[...b['children']??[],f]);}if(a['nodeRight']){const g=buildLogicTree(a['nodeRight']);g&&(b['children']=[...b['children']??[],g]);}return b;}function inferNodeType(a){const b=['logic_equal','logic_not','logic_and','logic_or','logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_string_contains','calc_string_nocase_contains','calc_string_nocase_equal','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','query_reward_record_exists'];if(b['includes'](a))return'Bool';const c=['calc_string_length','calc_string_indexof','calc_string_nocase_indexof','vec_length','vec_indexof_bool','vec_indexof_address','vec_indexof_string','vec_indexof_string_nocase','vec_indexof_number','query_reward_record_count','query_progress_history_session_count','query_progress_history_session_forward_count','query_progress_history_session_forward_retained_submission_count','query_repository_data_count_where'];if(c['includes'](a))return'U64';const d=['calc_number_add','calc_number_subtract','calc_number_multiply','calc_number_divide','calc_number_mod','convert_address_number','convert_string_number','query_repository_data_sum_where'];if(d['includes'](a))return'U256';const e={'query_repository_data_find_where':'VecAddress','query_repository_data_keys_where':'VecString','query_repository_policies_keys':'VecString'};if(e[a])return e[a];const f=['convert_number_address'];if(f['includes'](a))return'Address';const g=['convert_number_string'];if(g['includes'](a))return'String';const h=['convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256'];if(h['includes'](a))return a['replace']('convert_safe_','U');if(a==='value_type')return'U8';if(a==='query')return'query_defined';if(a==='identifier')return'table_defined';if(a==='context')return'context_defined';return'unknown';}function describeNode(a){switch(a['type']){case'identifier':return'Reference\x20to\x20table['+(a['identifier']??'?')+']';case'context':return'System\x20context:\x20'+(a['context']??'?');case'query':return'Query\x20instruction\x20'+(a['query']??'?')+'\x20(target:\x20table['+(a['object']?.['identifier']??'?')+'])';case'logic_equal':return'Equality\x20comparison\x20(==)';case'logic_not':return'Logical\x20NOT\x20(!)';case'logic_and':return'Logical\x20AND';case'logic_or':return'Logical\x20OR';case'logic_as_u256_greater':return'Numeric\x20greater\x20than\x20(>)';case'logic_as_u256_lesser':return'Numeric\x20less\x20than\x20(<)';case'logic_as_u256_equal':return'Numeric\x20equality\x20(==)';case'logic_as_u256_greater_or_equal':return'Numeric\x20greater\x20than\x20or\x20equal\x20(>=)';case'logic_as_u256_lesser_or_equal':return'Numeric\x20less\x20than\x20or\x20equal\x20(<=)';case'calc_number_add':return'Numeric\x20addition\x20(+)';case'calc_number_subtract':return'Numeric\x20subtraction\x20(-)';case'calc_number_multiply':return'Numeric\x20multiplication\x20(*)';case'calc_number_divide':return'Numeric\x20division\x20(/)';case'calc_number_mod':return'Numeric\x20modulo\x20(%)';case'vec_contains_address':return'Whitelist\x20check\x20(vec_contains_address)';case'vec_length':return'Vector\x20length';case'convert_safe_u64':return'Safe\x20conversion\x20to\x20U64';default:return a['type'];}}function deriveConstraints(a,b,c,d){const e=Array['from'](d['referencedIdentifiers'])['every'](v=>a['some'](w=>w['identifier']===v)),f=b!==undefined,g=!![],h=d['witnessCodes']['every'](v=>v['code']>=0x64&&v['code']<=0x6c),i=!![],j=!![],k=b!==undefined,l=c?c['guards']['length']<=0x4:!![],m=!![],n=!![],o=!![],p=!![],q=!![],r=a['filter'](v=>v['b_submission']),s=r['length']<=MAX_SUBMISSION_SIZE_PASSPORT,t=!![],u=!![];return{'pitfall_01_identifiers_in_table':e,'pitfall_02_type_compatibility':f,'pitfall_03_query_instruction_valid':g,'pitfall_04_witness_correct':h,'pitfall_05_time_lock_test_safe':i,'pitfall_06_exported_before_recreate':j,'pitfall_07_root_returns_bool':k,'pitfall_08_rely_rep_true':l,'pitfall_09_voting_weight_numeric':m,'pitfall_10_arbitration_not_paused':n,'runtime_01_guard_immutable':o,'runtime_02_submission_type_match':p,'runtime_03_submission_complete':q,'runtime_04_submission_size':s,'runtime_05_witness_source_valid':t,'runtime_06_query_object_valid':u};}export function derivePuzzleFromCallData(a){const b=a['table']??[],c=a['root'],d=a['rely'],e=a['binding_hint'],f={'referencedIdentifiers':new Set(),'queries':[],'contexts':new Set(),'witnessCodes':[]};c&&traverseRoot(c,f);let g;e&&(g={'action':e['action'],'rule_sentence':e['rule_sentence']??'','failure_conditions':e['failure_conditions']??[]});let h;e&&(h={'host_object':e['host_object'],'binding_field':e['binding_field'],'circular_reference':e['circular_reference']??![],'host_object_state':'unknown'});const i=new Map();for(const t of f['witnessCodes']){i['set'](t['objectIdentifier'],t['code']);}const j=[],k=[],l=[],m=[];for(const u of b){const v=f['referencedIdentifiers']['has'](u['identifier']),x=i['get'](u['identifier']);if(x!==undefined){const y=getWitnessInfo(x);if(y){k['push']({'identifier':u['identifier'],'source_type':y['source'],'witness_type':x,'witness_name':y['name'],'target_type':y['target'],'source_b_submission':u['b_submission'],'name':u['name']||y['source']+'→'+y['target']+'\x20via\x20'+y['name']});continue;}}if(!u['b_submission']){const z=typeof u['value']==='string'?u['value']['toLowerCase']():'',A=z in WOW_SYSTEM_SINGLETONS||Object['values'](WOW_SYSTEM_SINGLETONS)['includes'](z);j['push']({'identifier':u['identifier'],'object_address':typeof u['value']==='string'?u['value']:String(u['value']??''),'object_type':u['object_type']??'','name':u['name']||'constant\x20#'+u['identifier'],'is_system_address':A});}else{const B=typeof u['value_type']==='string'?u['value_type']['toLowerCase']():String(u['value_type']);B==='address'?l['push']({'identifier':u['identifier'],'expected_object_type':u['object_type']??'','value_type':'Address','name':u['name']||'submitted\x20object\x20#'+u['identifier'],'binding_constraint':u['object_type']?'must\x20be\x20an\x20on-chain\x20object\x20address\x20of\x20type\x20'+u['object_type']:'must\x20be\x20a\x20valid\x20on-chain\x20object\x20address'}):m['push']({'identifier':u['identifier'],'value_type':typeof u['value_type']==='string'?u['value_type']:String(u['value_type']),'name':u['name']||'submitted\x20value\x20#'+u['identifier'],'binding_constraint':'value\x20type\x20must\x20be\x20'+u['value_type']});}}const n=[];for(const C of f['contexts']){const D={'Signer':'Current\x20transaction\x20signer\x20address\x20verification','Clock':'On-chain\x20timestamp\x20(used\x20for\x20time-lock/time-window)','Guard':'Guard\x20self\x20object\x20ID\x20self-reference'};n['push']({'context_type':C,'usage':D[C]??''});}const o={'on_chain_constants':j,'witness_derived':k,'submitted_objects':l,'submitted_values':m,'system_contexts':n},p=f['queries']['map'](E=>{const F=E['convertWitness']!==undefined?getWitnessInfo(E['convertWitness']):undefined;return{'query_id':typeof E['query']==='number'?E['query']:0x0,'query_name':typeof E['query']==='string'?E['query']:String(E['query']),'object_type':'','parameters':[],'return_type':'','witness':F?{'witness_type':E['convertWitness'],'witness_name':F['name'],'source_type':F['source'],'target_type':F['target'],'scenario':''}:undefined,'purpose':''};});let q;if(c){const E=buildLogicTree(c);if(E){E['return_type']='Bool';let F;d&&d['guards']['length']>0x0&&(F={'guards':d['guards'],'logic_or':d['logic_or']??![],'rep_verified':d['guards']['map'](()=>!![])}),q={'root':E,'rely':F};}}const r=deriveConstraints(b,c,d,f),s={'current_round':'R7','intent':g,'binding':h,'data_sources':o,'queries':p,'logic':q,'constraints':r};return s;}export function getPuzzleStatusBooleans(a){const b=checkPuzzleCompleteness(a);return{'intent':b['dimensions']['intent'],'binding':b['dimensions']['binding'],'data':b['dimensions']['data_sources'],'query':b['dimensions']['query'],'logic':b['dimensions']['logic'],'constraints':b['dimensions']['constraints']};}export function getPendingQuestions(a){const b=checkPuzzleCompleteness(a);if(b['complete'])return[];return b['next_step']['questions'];}
1
+ import{MAX_SUBMISSION_SIZE_PASSPORT,WOW_SYSTEM_SINGLETONS}from'@wowok/wowok';export function checkPuzzleCompleteness(a){const b={'intent':isIntentComplete(a['intent']),'binding':isBindingComplete(a['binding']),'data_sources':isDataSourcesComplete(a['data_sources']),'query':isQueryComplete(a['queries']),'logic':isLogicComplete(a['logic']),'constraints':isConstraintsComplete(a['constraints'])},c=Object['keys'](b)['filter'](g=>!b[g]),d=[];!b['intent']&&d['push']('A.\x20Intent:\x20protected\x20action,\x20validation\x20rule,\x20or\x20failure\x20conditions\x20not\x20clarified');!b['binding']&&d['push']('B.\x20Binding:\x20Host\x20Object,\x20binding\x20field,\x20or\x20circular\x20reference\x20mode\x20not\x20determined');!b['data_sources']&&d['push']('C.\x20Data\x20sources:\x20data\x20sources\x20not\x20declared\x20by\x204\x20classifications\x20(on-chain\x20constant\x20/\x20witness-derived\x20/\x20submitted\x20object\x20/\x20system\x20context)');!b['query']&&d['push']('D.\x20Query:\x20query\x20instruction\x20not\x20determined\x20(if\x20the\x20Guard\x20needs\x20to\x20query\x20on-chain\x20data)');!b['logic']&&d['push']('E.\x20Logic:\x20computation\x20tree\x20root\x20or\x20rely\x20composition\x20not\x20designed');!b['constraints']&&d['push']('F.\x20Constraints:\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checks\x20not\x20completed');const e=c['length']===0x0,f=recommendNextStep(a,c);return{'dimensions':b,'missing':c,'missing_details':d,'complete':e,'next_step':f};}function isIntentComplete(a){return!!a&&!!a['action']&&!!a['rule_sentence']&&a['failure_conditions']['length']>0x0;}function isBindingComplete(a){return!!a&&!!a['host_object']&&!!a['binding_field'];}function isDataSourcesComplete(a){if(!a)return![];const b=a['on_chain_constants']['length']>0x0,c=a['witness_derived']['length']>0x0,d=a['submitted_objects']['length']>0x0,e=a['submitted_values']['length']>0x0,f=a['system_contexts']['length']>0x0;if(!b&&!c&&!d&&!e&&!f)return![];const g=a['submitted_objects']['some'](h=>!h['binding_constraint']);if(g)return![];return!![];}function isQueryComplete(a){return!![];}function isLogicComplete(a){return!!a&&!!a['root']&&a['root']['return_type']==='Bool';}function isConstraintsComplete(a){if(!a)return![];return Object['values'](a)['every'](b=>b===!![]);}function recommendNextStep(a,b){if(b['includes']('intent'))return{'round':'R1','action':'Capture\x20validation\x20intent','questions':['What\x20action\x20do\x20you\x20want\x20to\x20protect?\x20(buy/forward/claim/vote/dispute/write/allocate)','Describe\x20the\x20validation\x20rule\x20in\x20one\x20sentence','List\x20the\x20conditions\x20under\x20which\x20the\x20Guard\x20should\x20FAIL']};if(b['includes']('binding'))return{'round':'R5','action':'Determine\x20binding\x20target','questions':['Which\x20Host\x20Object\x20will\x20the\x20Guard\x20bind\x20to?\x20(Service/Machine/Arbitration/Reward/Repository)','Which\x20field\x20will\x20it\x20bind\x20to?\x20(buy_guard/order_allocators/Forward.guard/...)','Does\x20the\x20Guard\x20need\x20to\x20reference\x20the\x20Host\x20Object?\x20(circular\x20reference\x20mode)']};if(b['includes']('data_sources'))return{'round':'R2','action':'Declare\x20data\x20sources\x20by\x204\x20classifications','questions':['Type1\x20(on-chain\x20constant):\x20Which\x20already-published\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?\x20(Service/Machine/Reward\x20addresses)','Type2\x20(witness-derived):\x20Do\x20you\x20need\x20to\x20derive\x20Progress/Machine/Service\x20from\x20Order/Arb?\x20(choose\x20witness\x20100-109)','Type3\x20(submitted\x20object):\x20Which\x20object\x20addresses\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(Order/Reward/Progress)\x20—\x20constraint\x20rules\x20must\x20be\x20designed','Type3\x20(submitted\x20value):\x20Which\x20scalar\x20values\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(amount/weight/node\x20name)','Type4\x20(system\x20context):\x20Do\x20you\x20need\x20Signer\x20(identity)\x20/\x20Clock\x20(time)\x20/\x20Guard\x20(self-reference)?','Do\x20you\x20need\x20to\x20query\x20EntityRegistrar(0xaab)\x20or\x20EntityLinker(0xaaa)?']};if(b['includes']('query'))return{'round':'R3','action':'Design\x20query\x20nodes','questions':['Which\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?','Which\x20instruction\x20ID\x20does\x20each\x20query\x20use?\x20(look\x20up\x20from\x20GUARDQUERY)','Do\x20you\x20need\x20convert_witness\x20to\x20convert\x20objects?\x20(linked\x20to\x20Type2\x20declaration)']};if(b['includes']('logic'))return{'round':'R3','action':'Design\x20computation\x20tree','questions':['What\x20is\x20the\x20root\x20node?\x20(must\x20return\x20Bool)','Which\x20data\x20source\x20nodes\x20are\x20there?\x20(by\x204\x20classifications:\x20identifier/context/query)','Which\x20intermediate\x20conversion\x20nodes\x20are\x20there?\x20(calc_*/convert_*/vec_*)','Do\x20you\x20need\x20rely\x20to\x20compose\x20with\x20other\x20Guards?']};if(b['includes']('constraints'))return{'round':'R6','action':'Pre-creation\x20review','questions':['Run\x20the\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checklist']};return{'round':'R7','action':'Prepare\x20for\x20on-chain\x20creation','questions':['All\x20dimensions\x20are\x20complete;\x20ready\x20to\x20generate\x20the\x20semantic\x20confirmation\x20text']};}export function generateConfirmationText(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic'])return'[Puzzle\x20incomplete]\x20Cannot\x20generate\x20confirmation\x20text;\x20please\x20complete\x20all\x20dimensions\x20first';const b=[];b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Guard\x20Semantic\x20Confirmation\x20Report\x20(User\x20Review\x20Edition)'),b['push']('═══════════════════════════════════════════════════════'),b['push'](''),b['push']('[Intent]'),b['push']('Protected\x20action:\x20'+a['intent']['action']),b['push']('Validation\x20rule:\x20'+a['intent']['rule_sentence']),b['push']('Failure\x20conditions:'),a['intent']['failure_conditions']['forEach']((d,e)=>{b['push']('\x20\x20'+(e+0x1)+'.\x20'+d);}),b['push'](''),b['push']('[Binding]'),b['push']('Host\x20Object:\x20'+a['binding']['host_object']);a['binding']['host_object_name']&&b['push']('Host\x20Object\x20name:\x20'+a['binding']['host_object_name']);b['push']('Binding\x20field:\x20'+a['binding']['binding_field']),b['push']('Circular\x20reference:\x20'+(a['binding']['circular_reference']?'Yes\x20(Guard\x20references\x20Host\x20Object)':'No')),b['push']('Host\x20Object\x20state:\x20'+a['binding']['host_object_state']),b['push'](''),b['push']('[Data\x20sources\x20(4\x20classifications)]'),printDataSources(b,a['data_sources']),b['push']('');a['queries']&&a['queries']['length']>0x0&&(b['push']('[Query\x20instructions]'),b['push']('┌──────┬──────────────────────────┬────────────┬──────────┬──────────┐'),b['push']('│\x20ID\x20\x20\x20│\x20Query\x20instruction\x20\x20\x20\x20\x20\x20\x20\x20│\x20Target\x20obj\x20│\x20Params\x20\x20\x20│\x20Return\x20\x20\x20│'),b['push']('├──────┼──────────────────────────┼────────────┼──────────┼──────────┤'),a['queries']['forEach'](d=>{const e=String(d['query_id'])['padEnd'](0x4),f=d['query_name']['length']>0x18?d['query_name']['slice'](0x0,0x17)+'…':d['query_name']['padEnd'](0x18),g=d['object_type']['padEnd'](0xa),h=(d['parameters']['length']===0x0?'(none)':d['parameters']['join'](','))['padEnd'](0x8),i=d['return_type']['padEnd'](0x8);b['push']('│\x20'+e+'\x20│\x20'+f+'\x20│\x20'+g+'\x20│\x20'+h+'\x20│\x20'+i+'\x20│');}),b['push']('└──────┴──────────────────────────┴────────────┴──────────┴──────────┘'),b['push'](''));b['push']('[Computation\x20tree]'),b['push']('root:\x20'+a['logic']['root']['node_type']+'\x20(returns:\x20'+a['logic']['root']['return_type']+')'),b['push']('\x20\x20'+a['logic']['root']['description']);a['logic']['root']['children']&&printLogicTree(b,a['logic']['root']['children'],0x1);b['push']('');a['logic']['rely']&&(b['push']('[rely\x20composition]'),b['push']('Dependent\x20Guards:\x20'+a['logic']['rely']['guards']['join'](',\x20')),b['push']('Logic:\x20'+(a['logic']['rely']['logic_or']?'OR\x20(any\x20passes)':'AND\x20(all\x20must\x20pass)')),b['push']('rep\x20verification:\x20'+(a['logic']['rely']['rep_verified']['every'](d=>d)?'all\x20passed':'some\x20unverified')),b['push'](''));if(a['constraints']){b['push']('[Constraint\x20checklist\x20(creation-time\x2022\x20+\x20runtime\x2011\x20=\x2033;\x20MCP\x20layer\x20static\x20check\x2016)]');const d=[['01','All\x20identifiers\x20exist\x20in\x20the\x20table',a['constraints']['pitfall_01_identifiers_in_table']],['02','Comparison\x20node\x20types\x20are\x20compatible',a['constraints']['pitfall_02_type_compatibility']],['03','Query\x20instruction\x20ID\x20and\x20parameter\x20count\x20are\x20correct',a['constraints']['pitfall_03_query_instruction_valid']],['04','convert_witness\x20type\x20is\x20correct',a['constraints']['pitfall_04_witness_correct']],['05','Time-lock\x20tests\x20use\x20small\x20values',a['constraints']['pitfall_05_time_lock_test_safe']],['06','Old\x20Guard\x20exported\x20before\x20iteration',a['constraints']['pitfall_06_exported_before_recreate']],['07','root\x20returns\x20Bool',a['constraints']['pitfall_07_root_returns_bool']],['08','rely\x20dependency\x20rep=true',a['constraints']['pitfall_08_rely_rep_true']],['09','voting_guard\x20GuardIdentifier\x20numeric',a['constraints']['pitfall_09_voting_weight_numeric']],['10','Arbitration\x20not\x20paused',a['constraints']['pitfall_10_arbitration_not_paused']]],e=[['R1','Guard\x20immutable=true\x20to\x20verify',a['constraints']['runtime_01_guard_immutable']],['R2','submission\x20type\x20bytes\x20match\x20table\x20declaration',a['constraints']['runtime_02_submission_type_match']],['R3','b_submission=true\x20entry\x20found\x20in\x20submission',a['constraints']['runtime_03_submission_complete']],['R4','submission\x20total\x20bytes\x20≤\x20'+MAX_SUBMISSION_SIZE_PASSPORT,a['constraints']['runtime_04_submission_size']],['R5','witness\x20derivation\x20source\x20object\x20has\x20related\x20field',a['constraints']['runtime_05_witness_source_valid']],['R6','query\x20target\x20object\x20exists\x20and\x20types\x20match',a['constraints']['runtime_06_query_object_valid']]];b['push']('\x20\x20Creation-time\x20constraints:'),d['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('\x20\x20Runtime\x20constraints:'),e['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('');}b['push']('[Risk\x20warnings]'),b['push']('\x20\x20⚠\x20Guard\x20cannot\x20be\x20modified\x20or\x20deleted\x20after\x20creation\x20(CREATE-only)'),b['push']('\x20\x20⚠\x20On-chain\x20execution\x20will\x20consume\x20gas'),b['push']('\x20\x20⚠\x20To\x20modify\x20after\x20creation:\x20export\x20→\x20edit\x20→\x20create\x20new\x20→\x20rebind'),b['push'](''),b['push']('[Test\x20plan\x20(gen_passport\x20static\x20test)]'),b['push']('\x20\x20Expected\x20pass\x20scenario:\x20submit\x20data\x20meeting\x20conditions\x20→\x20PASS\x20→\x20Passport\x20generated'),b['push']('\x20\x20Expected\x20fail\x20scenario:\x20submit\x20data\x20not\x20meeting\x20conditions\x20→\x20FAIL\x20→\x20verify\x20logic\x20direction'),b['push'](''),b['push']('[Post-creation\x20actions\x20(important)]'),b['push']('\x20\x201.\x20Use\x20guard2file\x20to\x20export\x20the\x20Guard\x20backup\x20(JSON\x20file)\x20for\x20later\x20rebuild\x20or\x20migration'),b['push']('\x20\x202.\x20Record\x20the\x20Guard\x20object\x20ID\x20for\x20subsequent\x20binding\x20and\x20invocation'),b['push']('\x20\x203.\x20If\x20the\x20Guard\x20binds\x20to\x20a\x20Host\x20Object,\x20ensure\x20the\x20Host\x20Object\x20is\x20published\x20after\x20Guard\x20creation'),b['push']('\x20\x204.\x20Verify\x20the\x20Guard\x20logic\x20direction\x20via\x20gen_passport\x20static\x20test'),b['push']('');const c=creationChecksForReadiness(a);return b['push']('[Creation\x20readiness\x20signal]'),b['push']('\x20\x20Puzzle\x20completeness:\x20'+(c?'✓\x20All\x20passed\x20—\x20ready\x20for\x20on-chain\x20CREATE':'✗\x20Some\x20items\x20not\x20passed\x20—\x20please\x20fix\x20first')),b['push'](''),b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Please\x20review\x20the\x20Guard\x20semantic\x20confirmation\x20report\x20above'),b['push']('\x20\x20After\x20confirming\x20no\x20issues,\x20reply\x20\x22confirm\x20creation\x22\x20to\x20execute\x20on-chain\x20CREATE'),b['push']('\x20\x20If\x20modifications\x20are\x20needed,\x20please\x20point\x20out\x20the\x20parts\x20to\x20adjust'),b['push']('═══════════════════════════════════════════════════════'),b['join']('\x0a');}function creationChecksForReadiness(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic']||!a['constraints'])return![];const b=a['constraints'],d=b['pitfall_01_identifiers_in_table']&&b['pitfall_02_type_compatibility']&&b['pitfall_03_query_instruction_valid']&&b['pitfall_04_witness_correct']&&b['pitfall_05_time_lock_test_safe']&&b['pitfall_06_exported_before_recreate']&&b['pitfall_07_root_returns_bool']&&b['pitfall_08_rely_rep_true']&&b['pitfall_09_voting_weight_numeric']&&b['pitfall_10_arbitration_not_paused'],e=b['runtime_01_guard_immutable']&&b['runtime_02_submission_type_match']&&b['runtime_03_submission_complete']&&b['runtime_04_submission_size']&&b['runtime_05_witness_source_valid']&&b['runtime_06_query_object_valid'];return d&&e;}function printDataSources(a,b){b['on_chain_constants']['length']>0x0&&(a['push']('\x20\x20Type1\x20—\x20On-chain\x20constant\x20objects\x20(OnChainConstant,\x20b_submission=false):'),b['on_chain_constants']['forEach'](c=>{const d=c['is_system_address']?'\x20[system\x20address]':'';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['object_type']+'('+c['object_address']+')'+d+'\x20—\x20'+c['name']);})),b['witness_derived']['length']>0x0&&(a['push']('\x20\x20Type2\x20—\x20Witness-derived\x20objects\x20(WitnessDerived,\x20convert_witness\x20100-109):'),b['witness_derived']['forEach'](c=>{const d=c['source_b_submission']?'submitted':'constant';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['source_type']+'('+d+')\x20→\x20'+c['target_type']+'\x20via\x20'+c['witness_name']+'('+c['witness_type']+')\x20—\x20'+c['name']);})),b['submitted_objects']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20objects\x20(SubmittedObject,\x20b_submission=true):'),b['submitted_objects']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['expected_object_type']+'('+c['value_type']+')\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['submitted_values']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20values\x20(SubmittedValue,\x20b_submission=true,\x20scalar):'),b['submitted_values']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['value_type']+'\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['system_contexts']['length']>0x0&&(a['push']('\x20\x20Type4\x20—\x20System\x20contexts\x20(SystemContext,\x20not\x20in\x20table):'),b['system_contexts']['forEach'](c=>{a['push']('\x20\x20\x20\x20context('+c['context_type']+')\x20—\x20'+c['usage']);})),b['on_chain_constants']['length']===0x0&&b['witness_derived']['length']===0x0&&b['submitted_objects']['length']===0x0&&b['submitted_values']['length']===0x0&&b['system_contexts']['length']===0x0&&a['push']('\x20\x20(No\x20data\x20sources\x20declared)');}function printLogicTree(a,b,c){const d='\x20\x20'['repeat'](c+0x1);b['forEach']((e,f)=>{const g=f===b['length']-0x1?'└──\x20':'├──\x20';a['push'](''+d+g+e['node_type']+'\x20('+e['return_type']+')\x20—\x20'+e['description']),e['references_identifier']!==undefined&&a['push'](d+'\x20\x20\x20\x20→\x20table['+e['references_identifier']+']'),e['query']&&a['push'](d+'\x20\x20\x20\x20→\x20query('+e['query']['query_id']+':\x20'+e['query']['query_name']+')'),e['children']&&printLogicTree(a,e['children'],c+0x1);});}export function initPuzzleFromIntent(a){return{'current_round':'R1','intent':{'action':a['action']??'custom','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}};}export function inferBindingFromAction(a){const b={'buy':{'host_object':'Service','binding_field':'buy_guard'},'forward':{'host_object':'Machine','binding_field':'Forward.guard'},'allocate':{'host_object':'Service','binding_field':'order_allocators'},'claim_reward':{'host_object':'Reward','binding_field':'guard'},'vote':{'host_object':'Arbitration','binding_field':'voting_guard'},'dispute':{'host_object':'Arbitration','binding_field':'usage_guard'},'write_repository':{'host_object':'Repository','binding_field':'write_guard'},'submit_progress':{'host_object':'Progress','binding_field':'submission'},'gen_passport':{'host_object':'Standalone','binding_field':'none'},'custom':{}};return b[a]??{};}export function emptyDataSources(){return{'on_chain_constants':[],'witness_derived':[],'submitted_objects':[],'submitted_values':[],'system_contexts':[]};}export const WITNESS_NAME_MAP={0x64:{'name':'TypeOrderProgress','source':'Order','target':'Progress'},0x65:{'name':'TypeOrderMachine','source':'Order','target':'Machine'},0x66:{'name':'TypeOrderService','source':'Order','target':'Service'},0x67:{'name':'TypeProgressMachine','source':'Progress','target':'Machine'},0x68:{'name':'TypeArbOrder','source':'Arb','target':'Order'},0x69:{'name':'TypeArbArbitration','source':'Arb','target':'Arbitration'},0x6a:{'name':'TypeArbProgress','source':'Arb','target':'Progress'},0x6b:{'name':'TypeArbMachine','source':'Arb','target':'Machine'},0x6c:{'name':'TypeArbService','source':'Arb','target':'Service'},0x6d:{'name':'TypeOrderAllocation','source':'Order','target':'Allocation'}};export function getWitnessInfo(a){return WITNESS_NAME_MAP[a];}function traverseRoot(a,b){if(!a)return;a['type']==='identifier'&&typeof a['identifier']==='number'&&b['referencedIdentifiers']['add'](a['identifier']);a['type']==='context'&&a['context']&&b['contexts']['add'](a['context']);if(a['type']==='query'&&a['object']){const c=a['object']['identifier'];b['referencedIdentifiers']['add'](c);const d=a['object']['convert_witness'];typeof d==='number'&&d>=0x64&&d<=0x6d&&b['witnessCodes']['push']({'code':d,'objectIdentifier':c});b['queries']['push']({'query':a['query']??'','objectIdentifier':c,'convertWitness':d,'parametersCount':a['parameters']?.['length']??0x0});if(a['parameters'])for(const e of a['parameters']){traverseRoot(e,b);}}if(a['nodes'])for(const f of a['nodes']){traverseRoot(f,b);}a['node']&&traverseRoot(a['node'],b),a['nodeLeft']&&traverseRoot(a['nodeLeft'],b),a['nodeRight']&&traverseRoot(a['nodeRight'],b);}function buildLogicTree(a){if(!a)return undefined;const b={'node_type':a['type'],'return_type':inferNodeType(a['type']),'description':describeNode(a)};a['type']==='identifier'&&typeof a['identifier']==='number'&&(b['references_identifier']=a['identifier']);if(a['type']==='query'&&a['object']){b['query']={'query_id':typeof a['query']==='number'?a['query']:0x0,'query_name':typeof a['query']==='string'?a['query']:String(a['query']??''),'object_type':'','parameters':[],'return_type':'','purpose':''};if(a['object']['convert_witness']){const c=getWitnessInfo(a['object']['convert_witness']);c&&(b['query']['witness']={'witness_type':a['object']['convert_witness'],'witness_name':c['name'],'source_type':c['source'],'target_type':c['target'],'scenario':''});}}if(a['nodes']){const d=a['nodes']['map'](e=>buildLogicTree(e))['filter'](e=>e!==undefined);d['length']>0x0&&(b['children']=d);}if(a['node']){const e=buildLogicTree(a['node']);e&&(b['children']=[e]);}if(a['nodeLeft']){const f=buildLogicTree(a['nodeLeft']);f&&(b['children']=[...b['children']??[],f]);}if(a['nodeRight']){const g=buildLogicTree(a['nodeRight']);g&&(b['children']=[...b['children']??[],g]);}return b;}function inferNodeType(a){const b=['logic_equal','logic_not','logic_and','logic_or','logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_string_contains','calc_string_nocase_contains','calc_string_nocase_equal','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','query_reward_record_exists'];if(b['includes'](a))return'Bool';const c=['calc_string_length','calc_string_indexof','calc_string_nocase_indexof','vec_length','vec_indexof_bool','vec_indexof_address','vec_indexof_string','vec_indexof_string_nocase','vec_indexof_number','query_reward_record_count','query_progress_history_session_count','query_progress_history_session_forward_count','query_progress_history_session_forward_retained_submission_count','query_repository_data_count_where'];if(c['includes'](a))return'U64';const d=['calc_number_add','calc_number_subtract','calc_number_multiply','calc_number_divide','calc_number_mod','convert_address_number','convert_string_number','query_repository_data_sum_where'];if(d['includes'](a))return'U256';const e={'query_repository_data_find_where':'VecAddress','query_repository_data_keys_where':'VecString','query_repository_policies_keys':'VecString'};if(e[a])return e[a];const f=['convert_number_address'];if(f['includes'](a))return'Address';const g=['convert_number_string'];if(g['includes'](a))return'String';const h=['convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256'];if(h['includes'](a))return a['replace']('convert_safe_','U');if(a==='value_type')return'U8';if(a==='query')return'query_defined';if(a==='identifier')return'table_defined';if(a==='context')return'context_defined';return'unknown';}function describeNode(a){switch(a['type']){case'identifier':return'Reference\x20to\x20table['+(a['identifier']??'?')+']';case'context':return'System\x20context:\x20'+(a['context']??'?');case'query':return'Query\x20instruction\x20'+(a['query']??'?')+'\x20(target:\x20table['+(a['object']?.['identifier']??'?')+'])';case'logic_equal':return'Equality\x20comparison\x20(==)';case'logic_not':return'Logical\x20NOT\x20(!)';case'logic_and':return'Logical\x20AND';case'logic_or':return'Logical\x20OR';case'logic_as_u256_greater':return'Numeric\x20greater\x20than\x20(>)';case'logic_as_u256_lesser':return'Numeric\x20less\x20than\x20(<)';case'logic_as_u256_equal':return'Numeric\x20equality\x20(==)';case'logic_as_u256_greater_or_equal':return'Numeric\x20greater\x20than\x20or\x20equal\x20(>=)';case'logic_as_u256_lesser_or_equal':return'Numeric\x20less\x20than\x20or\x20equal\x20(<=)';case'calc_number_add':return'Numeric\x20addition\x20(+)';case'calc_number_subtract':return'Numeric\x20subtraction\x20(-)';case'calc_number_multiply':return'Numeric\x20multiplication\x20(*)';case'calc_number_divide':return'Numeric\x20division\x20(/)';case'calc_number_mod':return'Numeric\x20modulo\x20(%)';case'vec_contains_address':return'Whitelist\x20check\x20(vec_contains_address)';case'vec_length':return'Vector\x20length';case'convert_safe_u64':return'Safe\x20conversion\x20to\x20U64';default:return a['type'];}}function deriveConstraints(a,b,c,d){const e=Array['from'](d['referencedIdentifiers'])['every'](v=>a['some'](w=>w['identifier']===v)),f=b!==undefined,g=!![],h=d['witnessCodes']['every'](v=>v['code']>=0x64&&v['code']<=0x6d),i=!![],j=!![],k=b!==undefined,l=c?c['guards']['length']<=0x4:!![],m=!![],n=!![],o=!![],p=!![],q=!![],r=a['filter'](v=>v['b_submission']),s=r['length']<=MAX_SUBMISSION_SIZE_PASSPORT,t=!![],u=!![];return{'pitfall_01_identifiers_in_table':e,'pitfall_02_type_compatibility':f,'pitfall_03_query_instruction_valid':g,'pitfall_04_witness_correct':h,'pitfall_05_time_lock_test_safe':i,'pitfall_06_exported_before_recreate':j,'pitfall_07_root_returns_bool':k,'pitfall_08_rely_rep_true':l,'pitfall_09_voting_weight_numeric':m,'pitfall_10_arbitration_not_paused':n,'runtime_01_guard_immutable':o,'runtime_02_submission_type_match':p,'runtime_03_submission_complete':q,'runtime_04_submission_size':s,'runtime_05_witness_source_valid':t,'runtime_06_query_object_valid':u};}export function derivePuzzleFromCallData(a){const b=a['table']??[],c=a['root'],d=a['rely'],e=a['binding_hint'],f={'referencedIdentifiers':new Set(),'queries':[],'contexts':new Set(),'witnessCodes':[]};c&&traverseRoot(c,f);let g;e&&(g={'action':e['action'],'rule_sentence':e['rule_sentence']??'','failure_conditions':e['failure_conditions']??[]});let h;e&&(h={'host_object':e['host_object'],'binding_field':e['binding_field'],'circular_reference':e['circular_reference']??![],'host_object_state':'unknown'});const i=new Map();for(const t of f['witnessCodes']){i['set'](t['objectIdentifier'],t['code']);}const j=[],k=[],l=[],m=[];for(const u of b){const v=f['referencedIdentifiers']['has'](u['identifier']),x=i['get'](u['identifier']);if(x!==undefined){const y=getWitnessInfo(x);if(y){k['push']({'identifier':u['identifier'],'source_type':y['source'],'witness_type':x,'witness_name':y['name'],'target_type':y['target'],'source_b_submission':u['b_submission'],'name':u['name']||y['source']+'→'+y['target']+'\x20via\x20'+y['name']});continue;}}if(!u['b_submission']){const z=typeof u['value']==='string'?u['value']['toLowerCase']():'',A=z in WOW_SYSTEM_SINGLETONS||Object['values'](WOW_SYSTEM_SINGLETONS)['includes'](z);j['push']({'identifier':u['identifier'],'object_address':typeof u['value']==='string'?u['value']:String(u['value']??''),'object_type':u['object_type']??'','name':u['name']||'constant\x20#'+u['identifier'],'is_system_address':A});}else{const B=typeof u['value_type']==='string'?u['value_type']['toLowerCase']():String(u['value_type']);B==='address'?l['push']({'identifier':u['identifier'],'expected_object_type':u['object_type']??'','value_type':'Address','name':u['name']||'submitted\x20object\x20#'+u['identifier'],'binding_constraint':u['object_type']?'must\x20be\x20an\x20on-chain\x20object\x20address\x20of\x20type\x20'+u['object_type']:'must\x20be\x20a\x20valid\x20on-chain\x20object\x20address'}):m['push']({'identifier':u['identifier'],'value_type':typeof u['value_type']==='string'?u['value_type']:String(u['value_type']),'name':u['name']||'submitted\x20value\x20#'+u['identifier'],'binding_constraint':'value\x20type\x20must\x20be\x20'+u['value_type']});}}const n=[];for(const C of f['contexts']){const D={'Signer':'Current\x20transaction\x20signer\x20address\x20verification','Clock':'On-chain\x20timestamp\x20(used\x20for\x20time-lock/time-window)','Guard':'Guard\x20self\x20object\x20ID\x20self-reference'};n['push']({'context_type':C,'usage':D[C]??''});}const o={'on_chain_constants':j,'witness_derived':k,'submitted_objects':l,'submitted_values':m,'system_contexts':n},p=f['queries']['map'](E=>{const F=E['convertWitness']!==undefined?getWitnessInfo(E['convertWitness']):undefined;return{'query_id':typeof E['query']==='number'?E['query']:0x0,'query_name':typeof E['query']==='string'?E['query']:String(E['query']),'object_type':'','parameters':[],'return_type':'','witness':F?{'witness_type':E['convertWitness'],'witness_name':F['name'],'source_type':F['source'],'target_type':F['target'],'scenario':''}:undefined,'purpose':''};});let q;if(c){const E=buildLogicTree(c);if(E){E['return_type']='Bool';let F;d&&d['guards']['length']>0x0&&(F={'guards':d['guards'],'logic_or':d['logic_or']??![],'rep_verified':d['guards']['map'](()=>!![])}),q={'root':E,'rely':F};}}const r=deriveConstraints(b,c,d,f),s={'current_round':'R7','intent':g,'binding':h,'data_sources':o,'queries':p,'logic':q,'constraints':r};return s;}export function getPuzzleStatusBooleans(a){const b=checkPuzzleCompleteness(a);return{'intent':b['dimensions']['intent'],'binding':b['dimensions']['binding'],'data':b['dimensions']['data_sources'],'query':b['dimensions']['query'],'logic':b['dimensions']['logic'],'constraints':b['dimensions']['constraints']};}export function getPendingQuestions(a){const b=checkPuzzleCompleteness(a);if(b['complete'])return[];return b['next_step']['questions'];}
@@ -1 +1 @@
1
- import{GUARDQUERY}from'@wowok/wowok';import{isUnboundSignerTheft}from'./recipient-constraint.js';import{factoryRulePack,getJudgmentDoc}from'../config/judgment.js';import{evaluateRuleBook}from'../config/rule-engine.js';function rootRaw(a){try{return JSON['stringify'](a)??'';}catch{return'';}}function hasSignerCheck(a){return a['includes']('\x22Signer\x22');}function hasClockCheck(a){return a['includes']('\x22Clock\x22');}function hasGuardSelfRef(a){return a['includes']('\x22Guard\x22');}function hasWitness(a){return a['includes']('\x22convert_witness\x22');}function extractWitnessCodes(a){const b=[],c=rootRaw(a),d=c['matchAll'](/"convert_witness"\s*:\s*(\d+)/g);for(const e of d){const f=parseInt(e[0x1],0xa);if(f>=0x64&&f<=0x6c)b['push'](f);}return b;}const WITNESS_CHAIN={0x64:['Order','Progress'],0x65:['Order','Machine'],0x66:['Order','Service'],0x67:['Progress','Machine'],0x68:['Arb','Order'],0x69:['Arb','Arbitration'],0x6a:['Arb','Order','Progress'],0x6b:['Arb','Order','Service'],0x6c:['Arb','Order','Machine']};function extractWitnessIdentifierPairs(a){const b=[],c=new WeakSet();function d(e){if(e===null||typeof e!=='object')return;if(c['has'](e))return;c['add'](e);typeof e['convert_witness']==='number'&&typeof e['identifier']==='number'&&b['push']({'code':e['convert_witness'],'identifier':e['identifier']});for(const f of Object['keys'](e)){const g=e[f];if(Array['isArray'](g)){for(const h of g)d(h);}else g!==null&&typeof g==='object'&&d(g);}}return d(a),b;}function getChildNodes(a){if(!a||typeof a!=='object')return[];const b=[];if(Array['isArray'](a['nodes']))b['push'](...a['nodes']);if(a['left'])b['push'](a['left']);if(a['right'])b['push'](a['right']);if(a['vec'])b['push'](a['vec']);if(a['target'])b['push'](a['target']);if(a['object']&&typeof a['object']==='object')b['push'](a['object']);if(Array['isArray'](a['parameters']))b['push'](...a['parameters']);return b['filter'](d=>d&&typeof d==='object');}function findSignerLogicEqualNodes(a){const b=[];function c(d,e){if(!d||typeof d!=='object')return;if(d['type']==='logic_equal'){const f=Array['isArray'](d['nodes'])?d['nodes']:d['left']&&d['right']?[d['left'],d['right']]:[];if(f['length']===0x2){const g=f['findIndex'](h=>h?.['type']==='context'&&h?.['context']==='Signer');g>=0x0&&b['push']({'node':d,'parentType':e,'otherOperand':f[0x1-g]});}}for(const h of getChildNodes(d)){c(h,d['type']);}}return c(a,null),b;}function detectLevel1StrictBinding(a,b){const c=findSignerLogicEqualNodes(a);for(const d of c){const e=d['otherOperand'];if(e?.['type']==='identifier'){const f=b['find'](g=>g['identifier']===e['identifier']);if(f&&!f['b_submission']&&f['value_type']==='Address'&&typeof f['value']==='string'&&f['value']['length']>0x0)return{'detected':!![],'entry':{'identifier':f['identifier'],'value':f['value'],'name':f['name']}};}}return{'detected':![]};}function isSignerCheckInLogicOr(a){const b=findSignerLogicEqualNodes(a);return b['some'](c=>c['parentType']==='logic_or');}const QUERY_INVARIANT_MAP=((()=>{const a=new Map();for(const b of GUARDQUERY){b['invariant']!==undefined&&a['set'](b['id'],b['invariant']);}return a;})());function extractQueryIds(a){const b=[],c=rootRaw(a),d=c['matchAll'](/"query"\s*:\s*(\d+)/g);for(const f of d){const g=parseInt(f[0x1],0xa);if(!b['includes'](g))b['push'](g);}const e=c['matchAll'](/"query"\s*:\s*"([^"]+)"/g);for(const h of e){const i=h[0x1],j=GUARDQUERY['find'](k=>k['name']===i);if(j&&!b['includes'](j['id']))b['push'](j['id']);}return b;}function bareBoolQueryClauses(a){const b=[],c=(d,e)=>{if(e>0x40||!d||typeof d!=='object'||typeof d['type']!=='string')return;if((d['type']==='logic_and'||d['type']==='logic_or')&&Array['isArray'](d['nodes']))for(const f of d['nodes']){if(f&&typeof f==='object'&&f['type']==='query'){const g=f['query'],h=typeof g==='number'?'#'+g:typeof g==='string'?g:'(unknown\x20query)';if(!b['includes'](h))b['push'](h);}}if(Array['isArray'](d['nodes'])){for(const i of d['nodes'])c(i,e+0x1);}if(d['node'])c(d['node'],e+0x1);};return c(a,0x0),b;}function rootAllQueriesNonZero(a){const b=extractQueryIds(a);if(b['length']===0x0)return![];return b['every'](c=>QUERY_INVARIANT_MAP['has'](c));}const REENTRANCY_SPECS=[{'sceneId':'reward_claim','level':'critical','existsPrimitives':[0x64d],'countPrimitives':[0x64c],'addressPrimitives':[0x65a],'rationale':'Guard\x20pass\x20distributes\x20reward\x20funds\x20to\x20the\x20Claimant\x20AND\x20creates\x20a\x20reward_record,\x20but\x20the\x20Guard\x20conditions\x20(identity,\x20time,\x20node\x20state)\x20do\x20NOT\x20naturally\x20invalidate\x20after\x20a\x20claim.\x20'+'Without\x20an\x20explicit\x20anti-reentrancy\x20primitive,\x20the\x20same\x20Claimant\x20can\x20repeatedly\x20pass\x20the\x20Guard\x20and\x20DRAIN\x20THE\x20ENTIRE\x20POOL.\x20'+'This\x20is\x20the\x20most\x20severe\x20reentrancy\x20scene\x20—\x20direct\x20fund\x20loss.','mitigation':'Add\x20ONE\x20of\x20the\x20following\x20to\x20the\x20root\x20(wrapped\x20in\x20logic_and\x20with\x20existing\x20conditions):\x0a'+'\x20\x20-\x20logic_not(query(\x27reward.record\x20has\x27,\x20object=reward,\x20parameters=[claimant_address]))\x20—\x20RECOMMENDED\x20(per-user\x20Bool\x20check)\x0a'+'\x20\x20-\x20logic_equal([query(\x27reward.record\x20count\x27,\x20object=reward),\x20identifier(N)])\x20where\x20table[N].value=0\x20—\x20total-claim\x20count\x20is\x200\x0a'+'\x20\x20-\x20logic_not(query(\x27reward.record.find_first\x27,\x20object=reward,\x20where={...}))\x20—\x20no\x20matching\x20record\x20found\x0a'+'Reference\x20template:\x20MyShop_Advanced\x20Guard\x207\x20condition\x204\x20(logic_not(query_reward_record_exists(where.storeFromId=order_id)))'},{'sceneId':'arbitration_voting_guard','level':'critical','existsPrimitives':[0x57c,0x57e],'countPrimitives':[0x57d],'addressPrimitives':[],'rationale':'Guard\x20pass\x20counts\x20the\x20vote\x20with\x20the\x20extracted\x20weight.\x20Without\x20anti-reentrancy,\x20the\x20same\x20voter\x20can\x20vote\x20MULTIPLE\x20times,\x20'+'multiplying\x20their\x20weight\x20and\x20skewing\x20the\x20arbitration\x20result\x20—\x20which\x20directly\x20determines\x20fund\x20ownership\x20via\x20compensation.\x20'+'The\x20voter\x27s\x20eligibility\x20(identity,\x20reputation)\x20does\x20NOT\x20naturally\x20invalidate\x20after\x20voting.\x20'+'Note:\x20arb.voted_count\x20(1403)\x20is\x20total\x20voter\x20count\x20(NOT\x20per-voter)\x20and\x20does\x20NOT\x20serve\x20as\x20an\x20anti-reentrancy\x20primitive\x20for\x20an\x20individual\x20voter.','mitigation':'Add\x20ONE\x20of\x20the\x20following\x20to\x20the\x20root\x20(wrapped\x20in\x20logic_and):\x0a'+'\x20\x20-\x20logic_not(query(\x27arb.voted\x20has\x27,\x20object=arb,\x20parameters=[voter_address]))\x20—\x20RECOMMENDED\x20(per-voter\x20Bool)\x0a'+'\x20\x20-\x20logic_not(query(\x27arb.voted.agree\x20has\x27,\x20object=arb,\x20parameters=[voter_address,\x20proposition_index]))\x20—\x20per-voter-per-proposition\x0a'+'\x20\x20-\x20logic_equal([query(\x27arb.voted.agree\x20count\x27,\x20object=arb,\x20parameters=[voter_address]),\x20identifier(N)])\x20where\x20table[N].value=0'},{'sceneId':'arbitration_usage_guard','level':'high','existsPrimitives':[0x61d],'countPrimitives':[0x61c],'addressPrimitives':[],'rationale':'Guard\x20pass\x20creates\x20a\x20new\x20Arb\x20case.\x20Without\x20anti-reentrancy,\x20a\x20customer\x20can\x20create\x20multiple\x20Arb\x20cases\x20for\x20the\x20SAME\x20Order\x20'+'(up\x20to\x20MAX_DISPUTE_COUNT=10),\x20harassing\x20the\x20counterparty\x20and\x20inflating\x20arbitration\x20system\x20load.\x20'+'Not\x20direct\x20fund\x20loss,\x20but\x20severe\x20system\x20abuse.\x20Filing\x20a\x20dispute\x20deduplicates\x20by\x20Arb\x20address\x20but\x20does\x20NOT\x20prevent\x20multiple\x20distinct\x20Arbs.','mitigation':'Add\x20ONE\x20of\x20the\x20following\x20to\x20the\x20root\x20(wrapped\x20in\x20logic_and):\x0a'+'\x20\x20-\x20logic_not(query(\x27order.dispute\x20has\x27,\x20object=order,\x20parameters=[existing_arb_address]))\x20—\x20per-Arb\x20check\x0a'+'\x20\x20-\x20logic_equal([query(\x27order.dispute\x20count\x27,\x20object=order),\x20identifier(N)])\x20where\x20table[N].value=0\x20—\x20STRICT:\x20block\x20any\x20prior\x20dispute\x0a'+'\x20\x20-\x20logic_as_u256_lesser_or_equal([query(\x27order.dispute\x20count\x27,\x20object=order),\x20identifier(N)])\x20where\x20table[N].value=K\x20—\x20LENIENT:\x20allow\x20up\x20to\x20K\x20disputes'},{'sceneId':'service_order_allocators_guard','level':'low','existsPrimitives':[0x620],'countPrimitives':[],'addressPrimitives':[0x621],'rationale':'Protocol-level\x20protection:\x20attaching\x20an\x20Allocation\x20to\x20an\x20Order\x20asserts\x20ONE\x20Allocation\x20per\x20Order\x20(E_ALLOCATION_ALREADY_SPECIFIED).\x20'+'After\x20alloc()\x20executes,\x20typical\x20Rate-mode\x20allocators\x20(sum=10000)\x20and\x20Surplus-mode\x20allocators\x20drain\x20balance\x20to\x200,\x20making\x20reentrancy\x20unprofitable.\x20'+'EDGE\x20CASE:\x20Amount-mode-only\x20allocators\x20(no\x20Surplus,\x20total\x20<\x20full\x20balance)\x20leave\x20remainder;\x20a\x20second\x20alloc()\x20could\x20extract\x20more\x20—\x20mitigated\x20by\x20preferring\x20Rate/RateGross/Surplus\x20modes.\x20'+'External\x20deposit\x20via\x20receive()\x20is\x20possible\x20but\x20irrational\x20(attacker\x20funds\x20the\x20Allocation\x20they\x20attack).','mitigation':'Default:\x20no\x20action\x20needed\x20(protocol-level\x20guard).\x20IF\x20using\x20Amount-mode-only\x20allocators\x20without\x20Surplus:\x20'+'consider\x20adding\x20logic_not(query(\x27order.allocation\x20some\x27,\x20object=order))\x20OR\x20switch\x20to\x20Rate/Surplus\x20mode\x20to\x20drain\x20balance\x20completely.'},{'sceneId':'service_buy_guard','level':'low','existsPrimitives':[],'countPrimitives':[],'addressPrimitives':[],'rationale':'Each\x20purchase\x20creates\x20a\x20fresh\x20Order;\x20no\x20existing\x20Order\x20state\x20is\x20modified.\x20Default:\x20no\x20reentrancy\x20risk.\x20'+'IF\x20business\x20intent\x20is\x20\x27limit\x20one\x20purchase\x20per\x20user\x27\x20(limited-edition\x20goods,\x20whitelist\x20single-buy),\x20an\x20anti-reentrancy\x20check\x20is\x20REQUIRED\x20'+'but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists\x20for\x20per-user\x20purchase\x20history.','mitigation':'IF\x20limit-purchase\x20intent:\x20record\x20purchases\x20in\x20a\x20Repository\x20and\x20add\x20logic_not(query(\x27repository.data\x20has\x27,\x20...))\x20to\x20root;\x20'+'OR\x20revoke\x20EntityRegistrar\x20membership\x20after\x20first\x20buy;\x20OR\x20use\x20an\x20off-chain\x20allowlist\x20with\x20on-chain\x20Merkle\x20proof.'},{'sceneId':'repository_write_guard','level':'low','existsPrimitives':[0x48e],'countPrimitives':[],'addressPrimitives':[],'rationale':'Default\x20writes\x20are\x20idempotent\x20(same\x20ID\x20overwrites,\x20different\x20ID\x20appends);\x20no\x20fund\x20flow.\x20'+'IF\x20business\x20intent\x20is\x20\x27one\x20write\x20per\x20ID\x27\x20(voting,\x20immutable\x20credential,\x20single-attestation),\x20an\x20anti-reentrancy\x20check\x20is\x20needed.','mitigation':'IF\x20one-write-per-ID\x20intent:\x20add\x20logic_not(query(\x27repository.data\x20has\x27,\x20object=repository,\x20parameters=[policy_name,\x20user_or_object_id]))\x20to\x20root.'},{'sceneId':'gen_passport_guard','level':'low','existsPrimitives':[],'countPrimitives':[],'addressPrimitives':[],'rationale':'Each\x20gen_passport\x20call\x20generates\x20an\x20independent\x20Passport\x20(one\x20Passport\x20per\x20operation).\x20'+'Multiple\x20Passports\x20for\x20the\x20same\x20user\x20are\x20usually\x20valid\x20(each\x20serves\x20a\x20different\x20subsequent\x20operation).\x20'+'IF\x20business\x20intent\x20is\x20\x27one\x20active\x20Passport\x20per\x20user\x27,\x20an\x20anti-reentrancy\x20check\x20is\x20needed\x20but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists.','mitigation':'IF\x20one-passport-per-user\x20intent:\x20use\x20off-chain\x20tracking\x20or\x20a\x20Repository\x20to\x20record\x20issued\x20Passport\x20IDs.'}],QUERY_TYPE_ALIASES=new Map([['query_reward_record_exists',0x64d],['query_reward_record_count',0x64c],['query_reward_record_find',0x65a],['query_progress_history_find',0x4fa],['query_progress_history_session_find',0x4fb],['query_progress_history_session_forward_find',0x4fc],['query_progress_history_session_count',0x4f9],['query_progress_history_session_forward_count',0x4ee],['query_repository_data_count_where',0x495],['query_repository_data_sum_where',0x496],['query_repository_policies_keys',0x497],['query_repository_data_find_where',0x498],['query_repository_data_keys_where',0x499]]);function detectReentrancyProtection(a,b,c){const d=new Set([...c['existsPrimitives'],...c['countPrimitives'],...c['addressPrimitives']]);if(d['size']===0x0)return{'state':'absent','evidence':'No\x20anti-reentrancy\x20primitive\x20available\x20in\x20GUARDQUERY\x20for\x20this\x20scene'};const e=new Map(),f=new Map();for(const p of d){const q=GUARDQUERY['find'](r=>r['id']===p);q&&(e['set'](p,q['name']),f['set'](q['name'],p));}const g=Array['from'](f['keys']());function h(r){if(!r||typeof r!=='object')return-0x1;if(typeof r['query']==='number'&&d['has'](r['query']))return r['query'];if(typeof r['query']==='string'&&f['has'](r['query']))return f['get'](r['query']);if(typeof r['type']==='string'&&QUERY_TYPE_ALIASES['has'](r['type'])){const s=QUERY_TYPE_ALIASES['get'](r['type']);if(d['has'](s))return s;}if(typeof r['type']==='string'&&f['has'](r['type']))return f['get'](r['type']);return-0x1;}function i(r){if(!r||typeof r!=='object')return![];if(typeof r['type']==='string'&&['number','u8','u16','u32','u64','u128','u256']['includes'](r['type']))return r['value']===0x0||r['value']==='0'||r['value']===0x0n;if(r['type']==='identifier'&&typeof r['identifier']==='number'){const s=b['find'](t=>t['identifier']===r['identifier']);if(s&&!s['b_submission'])return s['value']===0x0||s['value']==='0'||s['value']===0x0n;}return![];}function j(r,s){if(!r||typeof r!=='object')return[];const t=[];if(Array['isArray'](r['nodes']))for(const u of r['nodes']){if(u!==s)t['push'](u);}if(r['left']&&r['left']!==s)t['push'](r['left']);if(r['right']&&r['right']!==s)t['push'](r['right']);return t['filter'](v=>v&&typeof v==='object');}let k=![],l=![],m='',n='';function o(r,s){if(!r||typeof r!=='object')return;const t=h(r);if(t>=0x0){k=!![];const v=e['get'](t)??'query_'+t;n=v;const w=s?.['type']??null;let x=![];const y=c['existsPrimitives']['includes'](t),z=c['addressPrimitives']['includes'](t),A=c['countPrimitives']['includes'](t);(y||z)&&w==='logic_not'&&(x=!![]);if(A&&w==='logic_equal'){const B=j(s,r);B['some'](C=>i(C))&&(x=!![]);}if(x)l=!![];else{if(!m){const C=A?'logic_equal\x20with\x20a\x20zero\x20operand':'logic_not';m='Primitive\x20\x22'+v+'\x22\x20found\x20but\x20its\x20immediate\x20parent\x20is\x20'+(w??'root')+'\x20(expected\x20'+C+').\x20The\x20primitive\x20is\x20present\x20but\x20does\x20NOT\x20actually\x20prevent\x20reentrancy\x20—\x20this\x20is\x20a\x20false\x20sense\x20of\x20security.';}}}const u=[];if(Array['isArray'](r['nodes']))u['push'](...r['nodes']);if(r['left'])u['push'](r['left']);if(r['right'])u['push'](r['right']);if(r['node'])u['push'](r['node']);if(r['vec'])u['push'](r['vec']);if(r['target'])u['push'](r['target']);if(r['object']&&typeof r['object']==='object')u['push'](r['object']);if(Array['isArray'](r['parameters']))u['push'](...r['parameters']);for(const D of u){D&&typeof D==='object'&&o(D,r);}}o(a,null);if(l)return{'state':'protected','evidence':'Anti-reentrancy\x20primitive\x20\x22'+n+'\x22\x20is\x20properly\x20wrapped','foundPrimitiveName':n};if(k)return{'state':'pseudo','evidence':m,'foundPrimitiveName':n};return{'state':'absent','evidence':'No\x20anti-reentrancy\x20primitive\x20found\x20in\x20root.\x20Expected\x20one\x20of:\x20'+g['join'](',\x20')};}function stableKey(a){if(a===null||typeof a!=='object')return JSON['stringify'](a)??'null';if(Array['isArray'](a))return'['+a['map'](stableKey)['join'](',')+']';const b=a;return'{'+Object['keys'](b)['sort']()['map'](c=>JSON['stringify'](c)+':'+stableKey(b[c]))['join'](',')+'}';}function readsContext(a){return rootRaw(a)['includes']('\x22context\x22');}const NUMERIC_VALUE_TYPE=/^u(?:8|16|32|64|128|256)$/i,NUMERIC_NODE_TYPES=new Set(['calc_number_add','calc_number_multiply','calc_number_subtract','calc_number_divide','calc_number_mod','convert_address_number','convert_string_number','convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256','vec_length','calc_string_length']),REFLEXIVE_TRUE_OPS=new Set(['logic_equal','logic_as_u256_equal','logic_string_nocase_equal','calc_string_nocase_equal','logic_string_contains','calc_string_contains','logic_string_nocase_contains','calc_string_nocase_contains']),REFLEXIVE_FALSE_OPS=new Set(['logic_not_equal','logic_as_u256_greater','logic_as_u256_lesser']);function tableEntryOf(a,b){if(!a||a['type']!=='identifier')return undefined;return b['find'](c=>c['identifier']===a['identifier']);}function staticValueType(a,b){if(!a||typeof a!=='object'||typeof a['type']!=='string')return undefined;if(a['type']==='identifier')return tableEntryOf(a,b)?.['value_type'];const c=QUERY_TYPE_ALIASES['get'](a['type']),d=a['type']==='query'?a['query']:c;if(d!==undefined){const e=GUARDQUERY['find'](f=>f['id']===d||typeof d==='string'&&f['name']===d);if(e)return String(e['return']);}return NUMERIC_NODE_TYPES['has'](a['type'])?'U64':undefined;}function constantNumber(a,b){const c=tableEntryOf(a,b);if(!c||c['b_submission'])return undefined;if(!NUMERIC_VALUE_TYPE['test'](String(c['value_type'])))return undefined;const d=String(c['value']??'')['trim']();if(!/^\d+$/['test'](d))return undefined;try{return BigInt(d);}catch{return undefined;}}function foldCertainOutcome(c,d,e=0x0){if(e>0x40||!c||typeof c!=='object'||typeof c['type']!=='string')return undefined;const f=Array['isArray'](c['nodes'])?c['nodes']:[],g=i=>foldCertainOutcome(i,d,e+0x1),h=()=>f['length']>0x0?f['map'](g):undefined;switch(c['type']){case'identifier':{const i=tableEntryOf(c,d);if(!i||i['b_submission'])return undefined;if(/^bool$/i['test'](String(i['value_type']))){const j=String(i['value']??'')['trim']()['toLowerCase']();if(j==='true'||j==='false')return{'outcome':j,'reason':'table\x20entry\x20#'+i['identifier']+'\x20is\x20the\x20constant\x20Bool\x20'+j};}return undefined;}case'logic_and':{const k=h();if(!k)return undefined;const l=k['find'](m=>m?.['outcome']==='false');if(l)return{'outcome':'false','reason':'a\x20logic_and\x20branch\x20is\x20always\x20false:\x20'+l['reason']};if(k['every'](m=>m?.['outcome']==='true'))return{'outcome':'true','reason':'every\x20logic_and\x20branch\x20is\x20always\x20true:\x20'+(k[0x0]?.['reason']??'')};return undefined;}case'logic_or':{const m=h();if(!m)return undefined;const n=m['find'](o=>o?.['outcome']==='true');if(n)return{'outcome':'true','reason':'a\x20logic_or\x20branch\x20is\x20always\x20true:\x20'+n['reason']};if(m['every'](o=>o?.['outcome']==='false'))return{'outcome':'false','reason':'every\x20logic_or\x20branch\x20is\x20always\x20false'};return undefined;}case'logic_not':{const o=g(c['node']);if(!o)return undefined;return{'outcome':o['outcome']==='true'?'false':'true','reason':'logic_not\x20of\x20'+(o['outcome']==='true'?'an\x20always-true':'an\x20always-false')+'\x20expression:\x20'+o['reason']};}default:{if(f['length']<0x2)return undefined;const p=new Set(f['map'](stableKey));if(p['size']===0x1&&!readsContext(f[0x0])&&!rootRaw(f[0x0])['includes']('\x22query\x22')){if(REFLEXIVE_TRUE_OPS['has'](c['type']))return{'outcome':'true','reason':c['type']+'\x20compares\x20the\x20same\x20operand\x20to\x20itself\x20(identifier/constant\x20subtree\x20'+stableKey(f[0x0])['slice'](0x0,0x50)+')\x20—\x20it\x20can\x20never\x20reject'};if(REFLEXIVE_FALSE_OPS['has'](c['type']))return{'outcome':'false','reason':c['type']+'\x20compares\x20the\x20same\x20operand\x20to\x20itself\x20—\x20it\x20can\x20never\x20pass'};}const q=f['map'](s=>constantNumber(s,d)),r=c['type']==='logic_as_u256_greater_or_equal'?0x1:c['type']==='logic_as_u256_lesser_or_equal'?0x0:-0x1;if(r>=0x0&&f['length']===0x2){const s=0x1-r,t=f[s],u=staticValueType(t,d);if(q[r]===0x0n&&q[s]===undefined&&u!==undefined&&NUMERIC_VALUE_TYPE['test'](String(u))&&!readsContext(t))return{'outcome':'true','reason':c['type']+'\x20against\x20the\x20constant\x200\x20on\x20an\x20unsigned\x20('+u+')\x20operand\x20—\x20every\x20U-value\x20satisfies\x20it'};}if(q['length']===0x2&&q[0x0]!==undefined&&q[0x1]!==undefined){const v=q[0x0],w=q[0x1],x={'logic_equal':v===w,'logic_as_u256_equal':v===w,'logic_not_equal':v!==w,'logic_as_u256_greater':v>w,'logic_as_u256_greater_or_equal':v>=w,'logic_as_u256_lesser':v<w,'logic_as_u256_lesser_or_equal':v<=w};if(c['type']in x)return{'outcome':x[c['type']]?'true':'false','reason':c['type']+'\x20folds\x20on\x20two\x20constant\x20operands\x20('+v['toString']()+'\x20vs\x20'+w['toString']()+')'};}return undefined;}}}export function guardRiskFacts(a){const b={},c=rootRaw(a?.['root']),d=c['toLowerCase'](),f=Array['isArray'](a?.['table'])?a['table']:[],g=a?.['scene'],h=a?.['rely'];b['has_signer_check']=hasSignerCheck(c),b['has_clock_check']=hasClockCheck(c),b['has_guard_self_ref']=hasGuardSelfRef(c),b['has_witness']=hasWitness(c),b['queries_repository']=d['includes']('repository'),b['queries_progress']=d['includes']('progress'),b['root_has_query']=d['includes']('\x22query\x22'),b['root_has_clock_token']=d['includes']('clock'),b['root_has_calc_number_add']=d['includes']('calc_number_add'),b['root_has_logic_string_contains']=d['includes']('logic_string_contains'),b['root_has_logic_string_nocase']=d['includes']('logic_string_nocase'),b['root_has_logic_as_u256_greater_or_equal']=d['includes']('logic_as_u256_greater_or_equal'),b['root_has_logic_as_u256_greater']=d['includes']('logic_as_u256_greater'),b['root_has_logic_equal']=c['includes']('\x22logic_equal\x22'),b['root_has_logic_not_equal']=c['includes']('\x22logic_not_equal\x22'),b['logic_and_count']=(d['match'](/"logic_and"/g)||[])['length'],b['root_is_identifier']=a?.['root']?.['type']==='identifier';const i=b['root_is_identifier']?f['find'](D=>D['identifier']===a['root']['identifier']):undefined;b['root_identifier_is_submission']=i?.['b_submission']??![];const j=extractQueryIds(a?.['root']);b['root_query_ids_csv']=j['join'](',\x20'),b['root_has_progress_current_query']=j['includes'](0x4e5);const k=bareBoolQueryClauses(a?.['root']);k['length']>0x0&&(b['bare_bool_query_count']=k['length'],b['bare_bool_query_csv_sp']=k['join'](',\x20'));b['queries_arb_status']=d['includes']('arb.status'),b['arb_status_transient_gate']=b['queries_arb_status']&&f['some'](D=>!D['b_submission']&&/^u(8|16|32|64|128|256)$/i['test'](String(D['value_type']))&&Number(D['value'])===0x5);const l=f['some'](D=>D['b_submission']);b['has_submission']=l;const m=f['filter'](D=>!D['b_submission']&&D['value_type']==='Address'&&D['value']);m['length']>0x0&&(b['const_addr_count']=m['length'],b['const_addr_list']=m['map'](D=>'#'+D['identifier']+'='+D['value'])['join'](',\x20'));const n=f['filter'](D=>!D['b_submission']&&D['value_type']==='Address'&&typeof D['value']==='string'&&(D['value']['toLowerCase']()==='0xaab'||D['value']['toLowerCase']()==='0xaaa'));if(n['length']>0x0){b['sys_addr_list']=n['map'](E=>'#'+E['identifier']+'='+E['value']+'('+E['name']+')')['join'](',\x20');const D=n['find'](E=>E['value']==='0xaab'&&E['name']&&!E['name']['toLowerCase']()['includes']('registrar')||E['value']==='0xaaa'&&E['name']&&!E['name']['toLowerCase']()['includes']('linker'));b['sys_addr_wrong']=D!==undefined;}const o=extractWitnessCodes(a?.['root']),p=o['filter'](E=>[0x6a,0x6b,0x6c]['includes'](E));if(p['length']>0x0){const E={0x6a:'Arb→Progress\x20(two\x20hops:\x20arb.order\x20→\x20order.progress)',0x6b:'Arb→Machine\x20(two\x20hops:\x20arb.order\x20→\x20order.machine)',0x6c:'Arb→Service\x20(two\x20hops:\x20arb.order\x20→\x20order.service)'};b['witness_multihop_codes']=p,b['witness_multihop_csv']=p['join'](',\x20'),b['witness_multihop_names_block']=p['map'](F=>'\x20\x20-\x20'+F+':\x20'+E[F])['join']('\x0a');}const q=extractWitnessIdentifierPairs(a?.['root']),r=q['filter'](F=>F['code']>=0x64&&F['code']<=0x6c);if(r['length']>0x0){const F=[],G=[];for(const {code:I,identifier:J}of r){const K=WITNESS_CHAIN[I];if(!K)continue;const L=K[0x0],M=f['find'](O=>O['identifier']===J);if(!M)continue;const N=I+'\x20('+K['join']('→')+')';M['object_type']?M['object_type']!==L&&F['push']('witness\x20'+N+'\x20references\x20#'+J+'\x20'+('but\x20object_type='+M['object_type']+'\x20(expected\x20'+L+')')):G['push']('witness\x20'+N+'\x20references\x20#'+J+'\x20'+('but\x20object_type\x20is\x20not\x20set\x20(expected\x20'+L+')'));if(K['length']===0x3){const O=K[0x1],P=f['some'](Q=>Q['object_type']===O);!P&&G['push']('witness\x20'+N+'\x20multi-hop\x20chain\x20expects\x20intermediate\x20'+(O+'\x20in\x20table,\x20but\x20no\x20entry\x20with\x20object_type='+O+'\x20found'));}}const H=[...F,...G];H['length']>0x0&&(b['rc2_02_issue_count']=H['length'],b['rc2_02_has_hard_mismatch']=F['length']>0x0,b['rc2_02_evidence_lines']=H['map'](Q=>'\x20\x20-\x20'+Q)['join']('\x0a'),b['rc2_02_evidence_csv']=H['join'](';\x20'));}if(b['has_witness']){const Q=d['includes']('repository')&&d['includes']('\x22query\x22'),R=d['includes']('progress_history')&&d['includes']('\x22query\x22');if(Q||R){const S=d['includes']('convert_number_address')||d['includes']('convert_address_number')||d['includes']('convert_u256')||d['includes']('convert_string');b['rc2_04_queries_repo']=Q,b['rc2_04_queries_progress_history']=R,b['rc2_04_has_conversion']=S,b['rc2_04_conversion_note']=S?'\x0aThe\x20current\x20Guard\x20already\x20uses\x20type\x20conversion\x20nodes,\x20but\x20ensure\x20the\x20conversion\x20direction\x20is\x20correct.':'\x0aWarning:\x20no\x20type\x20conversion\x20node\x20detected\x20in\x20the\x20current\x20Guard;\x20parameter\x20type\x20mismatch\x20risk\x20may\x20exist.',b['rc2_04_conversion_evidence']=S?'Type\x20conversion\x20node\x20in\x20use':'No\x20type\x20conversion\x20node\x20detected';}}b['scene_present']=g!==undefined;g&&(b['scene_id']=g['id'],b['scene_host_object']=g['host_object'],b['scene_binding_field']=g['binding_field'],b['scene_mutable_after_publish']=g['mutable_after_publish']);b['rc3_01_sharing_exempt']=g?.['id']==='service_order_allocators_guard'&&Array['isArray'](a?.['sharing_recipients'])&&a['sharing_recipients']['length']>0x0&&!a['sharing_recipients']['includes']('Signer');if(g?.['binding_field']==='voting_guard'){const T=f['filter'](U=>U['b_submission']&&['U8','U16','U32','U64','U128','U256']['includes'](U['value_type']));T['length']>0x0&&(b['rc3_02_numeric_count']=T['length'],b['rc3_02_numeric_list']=T['map'](U=>'#'+U['identifier']+'('+U['value_type']+')')['join'](',\x20'));}const s=f['filter'](U=>U['b_submission']&&U['value_type']==='Address');if(s['length']>0x0){b['rc3_03_submitted_addr_count']=s['length'];const U=s['filter'](V=>!V['object_type']);b['rc3_03_no_type_count']=U['length'],b['rc3_03_evidence']=U['length']>0x0?'Missing\x20object_type:\x20'+U['map'](V=>'#'+V['identifier'])['join'](',\x20'):'Annotated:\x20'+s['map'](V=>'#'+V['identifier']+'='+V['object_type'])['join'](',\x20');}if(s['length']>0x0){const V=o['some'](a2=>[0x64,0x65,0x66]['includes'](a2)),W=o['some'](a2=>[0x67]['includes'](a2)),X=o['some'](a2=>[0x68,0x69,0x6a,0x6b,0x6c]['includes'](a2)),Y=s['filter'](a2=>a2['object_type']==='Order'||V&&!a2['object_type']),Z=s['filter'](a2=>a2['object_type']==='Progress'||W&&!a2['object_type']),a0=s['filter'](a2=>a2['object_type']==='Arb'||X&&!a2['object_type']),a1=Y['length']>0x0||Z['length']>0x0||a0['length']>0x0;if(a1){const a2=['machine_forward_guard','service_order_allocators_guard','arbitration_usage_guard','arbitration_voting_guard','reward_claim','progress_submission_guard'],a3=g?.['id'],a4=!a3||a2['includes'](a3);if(a4){const a5=new Set([0x61b,0x618,0x4e2,0x57a,0x579]),a6=j['some'](a7=>a5['has'](a7));if(!a6){const a7=[];for(const a8 of Y){a7['push']('#'+a8['identifier']+(a8['object_type']?'(Order)':'(inferred\x20Order\x20via\x20witness\x20100-102)'));}for(const a9 of Z){a7['push']('#'+a9['identifier']+(a9['object_type']?'(Progress)':'(inferred\x20Progress\x20via\x20witness\x20103)'));}for(const aa of a0){a7['push']('#'+aa['identifier']+(aa['object_type']?'(Arb)':'(inferred\x20Arb\x20via\x20witness\x20104-108)'));}b['rc3_05_applies']=!![],b['rc3_05_critical']=a3!==undefined&&a3==='machine_forward_guard',b['rc3_05_unbound_csv']=a7['join'](',\x20'),b['rc3_05_scene_label']=a3??'unknown\x20scene\x20(conservative\x20flag)';}}}}if(g?.['id']==='service_order_allocators_guard'&&!b['has_signer_check']){const ab=a?.['sharing_recipients'],ac=ab!==undefined&&ab['length']>0x0,ad=ac&&ab['includes']('Signer');if(!(ac&&!ad)){const ae=isUnboundSignerTheft({'recipient_is_signer':ad,'caller_identity_constrained':![]});b['rc3_06_applies']=!![],b['rc3_06_signer_sharing']=ae,b['rc3_06_recipients_label']=ac?'['+ab['join'](',\x20')+']':'(not\x20provided\x20—\x20conservative\x20flag)',b['rc3_06_title_suffix']=ad?'sharing.who=Signer\x20confirmed\x20—\x20anyone\x20can\x20steal\x20100%\x20of\x20funds':'if\x20sharing.who=Signer,\x20anyone\x20can\x20steal\x20100%\x20of\x20funds',b['rc3_06_level_rationale']=ae?'Signer\x20sharing\x20confirmed\x20→\x20critical':'sharing\x20hint\x20absent\x20→\x20conservative\x20medium';}}if(b['has_signer_check']){const af=c['includes']('\x22logic_equal\x22'),ag=c['includes']('\x22logic_not_equal\x22');b['rc4_01_comparison_detail']=(af?'logic_equal(==)':'')+'\x20'+(ag?'logic_not_equal(!=)':''),b['rc4_01_comparison_ops']=(af?'==':'')+'\x20'+(ag?'!=':'');}if(b['has_clock_check']){const ah=d['includes']('logic_as_u256_greater_or_equal'),ai=d['includes']('logic_as_u256_greater');(ah||ai)&&(b['rc4_02_has_greater_or_equal']=ah,b['rc4_02_has_greater']=ai,b['rc4_02_comparison_ops']=(ah?'>=':'')+'\x20'+(ai?'>':''));}if(b['has_signer_check']&&!isSignerCheckInLogicOr(a?.['root'])){const aj=detectLevel1StrictBinding(a?.['root'],f);if(aj['detected']&&aj['entry']){const ak=aj['entry'];b['rc4_04_detected']=!![],b['rc4_04_entry_identifier']=ak['identifier'],b['rc4_04_entry_value']=ak['value'],b['rc4_04_entry_detail']='b_submission=false,\x20value=\x22'+ak['value']+'\x22'+(ak['name']?',\x20name=\x22'+ak['name']+'\x22':'');}}const t=rootAllQueriesNonZero(a?.['root']),u=()=>{const al=j['filter'](am=>!QUERY_INVARIANT_MAP['has'](am));if(al['length']===0x0)return'';return'Queries\x20without\x20non-zero\x20invariant:\x20'+al['map'](am=>{const an=GUARDQUERY['find'](ao=>ao['id']===am);return an?an['id']+'\x20('+an['name']+')':''+am;})['join'](',\x20');};b['root_has_logic_as_u256_greater_or_equal']&&d['includes']('\x22clock\x22')&&b['root_has_calc_number_add']&&b['root_has_query']&&!t&&(b['rx1_01_trigger']=!![],b['rx1_01_evidence']=u()||'Baseline\x20query\x20may\x20return\x200');b['root_has_logic_as_u256_greater']&&b['root_has_query']&&!t&&(b['rx1_02_trigger']=!![],b['rx1_02_evidence']=u()||'Query\x20may\x20return\x200');const v=Array['isArray'](h?.['guards'])?h['guards']:[];b['rely_guards_count']=v['length'],b['rely_is_or']=h?.['logic_or']===!![],b['rely_logic']=h?.['logic_or']?'OR':'AND';const w=d['includes']('repository')&&d['includes']('\x22query\x22'),x=f['some'](al=>al['b_submission']&&al['value_type']==='Address'&&al['object_type']==='Repository'),y=w&&x;b['rx1_11_self_rep_false']=y,b['rx1_11_warning_tail']=y?'\x0aWarning:\x20the\x20current\x20Guard\x20itself\x20queries\x20repository.data\x20and\x20the\x20Repository\x20address\x20comes\x20from\x20submission,\x20'+'so\x20its\x20own\x20rep=false\x20and\x20cannot\x20be\x20depended\x20on\x20by\x20other\x20Guards.':'',b['rx1_11_evidence']=y?'Self\x20rep=false\x20(repository.data\x20query\x20depends\x20on\x20submission)':'Self\x20rep\x20status\x20to\x20be\x20confirmed';if(l){const al=f['filter'](an=>an['b_submission']),am=al['filter'](an=>(an['name']??'')==='');am['length']>0x0&&(b['rx1_12_vague_count']=am['length'],b['rx1_12_vague_csv']=am['map'](an=>'identifier='+an['identifier']+',\x20name=\x22'+(an['name']??'')+'\x22')['join'](';\x20'));}if(g){const an=f['find'](ao=>!ao['b_submission']&&ao['value_type']==='Address'&&ao['object_type']===g['host_object']);an&&(b['rx1_13_detected']=!![],b['rx1_13_identifier']=an['identifier']);}const z=REENTRANCY_SPECS['find'](ao=>ao['sceneId']===g?.['id']);if(z){const ao=detectReentrancyProtection(a?.['root'],f,z);ao['state']!=='protected'&&(b['reentry_applicable']=!![],b['reentry_state']=ao['state'],b['reentry_scene_id']=z['sceneId'],b['reentry_rationale']=z['rationale'],b['reentry_mitigation']=z['mitigation'],ao['state']==='pseudo'&&(b['reentry_found_primitive']=ao['foundPrimitiveName']??''),b['reentry_evidence']=ao['evidence']);}const A=foldCertainOutcome(a?.['root'],f),B=A?.['outcome']==='true';b['tree_folds_always_true']=B;A&&A['outcome']==='false'&&(b['tree_folds_always_false']=!![],b['tree_folds_always_false_reason']=A['reason']);if(B)b['tree_folds_always_true_reason']=A['reason'];const C=g?.['binding_field']==='write_guard'||g?.['id']==='repository_write_guard';return b['write_guard_scene']=C,C&&(b['write_guard_no_identity_check']=!b['has_signer_check'],b['write_guard_open']=B||!b['has_signer_check']),b;}function guardRuleBook(){const a=getJudgmentDoc()['rules']['domains']['guard'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27guard\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function dataSourceClassFor(a){if(a['startsWith']('R-C1-'))return'type1_onchain_constant';if(a['startsWith']('R-C2-'))return'type2_witness_derived';if(a['startsWith']('R-C3-'))return'type3_submitted_object';if(a['startsWith']('R-C4-'))return'type4_system_context';return'cross_type';}function findingToGuardRisk(a){return{'id':a['rule_id'],'data_source_class':dataSourceClassFor(a['rule_id']),'level':a['level'],'category':a['dimension']??'data_source_trust','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'',...a['evidence']!==undefined?{'evidence':a['evidence']}:{},...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export function runGuardRulePack(a){const b=guardRuleBook();let c;try{c=guardRiskFacts(a);}catch{return[];}return evaluateRuleBook(b,c)['findings']['map'](findingToGuardRisk);}export function assembleGuardAssessment(a,b){const c=getOverallRiskLevel(b),d={};for(const h of b){d[h['data_source_class']]=(d[h['data_source_class']]??0x0)+0x1;}const e=generateStakeholderAdvice(b,a['scene']),f=b['some'](i=>i['level']==='critical')||b['filter'](i=>i['level']==='high')['length']>=0x2,g=generateGuardSummary(a);return{'guard_summary':g,'scene':a['scene'],'risks':b,'overall_risk':c,'risks_by_data_source':d,'stakeholder_advice':e,'needs_human_review':f};}function getOverallRiskLevel(a){if(a['some'](b=>b['level']==='critical'))return'critical';if(a['some'](b=>b['level']==='high'))return'high';if(a['some'](b=>b['level']==='medium'))return'medium';return'low';}function generateStakeholderAdvice(a,b){const c={};for(const d of a){for(const e of d['affected_stakeholders']){if(!c[e])c[e]=[];c[e]['push']('['+d['level']['toUpperCase']()+']\x20'+d['title']+':\x20'+d['mitigation']);}}if(b)switch(b['binding_field']){case'buy_guard':if(!c['customer'])c['customer']=[];c['customer']['push']('Before\x20purchase,\x20verify\x20the\x20buy_guard\x20logic\x20to\x20ensure\x20your\x20identity/credentials\x20can\x20pass\x20validation');break;case'order_allocators':if(!c['provider'])c['provider']=[];c['provider']['push']('Verify\x20the\x20order_allocators\x20ordering\x20to\x20ensure\x20your\x20Allocator\x20will\x20not\x20be\x20skipped\x20by\x20preceding\x20conditions');break;case'voting_guard':if(!c['arbitrator'])c['arbitrator']=[];c['arbitrator']['push']('Confirm\x20the\x20voting\x20weight\x20source\x20is\x20trustworthy;\x20prefer\x20querying\x20EntityRegistrar\x20rather\x20than\x20user-submitted\x20data');break;case'Forward.guard':if(!c['customer'])c['customer']=[];c['customer']['push']('Verify\x20the\x20Forward.guard\x20conditions\x20to\x20ensure\x20you\x20can\x20satisfy\x20the\x20advancement\x20criteria\x20and\x20avoid\x20locked\x20funds');break;}return c;}function generateGuardSummary(a){const b=[];b['push']('table\x20entries:\x20'+a['table']['length']);const c=a['table']['filter'](d=>d['b_submission'])['length'];return b['push']('submitted\x20data:\x20'+c+'\x20entries'),b['push']('root\x20type:\x20'+(a['root']?.['type']??'unknown')),a['rely']&&b['push']('rely:\x20'+a['rely']['guards']['length']+'\x20dependencies\x20('+(a['rely']['logic_or']?'OR':'AND')+')'),b['join'](',\x20');}export function getRiskSummary(a){return{'risk_count':a['risks']['length'],'critical_count':a['risks']['filter'](b=>b['level']==='critical')['length'],'high_count':a['risks']['filter'](b=>b['level']==='high')['length'],'needs_human_review':a['needs_human_review'],'top_risks':a['risks']['filter'](b=>b['level']==='critical'||b['level']==='high')['slice'](0x0,0x3)['map'](b=>b['title'])};}export function getRiskRulesCount(){return factoryRulePack('guard')?.['rules']['length']??0x0;}export const RISK_RULES=((()=>{const a=factoryRulePack('guard');if(!a)return[];return a['rules']['map'](b=>({'id':b['rule_id'],'data_source_class':dataSourceClassFor(b['rule_id']),'trigger':b['trigger']??'','check':c=>{const d=guardRuleBook()['find'](f=>f['rule_id']===b['rule_id']);if(!d)return null;const {findings:e}=evaluateRuleBook([d],guardRiskFacts(c));return e['length']>0x0?findingToGuardRisk(e[0x0]):null;}}));})());
1
+ import{GUARDQUERY}from'@wowok/wowok';import{isUnboundSignerTheft}from'./recipient-constraint.js';import{factoryRulePack,getJudgmentDoc}from'../config/judgment.js';import{evaluateRuleBook}from'../config/rule-engine.js';function rootRaw(a){try{return JSON['stringify'](a)??'';}catch{return'';}}function hasSignerCheck(a){return a['includes']('\x22Signer\x22');}function hasClockCheck(a){return a['includes']('\x22Clock\x22');}function hasGuardSelfRef(a){return a['includes']('\x22Guard\x22');}function hasWitness(a){return a['includes']('\x22convert_witness\x22');}function extractWitnessCodes(a){const b=[],c=rootRaw(a),d=c['matchAll'](/"convert_witness"\s*:\s*(\d+)/g);for(const e of d){const f=parseInt(e[0x1],0xa);if(f>=0x64&&f<=0x6d)b['push'](f);}return b;}const WITNESS_CHAIN={0x64:['Order','Progress'],0x65:['Order','Machine'],0x66:['Order','Service'],0x67:['Progress','Machine'],0x68:['Arb','Order'],0x69:['Arb','Arbitration'],0x6a:['Arb','Order','Progress'],0x6b:['Arb','Order','Service'],0x6c:['Arb','Order','Machine'],0x6d:['Order','Allocation']};function extractWitnessIdentifierPairs(a){const b=[],c=new WeakSet();function d(e){if(e===null||typeof e!=='object')return;if(c['has'](e))return;c['add'](e);typeof e['convert_witness']==='number'&&typeof e['identifier']==='number'&&b['push']({'code':e['convert_witness'],'identifier':e['identifier']});for(const f of Object['keys'](e)){const g=e[f];if(Array['isArray'](g)){for(const h of g)d(h);}else g!==null&&typeof g==='object'&&d(g);}}return d(a),b;}function getChildNodes(a){if(!a||typeof a!=='object')return[];const b=[];if(Array['isArray'](a['nodes']))b['push'](...a['nodes']);if(a['left'])b['push'](a['left']);if(a['right'])b['push'](a['right']);if(a['vec'])b['push'](a['vec']);if(a['target'])b['push'](a['target']);if(a['object']&&typeof a['object']==='object')b['push'](a['object']);if(Array['isArray'](a['parameters']))b['push'](...a['parameters']);return b['filter'](d=>d&&typeof d==='object');}function findSignerLogicEqualNodes(a){const b=[];function c(d,e){if(!d||typeof d!=='object')return;if(d['type']==='logic_equal'){const f=Array['isArray'](d['nodes'])?d['nodes']:d['left']&&d['right']?[d['left'],d['right']]:[];if(f['length']===0x2){const g=f['findIndex'](h=>h?.['type']==='context'&&h?.['context']==='Signer');g>=0x0&&b['push']({'node':d,'parentType':e,'otherOperand':f[0x1-g]});}}for(const h of getChildNodes(d)){c(h,d['type']);}}return c(a,null),b;}function detectLevel1StrictBinding(a,b){const c=findSignerLogicEqualNodes(a);for(const d of c){const e=d['otherOperand'];if(e?.['type']==='identifier'){const f=b['find'](g=>g['identifier']===e['identifier']);if(f&&!f['b_submission']&&f['value_type']==='Address'&&typeof f['value']==='string'&&f['value']['length']>0x0)return{'detected':!![],'entry':{'identifier':f['identifier'],'value':f['value'],'name':f['name']}};}}return{'detected':![]};}function isSignerCheckInLogicOr(a){const b=findSignerLogicEqualNodes(a);return b['some'](c=>c['parentType']==='logic_or');}const QUERY_INVARIANT_MAP=((()=>{const a=new Map();for(const b of GUARDQUERY){b['invariant']!==undefined&&a['set'](b['id'],b['invariant']);}return a;})());function extractQueryIds(a){const b=[],c=rootRaw(a),d=c['matchAll'](/"query"\s*:\s*(\d+)/g);for(const f of d){const g=parseInt(f[0x1],0xa);if(!b['includes'](g))b['push'](g);}const e=c['matchAll'](/"query"\s*:\s*"([^"]+)"/g);for(const h of e){const i=h[0x1],j=GUARDQUERY['find'](k=>k['name']===i);if(j&&!b['includes'](j['id']))b['push'](j['id']);}return b;}function bareBoolQueryClauses(a){const b=[],c=(d,e)=>{if(e>0x40||!d||typeof d!=='object'||typeof d['type']!=='string')return;if((d['type']==='logic_and'||d['type']==='logic_or')&&Array['isArray'](d['nodes']))for(const f of d['nodes']){if(f&&typeof f==='object'&&f['type']==='query'){const g=f['query'],h=typeof g==='number'?'#'+g:typeof g==='string'?g:'(unknown\x20query)';if(!b['includes'](h))b['push'](h);}}if(Array['isArray'](d['nodes'])){for(const i of d['nodes'])c(i,e+0x1);}if(d['node'])c(d['node'],e+0x1);};return c(a,0x0),b;}function rootAllQueriesNonZero(a){const b=extractQueryIds(a);if(b['length']===0x0)return![];return b['every'](c=>QUERY_INVARIANT_MAP['has'](c));}const REENTRANCY_SPECS=[{'sceneId':'reward_claim','level':'critical','existsPrimitives':[0x64d],'countPrimitives':[0x64c],'addressPrimitives':[0x65a],'rationale':'Guard\x20pass\x20distributes\x20reward\x20funds\x20to\x20the\x20Claimant\x20AND\x20creates\x20a\x20reward_record,\x20but\x20the\x20Guard\x20conditions\x20(identity,\x20time,\x20node\x20state)\x20do\x20NOT\x20naturally\x20invalidate\x20after\x20a\x20claim.\x20'+'Without\x20an\x20explicit\x20anti-reentrancy\x20primitive,\x20the\x20same\x20Claimant\x20can\x20repeatedly\x20pass\x20the\x20Guard\x20and\x20DRAIN\x20THE\x20ENTIRE\x20POOL.\x20'+'This\x20is\x20the\x20most\x20severe\x20reentrancy\x20scene\x20—\x20direct\x20fund\x20loss.','mitigation':'Add\x20ONE\x20of\x20the\x20following\x20to\x20the\x20root\x20(wrapped\x20in\x20logic_and\x20with\x20existing\x20conditions):\x0a'+'\x20\x20-\x20logic_not(query(\x27reward.record\x20has\x27,\x20object=reward,\x20parameters=[claimant_address]))\x20—\x20RECOMMENDED\x20(per-user\x20Bool\x20check)\x0a'+'\x20\x20-\x20logic_equal([query(\x27reward.record\x20count\x27,\x20object=reward),\x20identifier(N)])\x20where\x20table[N].value=0\x20—\x20total-claim\x20count\x20is\x200\x0a'+'\x20\x20-\x20logic_not(query(\x27reward.record.find_first\x27,\x20object=reward,\x20where={...}))\x20—\x20no\x20matching\x20record\x20found\x0a'+'Reference\x20template:\x20MyShop_Advanced\x20Guard\x207\x20condition\x204\x20(logic_not(query_reward_record_exists(where.storeFromId=order_id)))'},{'sceneId':'arbitration_voting_guard','level':'critical','existsPrimitives':[0x57c,0x57e],'countPrimitives':[0x57d],'addressPrimitives':[],'rationale':'Guard\x20pass\x20counts\x20the\x20vote\x20with\x20the\x20extracted\x20weight.\x20Without\x20anti-reentrancy,\x20the\x20same\x20voter\x20can\x20vote\x20MULTIPLE\x20times,\x20'+'multiplying\x20their\x20weight\x20and\x20skewing\x20the\x20arbitration\x20result\x20—\x20which\x20directly\x20determines\x20fund\x20ownership\x20via\x20compensation.\x20'+'The\x20voter\x27s\x20eligibility\x20(identity,\x20reputation)\x20does\x20NOT\x20naturally\x20invalidate\x20after\x20voting.\x20'+'Note:\x20arb.voted_count\x20(1403)\x20is\x20total\x20voter\x20count\x20(NOT\x20per-voter)\x20and\x20does\x20NOT\x20serve\x20as\x20an\x20anti-reentrancy\x20primitive\x20for\x20an\x20individual\x20voter.','mitigation':'Add\x20ONE\x20of\x20the\x20following\x20to\x20the\x20root\x20(wrapped\x20in\x20logic_and):\x0a'+'\x20\x20-\x20logic_not(query(\x27arb.voted\x20has\x27,\x20object=arb,\x20parameters=[voter_address]))\x20—\x20RECOMMENDED\x20(per-voter\x20Bool)\x0a'+'\x20\x20-\x20logic_not(query(\x27arb.voted.agree\x20has\x27,\x20object=arb,\x20parameters=[voter_address,\x20proposition_index]))\x20—\x20per-voter-per-proposition\x0a'+'\x20\x20-\x20logic_equal([query(\x27arb.voted.agree\x20count\x27,\x20object=arb,\x20parameters=[voter_address]),\x20identifier(N)])\x20where\x20table[N].value=0'},{'sceneId':'arbitration_usage_guard','level':'high','existsPrimitives':[0x61d],'countPrimitives':[0x61c],'addressPrimitives':[],'rationale':'Guard\x20pass\x20creates\x20a\x20new\x20Arb\x20case.\x20Without\x20anti-reentrancy,\x20a\x20customer\x20can\x20create\x20multiple\x20Arb\x20cases\x20for\x20the\x20SAME\x20Order\x20'+'(up\x20to\x20MAX_DISPUTE_COUNT=10),\x20harassing\x20the\x20counterparty\x20and\x20inflating\x20arbitration\x20system\x20load.\x20'+'Not\x20direct\x20fund\x20loss,\x20but\x20severe\x20system\x20abuse.\x20Filing\x20a\x20dispute\x20deduplicates\x20by\x20Arb\x20address\x20but\x20does\x20NOT\x20prevent\x20multiple\x20distinct\x20Arbs.','mitigation':'Add\x20ONE\x20of\x20the\x20following\x20to\x20the\x20root\x20(wrapped\x20in\x20logic_and):\x0a'+'\x20\x20-\x20logic_not(query(\x27order.dispute\x20has\x27,\x20object=order,\x20parameters=[existing_arb_address]))\x20—\x20per-Arb\x20check\x0a'+'\x20\x20-\x20logic_equal([query(\x27order.dispute\x20count\x27,\x20object=order),\x20identifier(N)])\x20where\x20table[N].value=0\x20—\x20STRICT:\x20block\x20any\x20prior\x20dispute\x0a'+'\x20\x20-\x20logic_as_u256_lesser_or_equal([query(\x27order.dispute\x20count\x27,\x20object=order),\x20identifier(N)])\x20where\x20table[N].value=K\x20—\x20LENIENT:\x20allow\x20up\x20to\x20K\x20disputes'},{'sceneId':'service_order_allocators_guard','level':'low','existsPrimitives':[0x620],'countPrimitives':[],'addressPrimitives':[0x621],'rationale':'Protocol-level\x20protection:\x20attaching\x20an\x20Allocation\x20to\x20an\x20Order\x20asserts\x20ONE\x20Allocation\x20per\x20Order\x20(E_ALLOCATION_ALREADY_SPECIFIED).\x20'+'After\x20alloc()\x20executes,\x20typical\x20Surplus-mode\x20and\x20Rate-mode\x20allocators\x20drain\x20the\x20pool,\x20making\x20reentrancy\x20unprofitable.\x20'+'EXACTNESS\x20CAVEAT:\x20Rate\x20legs\x20floor\x20independently\x20(balance*rate/10000)\x20—\x20a\x20multi-leg\x20Rate\x20set\x20drains\x20to\x20exactly\x200\x20only\x20when\x20'+'the\x20balance\x20divides\x20evenly;\x20truncation\x20dust\x20otherwise\x20survives\x20and\x20a\x20second\x20alloc()\x20can\x20extract\x20it.\x20Single-leg\x20Rate\x2010000\x20'+'and\x20Surplus\x20mode\x20always\x20drain\x20exactly.\x20For\x20a\x20guaranteed\x20one-shot\x20rail,\x20arm\x20the\x20255\x20once-slot\x20instead\x20of\x20relying\x20on\x20the\x20arithmetic.\x20'+'EDGE\x20CASE:\x20Amount-mode-only\x20allocators\x20(no\x20Surplus,\x20total\x20<\x20full\x20balance)\x20leave\x20remainder;\x20a\x20second\x20alloc()\x20could\x20extract\x20more\x20—\x20mitigated\x20by\x20preferring\x20Rate/RateGross/Surplus\x20modes.\x20'+'External\x20deposit\x20via\x20receive()\x20is\x20possible\x20but\x20irrational\x20(attacker\x20funds\x20the\x20Allocation\x20they\x20attack).','mitigation':'Default:\x20no\x20action\x20needed\x20for\x20Surplus\x20or\x20single-leg\x20Rate-10000\x20rails.\x20IF\x20using\x20multi-leg\x20Rate\x20sets\x20with\x20untrusted\x20balances\x20or\x20'+'Amount-mode-only\x20allocators:\x20arm\x20a\x20255\x20once-slot\x20(one-shot\x20rail)\x20OR\x20add\x20logic_not(query(\x27order.allocation\x20some\x27,\x20object=order))\x20'+'OR\x20prefer\x20Rate/RateGross/Surplus\x20modes\x20to\x20drain\x20the\x20balance\x20completely.'},{'sceneId':'service_buy_guard','level':'low','existsPrimitives':[],'countPrimitives':[],'addressPrimitives':[],'rationale':'Each\x20purchase\x20creates\x20a\x20fresh\x20Order;\x20no\x20existing\x20Order\x20state\x20is\x20modified.\x20Default:\x20no\x20reentrancy\x20risk.\x20'+'IF\x20business\x20intent\x20is\x20\x27limit\x20one\x20purchase\x20per\x20user\x27\x20(limited-edition\x20goods,\x20whitelist\x20single-buy),\x20an\x20anti-reentrancy\x20check\x20is\x20REQUIRED\x20'+'but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists\x20for\x20per-user\x20purchase\x20history.','mitigation':'IF\x20limit-purchase\x20intent:\x20record\x20purchases\x20in\x20a\x20Repository\x20and\x20add\x20logic_not(query(\x27repository.data\x20has\x27,\x20...))\x20to\x20root;\x20'+'OR\x20revoke\x20EntityRegistrar\x20membership\x20after\x20first\x20buy;\x20OR\x20use\x20an\x20off-chain\x20allowlist\x20with\x20on-chain\x20Merkle\x20proof.'},{'sceneId':'repository_write_guard','level':'low','existsPrimitives':[0x48e],'countPrimitives':[],'addressPrimitives':[],'rationale':'Default\x20writes\x20are\x20idempotent\x20(same\x20ID\x20overwrites,\x20different\x20ID\x20appends);\x20no\x20fund\x20flow.\x20'+'IF\x20business\x20intent\x20is\x20\x27one\x20write\x20per\x20ID\x27\x20(voting,\x20immutable\x20credential,\x20single-attestation),\x20an\x20anti-reentrancy\x20check\x20is\x20needed.','mitigation':'IF\x20one-write-per-ID\x20intent:\x20add\x20logic_not(query(\x27repository.data\x20has\x27,\x20object=repository,\x20parameters=[policy_name,\x20user_or_object_id]))\x20to\x20root.'},{'sceneId':'gen_passport_guard','level':'low','existsPrimitives':[],'countPrimitives':[],'addressPrimitives':[],'rationale':'Each\x20gen_passport\x20call\x20generates\x20an\x20independent\x20Passport\x20(one\x20Passport\x20per\x20operation).\x20'+'Multiple\x20Passports\x20for\x20the\x20same\x20user\x20are\x20usually\x20valid\x20(each\x20serves\x20a\x20different\x20subsequent\x20operation).\x20'+'IF\x20business\x20intent\x20is\x20\x27one\x20active\x20Passport\x20per\x20user\x27,\x20an\x20anti-reentrancy\x20check\x20is\x20needed\x20but\x20no\x20direct\x20GUARDQUERY\x20primitive\x20exists.','mitigation':'IF\x20one-passport-per-user\x20intent:\x20use\x20off-chain\x20tracking\x20or\x20a\x20Repository\x20to\x20record\x20issued\x20Passport\x20IDs.'}],QUERY_TYPE_ALIASES=new Map([['query_reward_record_exists',0x64d],['query_reward_record_count',0x64c],['query_reward_record_find',0x65a],['query_progress_history_find',0x4fa],['query_progress_history_session_find',0x4fb],['query_progress_history_session_forward_find',0x4fc],['query_progress_history_session_count',0x4f9],['query_progress_history_session_forward_count',0x4ee],['query_repository_data_count_where',0x495],['query_repository_data_sum_where',0x496],['query_repository_policies_keys',0x497],['query_repository_data_find_where',0x498],['query_repository_data_keys_where',0x499]]);function detectReentrancyProtection(a,b,c){const d=new Set([...c['existsPrimitives'],...c['countPrimitives'],...c['addressPrimitives']]);if(d['size']===0x0)return{'state':'absent','evidence':'No\x20anti-reentrancy\x20primitive\x20available\x20in\x20GUARDQUERY\x20for\x20this\x20scene'};const e=new Map(),f=new Map();for(const p of d){const q=GUARDQUERY['find'](r=>r['id']===p);q&&(e['set'](p,q['name']),f['set'](q['name'],p));}const g=Array['from'](f['keys']());function h(r){if(!r||typeof r!=='object')return-0x1;if(typeof r['query']==='number'&&d['has'](r['query']))return r['query'];if(typeof r['query']==='string'&&f['has'](r['query']))return f['get'](r['query']);if(typeof r['type']==='string'&&QUERY_TYPE_ALIASES['has'](r['type'])){const s=QUERY_TYPE_ALIASES['get'](r['type']);if(d['has'](s))return s;}if(typeof r['type']==='string'&&f['has'](r['type']))return f['get'](r['type']);return-0x1;}function i(r){if(!r||typeof r!=='object')return![];if(typeof r['type']==='string'&&['number','u8','u16','u32','u64','u128','u256']['includes'](r['type']))return r['value']===0x0||r['value']==='0'||r['value']===0x0n;if(r['type']==='identifier'&&typeof r['identifier']==='number'){const s=b['find'](t=>t['identifier']===r['identifier']);if(s&&!s['b_submission'])return s['value']===0x0||s['value']==='0'||s['value']===0x0n;}return![];}function j(r,s){if(!r||typeof r!=='object')return[];const t=[];if(Array['isArray'](r['nodes']))for(const u of r['nodes']){if(u!==s)t['push'](u);}if(r['left']&&r['left']!==s)t['push'](r['left']);if(r['right']&&r['right']!==s)t['push'](r['right']);return t['filter'](v=>v&&typeof v==='object');}let k=![],l=![],m='',n='';function o(r,s){if(!r||typeof r!=='object')return;const t=h(r);if(t>=0x0){k=!![];const v=e['get'](t)??'query_'+t;n=v;const w=s?.['type']??null;let x=![];const y=c['existsPrimitives']['includes'](t),z=c['addressPrimitives']['includes'](t),A=c['countPrimitives']['includes'](t);(y||z)&&w==='logic_not'&&(x=!![]);if(A&&w==='logic_equal'){const B=j(s,r);B['some'](C=>i(C))&&(x=!![]);}if(x)l=!![];else{if(!m){const C=A?'logic_equal\x20with\x20a\x20zero\x20operand':'logic_not';m='Primitive\x20\x22'+v+'\x22\x20found\x20but\x20its\x20immediate\x20parent\x20is\x20'+(w??'root')+'\x20(expected\x20'+C+').\x20The\x20primitive\x20is\x20present\x20but\x20does\x20NOT\x20actually\x20prevent\x20reentrancy\x20—\x20this\x20is\x20a\x20false\x20sense\x20of\x20security.';}}}const u=[];if(Array['isArray'](r['nodes']))u['push'](...r['nodes']);if(r['left'])u['push'](r['left']);if(r['right'])u['push'](r['right']);if(r['node'])u['push'](r['node']);if(r['vec'])u['push'](r['vec']);if(r['target'])u['push'](r['target']);if(r['object']&&typeof r['object']==='object')u['push'](r['object']);if(Array['isArray'](r['parameters']))u['push'](...r['parameters']);for(const D of u){D&&typeof D==='object'&&o(D,r);}}o(a,null);if(l)return{'state':'protected','evidence':'Anti-reentrancy\x20primitive\x20\x22'+n+'\x22\x20is\x20properly\x20wrapped','foundPrimitiveName':n};if(k)return{'state':'pseudo','evidence':m,'foundPrimitiveName':n};return{'state':'absent','evidence':'No\x20anti-reentrancy\x20primitive\x20found\x20in\x20root.\x20Expected\x20one\x20of:\x20'+g['join'](',\x20')};}function stableKey(a){if(a===null||typeof a!=='object')return JSON['stringify'](a)??'null';if(Array['isArray'](a))return'['+a['map'](stableKey)['join'](',')+']';const b=a;return'{'+Object['keys'](b)['sort']()['map'](c=>JSON['stringify'](c)+':'+stableKey(b[c]))['join'](',')+'}';}function readsContext(a){return rootRaw(a)['includes']('\x22context\x22');}const NUMERIC_VALUE_TYPE=/^u(?:8|16|32|64|128|256)$/i,NUMERIC_NODE_TYPES=new Set(['calc_number_add','calc_number_multiply','calc_number_subtract','calc_number_divide','calc_number_mod','convert_address_number','convert_string_number','convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256','vec_length','calc_string_length']),REFLEXIVE_TRUE_OPS=new Set(['logic_equal','logic_as_u256_equal','logic_string_nocase_equal','calc_string_nocase_equal','logic_string_contains','calc_string_contains','logic_string_nocase_contains','calc_string_nocase_contains']),REFLEXIVE_FALSE_OPS=new Set(['logic_not_equal','logic_as_u256_greater','logic_as_u256_lesser']);function tableEntryOf(a,b){if(!a||a['type']!=='identifier')return undefined;return b['find'](c=>c['identifier']===a['identifier']);}function staticValueType(a,b){if(!a||typeof a!=='object'||typeof a['type']!=='string')return undefined;if(a['type']==='identifier')return tableEntryOf(a,b)?.['value_type'];const c=QUERY_TYPE_ALIASES['get'](a['type']),d=a['type']==='query'?a['query']:c;if(d!==undefined){const e=GUARDQUERY['find'](f=>f['id']===d||typeof d==='string'&&f['name']===d);if(e)return String(e['return']);}return NUMERIC_NODE_TYPES['has'](a['type'])?'U64':undefined;}function constantNumber(a,b){const c=tableEntryOf(a,b);if(!c||c['b_submission'])return undefined;if(!NUMERIC_VALUE_TYPE['test'](String(c['value_type'])))return undefined;const d=String(c['value']??'')['trim']();if(!/^\d+$/['test'](d))return undefined;try{return BigInt(d);}catch{return undefined;}}function foldCertainOutcome(c,d,e=0x0){if(e>0x40||!c||typeof c!=='object'||typeof c['type']!=='string')return undefined;const f=Array['isArray'](c['nodes'])?c['nodes']:[],g=i=>foldCertainOutcome(i,d,e+0x1),h=()=>f['length']>0x0?f['map'](g):undefined;switch(c['type']){case'identifier':{const i=tableEntryOf(c,d);if(!i||i['b_submission'])return undefined;if(/^bool$/i['test'](String(i['value_type']))){const j=String(i['value']??'')['trim']()['toLowerCase']();if(j==='true'||j==='false')return{'outcome':j,'reason':'table\x20entry\x20#'+i['identifier']+'\x20is\x20the\x20constant\x20Bool\x20'+j};}return undefined;}case'logic_and':{const k=h();if(!k)return undefined;const l=k['find'](m=>m?.['outcome']==='false');if(l)return{'outcome':'false','reason':'a\x20logic_and\x20branch\x20is\x20always\x20false:\x20'+l['reason']};if(k['every'](m=>m?.['outcome']==='true'))return{'outcome':'true','reason':'every\x20logic_and\x20branch\x20is\x20always\x20true:\x20'+(k[0x0]?.['reason']??'')};return undefined;}case'logic_or':{const m=h();if(!m)return undefined;const n=m['find'](o=>o?.['outcome']==='true');if(n)return{'outcome':'true','reason':'a\x20logic_or\x20branch\x20is\x20always\x20true:\x20'+n['reason']};if(m['every'](o=>o?.['outcome']==='false'))return{'outcome':'false','reason':'every\x20logic_or\x20branch\x20is\x20always\x20false'};return undefined;}case'logic_not':{const o=g(c['node']);if(!o)return undefined;return{'outcome':o['outcome']==='true'?'false':'true','reason':'logic_not\x20of\x20'+(o['outcome']==='true'?'an\x20always-true':'an\x20always-false')+'\x20expression:\x20'+o['reason']};}default:{if(f['length']<0x2)return undefined;const p=new Set(f['map'](stableKey));if(p['size']===0x1&&!readsContext(f[0x0])&&!rootRaw(f[0x0])['includes']('\x22query\x22')){if(REFLEXIVE_TRUE_OPS['has'](c['type']))return{'outcome':'true','reason':c['type']+'\x20compares\x20the\x20same\x20operand\x20to\x20itself\x20(identifier/constant\x20subtree\x20'+stableKey(f[0x0])['slice'](0x0,0x50)+')\x20—\x20it\x20can\x20never\x20reject'};if(REFLEXIVE_FALSE_OPS['has'](c['type']))return{'outcome':'false','reason':c['type']+'\x20compares\x20the\x20same\x20operand\x20to\x20itself\x20—\x20it\x20can\x20never\x20pass'};}const q=f['map'](s=>constantNumber(s,d)),r=c['type']==='logic_as_u256_greater_or_equal'?0x1:c['type']==='logic_as_u256_lesser_or_equal'?0x0:-0x1;if(r>=0x0&&f['length']===0x2){const s=0x1-r,t=f[s],u=staticValueType(t,d);if(q[r]===0x0n&&q[s]===undefined&&u!==undefined&&NUMERIC_VALUE_TYPE['test'](String(u))&&!readsContext(t))return{'outcome':'true','reason':c['type']+'\x20against\x20the\x20constant\x200\x20on\x20an\x20unsigned\x20('+u+')\x20operand\x20—\x20every\x20U-value\x20satisfies\x20it'};}if(q['length']===0x2&&q[0x0]!==undefined&&q[0x1]!==undefined){const v=q[0x0],w=q[0x1],x={'logic_equal':v===w,'logic_as_u256_equal':v===w,'logic_not_equal':v!==w,'logic_as_u256_greater':v>w,'logic_as_u256_greater_or_equal':v>=w,'logic_as_u256_lesser':v<w,'logic_as_u256_lesser_or_equal':v<=w};if(c['type']in x)return{'outcome':x[c['type']]?'true':'false','reason':c['type']+'\x20folds\x20on\x20two\x20constant\x20operands\x20('+v['toString']()+'\x20vs\x20'+w['toString']()+')'};}return undefined;}}}export function guardRiskFacts(a){const b={},c=rootRaw(a?.['root']),d=c['toLowerCase'](),f=Array['isArray'](a?.['table'])?a['table']:[],g=a?.['scene'],h=a?.['rely'];b['has_signer_check']=hasSignerCheck(c),b['has_clock_check']=hasClockCheck(c),b['has_guard_self_ref']=hasGuardSelfRef(c),b['has_witness']=hasWitness(c),b['queries_repository']=d['includes']('repository'),b['queries_progress']=d['includes']('progress'),b['root_has_query']=d['includes']('\x22query\x22'),b['root_has_clock_token']=d['includes']('clock'),b['root_has_calc_number_add']=d['includes']('calc_number_add'),b['root_has_logic_string_contains']=d['includes']('logic_string_contains'),b['root_has_logic_string_nocase']=d['includes']('logic_string_nocase'),b['root_has_logic_as_u256_greater_or_equal']=d['includes']('logic_as_u256_greater_or_equal'),b['root_has_logic_as_u256_greater']=d['includes']('logic_as_u256_greater'),b['root_has_logic_equal']=c['includes']('\x22logic_equal\x22'),b['root_has_logic_not_equal']=c['includes']('\x22logic_not_equal\x22'),b['logic_and_count']=(d['match'](/"logic_and"/g)||[])['length'],b['root_is_identifier']=a?.['root']?.['type']==='identifier';const i=b['root_is_identifier']?f['find'](D=>D['identifier']===a['root']['identifier']):undefined;b['root_identifier_is_submission']=i?.['b_submission']??![];const j=extractQueryIds(a?.['root']);b['root_query_ids_csv']=j['join'](',\x20'),b['root_has_progress_current_query']=j['includes'](0x4e5);const k=bareBoolQueryClauses(a?.['root']);k['length']>0x0&&(b['bare_bool_query_count']=k['length'],b['bare_bool_query_csv_sp']=k['join'](',\x20'));b['queries_arb_status']=d['includes']('arb.status'),b['arb_status_transient_gate']=b['queries_arb_status']&&f['some'](D=>!D['b_submission']&&/^u(8|16|32|64|128|256)$/i['test'](String(D['value_type']))&&Number(D['value'])===0x5);const l=f['some'](D=>D['b_submission']);b['has_submission']=l;const m=f['filter'](D=>!D['b_submission']&&D['value_type']==='Address'&&D['value']);m['length']>0x0&&(b['const_addr_count']=m['length'],b['const_addr_list']=m['map'](D=>'#'+D['identifier']+'='+D['value'])['join'](',\x20'));const n=f['filter'](D=>!D['b_submission']&&D['value_type']==='Address'&&typeof D['value']==='string'&&(D['value']['toLowerCase']()==='0xaab'||D['value']['toLowerCase']()==='0xaaa'));if(n['length']>0x0){b['sys_addr_list']=n['map'](E=>'#'+E['identifier']+'='+E['value']+'('+E['name']+')')['join'](',\x20');const D=n['find'](E=>E['value']==='0xaab'&&E['name']&&!E['name']['toLowerCase']()['includes']('registrar')||E['value']==='0xaaa'&&E['name']&&!E['name']['toLowerCase']()['includes']('linker'));b['sys_addr_wrong']=D!==undefined;}const o=extractWitnessCodes(a?.['root']),p=o['filter'](E=>[0x6a,0x6b,0x6c]['includes'](E));if(p['length']>0x0){const E={0x6a:'Arb→Progress\x20(two\x20hops:\x20arb.order\x20→\x20order.progress)',0x6b:'Arb→Machine\x20(two\x20hops:\x20arb.order\x20→\x20order.machine)',0x6c:'Arb→Service\x20(two\x20hops:\x20arb.order\x20→\x20order.service)'};b['witness_multihop_codes']=p,b['witness_multihop_csv']=p['join'](',\x20'),b['witness_multihop_names_block']=p['map'](F=>'\x20\x20-\x20'+F+':\x20'+E[F])['join']('\x0a');}const q=extractWitnessIdentifierPairs(a?.['root']),r=q['filter'](F=>F['code']>=0x64&&F['code']<=0x6d);if(r['length']>0x0){const F=[],G=[];for(const {code:I,identifier:J}of r){const K=WITNESS_CHAIN[I];if(!K)continue;const L=K[0x0],M=f['find'](O=>O['identifier']===J);if(!M)continue;const N=I+'\x20('+K['join']('→')+')';M['object_type']?M['object_type']!==L&&F['push']('witness\x20'+N+'\x20references\x20#'+J+'\x20'+('but\x20object_type='+M['object_type']+'\x20(expected\x20'+L+')')):G['push']('witness\x20'+N+'\x20references\x20#'+J+'\x20'+('but\x20object_type\x20is\x20not\x20set\x20(expected\x20'+L+')'));if(K['length']===0x3){const O=K[0x1],P=f['some'](Q=>Q['object_type']===O);!P&&G['push']('witness\x20'+N+'\x20multi-hop\x20chain\x20expects\x20intermediate\x20'+(O+'\x20in\x20table,\x20but\x20no\x20entry\x20with\x20object_type='+O+'\x20found'));}}const H=[...F,...G];H['length']>0x0&&(b['rc2_02_issue_count']=H['length'],b['rc2_02_has_hard_mismatch']=F['length']>0x0,b['rc2_02_evidence_lines']=H['map'](Q=>'\x20\x20-\x20'+Q)['join']('\x0a'),b['rc2_02_evidence_csv']=H['join'](';\x20'));}if(b['has_witness']){const Q=d['includes']('repository')&&d['includes']('\x22query\x22'),R=d['includes']('progress_history')&&d['includes']('\x22query\x22');if(Q||R){const S=d['includes']('convert_number_address')||d['includes']('convert_address_number')||d['includes']('convert_u256')||d['includes']('convert_string');b['rc2_04_queries_repo']=Q,b['rc2_04_queries_progress_history']=R,b['rc2_04_has_conversion']=S,b['rc2_04_conversion_note']=S?'\x0aThe\x20current\x20Guard\x20already\x20uses\x20type\x20conversion\x20nodes,\x20but\x20ensure\x20the\x20conversion\x20direction\x20is\x20correct.':'\x0aWarning:\x20no\x20type\x20conversion\x20node\x20detected\x20in\x20the\x20current\x20Guard;\x20parameter\x20type\x20mismatch\x20risk\x20may\x20exist.',b['rc2_04_conversion_evidence']=S?'Type\x20conversion\x20node\x20in\x20use':'No\x20type\x20conversion\x20node\x20detected';}}b['scene_present']=g!==undefined;g&&(b['scene_id']=g['id'],b['scene_host_object']=g['host_object'],b['scene_binding_field']=g['binding_field'],b['scene_mutable_after_publish']=g['mutable_after_publish']);b['rc3_01_sharing_exempt']=g?.['id']==='service_order_allocators_guard'&&Array['isArray'](a?.['sharing_recipients'])&&a['sharing_recipients']['length']>0x0&&!a['sharing_recipients']['includes']('Signer');if(g?.['binding_field']==='voting_guard'){const T=f['filter'](U=>U['b_submission']&&['U8','U16','U32','U64','U128','U256']['includes'](U['value_type']));T['length']>0x0&&(b['rc3_02_numeric_count']=T['length'],b['rc3_02_numeric_list']=T['map'](U=>'#'+U['identifier']+'('+U['value_type']+')')['join'](',\x20'));}const s=f['filter'](U=>U['b_submission']&&U['value_type']==='Address');if(s['length']>0x0){b['rc3_03_submitted_addr_count']=s['length'];const U=s['filter'](V=>!V['object_type']);b['rc3_03_no_type_count']=U['length'],b['rc3_03_evidence']=U['length']>0x0?'Missing\x20object_type:\x20'+U['map'](V=>'#'+V['identifier'])['join'](',\x20'):'Annotated:\x20'+s['map'](V=>'#'+V['identifier']+'='+V['object_type'])['join'](',\x20');}if(s['length']>0x0){const V=o['some'](a2=>[0x64,0x65,0x66]['includes'](a2)),W=o['some'](a2=>[0x67]['includes'](a2)),X=o['some'](a2=>[0x68,0x69,0x6a,0x6b,0x6c]['includes'](a2)),Y=s['filter'](a2=>a2['object_type']==='Order'||V&&!a2['object_type']),Z=s['filter'](a2=>a2['object_type']==='Progress'||W&&!a2['object_type']),a0=s['filter'](a2=>a2['object_type']==='Arb'||X&&!a2['object_type']),a1=Y['length']>0x0||Z['length']>0x0||a0['length']>0x0;if(a1){const a2=['machine_forward_guard','service_order_allocators_guard','arbitration_usage_guard','arbitration_voting_guard','reward_claim','progress_submission_guard'],a3=g?.['id'],a4=!a3||a2['includes'](a3);if(a4){const a5=new Set([0x61b,0x618,0x4e2,0x57a,0x579]),a6=j['some'](a7=>a5['has'](a7));if(!a6){const a7=[];for(const a8 of Y){a7['push']('#'+a8['identifier']+(a8['object_type']?'(Order)':'(inferred\x20Order\x20via\x20witness\x20100-102)'));}for(const a9 of Z){a7['push']('#'+a9['identifier']+(a9['object_type']?'(Progress)':'(inferred\x20Progress\x20via\x20witness\x20103)'));}for(const aa of a0){a7['push']('#'+aa['identifier']+(aa['object_type']?'(Arb)':'(inferred\x20Arb\x20via\x20witness\x20104-108)'));}b['rc3_05_applies']=!![],b['rc3_05_critical']=a3!==undefined&&a3==='machine_forward_guard',b['rc3_05_unbound_csv']=a7['join'](',\x20'),b['rc3_05_scene_label']=a3??'unknown\x20scene\x20(conservative\x20flag)';}}}}if(g?.['id']==='service_order_allocators_guard'&&!b['has_signer_check']){const ab=a?.['sharing_recipients'],ac=ab!==undefined&&ab['length']>0x0,ad=ac&&ab['includes']('Signer');if(!(ac&&!ad)){const ae=isUnboundSignerTheft({'recipient_is_signer':ad,'caller_identity_constrained':![]});b['rc3_06_applies']=!![],b['rc3_06_signer_sharing']=ae,b['rc3_06_recipients_label']=ac?'['+ab['join'](',\x20')+']':'(not\x20provided\x20—\x20conservative\x20flag)',b['rc3_06_title_suffix']=ad?'sharing.who=Signer\x20confirmed\x20—\x20anyone\x20can\x20steal\x20100%\x20of\x20funds':'if\x20sharing.who=Signer,\x20anyone\x20can\x20steal\x20100%\x20of\x20funds',b['rc3_06_level_rationale']=ae?'Signer\x20sharing\x20confirmed\x20→\x20critical':'sharing\x20hint\x20absent\x20→\x20conservative\x20medium';}}if(b['has_signer_check']){const af=c['includes']('\x22logic_equal\x22'),ag=c['includes']('\x22logic_not_equal\x22');b['rc4_01_comparison_detail']=(af?'logic_equal(==)':'')+'\x20'+(ag?'logic_not_equal(!=)':''),b['rc4_01_comparison_ops']=(af?'==':'')+'\x20'+(ag?'!=':'');}if(b['has_clock_check']){const ah=d['includes']('logic_as_u256_greater_or_equal'),ai=d['includes']('logic_as_u256_greater');(ah||ai)&&(b['rc4_02_has_greater_or_equal']=ah,b['rc4_02_has_greater']=ai,b['rc4_02_comparison_ops']=(ah?'>=':'')+'\x20'+(ai?'>':''));}if(b['has_signer_check']&&!isSignerCheckInLogicOr(a?.['root'])){const aj=detectLevel1StrictBinding(a?.['root'],f);if(aj['detected']&&aj['entry']){const ak=aj['entry'];b['rc4_04_detected']=!![],b['rc4_04_entry_identifier']=ak['identifier'],b['rc4_04_entry_value']=ak['value'],b['rc4_04_entry_detail']='b_submission=false,\x20value=\x22'+ak['value']+'\x22'+(ak['name']?',\x20name=\x22'+ak['name']+'\x22':'');}}const t=rootAllQueriesNonZero(a?.['root']),u=()=>{const al=j['filter'](am=>!QUERY_INVARIANT_MAP['has'](am));if(al['length']===0x0)return'';return'Queries\x20without\x20non-zero\x20invariant:\x20'+al['map'](am=>{const an=GUARDQUERY['find'](ao=>ao['id']===am);return an?an['id']+'\x20('+an['name']+')':''+am;})['join'](',\x20');};b['root_has_logic_as_u256_greater_or_equal']&&d['includes']('\x22clock\x22')&&b['root_has_calc_number_add']&&b['root_has_query']&&!t&&(b['rx1_01_trigger']=!![],b['rx1_01_evidence']=u()||'Baseline\x20query\x20may\x20return\x200');b['root_has_logic_as_u256_greater']&&b['root_has_query']&&!t&&(b['rx1_02_trigger']=!![],b['rx1_02_evidence']=u()||'Query\x20may\x20return\x200');const v=Array['isArray'](h?.['guards'])?h['guards']:[];b['rely_guards_count']=v['length'],b['rely_is_or']=h?.['logic_or']===!![],b['rely_logic']=h?.['logic_or']?'OR':'AND';const w=d['includes']('repository')&&d['includes']('\x22query\x22'),x=f['some'](al=>al['b_submission']&&al['value_type']==='Address'&&al['object_type']==='Repository'),y=w&&x;b['rx1_11_self_rep_false']=y,b['rx1_11_warning_tail']=y?'\x0aWarning:\x20the\x20current\x20Guard\x20itself\x20queries\x20repository.data\x20and\x20the\x20Repository\x20address\x20comes\x20from\x20submission,\x20'+'so\x20its\x20own\x20rep=false\x20and\x20cannot\x20be\x20depended\x20on\x20by\x20other\x20Guards.':'',b['rx1_11_evidence']=y?'Self\x20rep=false\x20(repository.data\x20query\x20depends\x20on\x20submission)':'Self\x20rep\x20status\x20to\x20be\x20confirmed';if(l){const al=f['filter'](an=>an['b_submission']),am=al['filter'](an=>(an['name']??'')==='');am['length']>0x0&&(b['rx1_12_vague_count']=am['length'],b['rx1_12_vague_csv']=am['map'](an=>'identifier='+an['identifier']+',\x20name=\x22'+(an['name']??'')+'\x22')['join'](';\x20'));}if(g){const an=f['find'](ao=>!ao['b_submission']&&ao['value_type']==='Address'&&ao['object_type']===g['host_object']);an&&(b['rx1_13_detected']=!![],b['rx1_13_identifier']=an['identifier']);}const z=REENTRANCY_SPECS['find'](ao=>ao['sceneId']===g?.['id']);if(z){const ao=detectReentrancyProtection(a?.['root'],f,z);ao['state']!=='protected'&&(b['reentry_applicable']=!![],b['reentry_state']=ao['state'],b['reentry_scene_id']=z['sceneId'],b['reentry_rationale']=z['rationale'],b['reentry_mitigation']=z['mitigation'],ao['state']==='pseudo'&&(b['reentry_found_primitive']=ao['foundPrimitiveName']??''),b['reentry_evidence']=ao['evidence']);}const A=foldCertainOutcome(a?.['root'],f),B=A?.['outcome']==='true';b['tree_folds_always_true']=B;A&&A['outcome']==='false'&&(b['tree_folds_always_false']=!![],b['tree_folds_always_false_reason']=A['reason']);if(B)b['tree_folds_always_true_reason']=A['reason'];const C=g?.['binding_field']==='write_guard'||g?.['id']==='repository_write_guard';return b['write_guard_scene']=C,C&&(b['write_guard_no_identity_check']=!b['has_signer_check'],b['write_guard_open']=B||!b['has_signer_check']),b;}function guardRuleBook(){const a=getJudgmentDoc()['rules']['domains']['guard'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27guard\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function dataSourceClassFor(a){if(a['startsWith']('R-C1-'))return'type1_onchain_constant';if(a['startsWith']('R-C2-'))return'type2_witness_derived';if(a['startsWith']('R-C3-'))return'type3_submitted_object';if(a['startsWith']('R-C4-'))return'type4_system_context';return'cross_type';}function findingToGuardRisk(a){return{'id':a['rule_id'],'data_source_class':dataSourceClassFor(a['rule_id']),'level':a['level'],'category':a['dimension']??'data_source_trust','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'',...a['evidence']!==undefined?{'evidence':a['evidence']}:{},...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export function runGuardRulePack(a){const b=guardRuleBook();let c;try{c=guardRiskFacts(a);}catch{return[];}return evaluateRuleBook(b,c)['findings']['map'](findingToGuardRisk);}export function assembleGuardAssessment(a,b){const c=getOverallRiskLevel(b),d={};for(const h of b){d[h['data_source_class']]=(d[h['data_source_class']]??0x0)+0x1;}const e=generateStakeholderAdvice(b,a['scene']),f=b['some'](i=>i['level']==='critical')||b['filter'](i=>i['level']==='high')['length']>=0x2,g=generateGuardSummary(a);return{'guard_summary':g,'scene':a['scene'],'risks':b,'overall_risk':c,'risks_by_data_source':d,'stakeholder_advice':e,'needs_human_review':f};}function getOverallRiskLevel(a){if(a['some'](b=>b['level']==='critical'))return'critical';if(a['some'](b=>b['level']==='high'))return'high';if(a['some'](b=>b['level']==='medium'))return'medium';return'low';}function generateStakeholderAdvice(a,b){const c={};for(const d of a){for(const e of d['affected_stakeholders']){if(!c[e])c[e]=[];c[e]['push']('['+d['level']['toUpperCase']()+']\x20'+d['title']+':\x20'+d['mitigation']);}}if(b)switch(b['binding_field']){case'buy_guard':if(!c['customer'])c['customer']=[];c['customer']['push']('Before\x20purchase,\x20verify\x20the\x20buy_guard\x20logic\x20to\x20ensure\x20your\x20identity/credentials\x20can\x20pass\x20validation');break;case'order_allocators':if(!c['provider'])c['provider']=[];c['provider']['push']('Verify\x20the\x20order_allocators\x20ordering\x20to\x20ensure\x20your\x20Allocator\x20will\x20not\x20be\x20skipped\x20by\x20preceding\x20conditions');break;case'voting_guard':if(!c['arbitrator'])c['arbitrator']=[];c['arbitrator']['push']('Confirm\x20the\x20voting\x20weight\x20source\x20is\x20trustworthy;\x20prefer\x20querying\x20EntityRegistrar\x20rather\x20than\x20user-submitted\x20data');break;case'Forward.guard':if(!c['customer'])c['customer']=[];c['customer']['push']('Verify\x20the\x20Forward.guard\x20conditions\x20to\x20ensure\x20you\x20can\x20satisfy\x20the\x20advancement\x20criteria\x20and\x20avoid\x20locked\x20funds');break;}return c;}function generateGuardSummary(a){const b=[];b['push']('table\x20entries:\x20'+a['table']['length']);const c=a['table']['filter'](d=>d['b_submission'])['length'];return b['push']('submitted\x20data:\x20'+c+'\x20entries'),b['push']('root\x20type:\x20'+(a['root']?.['type']??'unknown')),a['rely']&&b['push']('rely:\x20'+a['rely']['guards']['length']+'\x20dependencies\x20('+(a['rely']['logic_or']?'OR':'AND')+')'),b['join'](',\x20');}export function getRiskSummary(a){return{'risk_count':a['risks']['length'],'critical_count':a['risks']['filter'](b=>b['level']==='critical')['length'],'high_count':a['risks']['filter'](b=>b['level']==='high')['length'],'needs_human_review':a['needs_human_review'],'top_risks':a['risks']['filter'](b=>b['level']==='critical'||b['level']==='high')['slice'](0x0,0x3)['map'](b=>b['title'])};}export function getRiskRulesCount(){return factoryRulePack('guard')?.['rules']['length']??0x0;}export const RISK_RULES=((()=>{const a=factoryRulePack('guard');if(!a)return[];return a['rules']['map'](b=>({'id':b['rule_id'],'data_source_class':dataSourceClassFor(b['rule_id']),'trigger':b['trigger']??'','check':c=>{const d=guardRuleBook()['find'](f=>f['rule_id']===b['rule_id']);if(!d)return null;const {findings:e}=evaluateRuleBook([d],guardRiskFacts(c));return e['length']>0x0?findingToGuardRisk(e[0x0]):null;}}));})());
@@ -25,6 +25,7 @@ export interface GuardSubmissionPrompt {
25
25
  stakes: string;
26
26
  };
27
27
  data_source_warnings?: string[];
28
+ protocol_slot_warning?: string;
28
29
  brief_text?: string;
29
30
  }
30
31
  export interface SubmissionContext {
@@ -1 +1 @@
1
- import{buildGuardSubmissionBrief,loadGuardJsonFromChain,renderSubmissionBrief}from'./guard-submission-brief.js';function inferValue(a,b,c){const d=a['toLowerCase']();if(d['includes']('order')||d['includes']('task')){if(c['order_address'])return{'value':c['order_address'],'reason':'Inferred\x20from\x20operation\x27s\x20order_address\x20context'};if(c['progress_address'])return{'value':c['progress_address'],'reason':'Progress.task\x20is\x20typically\x20the\x20order\x20—\x20query\x20Progress\x20to\x20get\x20the\x20actual\x20task\x20address'};}if(d['includes']('signer')||d['includes']('sender')||d['includes']('caller')){if(c['signer'])return{'value':c['signer'],'reason':'Inferred\x20from\x20env.account\x20(the\x20signing\x20account)'};}if(d['includes']('service')){if(c['service_address'])return{'value':c['service_address'],'reason':'Inferred\x20from\x20operation\x27s\x20service_address\x20context'};}if(d['includes']('machine')){if(c['machine_address'])return{'value':c['machine_address'],'reason':'Inferred\x20from\x20operation\x27s\x20machine_address\x20context'};}if(d['includes']('progress')||d['includes']('node')||d['includes']('current')){if(c['progress_current'])return{'value':c['progress_current'],'reason':'Inferred\x20from\x20Progress.current\x20node\x20name'};}if(d['includes']('allocation')||d['includes']('allocator')){if(c['allocation_address'])return{'value':c['allocation_address'],'reason':'Inferred\x20from\x20operation\x27s\x20allocation_address\x20context'};}if(c['extra'])for(const [e,f]of Object['entries'](c['extra'])){if(d['includes'](e['toLowerCase']()))return{'value':f,'reason':'Inferred\x20from\x20extra\x20context:\x20'+e};}return undefined;}function describeField(a,b){const c=a['toLowerCase']();if(c['includes']('order'))return'Order\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('signer')||c['includes']('sender'))return'Transaction\x20signer\x20address\x20(type:\x20'+b+')';if(c['includes']('service'))return'Service\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('machine'))return'Machine\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('progress'))return'Progress\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('node')||c['includes']('current'))return'Current\x20node\x20name\x20(type:\x20'+b+')';if(c['includes']('amount')||c['includes']('price')||c['includes']('balance'))return'Amount\x20in\x20smallest\x20unit\x20(type:\x20'+b+')';if(c['includes']('allocation'))return'Allocation\x20object\x20address\x20(type:\x20'+b+')';return'Field\x20\x22'+a+'\x22\x20(type:\x20'+b+')';}export function buildSubmissionFillExample(a,b){return JSON['stringify']({'type':'submission','guard':[{'object':a,'impack':!![]}],'submission':[{'guard':a,'submission':b['map'](c=>({'identifier':c['identifier'],'name':c['name'],'b_submission':!![],'value_type':c['value_type'],'value':c['suggested_value']??'<'+c['value_type']+'_value>'}))}]},null,0x2);}export async function generateGuardSubmissionPrompt(a,b){const c=await loadGuardJsonFromChain(a,b['network']);if(!c)return undefined;const {guard:d,name:e,json:f}=c,g=await buildGuardSubmissionBrief({'guard_json':f,'action':b['action'],'network':b['network']});if(!g)return undefined;const h=(f['table']??[])['filter'](m=>m['b_submission']===!![]);if(h['length']===0x0)return undefined;const i=new Map(g['submission_checklist']['map'](m=>[m['identifier'],m['feeds_recipient']])),j=h['map'](m=>{const n=m['name']??'identifier_'+m['identifier'],o=m['value_type']??'Address',p=inferValue(n,o,b);return{'identifier':m['identifier'],'name':n,'value_type':o,'required':!![],'suggested_value':p?.['value'],'suggestion_reason':p?.['reason'],'description':describeField(n,o),...i['get'](m['identifier'])?{'feeds_recipient':!![]}:{}};}),k=e??d,l=buildSubmissionFillExample(k,j);return{'guard_address':d,'guard_name':e,'operation':b['operation'],'required_fields':j,'context':'Operation\x20\x22'+b['operation']+'\x22\x20requires\x20Guard\x20\x22'+(e??d)+'\x22\x20verification.\x20'+('The\x20Guard\x20has\x20'+j['length']+'\x20field(s)\x20that\x20need\x20submission\x20data\x20(b_submission=true).\x20')+'Retry\x20the\x20SAME\x20operation\x20call\x20with\x20a\x20top-level\x20`submission`\x20field\x20(a\x20SIBLING\x20of\x20`data`\x20and\x20`env`,\x20NOT\x20inside\x20`data`)\x20using\x20the\x20exact\x20JSON\x20shape\x20shown\x20in\x20fill_example.\x20'+'Each\x20field\x20has\x20an\x20identifier\x20(number),\x20name,\x20and\x20expected\x20value_type.\x20'+'The\x20suggested_value\x20(if\x20provided)\x20is\x20inferred\x20from\x20the\x20operation\x20context\x20—\x20verify\x20before\x20using.','fill_example':l,...g['binding']?{'binding_semantics':{'action':g['binding']['action'],'role':g['binding']['semantics']['role'],'submission_meaning':g['binding']['semantics']['submission_meaning'],'on_pass':g['binding']['semantics']['on_pass'],'on_fail':g['binding']['semantics']['on_fail'],'stakes':g['binding']['semantics']['stakes']}}:{},...g['data_source_warnings']['length']>0x0?{'data_source_warnings':g['data_source_warnings']}:{},'brief_text':renderSubmissionBrief(g)};}export function formatSubmissionPrompt(a){const b=[];b['push']('GUARD\x20SUBMISSION\x20REQUIRED\x20—\x20operation\x20cannot\x20proceed\x20without\x20submission\x20data.'),b['push']('Guard:\x20'+(a['guard_name']??a['guard_address'])+'\x20('+a['guard_address']+')'),b['push']('Operation:\x20'+a['operation']);a['binding_semantics']&&(b['push'](''),b['push']('Business\x20slot:\x20'+a['binding_semantics']['role']),b['push']('Your\x20submission\x20means:\x20'+a['binding_semantics']['submission_meaning']));b['push'](''),b['push']('Required\x20fields\x20(fill\x20these\x20in\x20the\x20submission):');for(const c of a['required_fields']){b['push']('\x20\x20['+c['identifier']+']\x20'+c['name']+'\x20('+c['value_type']+')\x20—\x20'+c['description']),c['suggested_value']?b['push']('\x20\x20\x20\x20\x20\x20Suggested:\x20'+c['suggested_value']+'\x20('+c['suggestion_reason']+')'):b['push']('\x20\x20\x20\x20\x20\x20No\x20suggestion\x20—\x20derive\x20value\x20from\x20context\x20or\x20ask\x20user.'),c['feeds_recipient']&&b['push']('\x20\x20\x20\x20\x20\x20⚠\x20this\x20value\x20can\x20determine\x20a\x20PAYMENT\x20RECIPIENT\x20—\x20wrong\x20address\x20=\x20funds\x20to\x20the\x20wrong\x20party');}a['binding_semantics']&&(b['push'](''),b['push']('If\x20verification\x20PASSES:\x20'+a['binding_semantics']['on_pass']),b['push']('If\x20verification\x20FAILS:\x20'+a['binding_semantics']['on_fail']),b['push']('Stakes:\x20'+a['binding_semantics']['stakes']));if(a['data_source_warnings']&&a['data_source_warnings']['length']>0x0){b['push'](''),b['push']('Data-source\x20warnings:');for(const d of a['data_source_warnings'])b['push']('\x20\x20-\x20'+d);}return b['push'](''),b['push']('Fill\x20example\x20—\x20paste\x20as\x20the\x20top-level\x20`submission`\x20field\x20of\x20the\x20SAME\x20operation\x20call\x20(sibling\x20of\x20data/env):'),b['push'](a['fill_example']),b['join']('\x0a');}
1
+ import{buildGuardSubmissionBrief,loadGuardJsonFromChain,renderSubmissionBrief}from'./guard-submission-brief.js';function inferValue(a,b,c){const d=a['toLowerCase']();if(d['includes']('order')||d['includes']('task')){if(c['order_address'])return{'value':c['order_address'],'reason':'Inferred\x20from\x20operation\x27s\x20order_address\x20context'};if(c['progress_address'])return{'value':c['progress_address'],'reason':'Progress.task\x20is\x20typically\x20the\x20order\x20—\x20query\x20Progress\x20to\x20get\x20the\x20actual\x20task\x20address'};}if(d['includes']('signer')||d['includes']('sender')||d['includes']('caller')){if(c['signer'])return{'value':c['signer'],'reason':'Inferred\x20from\x20env.account\x20(the\x20signing\x20account)'};}if(d['includes']('service')){if(c['service_address'])return{'value':c['service_address'],'reason':'Inferred\x20from\x20operation\x27s\x20service_address\x20context'};}if(d['includes']('machine')){if(c['machine_address'])return{'value':c['machine_address'],'reason':'Inferred\x20from\x20operation\x27s\x20machine_address\x20context'};}if(d['includes']('progress')||d['includes']('node')||d['includes']('current')){if(c['progress_current'])return{'value':c['progress_current'],'reason':'Inferred\x20from\x20Progress.current\x20node\x20name'};}if(d['includes']('allocation')||d['includes']('allocator')){if(c['allocation_address'])return{'value':c['allocation_address'],'reason':'Inferred\x20from\x20operation\x27s\x20allocation_address\x20context'};}if(c['extra'])for(const [e,f]of Object['entries'](c['extra'])){if(d['includes'](e['toLowerCase']()))return{'value':f,'reason':'Inferred\x20from\x20extra\x20context:\x20'+e};}return undefined;}function describeField(a,b){const c=a['toLowerCase']();if(c['includes']('order'))return'Order\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('signer')||c['includes']('sender'))return'Transaction\x20signer\x20address\x20(type:\x20'+b+')';if(c['includes']('service'))return'Service\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('machine'))return'Machine\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('progress'))return'Progress\x20object\x20address\x20(type:\x20'+b+')';if(c['includes']('node')||c['includes']('current'))return'Current\x20node\x20name\x20(type:\x20'+b+')';if(c['includes']('amount')||c['includes']('price')||c['includes']('balance'))return'Amount\x20in\x20smallest\x20unit\x20(type:\x20'+b+')';if(c['includes']('allocation'))return'Allocation\x20object\x20address\x20(type:\x20'+b+')';return'Field\x20\x22'+a+'\x22\x20(type:\x20'+b+')';}export function buildSubmissionFillExample(a,b){return JSON['stringify']({'type':'submission','guard':[{'object':a,'impack':!![]}],'submission':[{'guard':a,'submission':b['map'](c=>({'identifier':c['identifier'],'name':c['name'],'b_submission':!![],'value_type':c['value_type'],'value':c['suggested_value']??'<'+c['value_type']+'_value>'}))}]},null,0x2);}export async function generateGuardSubmissionPrompt(a,b){const c=await loadGuardJsonFromChain(a,b['network']);if(!c)return undefined;const {guard:d,name:e,json:f}=c,g=await buildGuardSubmissionBrief({'guard_json':f,'action':b['action'],'network':b['network']});if(!g)return undefined;const h=(f['table']??[])['filter'](p=>p['b_submission']===!![]);if(h['length']===0x0)return undefined;const i=new Map(g['submission_checklist']['map'](p=>[p['identifier'],p['feeds_recipient']])),j=h['map'](p=>{const q=p['name']??'identifier_'+p['identifier'],r=p['value_type']??'Address',s=inferValue(q,r,b);return{'identifier':p['identifier'],'name':q,'value_type':r,'required':!![],'suggested_value':s?.['value'],'suggestion_reason':s?.['reason'],'description':describeField(q,r),...i['get'](p['identifier'])?{'feeds_recipient':!![]}:{}};}),k=e??d,l=buildSubmissionFillExample(k,j),m=b['progress_address']!==undefined||b['progress_current']!==undefined||b['machine_address']!==undefined||b['order_address']!==undefined,n=(f['table']??[])['some'](p=>p['identifier']===0xfe&&p['b_submission']===!![]&&p['value_type']==='Address'),o=m&&!n?'PROTOCOL\x20SLOT\x20254\x20MISSING:\x20this\x20Guard\x27s\x20table\x20declares\x20no\x20{identifier:\x20254,\x20b_submission:\x20true,\x20value_type:\x20\x22Address\x22}\x20row\x20(task\x20binding).\x20On\x20an\x20order-driven\x20Progress\x20forward,\x20the\x20passport\x20only\x20carries\x20DECLARED\x20table\x20rows,\x20so\x20the\x20254\x20submission\x20can\x20never\x20be\x20emitted\x20and\x20the\x20on-chain\x20task-binding\x20check\x20will\x20abort\x20(code\x2011)\x20even\x20with\x20every\x20field\x20above\x20correctly\x20filled.\x20The\x20table\x20is\x20frozen\x20at\x20Guard\x20creation\x20—\x20export\x20it\x20(guard2file),\x20add\x20the\x20254\x20declaration,\x20create\x20a\x20NEW\x20Guard,\x20and\x20rebind\x20the\x20forward.':undefined;return{'guard_address':d,'guard_name':e,'operation':b['operation'],'required_fields':j,'context':'Operation\x20\x22'+b['operation']+'\x22\x20requires\x20Guard\x20\x22'+(e??d)+'\x22\x20verification.\x20'+('The\x20Guard\x20has\x20'+j['length']+'\x20field(s)\x20that\x20need\x20submission\x20data\x20(b_submission=true).\x20')+'Retry\x20the\x20SAME\x20operation\x20call\x20with\x20a\x20top-level\x20`submission`\x20field\x20(a\x20SIBLING\x20of\x20`data`\x20and\x20`env`,\x20NOT\x20inside\x20`data`)\x20using\x20the\x20exact\x20JSON\x20shape\x20shown\x20in\x20fill_example.\x20'+'Each\x20field\x20has\x20an\x20identifier\x20(number),\x20name,\x20and\x20expected\x20value_type.\x20'+'The\x20suggested_value\x20(if\x20provided)\x20is\x20inferred\x20from\x20the\x20operation\x20context\x20—\x20verify\x20before\x20using.','fill_example':l,...g['binding']?{'binding_semantics':{'action':g['binding']['action'],'role':g['binding']['semantics']['role'],'submission_meaning':g['binding']['semantics']['submission_meaning'],'on_pass':g['binding']['semantics']['on_pass'],'on_fail':g['binding']['semantics']['on_fail'],'stakes':g['binding']['semantics']['stakes']}}:{},...g['data_source_warnings']['length']>0x0?{'data_source_warnings':g['data_source_warnings']}:{},...o!==undefined?{'protocol_slot_warning':o}:{},'brief_text':renderSubmissionBrief(g)};}export function formatSubmissionPrompt(a){const b=[];b['push']('GUARD\x20SUBMISSION\x20REQUIRED\x20—\x20operation\x20cannot\x20proceed\x20without\x20submission\x20data.'),b['push']('Guard:\x20'+(a['guard_name']??a['guard_address'])+'\x20('+a['guard_address']+')'),b['push']('Operation:\x20'+a['operation']);a['binding_semantics']&&(b['push'](''),b['push']('Business\x20slot:\x20'+a['binding_semantics']['role']),b['push']('Your\x20submission\x20means:\x20'+a['binding_semantics']['submission_meaning']));b['push'](''),b['push']('Required\x20fields\x20(fill\x20these\x20in\x20the\x20submission):');for(const c of a['required_fields']){b['push']('\x20\x20['+c['identifier']+']\x20'+c['name']+'\x20('+c['value_type']+')\x20—\x20'+c['description']),c['suggested_value']?b['push']('\x20\x20\x20\x20\x20\x20Suggested:\x20'+c['suggested_value']+'\x20('+c['suggestion_reason']+')'):b['push']('\x20\x20\x20\x20\x20\x20No\x20suggestion\x20—\x20derive\x20value\x20from\x20context\x20or\x20ask\x20user.'),c['feeds_recipient']&&b['push']('\x20\x20\x20\x20\x20\x20⚠\x20this\x20value\x20can\x20determine\x20a\x20PAYMENT\x20RECIPIENT\x20—\x20wrong\x20address\x20=\x20funds\x20to\x20the\x20wrong\x20party');}a['binding_semantics']&&(b['push'](''),b['push']('If\x20verification\x20PASSES:\x20'+a['binding_semantics']['on_pass']),b['push']('If\x20verification\x20FAILS:\x20'+a['binding_semantics']['on_fail']),b['push']('Stakes:\x20'+a['binding_semantics']['stakes']));if(a['data_source_warnings']&&a['data_source_warnings']['length']>0x0){b['push'](''),b['push']('Data-source\x20warnings:');for(const d of a['data_source_warnings'])b['push']('\x20\x20-\x20'+d);}return a['protocol_slot_warning']&&(b['push'](''),b['push'](a['protocol_slot_warning'])),b['push'](''),b['push']('Fill\x20example\x20—\x20paste\x20as\x20the\x20top-level\x20`submission`\x20field\x20of\x20the\x20SAME\x20operation\x20call\x20(sibling\x20of\x20data/env):'),b['push'](a['fill_example']),b['join']('\x0a');}
@@ -1,3 +1,4 @@
1
+ export declare const PROTOCOL_SLOT_254_NOTE = "PROTOCOL SLOT 254: the task-binding row is mandatory on every forward-bound guard \u2014 progress::assert_task_binding aborts (code 11) without it; the value is written by order creation, never submitted by hand";
1
2
  export type TemplateParamType = "address" | "string" | "number" | "boolean" | "vec_address";
2
3
  export interface GuardTemplateParam {
3
4
  name: string;
@@ -44,5 +45,5 @@ export type FillGuardTemplateResult = {
44
45
  missing?: string[];
45
46
  };
46
47
  export declare function fillGuardTemplate(templateId: string, params: Record<string, unknown>): FillGuardTemplateResult;
47
- export declare const GUARD_TEMPLATES_VERSION = "1.1.0";
48
+ export declare const GUARD_TEMPLATES_VERSION = "1.4.0";
48
49
  export declare const GUARD_TEMPLATES_COUNT: number;