@wowok/agent-mcp 3.2.9 → 3.3.0

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 (200) hide show
  1. package/README.md +2 -2
  2. package/dist/chain-semantics/field-capability.js +1 -1
  3. package/dist/chain-semantics/freeze-map.js +1 -1
  4. package/dist/chain-semantics/fund-flow.js +1 -1
  5. package/dist/chain-semantics/object-graph.js +1 -1
  6. package/dist/composition/audit.js +1 -1
  7. package/dist/composition/compile.d.ts +10 -1
  8. package/dist/composition/compile.js +1 -1
  9. package/dist/composition/inflight.js +1 -1
  10. package/dist/extensions/capability-manifest.js +1 -1
  11. package/dist/extensions/industry-audit.spec.js +1 -1
  12. package/dist/extensions/industry-pack.js +1 -1
  13. package/dist/graph/onchain/facts.spec.js +1 -1
  14. package/dist/graph/onchain/field-manifest.js +1 -1
  15. package/dist/harness/recover.js +1 -1
  16. package/dist/intent/types.d.ts +1 -1
  17. package/dist/intent/types.js +1 -1
  18. package/dist/keeper/KeeperScan.d.ts +2 -1
  19. package/dist/keeper/KeeperScan.js +1 -1
  20. package/dist/keeper/keeper.spec.js +1 -1
  21. package/dist/keeper/types.d.ts +3 -0
  22. package/dist/keeper/types.js +1 -1
  23. package/dist/knowledge/allocator-rail-verifier.d.ts +34 -0
  24. package/dist/knowledge/allocator-rail-verifier.js +1 -0
  25. package/dist/knowledge/arbitration-ledger.js +1 -1
  26. package/dist/knowledge/arbitration-templates.js +1 -1
  27. package/dist/knowledge/arbitration-venue-order.js +1 -1
  28. package/dist/knowledge/audit-rules.d.ts +19 -1
  29. package/dist/knowledge/audit-rules.js +1 -1
  30. package/dist/knowledge/baselines/rules/alloc_audit.json +1 -1
  31. package/dist/knowledge/baselines/rules/arb.json +1 -1
  32. package/dist/knowledge/baselines/rules/guard.json +15 -5
  33. package/dist/knowledge/baselines/rules/machine.json +9 -6
  34. package/dist/knowledge/baselines/rules/plan.json +12 -12
  35. package/dist/knowledge/baselines/semantic-facts.js +1 -1
  36. package/dist/knowledge/builtin-templates.d.ts +1 -1
  37. package/dist/knowledge/builtin-templates.js +1 -1
  38. package/dist/knowledge/contract-invariants.js +1 -1
  39. package/dist/knowledge/event-semantics.js +1 -1
  40. package/dist/knowledge/fund-layer.js +1 -1
  41. package/dist/knowledge/getting-started.js +1 -1
  42. package/dist/knowledge/guard-anchor-reach.d.ts +1 -1
  43. package/dist/knowledge/guard-anchor-reach.js +1 -1
  44. package/dist/knowledge/guard-bindings.js +1 -1
  45. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  46. package/dist/knowledge/guard-design-patterns.js +1 -1
  47. package/dist/knowledge/guard-field-cognition.js +1 -1
  48. package/dist/knowledge/guard-render.js +1 -1
  49. package/dist/knowledge/guard-risk.js +1 -1
  50. package/dist/knowledge/guard-templates.d.ts +1 -1
  51. package/dist/knowledge/guard-templates.js +1 -1
  52. package/dist/knowledge/index.js +1 -1
  53. package/dist/knowledge/industry-registry.js +1 -1
  54. package/dist/knowledge/industry-strategy.js +1 -1
  55. package/dist/knowledge/jsonrpc-enum.js +1 -1
  56. package/dist/knowledge/machine-ledger.js +1 -1
  57. package/dist/knowledge/machine-puzzle.d.ts +1 -1
  58. package/dist/knowledge/machine-puzzle.js +1 -1
  59. package/dist/knowledge/machine-risk.js +1 -1
  60. package/dist/knowledge/machine-templates.js +1 -1
  61. package/dist/knowledge/machine-topology.d.ts +8 -0
  62. package/dist/knowledge/machine-topology.js +1 -1
  63. package/dist/knowledge/machine-translation.js +1 -1
  64. package/dist/knowledge/permission-ledger.js +1 -1
  65. package/dist/knowledge/protocol-facts.d.ts +16 -0
  66. package/dist/knowledge/protocol-facts.js +1 -0
  67. package/dist/knowledge/recipient-constraint.js +1 -1
  68. package/dist/knowledge/reward-ledger.d.ts +2 -1
  69. package/dist/knowledge/reward-ledger.js +1 -1
  70. package/dist/knowledge/reward-templates.js +1 -1
  71. package/dist/knowledge/safety-rules.d.ts +0 -2
  72. package/dist/knowledge/safety-rules.js +1 -1
  73. package/dist/knowledge/scenario-modes.d.ts +7 -0
  74. package/dist/knowledge/scenario-modes.js +1 -1
  75. package/dist/knowledge/strategy-manuals.js +1 -1
  76. package/dist/knowledge/template-loader.d.ts +13 -1
  77. package/dist/knowledge/template-loader.js +1 -1
  78. package/dist/knowledge/template-registry.js +1 -1
  79. package/dist/knowledge/template-scanner.js +1 -1
  80. package/dist/knowledge/tool-constraints.js +1 -1
  81. package/dist/knowledge/tools-reference.js +1 -1
  82. package/dist/monitor/MonitorLoop.js +1 -1
  83. package/dist/monitor/normalize.d.ts +1 -1
  84. package/dist/monitor/normalize.js +1 -1
  85. package/dist/monitor/types.d.ts +1 -1
  86. package/dist/monitor/types.js +1 -1
  87. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  88. package/dist/playbooks/service-build/game-theory.d.ts +1 -0
  89. package/dist/playbooks/service-build/game-theory.js +1 -1
  90. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  91. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  92. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  93. package/dist/playbooks/service-build/object-panorama.js +1 -1
  94. package/dist/playbooks/service-build/participation-radar.js +1 -1
  95. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  96. package/dist/playbooks/service-build/service-panorama.js +1 -1
  97. package/dist/playbooks/service-build/service-quote.js +1 -1
  98. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  99. package/dist/relationship/registry.js +1 -1
  100. package/dist/review/index.js +1 -1
  101. package/dist/role/profiles.js +1 -1
  102. package/dist/safety/confirm-gate.js +1 -1
  103. package/dist/schema/benchmark-migration/index.d.ts +5 -1
  104. package/dist/schema/benchmark-migration/index.js +1 -1
  105. package/dist/schema/call/arbitration.d.ts +4 -4
  106. package/dist/schema/call/arbitration.js +1 -1
  107. package/dist/schema/call/base.d.ts +39 -0
  108. package/dist/schema/call/base.js +1 -1
  109. package/dist/schema/call/bridge.d.ts +1 -0
  110. package/dist/schema/call/contact.d.ts +4 -4
  111. package/dist/schema/call/demand.d.ts +4 -4
  112. package/dist/schema/call/error-codes.d.ts +1 -1
  113. package/dist/schema/call/error-codes.js +1 -1
  114. package/dist/schema/call/handler.js +1 -1
  115. package/dist/schema/call/machine.d.ts +12 -4
  116. package/dist/schema/call/order.d.ts +4 -4
  117. package/dist/schema/call/permission.d.ts +4 -4
  118. package/dist/schema/call/progress.d.ts +4 -4
  119. package/dist/schema/call/receipt.d.ts +8 -0
  120. package/dist/schema/call/receipt.js +1 -1
  121. package/dist/schema/call/repository.d.ts +4 -4
  122. package/dist/schema/call/reward.d.ts +24 -4
  123. package/dist/schema/call/reward.js +1 -1
  124. package/dist/schema/call/semantic.js +1 -1
  125. package/dist/schema/call/service.d.ts +6 -4
  126. package/dist/schema/call/service.js +1 -1
  127. package/dist/schema/call/treasury.d.ts +4 -4
  128. package/dist/schema/common/index.d.ts +2 -2
  129. package/dist/schema/common/index.js +1 -1
  130. package/dist/schema/goal/index.d.ts +5 -1
  131. package/dist/schema/goal/planning.d.ts +10 -2
  132. package/dist/schema/goal/planning.js +1 -1
  133. package/dist/schema/industry-pack/index.d.ts +3 -0
  134. package/dist/schema/industry-pack/index.js +1 -1
  135. package/dist/schema/intent-radar/index.d.ts +9 -0
  136. package/dist/schema/intent-radar/index.js +1 -1
  137. package/dist/schema/local/index.d.ts +10 -0
  138. package/dist/schema/local/index.js +1 -1
  139. package/dist/schema/operations.d.ts +35 -22
  140. package/dist/schema/operations.js +1 -1
  141. package/dist/schema/query/bi.d.ts +16 -0
  142. package/dist/schema/query/bi.js +1 -1
  143. package/dist/schema/query/index.d.ts +52 -48
  144. package/dist/schema/query/index.js +1 -1
  145. package/dist/schema/schema-query/index.d.ts +1 -0
  146. package/dist/schema/schema-query/index.js +1 -1
  147. package/dist/schema/schema-version.js +1 -1
  148. package/dist/schema-query-impl/index.d.ts +1 -1
  149. package/dist/schema-query-impl/index.js +1 -1
  150. package/dist/schemas/account_operation.output.json +1 -0
  151. package/dist/schemas/account_operation.schema.json +1 -1
  152. package/dist/schemas/benchmark_migration_operation.schema.json +27 -3
  153. package/dist/schemas/bridge_operation.output.json +1 -0
  154. package/dist/schemas/goal_operation.schema.json +26 -2
  155. package/dist/schemas/index.json +1 -1
  156. package/dist/schemas/industry_pack_operation.output.json +8 -0
  157. package/dist/schemas/industry_pack_operation.schema.json +9 -0
  158. package/dist/schemas/intent_radar.output.json +8 -2
  159. package/dist/schemas/intent_radar.schema.json +4 -1
  160. package/dist/schemas/local_cache_operation.output.json +1 -0
  161. package/dist/schemas/local_history_operation.output.json +1 -0
  162. package/dist/schemas/local_info_operation.output.json +1 -0
  163. package/dist/schemas/local_mark_operation.output.json +1 -0
  164. package/dist/schemas/monitor_events.schema.json +3 -1
  165. package/dist/schemas/onchain_events.output.json +275 -11
  166. package/dist/schemas/onchain_events.schema.json +25 -1
  167. package/dist/schemas/onchain_operations.output.json +40 -0
  168. package/dist/schemas/onchain_operations.schema.json +573 -104
  169. package/dist/schemas/onchain_operations_allocation.schema.json +2 -2
  170. package/dist/schemas/onchain_operations_arbitration.schema.json +11 -7
  171. package/dist/schemas/onchain_operations_contact.schema.json +9 -5
  172. package/dist/schemas/onchain_operations_demand.schema.json +9 -5
  173. package/dist/schemas/onchain_operations_guard.schema.json +342 -4
  174. package/dist/schemas/onchain_operations_machine.schema.json +17 -5
  175. package/dist/schemas/onchain_operations_order.schema.json +9 -5
  176. package/dist/schemas/onchain_operations_permission.schema.json +9 -5
  177. package/dist/schemas/onchain_operations_progress.schema.json +9 -5
  178. package/dist/schemas/onchain_operations_repository.schema.json +9 -5
  179. package/dist/schemas/onchain_operations_reward.schema.json +89 -9
  180. package/dist/schemas/onchain_operations_service.schema.json +18 -11
  181. package/dist/schemas/onchain_operations_treasury.schema.json +9 -5
  182. package/dist/schemas/query_toolkit.output.json +237 -14
  183. package/dist/schemas/schema_query.schema.json +3 -2
  184. package/dist/tools/handlers/benchmark-migration.d.ts +45 -1
  185. package/dist/tools/handlers/benchmark-migration.js +1 -1
  186. package/dist/tools/handlers/config.js +1 -1
  187. package/dist/tools/handlers/industry-pack.js +1 -1
  188. package/dist/tools/handlers/intent-radar.js +1 -1
  189. package/dist/tools/handlers/keeper.d.ts +1 -1
  190. package/dist/tools/handlers/onchain.d.ts +12 -0
  191. package/dist/tools/handlers/onchain.js +1 -1
  192. package/dist/tools/handlers/schema-query.js +1 -1
  193. package/dist/tools/handlers/workflow.js +1 -1
  194. package/dist/tools/index.js +1 -1
  195. package/dist/tools/registry/agent.js +1 -1
  196. package/dist/tools/registry/business.js +1 -1
  197. package/dist/tools/registry/query.js +1 -1
  198. package/dist/tools/rules-hook.js +1 -1
  199. package/dist/tools/wrap.js +1 -1
  200. package/package.json +2 -2
@@ -1 +1 @@
1
- export const MACHINE_SCENES=[{'id':'ecommerce_standard','name':'Standard\x20E-commerce\x20Flow','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20Receive\x20→\x20Complete','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Ship','scene':'machine_forward_guard','purpose':'Verify\x20order\x20is\x20paid\x20(post-buy\x20state)'},{'forward':'Receive','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'Complete\x20node\x20->\x20Allocator\x20distributes\x20funds\x20to\x20merchant','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','All\x20nodes\x20after\x20entry\x20represent\x20order\x20processing\x20(ship,\x20receive,\x20complete),\x20NOT\x20payment\x20actions','Receipt\x20auto-triggers\x20fund\x20allocation'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'ecommerce_with_exceptions','name':'E-commerce\x20Flow\x20with\x20Exception\x20Branches','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20{Receive\x20→\x20Complete\x20|\x20Lost\x20(terminal)\x20|\x20Return\x20→\x20Refund}','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive','Return','Lost']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship','Refund','Lost']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Lost','scene':'machine_forward_guard','purpose':'Dual-sig\x20to\x20confirm\x20lost'}],'allocation_integration':'Complete->merchant\x20|\x20Refund->customer\x20|\x20Lost->escrow\x20or\x20partial\x20refund\x20(Allocator\x20only).\x20Disputes\x20are\x20NOT\x20modeled\x20here\x20—\x20they\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object\x20off-Machine.','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Lost\x20node\x20threshold=2\x20(customer\x20+\x20merchant\x20dual-sig)\x20—\x20Lost\x20is\x20a\x20TERMINAL\x20node,\x20not\x20a\x20path\x20to\x20arbitration','Competing\x20Pair:\x20Receive\x20vs\x20Lost\x20vs\x20Return\x20(first-wins)','DISPUTE\x20INDEPENDENCE:\x20arbitration\x20is\x20NOT\x20a\x20Machine\x20node.\x20If\x20a\x20Lost-terminal\x20order\x20later\x20needs\x20dispute\x20resolution,\x20the\x20customer\x20opens\x20a\x20dispute\x20on\x20the\x20Arbitration\x20object\x20bound\x20to\x20the\x20Service\x20—\x20completely\x20off-Machine.\x20Arbitrators\x20live\x20in\x20Arbitration.voting_guard,\x20never\x20in\x20Permission\x20or\x20NamedOperator.','Refund\x20Allocation\x20must\x20use\x20sharing.who=OrderHolder\x20(refund\x20to\x20customer,\x20NOT\x20merchant)'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M6','M8']},{'id':'rental_standard','name':'Equipment\x20Rental\x20Flow','industry':['rental'],'scenario':'DepositPaid\x20(entry)\x20→\x20Pickup\x20→\x20In\x20Use\x20→\x20Return\x20→\x20Refund\x20Deposit','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Pickup','Return']},{'role':'merchant','permission_type':'Permission','involved_in':['Deliver','Refund\x20Deposit']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Pickup','scene':'machine_forward_guard','purpose':'Verify\x20deposit\x20paid\x20(post-buy\x20state)'},{'forward':'Return','scene':'machine_forward_guard','purpose':'Verify\x20equipment\x20condition'}],'allocation_integration':'Return\x20complete\x20->\x20deposit\x20refund\x20+\x20rental\x20fee\x20allocation','special_constraints':['First\x20node\x20\x27DepositPaid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20deposit\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Reserve\x27\x20or\x20\x27PayDeposit\x27\x20nodes\x20needed\x20—\x20reservation\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Deposit\x20and\x20rental\x20fee\x20separated\x20(two\x20Allocators)','Equipment\x20damage\x20verified\x20by\x20Guard\x20(retained_submission\x20stores\x20inspection\x20report)'],'first_node_semantics':'DepositPaid\x20—\x20deposit\x20has\x20been\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-deposit\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'dual_signature','name':'Dual-Signature\x20Consensus\x20Flow','industry':['ecommerce','service','logistics'],'scenario':'Critical\x20node\x20requires\x20customer\x20+\x20merchant\x20dual\x20confirmation\x20to\x20advance','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Confirm']},{'role':'merchant','permission_type':'Permission','involved_in':['Confirm']}],'recommended_patterns':['P-M-AND'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Both\x20Confirm','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'After\x20dual-sig\x20->\x20fund\x20allocation','special_constraints':['threshold=2,\x20two\x20Forwards\x20with\x20weight=1\x20each','Customer\x20Forward:\x20namedOperator=\x27\x27\x20(OrderHolder)','Merchant\x20Forward:\x20permissionIndex=2'],'first_node_semantics':'Initiated\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20dual-sig\x20confirmation','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'weighted_voting','name':'Weighted\x20Voting\x20Flow','industry':['governance','arbitration'],'scenario':'Multi-party\x20voting\x20with\x20unequal\x20weights,\x20accumulate\x20to\x20threshold\x20to\x20advance','participants':[{'role':'chief','permission_type':'Permission','involved_in':['Vote']},{'role':'member','permission_type':'NamedOperator','involved_in':['Vote']}],'recommended_patterns':['P-M-VOTE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Vote','scene':'arbitration_voting_guard','purpose':'Verify\x20voting\x20eligibility\x20+\x20weight\x20extraction'}],'allocation_integration':'After\x20voting\x20complete\x20->\x20result\x20execution','special_constraints':['threshold=100,\x20chief\x20weight=60,\x20member\x20weight=40','GuardIdentifier\x20must\x20be\x20numeric\x20type\x20(extracts\x20weight)','Prevent\x20double-voting\x20(Guard\x20queries\x20arb.voted\x20has)'],'first_node_semantics':'VoteOpened\x20—\x20dispute\x20has\x20been\x20submitted\x20(order\x20already\x20paid\x20via\x20Service.buy());\x20Machine\x20starts\x20at\x20post-payment\x20dispute\x20state','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'cross_machine_supply_chain','name':'Cross-Machine\x20Supply\x20Chain','industry':['manufacturing','logistics','retail'],'scenario':'Supplier\x20→\x20Manufacturer\x20→\x20Retailer,\x20each\x20link\x20is\x20independent\x20Machine','participants':[{'role':'supplier','permission_type':'Permission','involved_in':['Machine\x20A']},{'role':'manufacturer','permission_type':'Permission','involved_in':['Machine\x20B']},{'role':'retailer','permission_type':'Permission','involved_in':['Machine\x20C']}],'recommended_patterns':['P-M-CROSS-MACHINE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Start\x20Manufacturing','scene':'machine_forward_guard','purpose':'Verify\x20supplier\x20Progress\x20completed'},{'forward':'Start\x20Retail','scene':'machine_forward_guard','purpose':'Verify\x20manufacturer\x20Progress\x20completed'}],'allocation_integration':'Each\x20Machine\x20has\x20independent\x20allocation','special_constraints':['Machine\x20B\x27s\x20Guard\x20uses\x20convert_witness=100\x20to\x20query\x20Machine\x20A\x27s\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Each\x20Machine\x20must\x20be\x20published\x20independently','Dependency\x20verification:\x20indirect\x20—\x20creating\x20the\x20downstream\x20Progress\x20asserts\x20the\x20upstream\x20Machine\x20is\x20already\x20published\x20(see\x2006\x20§14.6)','Each\x20Machine\x20in\x20the\x20chain\x20starts\x20at\x20a\x20post-payment\x20state\x20(each\x20link\x27s\x20Service.buy()\x20handles\x20payment\x20independently)'],'first_node_semantics':'UpstreamVerified\x20—\x20order\x20has\x20been\x20paid\x20via\x20upstream\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20verifying\x20upstream\x20completion','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'privacy_delivery','name':'Privacy\x20Delivery\x20Flow','industry':['ecommerce','logistics'],'scenario':'Privacy\x20data\x20delivered\x20via\x20Messenger\x20(encrypted),\x20chain\x20stores\x20only\x20Proof','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Submit\x20Proof']},{'role':'merchant','permission_type':'Permission','involved_in':['Verify\x20Proof']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Submit\x20Proof','scene':'machine_forward_guard','purpose':'Verify\x20Proof\x20signature\x20+\x20timestamp'}],'allocation_integration':'After\x20Proof\x20verified\x20->\x20continue\x20flow','special_constraints':['Uses\x20tpl_forward_privacy_delivery_proof\x20template\x20(strict\x20mode)','retained_submission\x20preserves\x20Proof\x20address\x20for\x20arbitration\x20query','Proof\x20MUST\x20be\x20generated\x20by\x20messenger.submitChainProof','submitChainProof\x20about_address\x20=\x20peerAddress\x20(NOT\x20sessionId)\x20—\x20contact\x20record\x20only,\x20never\x20a\x20guard\x20condition;\x20no\x20order\x20references\x20in\x20the\x20description','Guard\x20table\x20item\x20name\x20<64\x20BCS\x20bytes\x20(MAX_NAME_LENGTH=64)','First\x20node\x20represents\x20post-payment\x20state\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20proof\x20submission','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M7']},{'id':'reward_incentive','name':'Reward\x20Incentive\x20Flow','industry':['ecommerce','subscription','education'],'scenario':'Trigger\x20Reward\x20claim\x20after\x20completing\x20specific\x20node','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Claim\x20Reward']},{'role':'platform','permission_type':'Permission','involved_in':['Issue\x20Reward']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Claim','scene':'reward_claim','purpose':'Verify\x20claim\x20eligibility\x20+\x20prevent\x20double-claim'}],'allocation_integration':'Reward\x20is\x20independent\x20of\x20Allocation','special_constraints':['Reward\x20Guard\x20must\x20prevent\x20double-claim\x20(R-X1-14\x20CRITICAL)','Uses\x20query_reward_record_count\x20==\x200\x20for\x20anti-reentry','Reward\x20object\x20must\x20be\x20already\x20created'],'first_node_semantics':'Eligible\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20customer\x20is\x20eligible\x20to\x20claim\x20reward','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'wonder_feedback','name':'Wonder\x20Feedback\x20Flow\x20(Post-Completion\x20Rating)','industry':['ecommerce','service','rental','subscription','education'],'scenario':'Paid\x20(entry)\x20→\x20...\x20→\x20Completed\x20→\x20{Wonder\x20|\x20NoWonder}\x20(rating\x20terminals)','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Wonder','NoWonder']},{'role':'merchant','permission_type':'Permission','involved_in':['Completed']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Praise','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'},{'forward':'Complain','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'}],'allocation_integration':'Completed\x20->\x20merchant\x20allocation\x20(terminal);\x20Wonder/NoWonder\x20are\x20reputation\x20terminals\x20—\x20no\x20fund\x20allocation.\x20Reward\x20object\x20(independent)\x20claims\x20fire\x20when\x20Progress.current\x20==\x20\x27wonder\x27','special_constraints':['Dispute\x20MUST\x20NOT\x20be\x20modeled\x20as\x20machine\x20nodes\x20—\x20disputes\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object,\x20independent\x20of\x20this\x20Machine','Wonder/NoWonder\x20are\x20POST-completion\x20terminals:\x20order\x20is\x20already\x20settled\x20when\x20customer\x20rates','Both\x20Wonder\x20and\x20NoWonder\x20forwards\x20have\x20named_operator=\x27\x27\x20(OrderHolder)\x20—\x20rating\x20is\x20a\x20customer-only\x20action','Reward\x20object\x20(if\x20bound)\x20MUST\x20use\x20a\x20Guard\x20verifying\x20Progress.current\x20==\x20\x27wonder\x27\x20AND\x20order.holder\x20==\x20signer\x20—\x20no\x20Permission\x20needed\x20for\x20reward\x20claim','Competing\x20Pair:\x20Praise\x20vs\x20Complain\x20(first-wins;\x20one\x20rating\x20per\x20order)','No\x20dispute/refund/arbitration\x20nodes\x20in\x20this\x20Machine\x20—\x20those\x20flows\x20live\x20off-Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20same\x20as\x20e-commerce\x20baseline','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'subscription','name':'Subscription\x20/\x20Membership\x20Flow','industry':['subscription','service'],'scenario':'Paid\x20(entry)\x20→\x20Activate\x20→\x20[Renew\x20|\x20Expire]\x20→\x20Cancel/End','participants':[{'role':'subscriber','permission_type':'OrderHolder','involved_in':['Renew','Cancel']},{'role':'provider','permission_type':'Permission','involved_in':['Activate','Pause']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Renew','scene':'machine_forward_guard','purpose':'Time-lock\x20verification'},{'forward':'Cancel','scene':'machine_forward_guard','purpose':'Verify\x20subscription\x20status'}],'allocation_integration':'Renew\x20->\x20fund\x20allocation\x20|\x20Expire\x20->\x20stop\x20service','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20subscription\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Subscribe\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20subscription\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Time-lock:\x20context(Clock)\x20>=\x20progress.current_time\x20+\x20duration','Competing\x20Pair:\x20Renew\x20vs\x20Expire\x20(first-wins)','Repository\x20records\x20subscription\x20status','Note:\x20Machine.consensus_repositories\x20is\x20declarative-only\x20and\x20NOT\x20auto-passed\x20to\x20Progress\x20(see\x2006\x20§14.4)'],'first_node_semantics':'Paid\x20—\x20subscription\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20activation','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M6','M8']}];export const MACHINE_LEDGER_VERSION='1.0.0';export const MACHINE_SCENES_COUNT=MACHINE_SCENES['length'];export function findScene(a){return MACHINE_SCENES['find'](b=>b['id']===a);}export function getScenesByIndustry(a){return MACHINE_SCENES['filter'](b=>b['industry']['includes'](a));}export function getScenesByPattern(a){return MACHINE_SCENES['filter'](b=>b['recommended_patterns']['includes'](a));}export function getScenesByTopology(a){return MACHINE_SCENES['filter'](b=>b['recommended_topology']['includes'](a));}export function inferSceneFromFlow(a){const b=a['toLowerCase']();if(b['includes']('supply\x20chain')||b['includes']('cross-machine'))return findScene('cross_machine_supply_chain');if(b['includes']('wonder')||b['includes']('praise')||b['includes']('complain')||b['includes']('thumbs_up')||b['includes']('thumbs_down')||b['includes']('rating')||b['includes']('feedback')||b['includes']('praise')||b['includes']('complaint'))return findScene('wonder_feedback');if(b['includes']('reward')||b['includes']('incentive'))return findScene('reward_incentive');if(b['includes']('privacy')||b['includes']('messenger'))return findScene('privacy_delivery');if(b['includes']('vote')||b['includes']('weight'))return findScene('weighted_voting');if(b['includes']('dual-sig')||b['includes']('both\x20confirm'))return findScene('dual_signature');if(b['includes']('subscribe')||b['includes']('membership'))return findScene('subscription');if(b['includes']('rental')||b['includes']('deposit'))return findScene('rental_standard');if(b['includes']('lost')||b['includes']('return'))return findScene('ecommerce_with_exceptions');if(b['includes']('ecommerce')||b['includes']('order'))return findScene('ecommerce_standard');return undefined;}export function getImmutableScenes(){return MACHINE_SCENES['filter'](a=>!a['mutable_after_publish']);}export function getScenesWithGuardRequirements(){return MACHINE_SCENES['filter'](a=>a['guard_requirements']['length']>0x0);}export function getReferencedGuardSceneIds(){const a=new Set();for(const b of MACHINE_SCENES){for(const c of b['guard_requirements']){a['add'](c['scene']);}}return a;}export function listScenes(){return MACHINE_SCENES['map'](a=>({'id':a['id'],'name':a['name'],'scenario':a['scenario'],'patterns':a['recommended_patterns']}));}
1
+ export const MACHINE_SCENES=[{'id':'ecommerce_standard','name':'Standard\x20E-commerce\x20Flow','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20Receive\x20→\x20Complete','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Ship','scene':'machine_forward_guard','purpose':'Verify\x20order\x20is\x20paid\x20(post-buy\x20state)'},{'forward':'Receive','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'Complete\x20node\x20->\x20Allocator\x20distributes\x20funds\x20to\x20merchant','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','All\x20nodes\x20after\x20entry\x20represent\x20order\x20processing\x20(ship,\x20receive,\x20complete),\x20NOT\x20payment\x20actions','Receipt\x20auto-triggers\x20fund\x20allocation'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'ecommerce_with_exceptions','name':'E-commerce\x20Flow\x20with\x20Exception\x20Branches','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20{Receive\x20→\x20Complete\x20|\x20Lost\x20(terminal)\x20|\x20Return\x20→\x20Refund}','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive','Return','Lost']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship','Refund','Lost']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Lost','scene':'machine_forward_guard','purpose':'Dual-sig\x20to\x20confirm\x20lost'}],'allocation_integration':'Complete->merchant\x20|\x20Refund->customer\x20|\x20Lost->escrow\x20or\x20partial\x20refund\x20(Allocator\x20only).\x20Disputes\x20are\x20NOT\x20modeled\x20here\x20—\x20they\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object\x20off-Machine.','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Lost\x20node\x20threshold=2\x20(customer\x20+\x20merchant\x20dual-sig)\x20—\x20Lost\x20is\x20a\x20TERMINAL\x20node,\x20not\x20a\x20path\x20to\x20arbitration','Competing\x20Pair:\x20Receive\x20vs\x20Lost\x20vs\x20Return\x20(first-wins)','DISPUTE\x20INDEPENDENCE:\x20arbitration\x20is\x20NOT\x20a\x20Machine\x20node.\x20If\x20a\x20Lost-terminal\x20order\x20later\x20needs\x20dispute\x20resolution,\x20the\x20customer\x20opens\x20a\x20dispute\x20on\x20the\x20Arbitration\x20object\x20bound\x20to\x20the\x20Service\x20—\x20completely\x20off-Machine.\x20Arbitrators\x20live\x20in\x20Arbitration.voting_guard,\x20never\x20in\x20Permission\x20or\x20NamedOperator.','Refund\x20Allocation\x20must\x20use\x20sharing.who=OrderHolder\x20(refund\x20to\x20customer,\x20NOT\x20merchant)'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M6','M8']},{'id':'rental_standard','name':'Equipment\x20Rental\x20Flow','industry':['rental'],'scenario':'DepositPaid\x20(entry)\x20→\x20Pickup\x20→\x20In\x20Use\x20→\x20Return\x20→\x20Refund\x20Deposit','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Pickup','Return']},{'role':'merchant','permission_type':'Permission','involved_in':['Deliver','Refund\x20Deposit']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Pickup','scene':'machine_forward_guard','purpose':'Verify\x20deposit\x20paid\x20(post-buy\x20state)'},{'forward':'Return','scene':'machine_forward_guard','purpose':'Verify\x20equipment\x20condition'}],'allocation_integration':'Return\x20complete\x20->\x20deposit\x20refund\x20+\x20rental\x20fee\x20allocation','special_constraints':['First\x20node\x20\x27DepositPaid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20deposit\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Reserve\x27\x20or\x20\x27PayDeposit\x27\x20nodes\x20needed\x20—\x20reservation\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Deposit\x20and\x20rental\x20fee\x20separated\x20(two\x20Allocators)','Equipment\x20damage\x20verified\x20by\x20Guard\x20(retained_submission\x20stores\x20inspection\x20report)'],'first_node_semantics':'DepositPaid\x20—\x20deposit\x20has\x20been\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-deposit\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'dual_signature','name':'Dual-Signature\x20Consensus\x20Flow','industry':['ecommerce','service','logistics'],'scenario':'Critical\x20node\x20requires\x20customer\x20+\x20merchant\x20dual\x20confirmation\x20to\x20advance','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Confirm']},{'role':'merchant','permission_type':'Permission','involved_in':['Confirm']}],'recommended_patterns':['P-M-AND'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Both\x20Confirm','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'After\x20dual-sig\x20->\x20fund\x20allocation','special_constraints':['threshold=2,\x20two\x20Forwards\x20with\x20weight=1\x20each','Customer\x20Forward:\x20namedOperator=\x27\x27\x20(OrderHolder)','Merchant\x20Forward:\x20permissionIndex=2'],'first_node_semantics':'Initiated\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20dual-sig\x20confirmation','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'weighted_voting','name':'Weighted\x20Voting\x20Flow','industry':['governance','arbitration'],'scenario':'Multi-party\x20voting\x20with\x20unequal\x20weights,\x20accumulate\x20to\x20threshold\x20to\x20advance','participants':[{'role':'chief','permission_type':'Permission','involved_in':['Vote']},{'role':'member','permission_type':'NamedOperator','involved_in':['Vote']}],'recommended_patterns':['P-M-VOTE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Vote','scene':'arbitration_voting_guard','purpose':'Verify\x20voting\x20eligibility\x20+\x20weight\x20extraction'}],'allocation_integration':'After\x20voting\x20complete\x20->\x20result\x20execution','special_constraints':['threshold=100,\x20chief\x20weight=60,\x20member\x20weight=40','GuardIdentifier\x20must\x20be\x20numeric\x20type\x20(extracts\x20weight)','Prevent\x20double-voting\x20(Guard\x20queries\x20arb.voted\x20has)'],'first_node_semantics':'VoteOpened\x20—\x20dispute\x20has\x20been\x20submitted\x20(order\x20already\x20paid\x20via\x20Service.buy());\x20Machine\x20starts\x20at\x20post-payment\x20dispute\x20state','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'cross_machine_supply_chain','name':'Cross-Machine\x20Supply\x20Chain','industry':['manufacturing','logistics','retail'],'scenario':'Supplier\x20→\x20Manufacturer\x20→\x20Retailer,\x20each\x20link\x20is\x20independent\x20Machine','participants':[{'role':'supplier','permission_type':'Permission','involved_in':['Machine\x20A']},{'role':'manufacturer','permission_type':'Permission','involved_in':['Machine\x20B']},{'role':'retailer','permission_type':'Permission','involved_in':['Machine\x20C']}],'recommended_patterns':['P-M-CROSS-MACHINE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Start\x20Manufacturing','scene':'machine_forward_guard','purpose':'Verify\x20supplier\x20Progress\x20completed'},{'forward':'Start\x20Retail','scene':'machine_forward_guard','purpose':'Verify\x20manufacturer\x20Progress\x20completed'}],'allocation_integration':'Each\x20Machine\x20has\x20independent\x20allocation','special_constraints':['Machine\x20B\x27s\x20Guard\x20uses\x20convert_witness=100\x20to\x20query\x20Machine\x20A\x27s\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Each\x20Machine\x20must\x20be\x20published\x20independently','Dependency\x20verification:\x20indirect\x20—\x20creating\x20the\x20downstream\x20Progress\x20asserts\x20the\x20upstream\x20Machine\x20is\x20already\x20published\x20(see\x2006\x20§14.6)','Each\x20Machine\x20in\x20the\x20chain\x20starts\x20at\x20a\x20post-payment\x20state\x20(each\x20link\x27s\x20Service.buy()\x20handles\x20payment\x20independently)'],'first_node_semantics':'UpstreamVerified\x20—\x20order\x20has\x20been\x20paid\x20via\x20upstream\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20verifying\x20upstream\x20completion','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'privacy_delivery','name':'Privacy\x20Delivery\x20Flow','industry':['ecommerce','logistics'],'scenario':'Privacy\x20data\x20delivered\x20via\x20Messenger\x20(encrypted),\x20chain\x20stores\x20only\x20Proof','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Submit\x20Proof']},{'role':'merchant','permission_type':'Permission','involved_in':['Verify\x20Proof']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Submit\x20Proof','scene':'machine_forward_guard','purpose':'Verify\x20Proof\x20signature\x20+\x20timestamp'}],'allocation_integration':'After\x20Proof\x20verified\x20->\x20continue\x20flow','special_constraints':['Uses\x20tpl_forward_privacy_delivery_proof\x20template\x20(strict\x20mode)','retained_submission\x20preserves\x20Proof\x20address\x20for\x20arbitration\x20query','Proof\x20MUST\x20be\x20generated\x20by\x20messenger.submitChainProof','submitChainProof\x20about_address\x20=\x20peerAddress\x20(NOT\x20sessionId)\x20—\x20contact\x20record\x20only,\x20never\x20a\x20guard\x20condition;\x20no\x20order\x20references\x20in\x20the\x20description','Guard\x20table\x20item\x20name\x20<64\x20BCS\x20bytes\x20(MAX_NAME_LENGTH=64)','First\x20node\x20represents\x20post-payment\x20state\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20proof\x20submission','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M7']},{'id':'reward_incentive','name':'Reward\x20Incentive\x20Flow','industry':['ecommerce','subscription','education'],'scenario':'Trigger\x20Reward\x20claim\x20after\x20completing\x20specific\x20node','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Claim\x20Reward']},{'role':'platform','permission_type':'Permission','involved_in':['Issue\x20Reward']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Claim','scene':'reward_claim','purpose':'Verify\x20claim\x20eligibility\x20+\x20prevent\x20double-claim'}],'allocation_integration':'Reward\x20is\x20independent\x20of\x20Allocation','special_constraints':['Reward\x20Guard\x20must\x20prevent\x20double-claim\x20(R-X1-14\x20CRITICAL)','Uses\x20query_reward_record_count\x20==\x200\x20for\x20anti-reentry','Reward\x20object\x20must\x20be\x20already\x20created'],'first_node_semantics':'Eligible\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20customer\x20is\x20eligible\x20to\x20claim\x20reward','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'wonder_feedback','name':'Wonder\x20Feedback\x20Flow\x20(Post-Completion\x20Rating)','industry':['ecommerce','service','rental','subscription','education'],'scenario':'Paid\x20(entry)\x20→\x20...\x20→\x20Completed\x20→\x20{Wonder\x20|\x20NoWonder}\x20(rating\x20terminals)','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Wonder','NoWonder']},{'role':'merchant','permission_type':'Permission','involved_in':['Completed']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Praise','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'},{'forward':'Complain','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'}],'allocation_integration':'Completed\x20->\x20merchant\x20allocation\x20(terminal);\x20Wonder/NoWonder\x20are\x20reputation\x20terminals\x20—\x20no\x20fund\x20allocation.\x20Reward\x20object\x20(independent)\x20claims\x20fire\x20when\x20Progress.current\x20==\x20\x27wonder\x27','special_constraints':['Dispute\x20MUST\x20NOT\x20be\x20modeled\x20as\x20machine\x20nodes\x20—\x20disputes\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object,\x20independent\x20of\x20this\x20Machine','Wonder/NoWonder\x20are\x20POST-completion\x20terminals:\x20order\x20is\x20already\x20settled\x20when\x20customer\x20rates','Both\x20Wonder\x20and\x20NoWonder\x20forwards\x20have\x20named_operator=\x27\x27\x20(OrderHolder)\x20—\x20rating\x20is\x20a\x20customer-only\x20action','Reward\x20object\x20(if\x20bound)\x20MUST\x20use\x20a\x20Guard\x20verifying\x20Progress.current\x20==\x20\x27wonder\x27\x20AND\x20order.owner\x20==\x20signer\x20—\x20no\x20Permission\x20needed\x20for\x20reward\x20claim','Competing\x20Pair:\x20Praise\x20vs\x20Complain\x20(first-wins;\x20one\x20rating\x20per\x20order)','No\x20dispute/refund/arbitration\x20nodes\x20in\x20this\x20Machine\x20—\x20those\x20flows\x20live\x20off-Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20same\x20as\x20e-commerce\x20baseline','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'subscription','name':'Subscription\x20/\x20Membership\x20Flow','industry':['subscription','service'],'scenario':'Paid\x20(entry)\x20→\x20Activate\x20→\x20[Renew\x20|\x20Expire]\x20→\x20Cancel/End','participants':[{'role':'subscriber','permission_type':'OrderHolder','involved_in':['Renew','Cancel']},{'role':'provider','permission_type':'Permission','involved_in':['Activate','Pause']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Renew','scene':'machine_forward_guard','purpose':'Time-lock\x20verification'},{'forward':'Cancel','scene':'machine_forward_guard','purpose':'Verify\x20subscription\x20status'}],'allocation_integration':'Renew\x20->\x20fund\x20allocation\x20|\x20Expire\x20->\x20stop\x20service','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20subscription\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Subscribe\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20subscription\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Time-lock:\x20context(Clock)\x20>=\x20progress.current_time\x20+\x20duration','Competing\x20Pair:\x20Renew\x20vs\x20Expire\x20(first-wins)','Repository\x20records\x20subscription\x20status','Note:\x20Machine.consensus_repositories\x20is\x20declarative-only\x20and\x20NOT\x20auto-passed\x20to\x20Progress\x20(see\x2006\x20§14.4)'],'first_node_semantics':'Paid\x20—\x20subscription\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20activation','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M6','M8']}];export const MACHINE_LEDGER_VERSION='1.0.0';export const MACHINE_SCENES_COUNT=MACHINE_SCENES['length'];export function findScene(a){return MACHINE_SCENES['find'](b=>b['id']===a);}export function getScenesByIndustry(a){return MACHINE_SCENES['filter'](b=>b['industry']['includes'](a));}export function getScenesByPattern(a){return MACHINE_SCENES['filter'](b=>b['recommended_patterns']['includes'](a));}export function getScenesByTopology(a){return MACHINE_SCENES['filter'](b=>b['recommended_topology']['includes'](a));}export function inferSceneFromFlow(a){const b=a['toLowerCase']();if(b['includes']('supply\x20chain')||b['includes']('cross-machine'))return findScene('cross_machine_supply_chain');if(b['includes']('wonder')||b['includes']('praise')||b['includes']('complain')||b['includes']('thumbs_up')||b['includes']('thumbs_down')||b['includes']('rating')||b['includes']('feedback')||b['includes']('praise')||b['includes']('complaint'))return findScene('wonder_feedback');if(b['includes']('reward')||b['includes']('incentive'))return findScene('reward_incentive');if(b['includes']('privacy')||b['includes']('messenger'))return findScene('privacy_delivery');if(b['includes']('vote')||b['includes']('weight'))return findScene('weighted_voting');if(b['includes']('dual-sig')||b['includes']('both\x20confirm'))return findScene('dual_signature');if(b['includes']('subscribe')||b['includes']('membership'))return findScene('subscription');if(b['includes']('rental')||b['includes']('deposit'))return findScene('rental_standard');if(b['includes']('lost')||b['includes']('return'))return findScene('ecommerce_with_exceptions');if(b['includes']('ecommerce')||b['includes']('order'))return findScene('ecommerce_standard');return undefined;}export function getImmutableScenes(){return MACHINE_SCENES['filter'](a=>!a['mutable_after_publish']);}export function getScenesWithGuardRequirements(){return MACHINE_SCENES['filter'](a=>a['guard_requirements']['length']>0x0);}export function getReferencedGuardSceneIds(){const a=new Set();for(const b of MACHINE_SCENES){for(const c of b['guard_requirements']){a['add'](c['scene']);}}return a;}export function listScenes(){return MACHINE_SCENES['map'](a=>({'id':a['id'],'name':a['name'],'scenario':a['scenario'],'patterns':a['recommended_patterns']}));}
@@ -122,7 +122,7 @@ export interface BranchTopologyPuzzle {
122
122
  node: string;
123
123
  incoming_from: string[];
124
124
  }>;
125
- is_dag: boolean;
125
+ exit_reachable: boolean;
126
126
  }
127
127
  export interface OverallObjectivePuzzle {
128
128
  primary_branch: {
@@ -1 +1 @@
1
- import{inferSceneFromFlow,findScene}from'./machine-ledger.js';import{MACHINE_TEMPLATES,getTemplateById}from'./machine-templates.js';import{matchSemanticPattern,identifyExecutionMode}from'./machine-translation.js';import{analyzeTopology,identifyTopologyPattern}from'./machine-topology.js';export function initPuzzleFromIntent(a){const b=inferSceneFromFlow(a),c=b?MACHINE_TEMPLATES['find'](e=>e['scene_id']===b['id']):undefined,d=matchSemanticPattern(a);return{'version':'1.0.0','business_flow':{'scenario_description':a,'scene_id':b?.['id'],'template_id':c?.['id'],'industry':b?.['industry'][0x0],'participation_mode':'P-M4'},'node_design':{'nodes':[],'topological_order':[],'business_stage_mapping':{}},'guard_acceptance':{'guard_bindings':[],'name_length_verified':![],'all_guards_created':![],'cross_machine_guards':[]},'permission_model':{'forward_permissions':[],'named_operator_roles':[],'completeness_verified':![]},'threshold_weight':{'pair_thresholds':[],'forward_weights':[],'execution_mode':d?.['id']||'P-M-SEQ','allocator_integration':[]},'branch_topology':{'topology_pattern':'P-M-LINEAR','branching_points':[],'merge_points':[],'is_dag':!![]},'overall_objective':{'primary_branch':{'start_node':'','end_node':'','description':''},'secondary_branches':[],'success_criteria':'','failure_criteria':''},'risk_assessment':{'overall_risk_level':'low','identified_risks':[],'mitigation_strategy':'','environment_readiness':{'permission_published':![],'guards_published':![],'arbitration_published':![],'reward_published':![],'testnet_tested':![]}}};}export function initPuzzleFromTemplate(a){const b=getTemplateById(a);if(!b)return undefined;const c=findScene(b['scene_id']);if(!c)return undefined;const d=initPuzzleFromIntent(b['description']);return d['business_flow']['template_id']=b['id'],d['business_flow']['scene_id']=c['id'],d['business_flow']['industry']=c['industry'][0x0],d['business_flow']['participation_mode']='P-M1',d['node_design']['nodes']=b['example_nodes']['map'](e=>({'name':e['name'],'description':e['description']||'','is_entry':![],'is_terminal':![]})),d['permission_model']['permission_object']={'use_custom':!![],'custom_indices':b['required_permissions']['map'](e=>({'index':e['index'],'name':e['name'],'description':e['description']}))},d['guard_acceptance']['guard_bindings']=b['required_guards']['map'](e=>({'forward_id':{'pair_id':{'prev_node':'','next_node':''},'forward_name':e['bound_to_forward']},'guard_template_id':e['guard_template_id'],'purpose':e['purpose'],'tested_on_testnet':![]})),d['threshold_weight']['allocator_integration']=b['required_allocators']['map'](e=>({'name':e['name'],'trigger_node':e['trigger_node'],'sharing_who':'Entity','recipient_description':e['description']})),d;}function resolveFragmentNameConflicts(a){const b=[],c=[],d=new Map();for(let e=0x0;e<a['length'];e++){const f=a[e],g=new Map();for(const h of f['nodes']){const j=f['pairs']['some'](l=>l['prev_node']===''&&l['next_node']===h['name']),k=j?h['name']:'f'+e+'__'+h['name'];g['set'](h['name'],k),b['push']({'name':k,'description':h['description']});}d['set'](e,g);for(const l of f['pairs']){const m=d['get'](e),n=l['prev_node']===''?'':m['get'](l['prev_node'])??l['prev_node'],o=m['get'](l['next_node'])??l['next_node'];c['push']({'prev_node':n,'next_node':o,'threshold':l['threshold'],'forwards':l['forwards']['map'](p=>({...p}))});}}return{'nodes':b,'pairs':c};}export function initPuzzleFromMachineId(a,b){const c=derivePuzzleFromMachineJson(b);return c['business_flow']['participation_mode']='P-M1',c['business_flow']['referenced_machine_ids']=[a],c['business_flow']['scenario_description']='Reference\x20to\x20published\x20Machine\x20'+a+(b['name']?'\x20('+b['name']+')':''),c;}export function initPuzzleFromFragments(a){if(a['length']===0x0){const h=initPuzzleFromIntent('(composition\x20of\x20zero\x20fragments)');return h['business_flow']['participation_mode']='P-M2',h;}const {nodes:b,pairs:c}=resolveFragmentNameConflicts(a),d=a['find'](i=>i['scene_id'])?.['scene_id'],e=a['find'](i=>i['template_id'])?.['template_id'],f=a['map'](i=>i['name']??'(unnamed)')['join']('\x20+\x20'),g=derivePuzzleFromMachineJson({'name':f,'nodes':b,'pairs':c,'scene_id':d,'template_id':e});return g['business_flow']['participation_mode']='P-M2',g['business_flow']['scenario_description']='Composition\x20of\x20'+a['length']+'\x20Machine\x20fragments:\x20'+f,g;}export function initPuzzleForCrossChain(a,b){const c=initPuzzleFromIntent('Cross-chain\x20dependency\x20on\x20upstream\x20Machine\x20'+a);c['business_flow']['participation_mode']='P-M3',c['business_flow']['referenced_machine_ids']=[a];if(b){const d=analyzeTopology(b['nodes'],b['pairs']);for(const e of d['terminal_nodes']){c['guard_acceptance']['cross_machine_guards']['push']({'forward_id':{'pair_id':{'prev_node':'','next_node':''},'forward_name':''},'upstream_machine_id':a,'upstream_node_name':e});}}return c;}export function initPuzzleForForkModify(a,b){const c=derivePuzzleFromMachineJson(b);return c['business_flow']['participation_mode']='P-M5',c['business_flow']['referenced_machine_ids']=[a],c['business_flow']['fork_source_template_id']=b['template_id']??a,c['business_flow']['scenario_description']='Fork-modify\x20from\x20Machine\x20'+a+(b['name']?'\x20('+b['name']+')':''),c;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['business_flow']['scenario_description'])c['push']('scenario_description');if(!a['business_flow']['scene_id'])c['push']('scene_id');if(!a['business_flow']['participation_mode'])c['push']('participation_mode');b['push']({'dimension':'A_business_flow','complete':c['length']===0x0,'missing_fields':c});const d=[];if(a['node_design']['nodes']['length']===0x0)d['push']('nodes\x20(empty)');b['push']({'dimension':'B_node_design','complete':d['length']===0x0,'missing_fields':d});const e=[];if(!a['guard_acceptance']['all_guards_created'])e['push']('all_guards_created');b['push']({'dimension':'C_guard_acceptance','complete':e['length']===0x0,'missing_fields':e});const f=[];if(!a['permission_model']['completeness_verified'])f['push']('completeness_verified');b['push']({'dimension':'D_permission_model','complete':f['length']===0x0,'missing_fields':f});const g=[];if(a['threshold_weight']['pair_thresholds']['length']===0x0)g['push']('pair_thresholds\x20(empty)');b['push']({'dimension':'E_threshold_weight','complete':g['length']===0x0,'missing_fields':g});const h=[];if(!a['branch_topology']['is_dag'])h['push']('is_dag\x20(cycle\x20detected)');b['push']({'dimension':'F_branch_topology','complete':h['length']===0x0,'missing_fields':h});const i=[];if(!a['overall_objective']['primary_branch']['end_node'])i['push']('primary_branch.end_node');if(!a['overall_objective']['success_criteria'])i['push']('success_criteria');b['push']({'dimension':'G_overall_objective','complete':i['length']===0x0,'missing_fields':i});const j=[];if(a['risk_assessment']['overall_risk_level']==='critical')j['push']('overall_risk_level=critical\x20(must\x20fix)');b['push']({'dimension':'H_risk_assessment','complete':j['length']===0x0,'missing_fields':j});const k=b['every'](n=>n['complete']),l=b['find'](n=>!n['complete']);let m='All\x20dimensions\x20complete.\x20Ready\x20for\x20confirmation.';return l&&(m='Complete\x20dimension\x20'+l['dimension']+':\x20'+l['missing_fields']['join'](',\x20')),{'complete':k,'dimensions':b,'next_step':m};}export function recommendNextStep(a){const b=checkPuzzleCompleteness(a);return b['next_step'];}export function derivePuzzleFromMachineJson(a){const b=analyzeTopology(a['nodes'],a['pairs']),c=identifyTopologyPattern(a['pairs']),d={'nodes':a['nodes']['map'](o=>({'name':o['name'],'description':o['description']||'','is_entry':b['entry_nodes']['includes'](o['name']),'is_terminal':b['terminal_nodes']['includes'](o['name'])})),'topological_order':[],'business_stage_mapping':{}},e=[],f=[],g=new Set();for(const o of a['pairs']){for(const p of o['forwards']){const q=p['named_operator']!==undefined,r=p['permission_index']!==undefined;e['push']({'forward':{'pair_id':{'prev_node':o['prev_node'],'next_node':o['next_node']},'forward_name':p['name']},'namedOperator':q?{'type':p['named_operator']===''?'order_holder':'role','role':p['named_operator']||undefined}:{'type':'none'},'permissionIndex':r?{'type':'custom','index':p['permission_index']}:{'type':'none'},'semantic':''}),p['named_operator']&&p['named_operator']!==''&&!g['has'](p['named_operator'])&&(g['add'](p['named_operator']),f['push']({'role':p['named_operator'],'semantic':'','assignment_timing':'at_progress_new_via_sdk'}));}}const h=a['pairs']['map'](s=>({'pair_id':{'prev_node':s['prev_node'],'next_node':s['next_node']},'threshold':s['threshold'],'semantic':''})),i=a['pairs']['flatMap'](s=>s['forwards']['map'](t=>({'forward_id':{'pair_id':{'prev_node':s['prev_node'],'next_node':s['next_node']},'forward_name':t['name']},'weight':t['weight'],'semantic':''}))),j=a['pairs']['length']>0x0?identifyExecutionMode({'threshold':a['pairs'][0x0]['threshold'],'forwards':a['pairs'][0x0]['forwards']['map'](s=>({'weight':s['weight'],'named_operator':s['named_operator'],'permission_index':s['permission_index']}))}):'P-M-SEQ',k=[],l=[],m=new Map(),n=new Map();for(const s of a['pairs']){if(!m['has'](s['prev_node']))m['set'](s['prev_node'],[]);m['get'](s['prev_node'])['push'](s['next_node']);if(!n['has'](s['next_node']))n['set'](s['next_node'],[]);n['get'](s['next_node'])['push'](s['prev_node']);}for(const [t,u]of m){u['length']>0x1&&t!==''&&k['push']({'node':t,'branches':u,'branch_type':'competing'});}for(const [v,w]of n){w['length']>0x1&&l['push']({'node':v,'incoming_from':w});}return{'version':'1.0.0','business_flow':{'scenario_description':'','scene_id':a['scene_id'],'template_id':a['template_id'],'participation_mode':'P-M1'},'node_design':d,'guard_acceptance':{'guard_bindings':a['pairs']['flatMap'](x=>x['forwards']['filter'](y=>y['guard'])['map'](y=>({'forward_id':{'pair_id':{'prev_node':x['prev_node'],'next_node':x['next_node']},'forward_name':y['name']},'guard_address':y['guard'],'purpose':'','tested_on_testnet':![]}))),'name_length_verified':!![],'all_guards_created':!![],'cross_machine_guards':[]},'permission_model':{'forward_permissions':e,'named_operator_roles':f,'completeness_verified':!![]},'threshold_weight':{'pair_thresholds':h,'forward_weights':i,'execution_mode':j,'allocator_integration':[]},'branch_topology':{'topology_pattern':c,'branching_points':k,'merge_points':l,'is_dag':!b['has_cycles']},'overall_objective':{'primary_branch':{'start_node':b['entry_nodes'][0x0]||'','end_node':b['terminal_nodes'][0x0]||'','description':''},'secondary_branches':[],'success_criteria':'','failure_criteria':''},'risk_assessment':{'overall_risk_level':'low','identified_risks':[],'mitigation_strategy':'','environment_readiness':{'permission_published':![],'guards_published':![],'arbitration_published':![],'reward_published':![],'testnet_tested':![]}}};}export function generateConfirmationText(a){const b=['===\x20Machine\x20Puzzle\x20Summary\x20===','','A.\x20Business\x20Flow:','\x20\x20\x20Scenario:\x20'+(a['business_flow']['scenario_description']||'(not\x20set)'),'\x20\x20\x20Scene:\x20'+(a['business_flow']['scene_id']||'(not\x20set)'),'\x20\x20\x20Template:\x20'+(a['business_flow']['template_id']||'(not\x20set)'),'\x20\x20\x20Participation:\x20'+(a['business_flow']['participation_mode']||'(not\x20set)'),'','B.\x20Node\x20Design:','\x20\x20\x20Nodes:\x20'+a['node_design']['nodes']['length'],...a['node_design']['nodes']['slice'](0x0,0xa)['map'](c=>'\x20\x20\x20-\x20'+c['name']+(c['is_entry']?'\x20[ENTRY]':'')+(c['is_terminal']?'\x20[TERMINAL]':'')),a['node_design']['nodes']['length']>0xa?'\x20\x20\x20...\x20and\x20'+(a['node_design']['nodes']['length']-0xa)+'\x20more':'','','C.\x20Guard\x20Acceptance:','\x20\x20\x20Guards\x20bound:\x20'+a['guard_acceptance']['guard_bindings']['length'],'\x20\x20\x20All\x20created:\x20'+(a['guard_acceptance']['all_guards_created']?'YES':'NO'),'\x20\x20\x20Name\x20length\x20verified:\x20'+(a['guard_acceptance']['name_length_verified']?'YES':'NO'),'\x20\x20\x20Cross-machine:\x20'+a['guard_acceptance']['cross_machine_guards']['length'],'','D.\x20Permission\x20Model:','\x20\x20\x20Forward\x20permissions:\x20'+a['permission_model']['forward_permissions']['length'],'\x20\x20\x20NamedOperator\x20roles:\x20'+a['permission_model']['named_operator_roles']['length'],'\x20\x20\x20Completeness\x20verified:\x20'+(a['permission_model']['completeness_verified']?'YES':'NO'),'','E.\x20Threshold\x20&\x20Weight:','\x20\x20\x20Pair\x20thresholds:\x20'+a['threshold_weight']['pair_thresholds']['length'],'\x20\x20\x20Forward\x20weights:\x20'+a['threshold_weight']['forward_weights']['length'],'\x20\x20\x20Execution\x20mode:\x20'+a['threshold_weight']['execution_mode'],'\x20\x20\x20Allocators:\x20'+a['threshold_weight']['allocator_integration']['length'],'','F.\x20Branch\x20Topology:','\x20\x20\x20Pattern:\x20'+a['branch_topology']['topology_pattern'],'\x20\x20\x20Branching\x20points:\x20'+a['branch_topology']['branching_points']['length'],'\x20\x20\x20Merge\x20points:\x20'+a['branch_topology']['merge_points']['length'],'\x20\x20\x20Is\x20DAG:\x20'+(a['branch_topology']['is_dag']?'YES':'NO'),'','G.\x20Overall\x20Objective:','\x20\x20\x20Primary:\x20'+a['overall_objective']['primary_branch']['start_node']+'\x20->\x20'+a['overall_objective']['primary_branch']['end_node'],'\x20\x20\x20Secondary\x20branches:\x20'+a['overall_objective']['secondary_branches']['length'],'','H.\x20Risk\x20Assessment:','\x20\x20\x20Overall\x20level:\x20'+a['risk_assessment']['overall_risk_level'],'\x20\x20\x20Identified\x20risks:\x20'+a['risk_assessment']['identified_risks']['length'],''];return a['environment']&&b['push']('Environment:','\x20\x20\x20Network:\x20'+a['environment']['network'],'\x20\x20\x20Testnet\x20passed:\x20'+(a['environment']['testnet_test_passed']?'YES':'NO'),'\x20\x20\x20Backup\x20created:\x20'+(a['environment']['backup_created']?'YES':'NO'),''),b['filter'](c=>c!=='')['join']('\x0a');}export const MACHINE_PUZZLE_VERSION='1.0.0';
1
+ import{inferSceneFromFlow,findScene}from'./machine-ledger.js';import{MACHINE_TEMPLATES,getTemplateById}from'./machine-templates.js';import{matchSemanticPattern,identifyExecutionMode}from'./machine-translation.js';import{analyzeTopology,identifyTopologyPattern}from'./machine-topology.js';export function initPuzzleFromIntent(a){const b=inferSceneFromFlow(a),c=b?MACHINE_TEMPLATES['find'](e=>e['scene_id']===b['id']):undefined,d=matchSemanticPattern(a);return{'version':'1.0.0','business_flow':{'scenario_description':a,'scene_id':b?.['id'],'template_id':c?.['id'],'industry':b?.['industry'][0x0],'participation_mode':'P-M4'},'node_design':{'nodes':[],'topological_order':[],'business_stage_mapping':{}},'guard_acceptance':{'guard_bindings':[],'name_length_verified':![],'all_guards_created':![],'cross_machine_guards':[]},'permission_model':{'forward_permissions':[],'named_operator_roles':[],'completeness_verified':![]},'threshold_weight':{'pair_thresholds':[],'forward_weights':[],'execution_mode':d?.['id']||'P-M-SEQ','allocator_integration':[]},'branch_topology':{'topology_pattern':'P-M-LINEAR','branching_points':[],'merge_points':[],'exit_reachable':!![]},'overall_objective':{'primary_branch':{'start_node':'','end_node':'','description':''},'secondary_branches':[],'success_criteria':'','failure_criteria':''},'risk_assessment':{'overall_risk_level':'low','identified_risks':[],'mitigation_strategy':'','environment_readiness':{'permission_published':![],'guards_published':![],'arbitration_published':![],'reward_published':![],'testnet_tested':![]}}};}export function initPuzzleFromTemplate(a){const b=getTemplateById(a);if(!b)return undefined;const c=findScene(b['scene_id']);if(!c)return undefined;const d=initPuzzleFromIntent(b['description']);return d['business_flow']['template_id']=b['id'],d['business_flow']['scene_id']=c['id'],d['business_flow']['industry']=c['industry'][0x0],d['business_flow']['participation_mode']='P-M1',d['node_design']['nodes']=b['example_nodes']['map'](e=>({'name':e['name'],'description':e['description']||'','is_entry':![],'is_terminal':![]})),d['permission_model']['permission_object']={'use_custom':!![],'custom_indices':b['required_permissions']['map'](e=>({'index':e['index'],'name':e['name'],'description':e['description']}))},d['guard_acceptance']['guard_bindings']=b['required_guards']['map'](e=>({'forward_id':{'pair_id':{'prev_node':'','next_node':''},'forward_name':e['bound_to_forward']},'guard_template_id':e['guard_template_id'],'purpose':e['purpose'],'tested_on_testnet':![]})),d['threshold_weight']['allocator_integration']=b['required_allocators']['map'](e=>({'name':e['name'],'trigger_node':e['trigger_node'],'sharing_who':'Entity','recipient_description':e['description']})),d;}function resolveFragmentNameConflicts(a){const b=[],c=[],d=new Map();for(let e=0x0;e<a['length'];e++){const f=a[e],g=new Map();for(const h of f['nodes']){const j=f['pairs']['some'](l=>l['prev_node']===''&&l['next_node']===h['name']),k=j?h['name']:'f'+e+'__'+h['name'];g['set'](h['name'],k),b['push']({'name':k,'description':h['description']});}d['set'](e,g);for(const l of f['pairs']){const m=d['get'](e),n=l['prev_node']===''?'':m['get'](l['prev_node'])??l['prev_node'],o=m['get'](l['next_node'])??l['next_node'];c['push']({'prev_node':n,'next_node':o,'threshold':l['threshold'],'forwards':l['forwards']['map'](p=>({...p}))});}}return{'nodes':b,'pairs':c};}export function initPuzzleFromMachineId(a,b){const c=derivePuzzleFromMachineJson(b);return c['business_flow']['participation_mode']='P-M1',c['business_flow']['referenced_machine_ids']=[a],c['business_flow']['scenario_description']='Reference\x20to\x20published\x20Machine\x20'+a+(b['name']?'\x20('+b['name']+')':''),c;}export function initPuzzleFromFragments(a){if(a['length']===0x0){const h=initPuzzleFromIntent('(composition\x20of\x20zero\x20fragments)');return h['business_flow']['participation_mode']='P-M2',h;}const {nodes:b,pairs:c}=resolveFragmentNameConflicts(a),d=a['find'](i=>i['scene_id'])?.['scene_id'],e=a['find'](i=>i['template_id'])?.['template_id'],f=a['map'](i=>i['name']??'(unnamed)')['join']('\x20+\x20'),g=derivePuzzleFromMachineJson({'name':f,'nodes':b,'pairs':c,'scene_id':d,'template_id':e});return g['business_flow']['participation_mode']='P-M2',g['business_flow']['scenario_description']='Composition\x20of\x20'+a['length']+'\x20Machine\x20fragments:\x20'+f,g;}export function initPuzzleForCrossChain(a,b){const c=initPuzzleFromIntent('Cross-chain\x20dependency\x20on\x20upstream\x20Machine\x20'+a);c['business_flow']['participation_mode']='P-M3',c['business_flow']['referenced_machine_ids']=[a];if(b){const d=analyzeTopology(b['nodes'],b['pairs']);for(const e of d['terminal_nodes']){c['guard_acceptance']['cross_machine_guards']['push']({'forward_id':{'pair_id':{'prev_node':'','next_node':''},'forward_name':''},'upstream_machine_id':a,'upstream_node_name':e});}}return c;}export function initPuzzleForForkModify(a,b){const c=derivePuzzleFromMachineJson(b);return c['business_flow']['participation_mode']='P-M5',c['business_flow']['referenced_machine_ids']=[a],c['business_flow']['fork_source_template_id']=b['template_id']??a,c['business_flow']['scenario_description']='Fork-modify\x20from\x20Machine\x20'+a+(b['name']?'\x20('+b['name']+')':''),c;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['business_flow']['scenario_description'])c['push']('scenario_description');if(!a['business_flow']['scene_id'])c['push']('scene_id');if(!a['business_flow']['participation_mode'])c['push']('participation_mode');b['push']({'dimension':'A_business_flow','complete':c['length']===0x0,'missing_fields':c});const d=[];if(a['node_design']['nodes']['length']===0x0)d['push']('nodes\x20(empty)');b['push']({'dimension':'B_node_design','complete':d['length']===0x0,'missing_fields':d});const e=[];if(!a['guard_acceptance']['all_guards_created'])e['push']('all_guards_created');b['push']({'dimension':'C_guard_acceptance','complete':e['length']===0x0,'missing_fields':e});const f=[];if(!a['permission_model']['completeness_verified'])f['push']('completeness_verified');b['push']({'dimension':'D_permission_model','complete':f['length']===0x0,'missing_fields':f});const g=[];if(a['threshold_weight']['pair_thresholds']['length']===0x0)g['push']('pair_thresholds\x20(empty)');b['push']({'dimension':'E_threshold_weight','complete':g['length']===0x0,'missing_fields':g});const h=[];if(!a['branch_topology']['exit_reachable'])h['push']('exit_reachable\x20(trap:\x20a\x20loop\x20lacks\x20a\x20cycle-breaking\x20exit)');b['push']({'dimension':'F_branch_topology','complete':h['length']===0x0,'missing_fields':h});const i=[];if(!a['overall_objective']['primary_branch']['end_node'])i['push']('primary_branch.end_node');if(!a['overall_objective']['success_criteria'])i['push']('success_criteria');b['push']({'dimension':'G_overall_objective','complete':i['length']===0x0,'missing_fields':i});const j=[];if(a['risk_assessment']['overall_risk_level']==='critical')j['push']('overall_risk_level=critical\x20(must\x20fix)');b['push']({'dimension':'H_risk_assessment','complete':j['length']===0x0,'missing_fields':j});const k=b['every'](n=>n['complete']),l=b['find'](n=>!n['complete']);let m='All\x20dimensions\x20complete.\x20Ready\x20for\x20confirmation.';return l&&(m='Complete\x20dimension\x20'+l['dimension']+':\x20'+l['missing_fields']['join'](',\x20')),{'complete':k,'dimensions':b,'next_step':m};}export function recommendNextStep(a){const b=checkPuzzleCompleteness(a);return b['next_step'];}export function derivePuzzleFromMachineJson(a){const b=analyzeTopology(a['nodes'],a['pairs']),c=identifyTopologyPattern(a['pairs']),d={'nodes':a['nodes']['map'](o=>({'name':o['name'],'description':o['description']||'','is_entry':b['entry_nodes']['includes'](o['name']),'is_terminal':b['terminal_nodes']['includes'](o['name'])})),'topological_order':[],'business_stage_mapping':{}},e=[],f=[],g=new Set();for(const o of a['pairs']){for(const p of o['forwards']){const q=p['named_operator']!==undefined,r=p['permission_index']!==undefined;e['push']({'forward':{'pair_id':{'prev_node':o['prev_node'],'next_node':o['next_node']},'forward_name':p['name']},'namedOperator':q?{'type':p['named_operator']===''?'order_holder':'role','role':p['named_operator']||undefined}:{'type':'none'},'permissionIndex':r?{'type':'custom','index':p['permission_index']}:{'type':'none'},'semantic':''}),p['named_operator']&&p['named_operator']!==''&&!g['has'](p['named_operator'])&&(g['add'](p['named_operator']),f['push']({'role':p['named_operator'],'semantic':'','assignment_timing':'at_progress_new_via_sdk'}));}}const h=a['pairs']['map'](s=>({'pair_id':{'prev_node':s['prev_node'],'next_node':s['next_node']},'threshold':s['threshold'],'semantic':''})),i=a['pairs']['flatMap'](s=>s['forwards']['map'](t=>({'forward_id':{'pair_id':{'prev_node':s['prev_node'],'next_node':s['next_node']},'forward_name':t['name']},'weight':t['weight'],'semantic':''}))),j=a['pairs']['length']>0x0?identifyExecutionMode({'threshold':a['pairs'][0x0]['threshold'],'forwards':a['pairs'][0x0]['forwards']['map'](s=>({'weight':s['weight'],'named_operator':s['named_operator'],'permission_index':s['permission_index']}))}):'P-M-SEQ',k=[],l=[],m=new Map(),n=new Map();for(const s of a['pairs']){if(!m['has'](s['prev_node']))m['set'](s['prev_node'],[]);m['get'](s['prev_node'])['push'](s['next_node']);if(!n['has'](s['next_node']))n['set'](s['next_node'],[]);n['get'](s['next_node'])['push'](s['prev_node']);}for(const [t,u]of m){u['length']>0x1&&t!==''&&k['push']({'node':t,'branches':u,'branch_type':'competing'});}for(const [v,w]of n){w['length']>0x1&&l['push']({'node':v,'incoming_from':w});}return{'version':'1.0.0','business_flow':{'scenario_description':'','scene_id':a['scene_id'],'template_id':a['template_id'],'participation_mode':'P-M1'},'node_design':d,'guard_acceptance':{'guard_bindings':a['pairs']['flatMap'](x=>x['forwards']['filter'](y=>y['guard'])['map'](y=>({'forward_id':{'pair_id':{'prev_node':x['prev_node'],'next_node':x['next_node']},'forward_name':y['name']},'guard_address':y['guard'],'purpose':'','tested_on_testnet':![]}))),'name_length_verified':!![],'all_guards_created':!![],'cross_machine_guards':[]},'permission_model':{'forward_permissions':e,'named_operator_roles':f,'completeness_verified':!![]},'threshold_weight':{'pair_thresholds':h,'forward_weights':i,'execution_mode':j,'allocator_integration':[]},'branch_topology':{'topology_pattern':c,'branching_points':k,'merge_points':l,'exit_reachable':!b['has_traps']},'overall_objective':{'primary_branch':{'start_node':b['entry_nodes'][0x0]||'','end_node':b['terminal_nodes'][0x0]||'','description':''},'secondary_branches':[],'success_criteria':'','failure_criteria':''},'risk_assessment':{'overall_risk_level':'low','identified_risks':[],'mitigation_strategy':'','environment_readiness':{'permission_published':![],'guards_published':![],'arbitration_published':![],'reward_published':![],'testnet_tested':![]}}};}export function generateConfirmationText(a){const b=['===\x20Machine\x20Puzzle\x20Summary\x20===','','A.\x20Business\x20Flow:','\x20\x20\x20Scenario:\x20'+(a['business_flow']['scenario_description']||'(not\x20set)'),'\x20\x20\x20Scene:\x20'+(a['business_flow']['scene_id']||'(not\x20set)'),'\x20\x20\x20Template:\x20'+(a['business_flow']['template_id']||'(not\x20set)'),'\x20\x20\x20Participation:\x20'+(a['business_flow']['participation_mode']||'(not\x20set)'),'','B.\x20Node\x20Design:','\x20\x20\x20Nodes:\x20'+a['node_design']['nodes']['length'],...a['node_design']['nodes']['slice'](0x0,0xa)['map'](c=>'\x20\x20\x20-\x20'+c['name']+(c['is_entry']?'\x20[ENTRY]':'')+(c['is_terminal']?'\x20[TERMINAL]':'')),a['node_design']['nodes']['length']>0xa?'\x20\x20\x20...\x20and\x20'+(a['node_design']['nodes']['length']-0xa)+'\x20more':'','','C.\x20Guard\x20Acceptance:','\x20\x20\x20Guards\x20bound:\x20'+a['guard_acceptance']['guard_bindings']['length'],'\x20\x20\x20All\x20created:\x20'+(a['guard_acceptance']['all_guards_created']?'YES':'NO'),'\x20\x20\x20Name\x20length\x20verified:\x20'+(a['guard_acceptance']['name_length_verified']?'YES':'NO'),'\x20\x20\x20Cross-machine:\x20'+a['guard_acceptance']['cross_machine_guards']['length'],'','D.\x20Permission\x20Model:','\x20\x20\x20Forward\x20permissions:\x20'+a['permission_model']['forward_permissions']['length'],'\x20\x20\x20NamedOperator\x20roles:\x20'+a['permission_model']['named_operator_roles']['length'],'\x20\x20\x20Completeness\x20verified:\x20'+(a['permission_model']['completeness_verified']?'YES':'NO'),'','E.\x20Threshold\x20&\x20Weight:','\x20\x20\x20Pair\x20thresholds:\x20'+a['threshold_weight']['pair_thresholds']['length'],'\x20\x20\x20Forward\x20weights:\x20'+a['threshold_weight']['forward_weights']['length'],'\x20\x20\x20Execution\x20mode:\x20'+a['threshold_weight']['execution_mode'],'\x20\x20\x20Allocators:\x20'+a['threshold_weight']['allocator_integration']['length'],'','F.\x20Branch\x20Topology:','\x20\x20\x20Pattern:\x20'+a['branch_topology']['topology_pattern'],'\x20\x20\x20Branching\x20points:\x20'+a['branch_topology']['branching_points']['length'],'\x20\x20\x20Merge\x20points:\x20'+a['branch_topology']['merge_points']['length'],'\x20\x20\x20Exit\x20reachable\x20(no\x20trap):\x20'+(a['branch_topology']['exit_reachable']?'YES':'NO\x20—\x20a\x20loop\x20without\x20a\x20cycle-breaking\x20exit'),'','G.\x20Overall\x20Objective:','\x20\x20\x20Primary:\x20'+a['overall_objective']['primary_branch']['start_node']+'\x20->\x20'+a['overall_objective']['primary_branch']['end_node'],'\x20\x20\x20Secondary\x20branches:\x20'+a['overall_objective']['secondary_branches']['length'],'','H.\x20Risk\x20Assessment:','\x20\x20\x20Overall\x20level:\x20'+a['risk_assessment']['overall_risk_level'],'\x20\x20\x20Identified\x20risks:\x20'+a['risk_assessment']['identified_risks']['length'],''];return a['environment']&&b['push']('Environment:','\x20\x20\x20Network:\x20'+a['environment']['network'],'\x20\x20\x20Testnet\x20passed:\x20'+(a['environment']['testnet_test_passed']?'YES':'NO'),'\x20\x20\x20Backup\x20created:\x20'+(a['environment']['backup_created']?'YES':'NO'),''),b['filter'](c=>c!=='')['join']('\x0a');}export const MACHINE_PUZZLE_VERSION='1.0.0';
@@ -1 +1 @@
1
- import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook,interpolate}from'../config/rule-engine.js';import{MAX_NODE_COUNT,USER_DEFINED_PERM_INDEX_START}from'./onchain-constants.js';import{findUnachievableThresholds}from'./machine-topology.js';const AUTO_FIXABLE=new Set(['R-M2-04','R-M4-01','R-M4-06']),RELATED_CONSTRAINT={'R-M1-01':'MC-S-01','R-M1-02':'MC-S-02','R-M1-04':'MC-S-03','R-M1-05':'MC-S-04','R-M1-06':'MC-S-05','R-M1-07':'MC-C-01','R-M1-08':'MC-C-02','R-M1-09':'MC-C-03','R-M1-10':'MC-C-04','R-M1-12':'MC-S-04','R-M1-13':'MC-S-04','R-M2-01':'MC-C-09','R-M2-04':'MC-C-11','R-M3-01':'MC-C-07','R-M3-02':'MC-C-08','R-M3-08':'MC-C-08','R-M4-01':'MC-P-02','R-M4-02':'MC-P-03'};export function machineRiskFacts(a,b){const c=a['pairs'],d=c['some'](U=>U['prev_node']===''),e=new Set(c['map'](U=>U['prev_node'])['filter'](U=>U!=='')),f=new Set(a['nodes']['map'](U=>U['name'])),g=[...f]['filter'](U=>!e['has'](U)),h=g['length']>0x0,i=b['published_allocators']!==undefined,j=i&&b['published_allocators']['size']===0x0,k=g['length']>0x0&&j,l=new Set(c['filter'](U=>U['prev_node']==='')['map'](U=>U['next_node'])),m=new Set(c['map'](U=>U['prev_node'])['filter'](U=>U!==''));let n;for(const U of a['nodes']){if(!l['has'](U['name'])&&!m['has'](U['name'])){const V=c['some'](W=>W['next_node']===U['name']);if(!V){n=U['name'];break;}}}const o=a['nodes']['length'];let q,r;const s=new Map();for(const W of c){s['set'](W['next_node'],(s['get'](W['next_node'])??0x0)+0x1);}for(const [X,Y]of s){if(Y>0x28){q=X,r=Y;break;}}let t,u,v;for(const Z of c){if(Z['forwards']['length']>0x14){t=Z['prev_node'],u=Z['next_node'],v=Z['forwards']['length'];break;}}const w=a['nodes']['map'](a0=>a0['name']),x=w['filter']((a0,a1)=>w['indexOf'](a0)!==a1),y=[...new Set(x)]['join'](',\x20'),z=findUnachievableThresholds(c),A=z[0x0],B=A!=null&&A['threshold']>0x1&&A['distinct_forwards']<A['threshold'],C=A==null?'':'Pair\x20('+(A['prev_node']===''?'entry':A['prev_node'])+'\x20->\x20'+A['next_node']+'):\x20'+A['reason'],D=a0=>b['published_guards']?b['published_guards']['has'](a0):![];let E,F,G,H,I,J,K,L,M,N,O,P,Q;const R=new Set();for(const a0 of c){for(const a1 of a0['forwards']){if(a1['guard'])R['add'](a1['guard']);E===undefined&&a1['guard']&&!D(a1['guard'])&&(E=a1['name'],F=a1['guard']);G===undefined&&a1['retained_submission']&&!a1['guard']&&(G=a1['name']);const a2=a1['named_operator']!==undefined&&a1['named_operator']!==null,a3=a1['permission_index']!==undefined&&a1['permission_index']!==null;H===undefined&&!a2&&!a3&&!a1['guard']&&(H=a1['name'],I=a0['prev_node'],J=a0['next_node']),K===undefined&&a2&&a3&&(K=a1['name'],L=a0['prev_node'],M=a0['next_node']),N===undefined&&a1['permission_index']!==undefined&&a1['permission_index']!==null&&a1['permission_index']<USER_DEFINED_PERM_INDEX_START&&(N=a1['name'],O=a0['prev_node'],P=a0['next_node'],Q=a1['permission_index']);}}const S=[...R]['filter'](a4=>!D(a4)),T=S['join'](',\x20');return{'has_entry':d,'has_terminal':h,'terminal_nodes_display':g['join'](',\x20'),'no_allocator_published':j,'terminal_fund_exit_uncovered':k,...n===undefined?{}:{'first_orphaned_node_name':n},'node_count':o,'node_count_over_limit':o>MAX_NODE_COUNT,'max_node_count':MAX_NODE_COUNT,...q===undefined?{}:{'first_overpair_node_name':q,'first_overpair_count':r},...v===undefined?{}:{'first_overforward_prev':t,'first_overforward_next':u,'first_overforward_count':v},'duplicate_names_display':y,'unachievable_present':z['length']>0x0,'first_unachievable_is_multi':B,...A==null?{}:{'first_unachievable_detail':C},...E===undefined?{}:{'first_missing_guard_forward_name':E,'first_missing_guard_guard':F},...G===undefined?{}:{'first_retained_no_guard_forward_name':G},...H===undefined?{}:{'first_noperm_forward_name':H,'first_noperm_prev':I,'first_noperm_next':J},...K===undefined?{}:{'first_both_forward_name':K,'first_both_prev':L,'first_both_next':M},...N===undefined?{}:{'first_lowperm_forward_name':N,'first_lowperm_prev':O,'first_lowperm_next':P,'first_lowperm_index':Q},'min_perm_index':USER_DEFINED_PERM_INDEX_START,'mainnet_without_testnet':b['network']==='mainnet'&&!b['testnet_test_passed'],'missing_guards_display':T,'always_true':!![]};}function machineRuleBook(){const a=getJudgmentDoc()['rules']['domains']['machine'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27machine\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToMachineRisk(a){return{'rule_id':a['rule_id'],'name':a['title'],'severity':a['level'],'detail':a['evidence']??'','recommendation':a['mitigation']??'','auto_fixable':AUTO_FIXABLE['has'](a['rule_id']),...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export const MACHINE_RISK_VERSION='1.0.0';export const MACHINE_RISK_RULES=((()=>{const a=factoryRulePack('machine');if(!a)return[];const b=machineRiskFacts({'nodes':[],'pairs':[]},{'network':'testnet','testnet_test_passed':!![],'published_services':new Set(),'published_guards':new Set(),'published_permissions':new Set(),'published_machines':new Set(),'published_arbitrations':new Set(),'published_rewards':new Set(),'published_allocators':new Set(),'published_repositories':new Set()});return a['rules']['map'](d=>{const e=d['cases'][0x0],f=RELATED_CONSTRAINT[d['rule_id']];return{'id':d['rule_id'],'name':e['title'],'category':d['dimension']??'structural','severity':e['level'],'description':interpolate(e['description'],b),'detection':d['trigger']===undefined?'':interpolate(d['trigger'],b),'recommendation':e['mitigation']??'','auto_fixable':AUTO_FIXABLE['has'](d['rule_id']),...f===undefined?{}:{'related_constraint':f}};});})());export function assessMachineRisks(a,b){const {findings:c}=evaluateRuleBook(machineRuleBook(),machineRiskFacts(a,b)),d=c['map'](findingToMachineRisk),e={'critical':d['filter'](h=>h['severity']==='critical')['length'],'high':d['filter'](h=>h['severity']==='high')['length'],'medium':d['filter'](h=>h['severity']==='medium')['length'],'low':d['filter'](h=>h['severity']==='low')['length']};let f='low';if(e['critical']>0x0)f='critical';else{if(e['high']>0x0)f='high';else{if(e['medium']>0x0)f='medium';else{if(e['low']>0x0)f='low';}}}let g;if(e['critical']>0x0)g='do_not_publish';else e['high']>0x2?g='fix_first':g='publish';return{'overall_level':f,'detected_risks':d,'summary':e,'recommendation':g};}
1
+ import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook,interpolate}from'../config/rule-engine.js';import{MAX_NODE_COUNT,USER_DEFINED_PERM_INDEX_START}from'./onchain-constants.js';import{findUnachievableThresholds,findTrappedNodes}from'./machine-topology.js';const AUTO_FIXABLE=new Set(['R-M2-04','R-M4-01','R-M4-06']),RELATED_CONSTRAINT={'R-M1-01':'MC-S-01','R-M1-02':'MC-S-02','R-M1-04':'MC-S-03','R-M1-05':'MC-S-04','R-M1-06':'MC-S-05','R-M1-07':'MC-C-01','R-M1-08':'MC-C-02','R-M1-09':'MC-C-03','R-M1-10':'MC-C-04','R-M1-12':'MC-S-04','R-M1-13':'MC-S-04','R-M2-01':'MC-C-09','R-M2-04':'MC-C-11','R-M3-01':'MC-C-07','R-M3-02':'MC-C-08','R-M3-08':'MC-C-08','R-M4-01':'MC-P-02','R-M4-02':'MC-P-03'};export function machineRiskFacts(a,b){const c=a['pairs'],d=c['some'](Y=>Y['prev_node']===''),e=new Set(c['map'](Y=>Y['prev_node'])['filter'](Y=>Y!=='')),f=new Set(a['nodes']['map'](Y=>Y['name'])),g=[...f]['filter'](Y=>!e['has'](Y)),h=g['length']>0x0,i=b['published_allocators']!==undefined,j=i&&b['published_allocators']['size']===0x0,k=g['length']>0x0&&j,l=new Set(c['filter'](Y=>Y['prev_node']==='')['map'](Y=>Y['next_node'])),m=new Set(c['map'](Y=>Y['prev_node'])['filter'](Y=>Y!==''));let n;for(const Y of a['nodes']){if(!l['has'](Y['name'])&&!m['has'](Y['name'])){const Z=c['some'](a0=>a0['next_node']===Y['name']);if(!Z){n=Y['name'];break;}}}const o=new Map();for(const a0 of f)o['set'](a0,[]);for(const a1 of c){a1['prev_node']!==''&&a1['forwards']['length']>0x0&&f['has'](a1['next_node'])&&o['get'](a1['prev_node'])['push'](a1['next_node']);}const q=findTrappedNodes([...f],o,[...l]['filter'](a2=>f['has'](a2))),r=q['trap_nodes'][0x0],s=q['trap_nodes']['join'](',\x20'),t=a['nodes']['length'];let u,v;const w=new Map();for(const a2 of c){w['set'](a2['next_node'],(w['get'](a2['next_node'])??0x0)+0x1);}for(const [a3,a4]of w){if(a4>0x28){u=a3,v=a4;break;}}let x,y,z;for(const a5 of c){if(a5['forwards']['length']>0x14){x=a5['prev_node'],y=a5['next_node'],z=a5['forwards']['length'];break;}}const A=a['nodes']['map'](a6=>a6['name']),B=A['filter']((a6,a7)=>A['indexOf'](a6)!==a7),C=[...new Set(B)]['join'](',\x20'),D=findUnachievableThresholds(c),E=D[0x0],F=E!=null&&E['threshold']>0x1&&E['distinct_forwards']<E['threshold'],G=E==null?'':'Pair\x20('+(E['prev_node']===''?'entry':E['prev_node'])+'\x20->\x20'+E['next_node']+'):\x20'+E['reason'],H=a6=>b['published_guards']?b['published_guards']['has'](a6):![];let I,J,K,L,M,N,O,P,Q,R,S,T,U;const V=new Set();for(const a6 of c){for(const a7 of a6['forwards']){if(a7['guard'])V['add'](a7['guard']);I===undefined&&a7['guard']&&!H(a7['guard'])&&(I=a7['name'],J=a7['guard']);K===undefined&&a7['retained_submission']&&!a7['guard']&&(K=a7['name']);const a8=a7['named_operator']!==undefined&&a7['named_operator']!==null,a9=a7['permission_index']!==undefined&&a7['permission_index']!==null;L===undefined&&!a8&&!a9&&!a7['guard']&&(L=a7['name'],M=a6['prev_node'],N=a6['next_node']),O===undefined&&a8&&a9&&(O=a7['name'],P=a6['prev_node'],Q=a6['next_node']),R===undefined&&a7['permission_index']!==undefined&&a7['permission_index']!==null&&a7['permission_index']<USER_DEFINED_PERM_INDEX_START&&(R=a7['name'],S=a6['prev_node'],T=a6['next_node'],U=a7['permission_index']);}}const W=[...V]['filter'](aa=>!H(aa)),X=W['join'](',\x20');return{'has_entry':d,'has_terminal':h,'terminal_nodes_display':g['join'](',\x20'),'no_allocator_published':j,'terminal_fund_exit_uncovered':k,...n===undefined?{}:{'first_orphaned_node_name':n},...r===undefined?{}:{'first_trap_node_name':r,'trap_nodes_display':s},'node_count':t,'node_count_over_limit':t>MAX_NODE_COUNT,'max_node_count':MAX_NODE_COUNT,...u===undefined?{}:{'first_overpair_node_name':u,'first_overpair_count':v},...z===undefined?{}:{'first_overforward_prev':x,'first_overforward_next':y,'first_overforward_count':z},'duplicate_names_display':C,'unachievable_present':D['length']>0x0,'first_unachievable_is_multi':F,...E==null?{}:{'first_unachievable_detail':G},...I===undefined?{}:{'first_missing_guard_forward_name':I,'first_missing_guard_guard':J},...K===undefined?{}:{'first_retained_no_guard_forward_name':K},...L===undefined?{}:{'first_noperm_forward_name':L,'first_noperm_prev':M,'first_noperm_next':N},...O===undefined?{}:{'first_both_forward_name':O,'first_both_prev':P,'first_both_next':Q},...R===undefined?{}:{'first_lowperm_forward_name':R,'first_lowperm_prev':S,'first_lowperm_next':T,'first_lowperm_index':U},'min_perm_index':USER_DEFINED_PERM_INDEX_START,'mainnet_without_testnet':b['network']==='mainnet'&&!b['testnet_test_passed'],'missing_guards_display':X,'always_true':!![]};}function machineRuleBook(){const a=getJudgmentDoc()['rules']['domains']['machine'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27machine\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToMachineRisk(a){return{'rule_id':a['rule_id'],'name':a['title'],'severity':a['level'],'detail':a['evidence']??'','recommendation':a['mitigation']??'','auto_fixable':AUTO_FIXABLE['has'](a['rule_id']),...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export const MACHINE_RISK_VERSION='1.0.0';export const MACHINE_RISK_RULES=((()=>{const a=factoryRulePack('machine');if(!a)return[];const b=machineRiskFacts({'nodes':[],'pairs':[]},{'network':'testnet','testnet_test_passed':!![],'published_services':new Set(),'published_guards':new Set(),'published_permissions':new Set(),'published_machines':new Set(),'published_arbitrations':new Set(),'published_rewards':new Set(),'published_allocators':new Set(),'published_repositories':new Set()});return a['rules']['map'](d=>{const e=d['cases'][0x0],f=RELATED_CONSTRAINT[d['rule_id']];return{'id':d['rule_id'],'name':e['title'],'category':d['dimension']??'structural','severity':e['level'],'description':interpolate(e['description'],b),'detection':d['trigger']===undefined?'':interpolate(d['trigger'],b),'recommendation':e['mitigation']??'','auto_fixable':AUTO_FIXABLE['has'](d['rule_id']),...f===undefined?{}:{'related_constraint':f}};});})());export function assessMachineRisks(a,b){const {findings:c}=evaluateRuleBook(machineRuleBook(),machineRiskFacts(a,b)),d=c['map'](findingToMachineRisk),e={'critical':d['filter'](h=>h['severity']==='critical')['length'],'high':d['filter'](h=>h['severity']==='high')['length'],'medium':d['filter'](h=>h['severity']==='medium')['length'],'low':d['filter'](h=>h['severity']==='low')['length']};let f='low';if(e['critical']>0x0)f='critical';else{if(e['high']>0x0)f='high';else{if(e['medium']>0x0)f='medium';else{if(e['low']>0x0)f='low';}}}let g;if(e['critical']>0x0)g='do_not_publish';else e['high']>0x2?g='fix_first':g='publish';return{'overall_level':f,'detected_risks':d,'summary':e,'recommendation':g};}