@wowok/agent-mcp 3.3.9 → 3.4.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 (252) 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/fund-flow.js +1 -1
  4. package/dist/chain-semantics/guard-verbs.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 +3 -2
  8. package/dist/composition/compile.js +1 -1
  9. package/dist/composition/inflight.d.ts +6 -0
  10. package/dist/composition/inflight.js +1 -1
  11. package/dist/composition/materialize.d.ts +4 -0
  12. package/dist/composition/materialize.js +1 -1
  13. package/dist/composition/param-disclosure.d.ts +61 -0
  14. package/dist/composition/param-disclosure.js +1 -0
  15. package/dist/composition/plan.d.ts +11 -1
  16. package/dist/composition/plan.js +1 -1
  17. package/dist/customer/account-events.js +1 -1
  18. package/dist/data/api/api.spec.js +1 -1
  19. package/dist/data/api/cli.js +1 -1
  20. package/dist/data/api/server.d.ts +1 -0
  21. package/dist/data/api/server.js +1 -1
  22. package/dist/data/projection/store.d.ts +2 -1
  23. package/dist/data/projection/store.js +1 -1
  24. package/dist/data/projection/types.d.ts +10 -0
  25. package/dist/data/sync/cdc.js +1 -1
  26. package/dist/data/sync/cdc.spec.js +1 -1
  27. package/dist/data/sync/store.d.ts +5 -0
  28. package/dist/data/sync/store.js +1 -1
  29. package/dist/data/sync/types.d.ts +2 -0
  30. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  31. package/dist/evaluation/engine.js +1 -1
  32. package/dist/evaluation/guard-scan.js +1 -1
  33. package/dist/experience/realtime-feedback.js +1 -1
  34. package/dist/extensions/business-modules.js +1 -1
  35. package/dist/extensions/industry-pack.js +1 -1
  36. package/dist/extensions/modes.js +1 -1
  37. package/dist/graph/onchain/expand.js +1 -1
  38. package/dist/graph/onchain/exposure.js +1 -1
  39. package/dist/harness/recover.js +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/knowledge/allocation-risk.js +1 -1
  42. package/dist/knowledge/allocation-templates.js +1 -1
  43. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  44. package/dist/knowledge/arb-fund-facts.d.ts +1 -0
  45. package/dist/knowledge/arb-fund-facts.js +1 -1
  46. package/dist/knowledge/arbitration-ledger.js +1 -1
  47. package/dist/knowledge/arbitration-risk.d.ts +1 -0
  48. package/dist/knowledge/arbitration-risk.js +1 -1
  49. package/dist/knowledge/audit-rules.js +1 -1
  50. package/dist/knowledge/baselines/rules/allocation.json +6 -6
  51. package/dist/knowledge/baselines/rules/arb.json +2 -2
  52. package/dist/knowledge/baselines/rules/guard.json +11 -11
  53. package/dist/knowledge/baselines/rules/order.json +1 -1
  54. package/dist/knowledge/baselines/rules/plan.json +1 -1
  55. package/dist/knowledge/baselines/semantic-facts.js +1 -1
  56. package/dist/knowledge/builtin-templates.d.ts +14 -1
  57. package/dist/knowledge/builtin-templates.js +1 -1
  58. package/dist/knowledge/catalog-facts.d.ts +4 -0
  59. package/dist/knowledge/catalog-facts.js +1 -0
  60. package/dist/knowledge/commission-landing.js +1 -1
  61. package/dist/knowledge/component-schema.d.ts +64 -0
  62. package/dist/knowledge/component-schema.js +1 -0
  63. package/dist/knowledge/entity-recipient-guard.js +1 -1
  64. package/dist/knowledge/event-semantics.js +1 -1
  65. package/dist/knowledge/fee-param-bindings.d.ts +26 -0
  66. package/dist/knowledge/fee-param-bindings.js +1 -0
  67. package/dist/knowledge/fund-layer.js +1 -1
  68. package/dist/knowledge/getting-started.d.ts +2 -2
  69. package/dist/knowledge/getting-started.js +1 -1
  70. package/dist/knowledge/guard-anchor-reach.js +1 -1
  71. package/dist/knowledge/guard-design-patterns.js +1 -1
  72. package/dist/knowledge/guard-ledger.js +1 -1
  73. package/dist/knowledge/guard-lint.d.ts +1 -0
  74. package/dist/knowledge/guard-lint.js +1 -1
  75. package/dist/knowledge/guard-puzzle.js +1 -1
  76. package/dist/knowledge/guard-risk.js +1 -1
  77. package/dist/knowledge/guard-templates.d.ts +1 -1
  78. package/dist/knowledge/guard-templates.js +1 -1
  79. package/dist/knowledge/guard-translation.js +1 -1
  80. package/dist/knowledge/index.js +1 -1
  81. package/dist/knowledge/industry-registry.js +1 -1
  82. package/dist/knowledge/industry-strategy.js +1 -1
  83. package/dist/knowledge/jsonrpc-enum.d.ts +14 -3
  84. package/dist/knowledge/jsonrpc-enum.js +1 -1
  85. package/dist/knowledge/knob-docs.d.ts +5 -0
  86. package/dist/knowledge/knob-docs.js +1 -0
  87. package/dist/knowledge/machine-templates.js +1 -1
  88. package/dist/knowledge/machine-topology.js +1 -1
  89. package/dist/knowledge/machine-translation.js +1 -1
  90. package/dist/knowledge/onchain-constants.d.ts +2 -0
  91. package/dist/knowledge/onchain-constants.js +1 -1
  92. package/dist/knowledge/order-ledger.js +1 -1
  93. package/dist/knowledge/param-schema.d.ts +70 -0
  94. package/dist/knowledge/param-schema.js +1 -0
  95. package/dist/knowledge/param-tiers.d.ts +25 -0
  96. package/dist/knowledge/param-tiers.js +1 -0
  97. package/dist/knowledge/passport-ledger.d.ts +1 -1
  98. package/dist/knowledge/passport-ledger.js +1 -1
  99. package/dist/knowledge/pattern-resolutions.d.ts +106 -0
  100. package/dist/knowledge/pattern-resolutions.js +1 -0
  101. package/dist/knowledge/projection.spec.js +1 -1
  102. package/dist/knowledge/safety-rules.js +1 -1
  103. package/dist/knowledge/scenario-modes.d.ts +1 -0
  104. package/dist/knowledge/scenario-modes.js +1 -1
  105. package/dist/knowledge/scenario-topology.js +1 -1
  106. package/dist/knowledge/service-allocation-semantics.js +1 -1
  107. package/dist/knowledge/service-ledger.js +1 -1
  108. package/dist/knowledge/service-templates.js +1 -1
  109. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  110. package/dist/knowledge/strategy-manuals.js +1 -1
  111. package/dist/knowledge/template-loader.d.ts +101 -1
  112. package/dist/knowledge/template-loader.js +1 -1
  113. package/dist/knowledge/template-nav.d.ts +7 -0
  114. package/dist/knowledge/template-nav.js +1 -0
  115. package/dist/knowledge/template-registry.js +1 -1
  116. package/dist/knowledge/template-scanner.d.ts +33 -0
  117. package/dist/knowledge/template-scanner.js +1 -1
  118. package/dist/knowledge/template-test-profiles.d.ts +17 -0
  119. package/dist/knowledge/template-test-profiles.js +1 -0
  120. package/dist/knowledge/template-validation.d.ts +1 -0
  121. package/dist/knowledge/template-validation.js +1 -1
  122. package/dist/knowledge/tools-reference.js +1 -1
  123. package/dist/knowledge/treasury-templates.js +1 -1
  124. package/dist/knowledge/workflow-guidance.js +1 -1
  125. package/dist/monitor/MonitorLoop.js +1 -1
  126. package/dist/participation/time-window.d.ts +37 -0
  127. package/dist/participation/time-window.js +1 -0
  128. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  129. package/dist/playbooks/service-build/machine-panorama.d.ts +1 -0
  130. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  131. package/dist/playbooks/service-build/merchant-guide.d.ts +4 -1
  132. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  133. package/dist/playbooks/service-build/migration-planner.js +1 -1
  134. package/dist/playbooks/service-build/object-panorama.js +1 -1
  135. package/dist/playbooks/service-build/participation-radar.d.ts +1 -0
  136. package/dist/playbooks/service-build/participation-radar.js +1 -1
  137. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  138. package/dist/playbooks/service-build/service-panorama.d.ts +1 -0
  139. package/dist/playbooks/service-build/service-panorama.js +1 -1
  140. package/dist/playbooks/service-build/service-quote.js +1 -1
  141. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  142. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  143. package/dist/relationship/registry.js +1 -1
  144. package/dist/review/index.js +1 -1
  145. package/dist/runtime/instance-registry.d.ts +7 -1
  146. package/dist/runtime/instance-registry.js +1 -1
  147. package/dist/safety/confirm-gate.js +1 -1
  148. package/dist/schema/benchmark-migration/index.d.ts +2 -0
  149. package/dist/schema/benchmark-migration/index.js +1 -1
  150. package/dist/schema/call/allocation.js +1 -1
  151. package/dist/schema/call/arbitration.js +1 -1
  152. package/dist/schema/call/base.d.ts +8 -0
  153. package/dist/schema/call/base.js +1 -1
  154. package/dist/schema/call/bridge.d.ts +2 -0
  155. package/dist/schema/call/error-codes.d.ts +1 -1
  156. package/dist/schema/call/error-codes.js +1 -1
  157. package/dist/schema/call/guard.js +1 -1
  158. package/dist/schema/call/handler.js +1 -1
  159. package/dist/schema/call/machine.js +1 -1
  160. package/dist/schema/call/semantic.js +1 -1
  161. package/dist/schema/call/service.d.ts +3 -3
  162. package/dist/schema/call/service.js +1 -1
  163. package/dist/schema/common/index.js +1 -1
  164. package/dist/schema/evaluation/index.d.ts +8 -0
  165. package/dist/schema/evaluation/index.js +1 -1
  166. package/dist/schema/goal/planning.d.ts +1 -0
  167. package/dist/schema/goal/planning.js +1 -1
  168. package/dist/schema/industry-pack/index.d.ts +29 -0
  169. package/dist/schema/industry-pack/index.js +1 -1
  170. package/dist/schema/local/index.d.ts +20 -0
  171. package/dist/schema/local/index.js +1 -1
  172. package/dist/schema/messenger/index.d.ts +2 -0
  173. package/dist/schema/messenger/index.js +1 -1
  174. package/dist/schema/operations.d.ts +1 -1
  175. package/dist/schema/operations.js +1 -1
  176. package/dist/schema/query/bi.d.ts +106 -0
  177. package/dist/schema/query/bi.js +1 -1
  178. package/dist/schema/query/index.d.ts +5 -5
  179. package/dist/schema/query/index.js +1 -1
  180. package/dist/schema/schema-version.js +1 -1
  181. package/dist/schema/watch/index.js +1 -1
  182. package/dist/schema-query-impl/index.js +1 -1
  183. package/dist/schemas/account_operation.output.json +4 -2
  184. package/dist/schemas/benchmark_migration_operation.output.json +3 -3
  185. package/dist/schemas/benchmark_migration_operation.schema.json +16 -2
  186. package/dist/schemas/bridge_operation.output.json +4 -2
  187. package/dist/schemas/bridge_operation.schema.json +5 -5
  188. package/dist/schemas/evaluation_operation.output.json +16 -0
  189. package/dist/schemas/guard2file.schema.json +1 -1
  190. package/dist/schemas/index.json +1 -1
  191. package/dist/schemas/industry_pack_operation.output.json +150 -1
  192. package/dist/schemas/industry_pack_operation.schema.json +9 -3
  193. package/dist/schemas/keeper_operation.output.json +2 -2
  194. package/dist/schemas/local_cache_operation.output.json +4 -2
  195. package/dist/schemas/local_history_operation.output.json +4 -2
  196. package/dist/schemas/local_info_operation.output.json +4 -2
  197. package/dist/schemas/local_mark_operation.output.json +4 -2
  198. package/dist/schemas/machineNode2file.schema.json +1 -1
  199. package/dist/schemas/messenger_operation.output.json +13 -2
  200. package/dist/schemas/messenger_operation.schema.json +41 -34
  201. package/dist/schemas/monitor_events.output.json +2 -2
  202. package/dist/schemas/monitor_subscription.output.json +2 -2
  203. package/dist/schemas/onchain_events.output.json +14 -14
  204. package/dist/schemas/onchain_operations.output.json +13 -10
  205. package/dist/schemas/onchain_operations.schema.json +124 -99
  206. package/dist/schemas/onchain_operations_allocation.schema.json +7 -6
  207. package/dist/schemas/onchain_operations_arbitration.schema.json +7 -6
  208. package/dist/schemas/onchain_operations_contact.schema.json +4 -3
  209. package/dist/schemas/onchain_operations_demand.schema.json +4 -3
  210. package/dist/schemas/onchain_operations_gen_passport.schema.json +4 -3
  211. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  212. package/dist/schemas/onchain_operations_guard.schema.json +7 -6
  213. package/dist/schemas/onchain_operations_machine.schema.json +9 -7
  214. package/dist/schemas/onchain_operations_order.schema.json +6 -4
  215. package/dist/schemas/onchain_operations_payment.schema.json +2 -2
  216. package/dist/schemas/onchain_operations_permission.schema.json +19 -15
  217. package/dist/schemas/onchain_operations_personal.schema.json +17 -14
  218. package/dist/schemas/onchain_operations_progress.schema.json +6 -4
  219. package/dist/schemas/onchain_operations_proof.schema.json +4 -3
  220. package/dist/schemas/onchain_operations_repository.schema.json +9 -7
  221. package/dist/schemas/onchain_operations_reward.schema.json +5 -4
  222. package/dist/schemas/onchain_operations_service.schema.json +15 -12
  223. package/dist/schemas/onchain_operations_treasury.schema.json +4 -3
  224. package/dist/schemas/onchain_table_data.output.json +18 -13
  225. package/dist/schemas/onchain_table_data.schema.json +13 -13
  226. package/dist/schemas/query_toolkit.output.json +301 -33
  227. package/dist/schemas/query_toolkit.schema.json +6 -6
  228. package/dist/schemas/watch_operation.output.json +3 -3
  229. package/dist/schemas/workflow_operation.schema.json +3 -2
  230. package/dist/schemas/wowok_buildin_info.schema.json +1 -1
  231. package/dist/task/playbook.js +1 -1
  232. package/dist/tools/handlers/benchmark-migration.d.ts +1 -0
  233. package/dist/tools/handlers/benchmark-migration.js +1 -1
  234. package/dist/tools/handlers/config.js +1 -1
  235. package/dist/tools/handlers/evaluation.js +1 -1
  236. package/dist/tools/handlers/evaluation.spec.js +1 -1
  237. package/dist/tools/handlers/industry-pack.js +1 -1
  238. package/dist/tools/handlers/messenger.js +1 -1
  239. package/dist/tools/handlers/onchain.d.ts +4 -0
  240. package/dist/tools/handlers/onchain.js +1 -1
  241. package/dist/tools/index.js +1 -1
  242. package/dist/tools/registry/business.js +1 -1
  243. package/dist/tools/registry/onchain.js +1 -1
  244. package/dist/tools/registry/query.js +1 -1
  245. package/dist/tools/sanitize-output.js +1 -1
  246. package/dist/tools/sanitize-output.spec.js +1 -1
  247. package/dist/tools/types.d.ts +1 -0
  248. package/dist/tools/upgrade-check.d.ts +22 -0
  249. package/dist/tools/upgrade-check.js +1 -1
  250. package/dist/tools/wrap.d.ts +1 -1
  251. package/dist/tools/wrap.js +1 -1
  252. package/package.json +7 -6
@@ -1 +1 @@
1
- import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT}from'@wowok/wowok';export{MAX_GUARD_COUNT_PASSPORT};export{MAX_SUBMISSION_SIZE_PASSPORT};export const PASSPORT_ERROR_CODES={'E_GUARD_COUNT_EXCEEDED':0x1,'E_RELIES_GUARD_NOT_ADDED':0x2,'E_SUBMISSION_SIZE_EXCEEDED':0x3,'E_HAS_VERIFIED':0x4,'E_NOT_VERIFIED':0x5,'E_NOT_IMPACK_GUARD':0x6,'E_VERIFY_FAILED':0x7,'E_TX_NOT_MATCH':0x8,'E_IMPACK_GUARD_NOT_FOUND':0x9,'E_SUBMISSION_NOT_FOUND':0xa,'E_DIGEST_NOT_MATCH':0xb};export const PASSPORT_VERIFY_MODES={'verify':{'sdk_entry':'verify\x20(passport.ts)','on_false':'returns\x20false\x20—\x20no\x20abort;\x20the\x20evidence\x20card\x20is\x20still\x20minted\x20and\x20the\x20result\x20recorded','use_when':'the\x20false\x20branch\x20is\x20handled\x20downstream\x20(guard\x20rails\x20read\x20the\x20recorded\x20result)'},'verify_strict':{'sdk_entry':'verify_strict\x20(SDK\x20public\x20API)','on_false':'aborts\x20E_VERIFY_FAILED\x20=\x207\x20and\x20the\x20transaction\x20rolls\x20back','use_when':'the\x20transaction\x20must\x20NOT\x20succeed\x20on\x20a\x20failed\x20verification'}};export const PASSPORT_SCENARIOS=[{'id':'passport_service_buy','name':'Service\x20buy\x20with\x20Passport\x20(verify\x20buy_guard)','consumer_object':'Service','sdk_entry':'passport-verified\x20buy','passport_purpose':'Verify\x20customer\x27s\x20eligibility\x20to\x20buy\x20(buy_guard)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['tx_hash\x20binding\x20requires\x20Passport\x20creation\x20+\x20buy\x20in\x20the\x20same\x20transaction','Service.buy_guard\x20is\x20typically\x20configured\x20as\x20impack=true'],'dependencies':['Service','Guard']},{'id':'passport_arbitration_compensation','name':'Order\x20arbitration\x20compensation\x20(verify\x20arb\x20permission)','consumer_object':'Order','sdk_entry':'arb_claim_compensation_with_passport','passport_purpose':'Verify\x20customer\x27s\x20right\x20to\x20claim\x20arbitration\x20compensation','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Compensation\x20is\x20one-shot\x20—\x20Passport.tx_hash\x20prevents\x20replay','The\x20impack\x20Guard\x20is\x20hard-verified\x20(E_VERIFY_FAILED\x20if\x20mismatch)'],'dependencies':['Order','Arbitration','Guard']},{'id':'passport_progress_next','name':'Progress\x20advance\x20(verify\x20Forward.guard)','consumer_object':'Progress','sdk_entry':'passport-verified\x20node\x20advance','passport_purpose':'Verify\x20that\x20the\x20next\x20node\x27s\x20Forward.guard\x20passes\x20before\x20advancing','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Forward.guard\x20may\x20have\x20relies\x20on\x20previous\x20node\x20Guards\x20(AND/OR\x20logic)','Relies\x20Guards\x20MUST\x20be\x20added\x20in\x20topological\x20order\x20(E_RELIES_GUARD_NOT_ADDED)'],'dependencies':['Progress','Machine','Guard']},{'id':'passport_arbitration_dispute','name':'Arbitration\x20dispute\x20(verify\x20usage_guard)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20dispute','passport_purpose':'Verify\x20usage_guard\x20before\x20opening\x20a\x20dispute\x20case','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Arbitration.usage_guard\x20determines\x20who\x20may\x20open\x20disputes','Dispute\x20must\x20be\x20filed\x20within\x20the\x20same\x20transaction\x20that\x20created\x20the\x20Passport'],'dependencies':['Arbitration','Guard']},{'id':'passport_arbitration_vote','name':'Arbitration\x20vote\x20(resolve\x20VoteValue::GuardIdentifier\x20weight)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20vote','passport_purpose':'Resolve\x20voting\x20weight\x20from\x20Passport\x20submission\x20(GuardIdentifier)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['arbitrator'],'risk_notes':['Voting\x20weight\x20is\x20read\x20from\x20the\x20Passport\x20submission\x20for\x20the\x20(guard,\x20identifier)\x20pair','Identifier\x20type\x20must\x20match\x20the\x20voting_guard\x27s\x20expected\x20type'],'dependencies':['Arbitration','Guard']},{'id':'passport_reward_claim','name':'Reward\x20claim\x20(verify\x20Guard\x20+\x20resolve\x20recipient/amount)','consumer_object':'Reward','sdk_entry':'claim_with_passport','passport_purpose':'Verify\x20claim\x20eligibility\x20and\x20resolve\x20dynamic\x20recipient/amount\x20from\x20submission','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer'],'risk_notes':['Guard\x20may\x20use\x20GuardIdentifier\x20to\x20dynamically\x20resolve\x20recipient\x20address','Claim\x20is\x20one-shot\x20per\x20Passport\x20(tx_hash\x20binding\x20prevents\x20replay)'],'dependencies':['Reward','Guard']},{'id':'passport_permission_assert','name':'Permission\x20assert\x20(Guard\x20verification\x20replaces\x20owner\x20check)','consumer_object':'Permission','sdk_entry':'passport-verified\x20assert','passport_purpose':'Use\x20Guard\x20verification\x20as\x20a\x20dynamic\x20substitute\x20for\x20static\x20owner/admin\x20check','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Allows\x20composing\x20multi-factor\x20authorization\x20via\x20relies\x20logic','Permission\x20assert\x20bypass\x20requires\x20the\x20Passport\x20to\x20be\x20verified\x20in\x20the\x20same\x20tx'],'dependencies':['Permission','Guard']},{'id':'passport_allocation_alloc','name':'Allocation\x20distribute\x20(verify\x20alloc\x20permission\x20via\x20Guard)','consumer_object':'Allocation','sdk_entry':'alloc_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20trigger\x20allocation\x20distribution','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Caller-specified\x20guard:\x20Passport\x20must\x20contain\x20the\x20specific\x20Guard\x20referenced\x20by\x20alloc_by_guard','Hard\x20verification\x20applies\x20(E_VERIFY_FAILED\x20if\x20the\x20impack\x20Guard\x20fails)'],'dependencies':['Allocation','Guard']},{'id':'passport_treasury_withdraw','name':'Treasury\x20withdraw\x20(verify\x20withdraw\x20permission)','consumer_object':'Treasury','sdk_entry':'passport-verified\x20withdraw','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20withdraw\x20funds\x20from\x20Treasury','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Treasury\x20withdraw\x20is\x20high-value\x20—\x20strongly\x20recommend\x20multi-Guard\x20relies\x20(AND)','Guard\x20should\x20bind\x20Signer\x20to\x20prevent\x20unauthorized\x20withdraw'],'dependencies':['Treasury','Guard']},{'id':'passport_repository_query','name':'Repository\x20query\x20(verify\x20read\x20permission\x20+\x20extract\x20data)','consumer_object':'Repository','sdk_entry':'query_with_passport','passport_purpose':'Verify\x20read\x20permission\x20and\x20extract\x20submission\x20data\x20for\x20repository\x20write','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Repository\x20policies\x20may\x20extract\x20data\x20from\x20Passport\x20submission\x20(quote_guard\x20pattern)','Submitted\x20data\x20must\x20be\x20≤\x20256\x20bytes\x20per\x20submission\x20entry'],'dependencies':['Repository','Guard']},{'id':'passport_demand_submit','name':'Demand\x20submit\x20(verify\x20demand\x20permission)','consumer_object':'Demand','sdk_entry':'demand_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20submit\x20or\x20match\x20a\x20Demand','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Demand.guard\x20may\x20filter\x20which\x20submissions\x20are\x20eligible\x20for\x20matching','Demand\x20uses\x20MAX_GUARD_COUNT_DEMAND=20\x20(separate\x20constant,\x20do\x20not\x20confuse)'],'dependencies':['Demand','Guard']}];export const PASSPORT_LEDGER_VERSION='1.0.0';export function getAllScenarios(){return[...PASSPORT_SCENARIOS];}export function getScenariosCount(){return PASSPORT_SCENARIOS['length'];}export function findScenarioById(a){return PASSPORT_SCENARIOS['find'](b=>b['id']===a);}export function getScenariosByConsumer(a){return PASSPORT_SCENARIOS['filter'](b=>b['consumer_object']===a);}export function getScenariosUsingRelies(){return PASSPORT_SCENARIOS['filter'](a=>a['uses_relies']);}export function inferScenarioFromIntent(a){const b=a['toLowerCase']();if(b['includes']('buy')||b['includes']('purchase')||b['includes']('service'))return findScenarioById('passport_service_buy');if(b['includes']('compensation')||b['includes']('compensate')||b['includes']('arb_claim'))return findScenarioById('passport_arbitration_compensation');if(b['includes']('progress')||b['includes']('advance')||b['includes']('next'))return findScenarioById('passport_progress_next');if(b['includes']('dispute')||b['includes']('grievance'))return findScenarioById('passport_arbitration_dispute');if(b['includes']('vote')||b['includes']('ballot')||b['includes']('voting'))return findScenarioById('passport_arbitration_vote');if(b['includes']('reward')||b['includes']('claim')||b['includes']('redeem')||b['includes']('bonus'))return findScenarioById('passport_reward_claim');if(b['includes']('permission')||b['includes']('assert')||b['includes']('authorize'))return findScenarioById('passport_permission_assert');if(b['includes']('alloc')||b['includes']('distribute')||b['includes']('distribution'))return findScenarioById('passport_allocation_alloc');if(b['includes']('withdraw')||b['includes']('extract')||b['includes']('treasury'))return findScenarioById('passport_treasury_withdraw');if(b['includes']('repository')||b['includes']('query')||b['includes']('lookup'))return findScenarioById('passport_repository_query');if(b['includes']('demand')||b['includes']('requirement'))return findScenarioById('passport_demand_submit');return undefined;}export function impackRoleFromBoolean(a){return a?'impack':'non_impack';}export function impackRoleToBoolean(a){return a==='impack';}export function reliesLogicFromBoolean(a){return a?'AND':'OR';}export function reliesLogicToBoolean(a){return a==='AND';}export function getErrorName(a){for(const [b,d]of Object['entries'](PASSPORT_ERROR_CODES)){if(d===a)return b;}return undefined;}export function getErrorDescription(a){const b={0x1:'Guard\x20count\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT\x20(20)',0x2:'Relied\x20Guard\x20not\x20yet\x20added\x20to\x20Passport\x20(topological\x20order\x20required)',0x3:'Submission\x20serialized\x20size\x20exceeds\x20MAX_SUBMISSION_SIZE_PASSPORT\x20(256\x20bytes)',0x4:'Passport\x20already\x20verified\x20—\x20verify\x20is\x20one-time,\x20configuration\x20is\x20now\x20immutable',0x5:'result()\x20called\x20before\x20verify()\x20—\x20Passport\x20has\x20not\x20been\x20verified\x20yet',0x6:'Hard\x20verification\x20called\x20on\x20a\x20non-impack\x20Guard\x20—\x20only\x20impack\x20Guards\x20can\x20be\x20hard-verified',0x7:'Guard\x20/\x20Permission\x20hard-verification\x20called\x20when\x20the\x20overall\x20result=false',0x8:'result()\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20does\x20not\x20match\x20current\x20tx',0x9:'verify()\x20found\x20no\x20impack\x20Guard\x20—\x20at\x20least\x201\x20impack=true\x20Guard\x20is\x20required',0xa:'No\x20submission\x20entry\x20found\x20for\x20the\x20(guard,\x20identifier)\x20pair',0xb:'Guard\x20add\x20/\x20verify\x20/\x20Guard\x20clear\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20mismatch'};return b[a];}
1
+ import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT}from'@wowok/wowok';export{MAX_GUARD_COUNT_PASSPORT};export{MAX_SUBMISSION_SIZE_PASSPORT};export const PASSPORT_ERROR_CODES={'E_GUARD_COUNT_EXCEEDED':0x1,'E_RELIES_GUARD_NOT_ADDED':0x2,'E_SUBMISSION_SIZE_EXCEEDED':0x3,'E_HAS_VERIFIED':0x4,'E_NOT_VERIFIED':0x5,'E_NOT_IMPACK_GUARD':0x6,'E_VERIFY_FAILED':0x7,'E_TX_NOT_MATCH':0x8,'E_IMPACK_GUARD_NOT_FOUND':0x9,'E_SUBMISSION_NOT_FOUND':0xa,'E_DIGEST_NOT_MATCH':0xb};export const PASSPORT_VERIFY_MODES={'verify':{'sdk_entry':'verify\x20(passport\x20verification\x20entry)','on_false':'returns\x20false\x20—\x20no\x20abort;\x20the\x20evidence\x20card\x20is\x20still\x20minted\x20and\x20the\x20result\x20recorded','use_when':'the\x20false\x20branch\x20is\x20handled\x20downstream\x20(guard\x20rails\x20read\x20the\x20recorded\x20result)'},'verify_strict':{'sdk_entry':'verify_strict\x20(SDK\x20public\x20API)','on_false':'aborts\x20E_VERIFY_FAILED\x20=\x207\x20and\x20the\x20transaction\x20rolls\x20back','use_when':'the\x20transaction\x20must\x20NOT\x20succeed\x20on\x20a\x20failed\x20verification'}};export const PASSPORT_SCENARIOS=[{'id':'passport_service_buy','name':'Service\x20buy\x20with\x20Passport\x20(verify\x20buy_guard)','consumer_object':'Service','sdk_entry':'passport-verified\x20buy','passport_purpose':'Verify\x20customer\x27s\x20eligibility\x20to\x20buy\x20(buy_guard)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['tx_hash\x20binding\x20requires\x20Passport\x20creation\x20+\x20buy\x20in\x20the\x20same\x20transaction','Service.buy_guard\x20is\x20typically\x20configured\x20as\x20impack=true'],'dependencies':['Service','Guard']},{'id':'passport_arbitration_compensation','name':'Order\x20arbitration\x20compensation\x20(verify\x20arb\x20permission)','consumer_object':'Order','sdk_entry':'arb_claim_compensation_with_passport','passport_purpose':'Verify\x20customer\x27s\x20right\x20to\x20claim\x20arbitration\x20compensation','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Compensation\x20is\x20one-shot\x20—\x20Passport.tx_hash\x20prevents\x20replay','The\x20impack\x20Guard\x20is\x20hard-verified\x20(E_VERIFY_FAILED\x20if\x20mismatch)'],'dependencies':['Order','Arbitration','Guard']},{'id':'passport_progress_next','name':'Progress\x20advance\x20(verify\x20Forward.guard)','consumer_object':'Progress','sdk_entry':'passport-verified\x20node\x20advance','passport_purpose':'Verify\x20that\x20the\x20next\x20node\x27s\x20Forward.guard\x20passes\x20before\x20advancing','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Forward.guard\x20may\x20have\x20relies\x20on\x20previous\x20node\x20Guards\x20(AND/OR\x20logic)','Relies\x20Guards\x20MUST\x20be\x20added\x20in\x20topological\x20order\x20(E_RELIES_GUARD_NOT_ADDED)'],'dependencies':['Progress','Machine','Guard']},{'id':'passport_arbitration_dispute','name':'Arbitration\x20dispute\x20(verify\x20usage_guard)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20dispute','passport_purpose':'Verify\x20usage_guard\x20before\x20opening\x20a\x20dispute\x20case','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Arbitration.usage_guard\x20determines\x20who\x20may\x20open\x20disputes','Dispute\x20must\x20be\x20filed\x20within\x20the\x20same\x20transaction\x20that\x20created\x20the\x20Passport'],'dependencies':['Arbitration','Guard']},{'id':'passport_arbitration_vote','name':'Arbitration\x20vote\x20(resolve\x20VoteValue::GuardIdentifier\x20weight)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20vote','passport_purpose':'Resolve\x20voting\x20weight\x20from\x20Passport\x20submission\x20(GuardIdentifier)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['arbitrator'],'risk_notes':['Voting\x20weight\x20is\x20read\x20from\x20the\x20Passport\x20submission\x20for\x20the\x20(guard,\x20identifier)\x20pair','Identifier\x20type\x20must\x20match\x20the\x20voting_guard\x27s\x20expected\x20type'],'dependencies':['Arbitration','Guard']},{'id':'passport_reward_claim','name':'Reward\x20claim\x20(verify\x20Guard\x20+\x20resolve\x20recipient/amount)','consumer_object':'Reward','sdk_entry':'claim_with_passport','passport_purpose':'Verify\x20claim\x20eligibility\x20and\x20resolve\x20dynamic\x20recipient/amount\x20from\x20submission','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer'],'risk_notes':['Guard\x20may\x20use\x20GuardIdentifier\x20to\x20dynamically\x20resolve\x20recipient\x20address','Claim\x20is\x20one-shot\x20per\x20Passport\x20(tx_hash\x20binding\x20prevents\x20replay)'],'dependencies':['Reward','Guard']},{'id':'passport_permission_assert','name':'Permission\x20assert\x20(Guard\x20verification\x20replaces\x20owner\x20check)','consumer_object':'Permission','sdk_entry':'passport-verified\x20assert','passport_purpose':'Use\x20Guard\x20verification\x20as\x20a\x20dynamic\x20substitute\x20for\x20static\x20owner/admin\x20check','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Allows\x20composing\x20multi-factor\x20authorization\x20via\x20relies\x20logic','Permission\x20assert\x20bypass\x20requires\x20the\x20Passport\x20to\x20be\x20verified\x20in\x20the\x20same\x20tx'],'dependencies':['Permission','Guard']},{'id':'passport_allocation_alloc','name':'Allocation\x20distribute\x20(verify\x20alloc\x20permission\x20via\x20Guard)','consumer_object':'Allocation','sdk_entry':'alloc_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20trigger\x20allocation\x20distribution','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Caller-specified\x20guard:\x20Passport\x20must\x20contain\x20the\x20specific\x20Guard\x20referenced\x20by\x20alloc_by_guard','Hard\x20verification\x20applies\x20(E_VERIFY_FAILED\x20if\x20the\x20impack\x20Guard\x20fails)'],'dependencies':['Allocation','Guard']},{'id':'passport_treasury_withdraw','name':'Treasury\x20withdraw\x20(verify\x20withdraw\x20permission)','consumer_object':'Treasury','sdk_entry':'passport-verified\x20withdraw','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20withdraw\x20funds\x20from\x20Treasury','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Treasury\x20withdraw\x20is\x20high-value\x20—\x20strongly\x20recommend\x20multi-Guard\x20relies\x20(AND)','Guard\x20should\x20bind\x20Signer\x20to\x20prevent\x20unauthorized\x20withdraw'],'dependencies':['Treasury','Guard']},{'id':'passport_repository_query','name':'Repository\x20query\x20(verify\x20read\x20permission\x20+\x20extract\x20data)','consumer_object':'Repository','sdk_entry':'query_with_passport','passport_purpose':'Verify\x20read\x20permission\x20and\x20extract\x20submission\x20data\x20for\x20repository\x20write','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Repository\x20policies\x20may\x20extract\x20data\x20from\x20Passport\x20submission\x20(quote_guard\x20pattern)','Submitted\x20data\x20must\x20be\x20≤\x20256\x20bytes\x20per\x20submission\x20entry'],'dependencies':['Repository','Guard']},{'id':'passport_demand_submit','name':'Demand\x20submit\x20(verify\x20demand\x20permission)','consumer_object':'Demand','sdk_entry':'demand_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20submit\x20or\x20match\x20a\x20Demand','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Demand.guard\x20may\x20filter\x20which\x20submissions\x20are\x20eligible\x20for\x20matching','Demand\x20uses\x20MAX_GUARD_COUNT_DEMAND=20\x20(separate\x20constant,\x20do\x20not\x20confuse)'],'dependencies':['Demand','Guard']}];export const PASSPORT_LEDGER_VERSION='1.0.0';export function getAllScenarios(){return[...PASSPORT_SCENARIOS];}export function getScenariosCount(){return PASSPORT_SCENARIOS['length'];}export function findScenarioById(a){return PASSPORT_SCENARIOS['find'](b=>b['id']===a);}export function getScenariosByConsumer(a){return PASSPORT_SCENARIOS['filter'](b=>b['consumer_object']===a);}export function getScenariosUsingRelies(){return PASSPORT_SCENARIOS['filter'](a=>a['uses_relies']);}export function inferScenarioFromIntent(a){const b=a['toLowerCase']();if(b['includes']('buy')||b['includes']('purchase')||b['includes']('service'))return findScenarioById('passport_service_buy');if(b['includes']('compensation')||b['includes']('compensate')||b['includes']('arb_claim'))return findScenarioById('passport_arbitration_compensation');if(b['includes']('progress')||b['includes']('advance')||b['includes']('next'))return findScenarioById('passport_progress_next');if(b['includes']('dispute')||b['includes']('grievance'))return findScenarioById('passport_arbitration_dispute');if(b['includes']('vote')||b['includes']('ballot')||b['includes']('voting'))return findScenarioById('passport_arbitration_vote');if(b['includes']('reward')||b['includes']('claim')||b['includes']('redeem')||b['includes']('bonus'))return findScenarioById('passport_reward_claim');if(b['includes']('permission')||b['includes']('assert')||b['includes']('authorize'))return findScenarioById('passport_permission_assert');if(b['includes']('alloc')||b['includes']('distribute')||b['includes']('distribution'))return findScenarioById('passport_allocation_alloc');if(b['includes']('withdraw')||b['includes']('extract')||b['includes']('treasury'))return findScenarioById('passport_treasury_withdraw');if(b['includes']('repository')||b['includes']('query')||b['includes']('lookup'))return findScenarioById('passport_repository_query');if(b['includes']('demand')||b['includes']('requirement'))return findScenarioById('passport_demand_submit');return undefined;}export function impackRoleFromBoolean(a){return a?'impack':'non_impack';}export function impackRoleToBoolean(a){return a==='impack';}export function reliesLogicFromBoolean(a){return a?'AND':'OR';}export function reliesLogicToBoolean(a){return a==='AND';}export function getErrorName(a){for(const [b,d]of Object['entries'](PASSPORT_ERROR_CODES)){if(d===a)return b;}return undefined;}export function getErrorDescription(a){const b={0x1:'Guard\x20count\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT\x20(20)',0x2:'Relied\x20Guard\x20not\x20yet\x20added\x20to\x20Passport\x20(topological\x20order\x20required)',0x3:'Submission\x20serialized\x20size\x20exceeds\x20MAX_SUBMISSION_SIZE_PASSPORT\x20(256\x20bytes)',0x4:'Passport\x20already\x20verified\x20—\x20verify\x20is\x20one-time,\x20configuration\x20is\x20now\x20immutable',0x5:'result()\x20called\x20before\x20verify()\x20—\x20Passport\x20has\x20not\x20been\x20verified\x20yet',0x6:'Hard\x20verification\x20called\x20on\x20a\x20non-impack\x20Guard\x20—\x20only\x20impack\x20Guards\x20can\x20be\x20hard-verified',0x7:'Guard\x20/\x20Permission\x20hard-verification\x20called\x20when\x20the\x20overall\x20result=false',0x8:'result()\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20does\x20not\x20match\x20current\x20tx',0x9:'verify()\x20found\x20no\x20impack\x20Guard\x20—\x20at\x20least\x201\x20impack=true\x20Guard\x20is\x20required',0xa:'No\x20submission\x20entry\x20found\x20for\x20the\x20(guard,\x20identifier)\x20pair',0xb:'Guard\x20add\x20/\x20verify\x20/\x20Guard\x20clear\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20mismatch'};return b[a];}
@@ -0,0 +1,106 @@
1
+ export type GuardDirection = "upper" | "lower";
2
+ export interface TimeGuardInstantiation {
3
+ template: string;
4
+ guard_key: string;
5
+ direction: GuardDirection;
6
+ anchor: string;
7
+ multimount?: boolean;
8
+ days?: string;
9
+ hours?: string;
10
+ plus_days?: string | readonly string[];
11
+ note: string;
12
+ }
13
+ export declare const TIME_GUARD_INSTANTIATIONS: readonly TimeGuardInstantiation[];
14
+ export declare const TWIN_PARAM: {
15
+ readonly days: "claim_window_days";
16
+ readonly hours: "duration_ms";
17
+ };
18
+ export declare function twinFor(direction: GuardDirection, unit: "days" | "hours"): string;
19
+ export declare const MULTI_MOUNT_TWIN = "tpl_time_window_upper_history_days";
20
+ export declare const MULTI_MOUNT_OPENING_TWIN = "tpl_time_lock_history_days";
21
+ export declare function multiMountTwin(direction: GuardDirection): string;
22
+ export declare function unitScale(unit: "days" | "hours"): number;
23
+ export interface PatternDefaultResolution {
24
+ kind: "template";
25
+ template_id: string;
26
+ params: Record<string, unknown>;
27
+ }
28
+ export declare function timeInstantiationFor(templateId: string, guardKey: string): TimeGuardInstantiation | undefined;
29
+ export declare function patternDefaultResolution(templateId: string, guardKey: string): PatternDefaultResolution | undefined;
30
+ export interface InstantiationIssue {
31
+ row: TimeGuardInstantiation;
32
+ problem: string;
33
+ }
34
+ export declare const IDENTITY_PATTERN = "pattern.identity_check_order_holder";
35
+ export declare const IDENTITY_TWIN = "tpl_forward_order_holder";
36
+ export declare const IDENTITY_RECOVER_RAIL_TWIN = "tpl_allocator_node_gate_recover";
37
+ export declare const IDENTITY_REFUND_RAIL_TWIN = "tpl_allocator_identity_set_order_holder";
38
+ interface ShapeEdge {
39
+ prev?: string;
40
+ guard_key?: string;
41
+ operator?: string;
42
+ }
43
+ export interface IdentityGraphHost {
44
+ id: string;
45
+ guards: readonly {
46
+ key?: string;
47
+ template_id: string;
48
+ }[];
49
+ machine_shape?: readonly {
50
+ node?: string;
51
+ operator?: string;
52
+ from?: (string | ShapeEdge)[];
53
+ }[];
54
+ allocator?: {
55
+ rows?: readonly {
56
+ guard_key?: string;
57
+ track?: string;
58
+ }[];
59
+ };
60
+ }
61
+ export declare function identitySkipReason(t: IdentityGraphHost, spec: {
62
+ key?: string;
63
+ template_id: string;
64
+ }): string | undefined;
65
+ export declare function identityDefaultResolution(t: IdentityGraphHost, spec: {
66
+ key?: string;
67
+ template_id: string;
68
+ }): PatternDefaultResolution | undefined;
69
+ export declare function identityCensus(templates: readonly IdentityGraphHost[]): {
70
+ template: string;
71
+ key: string;
72
+ skipped?: string;
73
+ }[];
74
+ export declare const PROGRESS_PATTERN = "pattern.progress_state_check";
75
+ export declare const PROGRESS_NODE_CHECK_TWIN = "tpl_forward_node_check";
76
+ export declare const PROGRESS_RECOVER_RAIL_TWIN = "tpl_allocator_node_gate_recover";
77
+ export declare function progressSkipReason(t: IdentityGraphHost, spec: {
78
+ key?: string;
79
+ template_id: string;
80
+ }): string | undefined;
81
+ export declare function progressStateDefaultResolution(t: IdentityGraphHost, spec: {
82
+ key?: string;
83
+ template_id: string;
84
+ }): PatternDefaultResolution | undefined;
85
+ export declare function progressCensus(templates: readonly IdentityGraphHost[]): {
86
+ template: string;
87
+ key: string;
88
+ skipped?: string;
89
+ }[];
90
+ export declare function timeInstantiationIssues(templates: readonly {
91
+ id: string;
92
+ fee_params: Record<string, number | string>;
93
+ guards: readonly {
94
+ key?: string;
95
+ template_id: string;
96
+ }[];
97
+ machine_shape?: readonly unknown[];
98
+ allocator?: {
99
+ rows?: readonly {
100
+ guard_key?: string;
101
+ }[];
102
+ };
103
+ }[], guardTemplateIndex: ReadonlyMap<string, readonly {
104
+ name: string;
105
+ }[]>): InstantiationIssue[];
106
+ export {};
@@ -0,0 +1 @@
1
+ const D=0x5265c00,H=0x36ee80;export const TIME_GUARD_INSTANTIATIONS=[{'template':'retail/scale-marketplace','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'retail/scale-marketplace','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/scale-marketplace','guard_key':'return_window','direction':'upper','anchor':'delivered','days':'return_window_days','note':'return\x20request\x20inside\x20the\x20policy\x20window'},{'template':'retail/scale-marketplace','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/warehouse-club','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'retail/warehouse-club','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/warehouse-club','guard_key':'return_window','direction':'upper','anchor':'delivered','days':'return_window_days','note':'return\x20request\x20inside\x20the\x20policy\x20window'},{'template':'retail/warehouse-club','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/preorder-deposit','guard_key':'balance_window_open','direction':'lower','anchor':'deposit_paid','days':'production_lead_days','note':'balance\x20window\x20opens\x20after\x20the\x20production\x20lead'},{'template':'retail/preorder-deposit','guard_key':'balance_deadline','direction':'lower','anchor':'balance_due','days':'balance_window_days','note':'balance-window\x20timeout'},{'template':'retail/preorder-deposit','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/preorder-deposit','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/restock-supply','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/restock-supply','guard_key':'restock_confirm_timeout','direction':'lower','anchor':'delivered','days':'restock_confirm_days','note':'restock\x20confirmation\x20timeout'},{'template':'retail/vertical-handmade','guard_key':'ship_timeout','direction':'lower','anchor':'confirmed','days':'processing_time_days','note':'unshipped\x20order\x20cancels\x20after\x20the\x20processing\x20time'},{'template':'retail/vertical-handmade','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'freelance/enterprise-talent-market','guard_key':'review_settle_clock','direction':'lower','anchor':'reviewed','days':'settlement_delay_days','note':'settle\x20N\x20days\x20after\x20review'},{'template':'freelance/enterprise-talent-market','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','days':'escrow_release_days','note':'keeper\x20auto-accepts\x20the\x20delivery\x20N\x20days\x20after\x20submission\x20(the\x20timeout\x20branch\x20of\x20the\x20dual-branch\x20acceptance)'},{'template':'freelance/enterprise-talent-market','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/catalog-tiers','guard_key':'requirements_timeout_48h','direction':'lower','anchor':'in_progress','hours':'requirements_timeout_hours','note':'requirements\x20timeout'},{'template':'freelance/catalog-tiers','guard_key':'cancel_response_timeout','direction':'lower','anchor':'cancel_requested','hours':'response_timeout_hours','note':'keeper\x20auto-cancel\x20after\x20the\x20seller\x27s\x20silence'},{'template':'freelance/catalog-tiers','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','days':'escrow_release_days','note':'auto-accept\x20N\x20days\x20after\x20delivery\x20(buyer\x20silence)'},{'template':'freelance/catalog-tiers','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/catalog-tiers','guard_key':'review_settle_clock','direction':'lower','anchor':'reviewed','days':'settlement_delay_days','note':'settle\x20N\x20days\x20after\x20review'},{'template':'freelance/creator-zero-commission','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','hours':'acceptance_timeout_hours','note':'delivery\x20acceptance\x20timeout'},{'template':'freelance/creator-zero-commission','guard_key':'defect_report_window','direction':'upper','anchor':'delivered','hours':'defect_report_window_hours','note':'defect\x20report\x20window\x20after\x20delivery'},{'template':'freelance/creator-zero-commission','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/design-contest','guard_key':'submission_window','direction':'lower','anchor':'funded','days':'submission_window_days','note':'submissions\x20close\x20N\x20days\x20after\x20funding'},{'template':'freelance/design-contest','guard_key':'appeal_window','direction':'lower','anchor':'placement_provisional','days':'appeal_window_days','note':'placement\x20finalizes\x20after\x20the\x20appeal\x20window'},{'template':'freelance/design-contest','guard_key':'delivery_window','direction':'lower','anchor':'final_delivery','days':'delivery_window_days','note':'final\x20delivery\x20acceptance\x20timeout'},{'template':'rental/p2p-shortstay','guard_key':'confirm_expire','direction':'lower','anchor':'reserved','hours':'confirm_window_hours','note':'unconfirmed\x20booking\x20expires'},{'template':'rental/p2p-shortstay','guard_key':'claim_window_closed','direction':'lower','anchor':'claim_window','days':'claim_window_days','note':'no-claim\x20release\x20after\x20the\x20claim\x20window'},{'template':'rental/p2p-shortstay','guard_key':'guest_claim_window_open','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'guest\x20files\x20a\x20claim\x20inside\x20the\x20claim\x20window'},{'template':'rental/institutional-longstay','guard_key':'return_notice','direction':'lower','anchor':'in_use','days':'return_notice_days','note':'return\x20notice\x20lead\x20time'},{'template':'rental/institutional-longstay','guard_key':'nofault_window','direction':'upper','anchor':'deposit_paid','multimount':!![],'days':'no_fault_exit_days','note':'no-fault\x20exit\x20within\x20no_fault_exit_days\x20of\x20signing,\x20on\x20both\x20buyer\x20exits\x20into\x20closed_cancel\x20(pre-handover\x20and\x20mid-lease\x20—\x20in_use\x20is\x20only\x20entered\x20from\x20deposit_paid,\x20whose\x20entry\x20IS\x20the\x20signing)'},{'template':'rental/institutional-longstay','guard_key':'review_window','direction':'upper','anchor':'inspected','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20the\x20passing\x20inspection'},{'template':'travel/destination-experience','guard_key':'free_cancel','direction':'upper','anchor':'paid','hours':'free_cancel_hours','note':'free\x20cancellation\x20window'},{'template':'travel/destination-experience','guard_key':'poststay_claim_window','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'post-stay\x20claim\x20window'},{'template':'travel/destination-experience','guard_key':'release_no_claim_clock','direction':'lower','anchor':'claim_window','days':'claim_window_days','note':'no-claim\x20release\x20after\x20the\x20claim\x20window'},{'template':'delivery/on-demand-errand','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'delivered','hours':'auto_confirm_hours','note':'auto-confirm\x20N\x20hours\x20after\x20delivery'},{'template':'delivery/on-demand-errand','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','hours':'claim_window_hours','note':'claim\x20window'},{'template':'group_buy/leader-sourced-community','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','hours':'claim_window_hours','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'subscription/delivery-membership','guard_key':'period_end','direction':'lower','anchor':'active','days':'period_days','note':'membership\x20period\x20clock:\x20active\x20entry\x20+\x20period_days\x20before\x20the\x20keeper\x20may\x20complete'},{'template':'subscription/creator-membership','guard_key':'period_expiry','direction':'lower','anchor':'delivered','multimount':!![],'days':'period_days','plus_days':'grace_days','note':'period\x20expiry\x20=\x20delivery\x20+\x20period_days\x20+\x20grace_days,\x20on\x20every\x20keeper\x20lapse'},{'template':'subscription/direct-fan-subscription','guard_key':'period_expiry','direction':'lower','anchor':'delivered','multimount':!![],'days':'period_days','plus_days':'grace_days','note':'period\x20expiry\x20=\x20delivery\x20+\x20period_days\x20+\x20grace_days,\x20on\x20every\x20keeper\x20lapse'},{'template':'education/live-class-cohort','guard_key':'review_window','direction':'upper','anchor':'completed_ready','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20completion\x20readiness'},{'template':'education/mooc-single-course','guard_key':'review_window','direction':'upper','anchor':'certified','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20certification'},{'template':'subscription/creator-membership','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20period\x20delivery'},{'template':'subscription/direct-fan-subscription','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20period\x20delivery\x20—\x20keep\x20period_days\x20+\x20grace_days\x20>\x20review_window_days\x20or\x20the\x20keeper\x20expire\x20kills\x20the\x20open\x20window'},{'template':'retail/preorder-deposit','guard_key':'return_window_presale','direction':'upper','anchor':'delivered','multimount':!![],'days':'return_window_days','note':'return\x20requested\x20within\x20N\x20days\x20of\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'rental/p2p-shortstay','guard_key':'review_window','direction':'upper','anchor':'checked_out','multimount':!![],'days':'review_window_days','note':'review\x20within\x20N\x20days\x20of\x20checkout,\x20including\x20once\x20the\x20claim\x20window\x20has\x20opened'},{'template':'education/mooc-single-course','guard_key':'return_window','direction':'upper','anchor':'paid','multimount':!![],'days':'refund_window_days','note':'refund\x20requested\x20within\x20N\x20days\x20of\x20purchase,\x20from\x20any\x20pre-delivery\x20stage'},{'template':'retail/scale-marketplace','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','days':'settlement_days','plus_days':['reserve_days','return_window_days'],'note':'settlement\x20opens\x20after\x20the\x20MERGED\x20lock:\x20settlement_days\x20+\x20reserve_days\x20+\x20return_window_days\x20(the\x20declaration\x20settlement_window_merge;\x2014\x20+\x207\x20+\x2030\x20=\x2051\x20days\x20by\x20default)\x20—\x20the\x20release\x20cannot\x20fire\x20while\x20the\x20return\x20window\x20can\x20still\x20draw\x20the\x20escrow'},{'template':'retail/warehouse-club','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','days':'settlement_delay_days','note':'settlement\x20opens\x20N\x20days\x20after\x20the\x20claim\x20window\x20(coupled\x20to\x20the\x20return\x20window)'},{'template':'retail/preorder-deposit','guard_key':'settle_window_gate','direction':'lower','anchor':'delivered','multimount':!![],'days':'settlement_days','note':'balance\x20settlement\x20opens\x20N\x20days\x20after\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'retail/vertical-handmade','guard_key':'settle_clock','direction':'lower','anchor':'delivered','multimount':!![],'days':'settlement_delay_days','note':'settlement\x20opens\x20N\x20days\x20after\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'delivery/on-demand-errand','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','hours':'settle_hours','note':'settlement\x20opens\x20N\x20hours\x20after\x20the\x20claim\x20window'},{'template':'group_buy/leader-sourced-community','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','hours':'settle_hours','note':'settlement\x20opens\x20N\x20hours\x20after\x20the\x20claim\x20window,\x20past\x20the\x20after-sales\x20track'}];export const TWIN_PARAM={'days':'claim_window_days','hours':'duration_ms'};export function twinFor(a,b){if(b==='days')return a==='upper'?'tpl_time_window_upper_progress_days':'tpl_time_lock_progress_days';return a==='upper'?'tpl_time_window_upper':'tpl_time_lock_progress';}export const MULTI_MOUNT_TWIN='tpl_time_window_upper_history_days';export const MULTI_MOUNT_OPENING_TWIN='tpl_time_lock_history_days';export function multiMountTwin(a){return a==='upper'?MULTI_MOUNT_TWIN:MULTI_MOUNT_OPENING_TWIN;}export function unitScale(a){return a==='days'?0x1:H;}const BY_SPEC=new Map();for(const row of TIME_GUARD_INSTANTIATIONS)BY_SPEC['set'](row['template']+'\x00'+row['guard_key'],row);export function timeInstantiationFor(a,b){return BY_SPEC['get'](a+'\x00'+b);}export function patternDefaultResolution(a,b){const c=timeInstantiationFor(a,b);if(c===undefined)return undefined;const d=c['days']!==undefined?'days':'hours';if(c['multimount']===!![])return{'kind':'template','template_id':multiMountTwin(c['direction']),'params':{'anchor_node':c['anchor']}};return{'kind':'template','template_id':twinFor(c['direction'],d),'params':{'expected_node':c['anchor']}};}function mountInfo(a,b){const c=[];for(const d of a['machine_shape']??[]){const f=d['from']??[];for(const g of f){const h=typeof g==='string'?{'prev':g}:g;if(h['guard_key']!==b)continue;const i=h['operator']??d['operator']??(h['prev']===''?'order_payer':'merchant');c['push']({'prev':h['prev']??'','operator':i});}}return c;}export const IDENTITY_PATTERN='pattern.identity_check_order_holder';export const IDENTITY_TWIN='tpl_forward_order_holder';export const IDENTITY_RECOVER_RAIL_TWIN='tpl_allocator_node_gate_recover';export const IDENTITY_REFUND_RAIL_TWIN='tpl_allocator_identity_set_order_holder';function railTracks(a,b){return(a['allocator']?.['rows']??[])['filter'](c=>c['guard_key']===b)['map'](c=>c['track']??'');}function hasAwardRailSibling(a,b){return a['guards']['some'](c=>{if(c['template_id']===IDENTITY_RECOVER_RAIL_TWIN)return!![];const d=c['key'];if(d===undefined||d===b)return![];if(!/recover|award/i['test'](d))return![];if(!/pattern\./i['test'](c['template_id']))return![];return edgeMounts(a,d)['length']===0x0&&railTracks(a,d)['length']>0x0;});}function edgeMounts(a,b){return mountInfo(a,b);}export function identitySkipReason(a,b){if(b['template_id']!==IDENTITY_PATTERN)return'not\x20an\x20identity\x20design';if(b['key']===undefined)return'declared\x20without\x20a\x20key:\x20it\x20names\x20a\x20policy,\x20not\x20a\x20rail';const c=b['key'],d=railTracks(a,c),e=edgeMounts(a,c);if(e['length']===0x0){if(d['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';if(/recover|award/i['test'](c))return undefined;if(/refund/i['test'](c)&&d['every'](g=>/refund/i['test'](g))){if(hasAwardRailSibling(a,c))return'rail-bound\x20refund\x20next\x20to\x20an\x20award-polarity\x20rail:\x20the\x20order-holder\x20refund\x20set\x20is\x20polarity-blind\x20(no\x20claimed_by\x20==\x20false\x20leg),\x20so\x20instantiating\x20both\x20reads\x20as\x20a\x20double-pay\x20shape\x20(RAIL-03)\x20—\x20resolve\x20the\x20refund\x20rail\x20explicitly';return undefined;}return'bound\x20to\x20an\x20allocator\x20row\x20only:\x20no\x20executable\x20twin\x20matches\x20this\x20key/track\x20pair\x20(a\x20settlement\x20rail\x20asks\x20a\x20different\x20question)';}if(d['length']>0x0)return'also\x20bound\x20to\x20an\x20allocator\x20row:\x20one\x20design\x20cannot\x20serve\x20a\x20forward\x20and\x20a\x20rail';const f=e['filter'](g=>g['operator']!=='order_payer');if(f['length']>0x0)return'mounted\x20on\x20'+f['length']+'\x20non-buyer\x20forward(s)\x20('+[...new Set(f['map'](g=>g['operator']))]['join']('/')+'):\x20'+'an\x20order-holder\x20leg\x20is\x20unsatisfiable\x20on\x20a\x20permission-index\x20rail';return undefined;}export function identityDefaultResolution(a,b){if(identitySkipReason(a,b)!==undefined)return undefined;const c=b['key'];if(edgeMounts(a,c)['length']===0x0){if(/recover|award/i['test'](c))return{'kind':'template','template_id':IDENTITY_RECOVER_RAIL_TWIN,'params':{}};return{'kind':'template','template_id':IDENTITY_REFUND_RAIL_TWIN,'params':{}};}return{'kind':'template','template_id':IDENTITY_TWIN,'params':{}};}export function identityCensus(a){const b=[];for(const c of a){c['guards']['forEach']((d,e)=>{if(d['template_id']!==IDENTITY_PATTERN)return;const f=d['key']??d['template_id']+'#'+e,h=identitySkipReason(c,d);b['push']({'template':c['id'],'key':f,...h!==undefined?{'skipped':h}:{}});});}return b;}export const PROGRESS_PATTERN='pattern.progress_state_check';export const PROGRESS_NODE_CHECK_TWIN='tpl_forward_node_check';export const PROGRESS_RECOVER_RAIL_TWIN='tpl_allocator_node_gate_recover';export function progressSkipReason(a,b){if(b['template_id']!==PROGRESS_PATTERN)return'not\x20a\x20progress-state\x20design';if(b['key']===undefined)return'declared\x20without\x20a\x20key:\x20it\x20names\x20a\x20policy,\x20not\x20a\x20rail';const c=b['key'],d=railTracks(a,c),e=edgeMounts(a,c);if(/recover|award/i['test'](c)){if(e['length']===0x0&&d['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';return undefined;}if(d['length']>0x0)return e['length']>0x0?'bound\x20to\x20BOTH\x20a\x20forward\x20and\x20an\x20allocator\x20rail:\x20a\x20node-gated\x20twin\x20cannot\x20serve\x20the\x20pre-advance\x20forward\x20and\x20the\x20post-advance\x20allocator\x20(D8)':'rail-bound\x20with\x20no\x20forward\x20mount:\x20the\x20graph\x20cannot\x20say\x20which\x20node\x20the\x20order\x20occupies\x20when\x20the\x20rail\x20fires\x20(pinning\x20one\x20strands\x20the\x20escrow\x20below\x20it\x20—\x20UPWC-K1)';if(e['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';const f=[...new Set(e['map'](g=>g['prev']))];if(f['length']>0x1)return'mounted\x20on\x20'+e['length']+'\x20forwards\x20from\x20DIFFERENT\x20prev\x20nodes\x20('+f['join']('/')+'):\x20one\x20expected_node\x20cannot\x20serve\x20them';return undefined;}export function progressStateDefaultResolution(a,b){if(progressSkipReason(a,b)!==undefined)return undefined;if(/recover|award/i['test'](b['key']))return{'kind':'template','template_id':PROGRESS_RECOVER_RAIL_TWIN,'params':{}};return{'kind':'template','template_id':PROGRESS_NODE_CHECK_TWIN,'params':{'expected_node':edgeMounts(a,b['key'])[0x0]['prev']}};}export function progressCensus(a){const b=[];for(const c of a){c['guards']['forEach']((d,e)=>{if(d['template_id']!==PROGRESS_PATTERN)return;const f=d['key']??d['template_id']+'#'+e,h=progressSkipReason(c,d);b['push']({'template':c['id'],'key':f,...h!==undefined?{'skipped':h}:{}});});}return b;}export function timeInstantiationIssues(a,b){const c=[],d=new Map(a['map'](f=>[f['id'],f])),e=new Set();for(const f of TIME_GUARD_INSTANTIATIONS){const h=f['template']+'\x00'+f['guard_key'];if(e['has'](h))c['push']({'row':f,'problem':'duplicate\x20row'});e['add'](h);const i=d['get'](f['template']);if(i===undefined){c['push']({'row':f,'problem':'template\x20\x27'+f['template']+'\x27\x20does\x20not\x20exist'});continue;}const j=i['guards']['find'](u=>u['key']===f['guard_key']);if(j===undefined){c['push']({'row':f,'problem':'guard\x20\x27'+f['guard_key']+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});continue;}const k=f['direction']==='upper'?'pattern.time_window_upper_bound':'pattern.time_lock_progress';j['template_id']!==k&&c['push']({'row':f,'problem':'guard\x20declares\x20\x27'+j['template_id']+'\x27,\x20expected\x20\x27'+k+'\x27\x20for\x20a\x20'+f['direction']+'\x20window'});const l=(i['allocator']?.['rows']??[])['filter'](u=>u['guard_key']===f['guard_key'])['length'];if(l>0x0){c['push']({'row':f,'problem':'guard\x20is\x20also\x20bound\x20to\x20'+l+'\x20allocator\x20row(s):\x20a\x20node-gated\x20twin\x20cannot\x20serve\x20the\x20'+'pre-advance\x20forward\x20and\x20the\x20post-advance\x20allocator\x20(and\x20a\x20second\x20mount\x20would\x20double\x20the\x20wait)'});continue;}const m=mountInfo(i,f['guard_key']);if(f['multimount']!==!![]){if(m['length']!==0x1){c['push']({'row':f,'problem':'guard\x20has\x20'+m['length']+'\x20mounts;\x20a\x20shared\x20expected_node\x20needs\x20exactly\x20one'});continue;}m[0x0]['prev']!==f['anchor']&&c['push']({'row':f,'problem':'anchor\x20\x27'+f['anchor']+'\x27\x20!=\x20mount\x20prev\x20\x27'+m[0x0]['prev']+'\x27'});const u=f['direction']==='upper'?'order_payer':'merchant';m[0x0]['operator']!==u&&c['push']({'row':f,'problem':'mount\x20operator\x20\x27'+m[0x0]['operator']+'\x27\x20!=\x20\x27'+u+'\x27:\x20an\x20'+f['direction']+'\x20window\x20on\x20the\x20wrong\x20'+'signer\x20set\x20is\x20either\x20callable\x20by\x20anyone\x20(upper)\x20or\x20unsatisfiable\x20(identity\x20leg\x20over\x20a\x20permission-index\x20rail)'});}else{(f['days']===undefined||f['hours']!==undefined)&&c['push']({'row':f,'problem':'the\x20pin-free\x20twin\x20takes\x20a\x20day\x20window;\x20declare\x20days\x20and\x20no\x20hours'});m['length']===0x0&&c['push']({'row':f,'problem':'guard\x20is\x20bound\x20to\x20no\x20forward\x20—\x20a\x20window\x20nobody\x20mounts\x20is\x20not\x20a\x20rail'});const v=f['direction']==='upper'?'order_payer':'merchant',w=m['filter'](x=>x['operator']!==v);w['length']>0x0&&c['push']({'row':f,'problem':w['length']+'\x20mount(s)\x20ride\x20\x27'+[...new Set(w['map'](x=>x['operator']))]['join']('/')+'\x27\x20but\x20a\x20'+f['direction']+'\x20'+('multi-mount\x20twin\x20needs\x20\x27'+v+'\x27\x20')+(f['direction']==='upper'?'(the\x20twin\x27s\x20order-holder\x20leg\x20is\x20unsatisfiable\x20on\x20a\x20permission-index\x20rail)':'(the\x20opening\x20twin\x20ships\x20no\x20signer\x20leg,\x20so\x20a\x20buyer\x20rail\x20would\x20be\x20left\x20unauthenticated)')}),m['length']>0x0&&!m['some'](x=>x['prev']===f['anchor'])&&c['push']({'row':f,'problem':'no\x20mount\x20starts\x20at\x20anchor\x20\x27'+f['anchor']+'\x27\x20(mounts:\x20'+m['map'](x=>x['prev'])['join'](',\x20')+'):\x20'+'the\x20anchor\x20must\x20be\x20the\x20entry\x20that\x20opens\x20the\x20window\x20on\x20at\x20least\x20one\x20path'});}const n=f['days']!==undefined?'days':f['hours']!==undefined?'hours':undefined;if(n===undefined||f['days']!==undefined&&f['hours']!==undefined){c['push']({'row':f,'problem':'exactly\x20one\x20of\x20days/hours\x20must\x20be\x20declared'});continue;}const o=f['days']??f['hours'];i['fee_params'][o]===undefined&&c['push']({'row':f,'problem':'fee_param\x20\x27'+o+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});for(const x of f['plus_days']===undefined?[]:typeof f['plus_days']==='string'?[f['plus_days']]:f['plus_days']){i['fee_params'][x]===undefined&&c['push']({'row':f,'problem':'fee_param\x20\x27'+x+'\x27\x20(plus_days)\x20is\x20not\x20declared\x20by\x20'+f['template']});}const p=f['multimount']===!![]?multiMountTwin(f['direction']):twinFor(f['direction'],n),q=b['get'](p);if(q===undefined){c['push']({'row':f,'problem':'twin\x20template\x20\x27'+p+'\x27\x20is\x20not\x20in\x20the\x20guard-template\x20registry'});continue;}const r=new Set(q['map'](y=>y['name'])),s=f['multimount']===!![]?'anchor_node':'expected_node';for(const y of[s,TWIN_PARAM[n]]){if(!r['has'](y))c['push']({'row':f,'problem':'twin\x20\x27'+p+'\x27\x20declares\x20no\x20param\x20\x27'+y+'\x27'});}}return c;}
@@ -1 +1 @@
1
- import{describe,it,expect,beforeAll,afterAll}from'vitest';import*as a283a from'node:fs';import*as a283b from'node:os';import*as a283c from'node:path';import{projectionUpsert,projectionServe,projectionStats,__projectionSetWriteClock}from'./projection.js';const SCRATCH_DB=a283c['join'](a283b['tmpdir'](),'wowok-projection-spec-'+process['pid']+'-'+Date['now']()+'.db'),PREV_DB=process['env']['WOWOK_PROJECTION_DB'],PREV_TTL=process['env']['WOWOK_PROJECTION_TTL_MS'];beforeAll(()=>{process['env']['WOWOK_PROJECTION_DB']=SCRATCH_DB,process['env']['WOWOK_PROJECTION_TTL_MS']='120000',__projectionSetWriteClock(0x0);}),afterAll(()=>{if(PREV_DB===undefined)delete process['env']['WOWOK_PROJECTION_DB'];else process['env']['WOWOK_PROJECTION_DB']=PREV_DB;if(PREV_TTL===undefined)delete process['env']['WOWOK_PROJECTION_TTL_MS'];else process['env']['WOWOK_PROJECTION_TTL_MS']=PREV_TTL;__projectionSetWriteClock(undefined);try{a283a['rmSync'](SCRATCH_DB,{'force':!![]}),a283a['rmSync'](SCRATCH_DB+'-wal',{'force':!![]}),a283a['rmSync'](SCRATCH_DB+'-shm',{'force':!![]});}catch{}});function svcRow(a,b={}){const {payloadJson:c,...d}=b;return{'object_id':a,'payload':JSON['stringify']({'object':a,...c??{}}),...d};}describe('projection\x20cache\x20(K5\x20doc\x2017\x20B-tier)',()=>{it('returns\x20undefined\x20without\x20a\x20watermark\x20(never\x20fabricates\x20coverage)',()=>{const a=projectionServe('chain-empty-proj','Service',{},0xc8);expect(a)['toBeUndefined'](),expect(projectionStats('chain-empty-proj')['every'](b=>b['rows']===0x0))['toBe'](!![]);}),it('serves\x20a\x20fresh\x20projection\x20with\x20SQL\x20filters\x20and\x20pre-filter\x20totals',()=>{const a='chain-proj-serve',b=[svcRow('0xa1',{'name':'Alpha\x20Music','location':'Shanghai,\x20CN','coin_type':'0x2::wow::WOW','published':0x1,'paused':0x0,'payloadJson':{'object':'0xa1','name':'Alpha\x20Music','location':'Shanghai,\x20CN'}}),svcRow('0xa2',{'name':'Beta\x20Design','location':'Beijing,\x20CN','coin_type':'0x2::wow::WOW','published':0x1,'paused':0x0,'payloadJson':{'object':'0xa2','name':'Beta\x20Design','location':'Beijing,\x20CN'}}),svcRow('0xa3',{'name':'Gamma\x20Food','location':'Shanghai,\x20CN','coin_type':'0x2::sui::SUI','published':0x1,'paused':0x0,'payloadJson':{'object':'0xa3','name':'Gamma\x20Food','location':'Shanghai,\x20CN'}})];projectionUpsert(a,'Service',b,{'hasMore':![],'maxObjects':0xc8});const c=projectionServe(a,'Service',{},0xc8);expect(c)['toBeDefined'](),expect(c['items'])['toHaveLength'](0x3),expect(c['meta']['total_rows'])['toBe'](0x3),expect(c['meta']['watermark']['has_more'])['toBe'](0x0),expect(c['items']['map'](h=>h['object'])['sort']())['toEqual'](['0xa1','0xa2','0xa3']);const d=projectionServe(a,'Service',{'coin_type':'0x2::wow::WOW'},0xc8);expect(d['items']['map'](h=>h['object'])['sort']())['toEqual'](['0xa1','0xa2']),expect(d['meta']['total_rows'])['toBe'](0x3);const e=projectionServe(a,'Service',{'name_contains':'beta'},0xc8);expect(e['items']['map'](h=>h['object']))['toEqual'](['0xa2']);const f=projectionServe(a,'Service',{'location_any':['shanghai']},0xc8);expect(f['items']['map'](h=>h['object'])['sort']())['toEqual'](['0xa1','0xa3']);const g=projectionServe(a,'Service',{'location_any':['paris']},0xc8);expect(g['items'])['toHaveLength'](0x0),expect(g['meta']['total_rows'])['toBe'](0x3),expect(projectionStats(a)['find'](h=>h['kind']==='Service')?.['rows'])['toBe'](0x3),expect(projectionStats(a)['find'](h=>h['kind']==='Service')?.['refreshed_at'])['toBeGreaterThan'](0x0);}),it('upserts\x20cumulatively:\x20rows\x20update\x20in\x20place\x20and\x20accumulate\x20across\x20windows',()=>{const a='chain-proj-cumulative';projectionUpsert(a,'Demand',[{'object_id':'0xd1','payload':JSON['stringify']({'object':'0xd1','description':'v1'})}],{'hasMore':!![],'maxObjects':0xc8}),projectionUpsert(a,'Demand',[{'object_id':'0xd1','payload':JSON['stringify']({'object':'0xd1','description':'v2'})},{'object_id':'0xd2','payload':JSON['stringify']({'object':'0xd2','description':'new'})}],{'hasMore':![],'maxObjects':0xc8});const b=projectionServe(a,'Demand',{},0xc8);expect(b['items'])['toHaveLength'](0x2);const c=b['items']['find'](d=>d['object']==='0xd1');expect(c?.['description'])['toBe']('v2'),expect(b['meta']['watermark']['has_more'])['toBe'](0x0);}),it('declines\x20to\x20serve\x20when\x20stale\x20by\x20TTL',async()=>{const a='chain-proj-stale-ttl',b=process['env']['WOWOK_PROJECTION_TTL_MS'];process['env']['WOWOK_PROJECTION_TTL_MS']='20';try{projectionUpsert(a,'Service',[svcRow('0xs1')],{'hasMore':![],'maxObjects':0xc8}),expect(projectionServe(a,'Service',{},0xc8))['toBeDefined'](),await new Promise(c=>setTimeout(c,0x28)),expect(projectionServe(a,'Service',{},0xc8))['toBeUndefined']();}finally{process['env']['WOWOK_PROJECTION_TTL_MS']=b;}}),it('declines\x20to\x20serve\x20when\x20a\x20local\x20on-chain\x20write\x20postdates\x20the\x20watermark',()=>{const a='chain-proj-stale-write';projectionUpsert(a,'Service',[svcRow('0xs2')],{'hasMore':![],'maxObjects':0xc8}),__projectionSetWriteClock(Date['now']()+0x1);try{expect(projectionServe(a,'Service',{},0xc8))['toBeUndefined']();}finally{__projectionSetWriteClock(0x0);}}),it('filters\x20arb\x20payloads\x20post-SQL\x20for\x20parity\x20with\x20the\x20legacy\x20post-hydration\x20filter',()=>{const a='chain-proj-arb';projectionUpsert(a,'Arb',[{'object_id':'0xb1','payload':JSON['stringify']({'object':'0xb1','arbitration':'0xarb1','order':'0xo1','status':0x2})},{'object_id':'0xb2','payload':JSON['stringify']({'object':'0xb2','arbitration':'0xarb1','order':'0xo2','status':0x5})},{'object_id':'0xb3','payload':JSON['stringify']({'object':'0xb3','arbitration':'0xarb2','order':'0xo1','status':0x2})}],{'hasMore':![],'maxObjects':0xc8});const b=projectionServe(a,'Arb',{'arbitration':'0xarb1'},0xc8);expect(b['items']['map'](f=>f['object'])['sort']())['toEqual'](['0xb1','0xb2']),expect(b['meta']['total_rows'])['toBe'](0x3);const c=projectionServe(a,'Arb',{'order':'0xo1'},0xc8);expect(c['items']['map'](f=>f['object'])['sort']())['toEqual'](['0xb1','0xb3']);const d=projectionServe(a,'Arb',{'status':[0x5]},0xc8);expect(d['items']['map'](f=>f['object']))['toEqual'](['0xb2']);const e=projectionServe(a,'Arb',{'arbitration':'0xarb2','status':[0x5]},0xc8);expect(e['items'])['toHaveLength'](0x0);}),it('respects\x20the\x20limit\x20on\x20the\x20SQL\x20path',()=>{const a='chain-proj-limit';projectionUpsert(a,'Demand',Array['from']({'length':0x5},(c,d)=>({'object_id':'0xL'+d,'payload':JSON['stringify']({'object':'0xL'+d})})),{'hasMore':![],'maxObjects':0xc8});const b=projectionServe(a,'Demand',{},0x3);expect(b['items'])['toHaveLength'](0x3),expect(b['meta']['total_rows'])['toBe'](0x5);});});
1
+ import{describe,it,expect,beforeAll,afterAll}from'vitest';import*as a291a from'node:fs';import*as a291b from'node:os';import*as a291c from'node:path';import{projectionUpsert,projectionServe,projectionStats,__projectionSetWriteClock}from'./projection.js';const SCRATCH_DB=a291c['join'](a291b['tmpdir'](),'wowok-projection-spec-'+process['pid']+'-'+Date['now']()+'.db'),PREV_DB=process['env']['WOWOK_PROJECTION_DB'],PREV_TTL=process['env']['WOWOK_PROJECTION_TTL_MS'];beforeAll(()=>{process['env']['WOWOK_PROJECTION_DB']=SCRATCH_DB,process['env']['WOWOK_PROJECTION_TTL_MS']='120000',__projectionSetWriteClock(0x0);}),afterAll(()=>{if(PREV_DB===undefined)delete process['env']['WOWOK_PROJECTION_DB'];else process['env']['WOWOK_PROJECTION_DB']=PREV_DB;if(PREV_TTL===undefined)delete process['env']['WOWOK_PROJECTION_TTL_MS'];else process['env']['WOWOK_PROJECTION_TTL_MS']=PREV_TTL;__projectionSetWriteClock(undefined);try{a291a['rmSync'](SCRATCH_DB,{'force':!![]}),a291a['rmSync'](SCRATCH_DB+'-wal',{'force':!![]}),a291a['rmSync'](SCRATCH_DB+'-shm',{'force':!![]});}catch{}});function svcRow(a,b={}){const {payloadJson:c,...d}=b;return{'object_id':a,'payload':JSON['stringify']({'object':a,...c??{}}),...d};}describe('projection\x20cache\x20(K5\x20doc\x2017\x20B-tier)',()=>{it('returns\x20undefined\x20without\x20a\x20watermark\x20(never\x20fabricates\x20coverage)',()=>{const a=projectionServe('chain-empty-proj','Service',{},0xc8);expect(a)['toBeUndefined'](),expect(projectionStats('chain-empty-proj')['every'](b=>b['rows']===0x0))['toBe'](!![]);}),it('serves\x20a\x20fresh\x20projection\x20with\x20SQL\x20filters\x20and\x20pre-filter\x20totals',()=>{const a='chain-proj-serve',b=[svcRow('0xa1',{'name':'Alpha\x20Music','location':'Shanghai,\x20CN','coin_type':'0x2::wow::WOW','published':0x1,'paused':0x0,'payloadJson':{'object':'0xa1','name':'Alpha\x20Music','location':'Shanghai,\x20CN'}}),svcRow('0xa2',{'name':'Beta\x20Design','location':'Beijing,\x20CN','coin_type':'0x2::wow::WOW','published':0x1,'paused':0x0,'payloadJson':{'object':'0xa2','name':'Beta\x20Design','location':'Beijing,\x20CN'}}),svcRow('0xa3',{'name':'Gamma\x20Food','location':'Shanghai,\x20CN','coin_type':'0x2::sui::SUI','published':0x1,'paused':0x0,'payloadJson':{'object':'0xa3','name':'Gamma\x20Food','location':'Shanghai,\x20CN'}})];projectionUpsert(a,'Service',b,{'hasMore':![],'maxObjects':0xc8});const c=projectionServe(a,'Service',{},0xc8);expect(c)['toBeDefined'](),expect(c['items'])['toHaveLength'](0x3),expect(c['meta']['total_rows'])['toBe'](0x3),expect(c['meta']['watermark']['has_more'])['toBe'](0x0),expect(c['items']['map'](h=>h['object'])['sort']())['toEqual'](['0xa1','0xa2','0xa3']);const d=projectionServe(a,'Service',{'coin_type':'0x2::wow::WOW'},0xc8);expect(d['items']['map'](h=>h['object'])['sort']())['toEqual'](['0xa1','0xa2']),expect(d['meta']['total_rows'])['toBe'](0x3);const e=projectionServe(a,'Service',{'name_contains':'beta'},0xc8);expect(e['items']['map'](h=>h['object']))['toEqual'](['0xa2']);const f=projectionServe(a,'Service',{'location_any':['shanghai']},0xc8);expect(f['items']['map'](h=>h['object'])['sort']())['toEqual'](['0xa1','0xa3']);const g=projectionServe(a,'Service',{'location_any':['paris']},0xc8);expect(g['items'])['toHaveLength'](0x0),expect(g['meta']['total_rows'])['toBe'](0x3),expect(projectionStats(a)['find'](h=>h['kind']==='Service')?.['rows'])['toBe'](0x3),expect(projectionStats(a)['find'](h=>h['kind']==='Service')?.['refreshed_at'])['toBeGreaterThan'](0x0);}),it('upserts\x20cumulatively:\x20rows\x20update\x20in\x20place\x20and\x20accumulate\x20across\x20windows',()=>{const a='chain-proj-cumulative';projectionUpsert(a,'Demand',[{'object_id':'0xd1','payload':JSON['stringify']({'object':'0xd1','description':'v1'})}],{'hasMore':!![],'maxObjects':0xc8}),projectionUpsert(a,'Demand',[{'object_id':'0xd1','payload':JSON['stringify']({'object':'0xd1','description':'v2'})},{'object_id':'0xd2','payload':JSON['stringify']({'object':'0xd2','description':'new'})}],{'hasMore':![],'maxObjects':0xc8});const b=projectionServe(a,'Demand',{},0xc8);expect(b['items'])['toHaveLength'](0x2);const c=b['items']['find'](d=>d['object']==='0xd1');expect(c?.['description'])['toBe']('v2'),expect(b['meta']['watermark']['has_more'])['toBe'](0x0);}),it('declines\x20to\x20serve\x20when\x20stale\x20by\x20TTL',async()=>{const a='chain-proj-stale-ttl',b=process['env']['WOWOK_PROJECTION_TTL_MS'];process['env']['WOWOK_PROJECTION_TTL_MS']='60000';try{projectionUpsert(a,'Service',[svcRow('0xs1')],{'hasMore':![],'maxObjects':0xc8}),expect(projectionServe(a,'Service',{},0xc8))['toBeDefined'](),process['env']['WOWOK_PROJECTION_TTL_MS']='20',await new Promise(c=>setTimeout(c,0x3c)),expect(projectionServe(a,'Service',{},0xc8))['toBeUndefined']();}finally{process['env']['WOWOK_PROJECTION_TTL_MS']=b;}}),it('declines\x20to\x20serve\x20when\x20a\x20local\x20on-chain\x20write\x20postdates\x20the\x20watermark',()=>{const a='chain-proj-stale-write';projectionUpsert(a,'Service',[svcRow('0xs2')],{'hasMore':![],'maxObjects':0xc8}),__projectionSetWriteClock(Date['now']()+0x1);try{expect(projectionServe(a,'Service',{},0xc8))['toBeUndefined']();}finally{__projectionSetWriteClock(0x0);}}),it('filters\x20arb\x20payloads\x20post-SQL\x20for\x20parity\x20with\x20the\x20legacy\x20post-hydration\x20filter',()=>{const a='chain-proj-arb';projectionUpsert(a,'Arb',[{'object_id':'0xb1','payload':JSON['stringify']({'object':'0xb1','arbitration':'0xarb1','order':'0xo1','status':0x2})},{'object_id':'0xb2','payload':JSON['stringify']({'object':'0xb2','arbitration':'0xarb1','order':'0xo2','status':0x5})},{'object_id':'0xb3','payload':JSON['stringify']({'object':'0xb3','arbitration':'0xarb2','order':'0xo1','status':0x2})}],{'hasMore':![],'maxObjects':0xc8});const b=projectionServe(a,'Arb',{'arbitration':'0xarb1'},0xc8);expect(b['items']['map'](f=>f['object'])['sort']())['toEqual'](['0xb1','0xb2']),expect(b['meta']['total_rows'])['toBe'](0x3);const c=projectionServe(a,'Arb',{'order':'0xo1'},0xc8);expect(c['items']['map'](f=>f['object'])['sort']())['toEqual'](['0xb1','0xb3']);const d=projectionServe(a,'Arb',{'status':[0x5]},0xc8);expect(d['items']['map'](f=>f['object']))['toEqual'](['0xb2']);const e=projectionServe(a,'Arb',{'arbitration':'0xarb2','status':[0x5]},0xc8);expect(e['items'])['toHaveLength'](0x0);}),it('respects\x20the\x20limit\x20on\x20the\x20SQL\x20path',()=>{const a='chain-proj-limit';projectionUpsert(a,'Demand',Array['from']({'length':0x5},(c,d)=>({'object_id':'0xL'+d,'payload':JSON['stringify']({'object':'0xL'+d})})),{'hasMore':![],'maxObjects':0xc8});const b=projectionServe(a,'Demand',{},0x3);expect(b['items'])['toHaveLength'](0x3),expect(b['meta']['total_rows'])['toBe'](0x5);});});
@@ -1 +1 @@
1
- import{formatMist,GasTokenType,MAINNET_BRIDGE_CONFIG,formatUnits,isFundApprovalExempt}from'@wowok/wowok';export const DEFAULT_VALUE_WARNINGS={'defaultAccount':'Using\x20default\x20account\x20(env.account=\x22\x22)','mainnet':'Operating\x20on\x20mainnet\x20—\x20irreversible','replaceExistName':'replaceExistName=true\x20will\x20unbind\x20the\x20existing\x20name\x20(breaking\x20refs):\x20the\x20previously\x20named\x20object\x20stays\x20on-chain\x20but\x20becomes\x20unreachable\x20by\x20name\x20—\x20any\x20funds\x20it\x20holds\x20(e.g.\x20an\x20old\x20Order\x27s\x20Allocation)\x20are\x20orphaned.\x20Re-running\x20a\x20build\x20with\x20the\x20same\x20name\x20creates\x20a\x20SECOND\x20object,\x20not\x20a\x20replacement','defaultToken':'Using\x20default\x20token\x200x2::wow::WOW'};export const DEFAULT_AMOUNT_THRESHOLD=BigInt(0x174876e800);export function getAmountThreshold(){const a=process['env']['WOWOK_AMOUNT_THRESHOLD'];if(!a)return DEFAULT_AMOUNT_THRESHOLD;try{return BigInt(a);}catch{return DEFAULT_AMOUNT_THRESHOLD;}}export function formatAmount(a){return formatMist(a);}function bestEffortTokenType(a){return a?.['object']?.['type_parameter']??a?.['type_parameter'];}function describeAmount(a,b){if(!b||b===GasTokenType)try{return formatMist(a);}catch{return a+'\x20raw\x20smallest\x20units\x20of\x20'+GasTokenType;}return a+'\x20raw\x20smallest\x20units\x20of\x20'+b;}function containsReplaceExistName(a,b,c){if(a===null||typeof a!=='object'||b>0x8)return![];const d=a;if(c['has'](d))return![];c['add'](d);if(d['replaceExistName']===!![])return!![];for(const e of Object['values'](d)){if(containsReplaceExistName(e,b+0x1,c))return!![];}return![];}export function collectDefaultWarnings(a,b){const c=[],d=a?.['account'];(d===undefined||d==='')&&c['push'](DEFAULT_VALUE_WARNINGS['defaultAccount']);const e=a?.['network'];e&&/mainnet/i['test'](String(e))&&c['push'](DEFAULT_VALUE_WARNINGS['mainnet']);const f=b?.['namedNew']??b?.['object'];return f&&typeof f==='object'&&f['replaceExistName']===!![]&&c['push'](DEFAULT_VALUE_WARNINGS['replaceExistName']),b&&typeof b==='object'&&containsReplaceExistName(b,0x0,new Set())&&c['push'](DEFAULT_VALUE_WARNINGS['replaceExistName']),[...new Set(c)];}export const BRIDGE_FUND_OPERATION_TYPES=['cross_chain_wow_to_evm','cross_chain_evm_to_wow','claim_wow_to_evm','resume_transfer','withdraw'];function describeBridgeAmount(a,b,c){if(b==='WOW'||!b&&c==='wow_to_evm')return formatMist(a);const d=MAINNET_BRIDGE_CONFIG?.['tokens']?.['find'](f=>f['symbol']?.['toUpperCase']()===b?.['toUpperCase']()),e=d?c==='wow_to_evm'?d['wowDecimals']:d['evmDecimals']:undefined;if(e===undefined)return a+'\x20raw\x20smallest\x20units\x20of\x20'+(b??'the\x20bridge\x20token');try{return formatUnits(BigInt(a),e)+'\x20'+b;}catch{return a+'\x20raw\x20smallest\x20units\x20of\x20'+b;}}export const CONFIRMATION_RULES=[{'id':'bridge_fund_movement','when':(a,b,c)=>BRIDGE_FUND_OPERATION_TYPES['includes'](a),'level':'irreversible','preview':(a,b,c)=>{const d=typeof b?.['amount']==='string'?b['amount']:undefined,e=typeof b?.['token']==='string'?b['token']:undefined,f=b?.['withdrawTo']??b?.['recipientWowAddress']??b?.['to']??(a==='claim_wow_to_evm'||a==='resume_transfer'?b?.['transferId']:undefined),g=a==='cross_chain_wow_to_evm'?'wow_to_evm':'evm_side';return{'level':'irreversible','operation':a,'irreversible':!![],'network':c?.['network'],'account':c?.['account']??'','amount':d!==undefined?{'value':d,'token':e??(g==='wow_to_evm'?GasTokenType:'ETH'),'human_readable':describeBridgeAmount(d,e,g),'recipient':f}:undefined,'warnings':[...collectDefaultWarnings(c,b),a==='withdraw'?'EVM\x20withdrawal\x20from\x20activeEvmAccount\x20—\x20funds\x20move\x20to\x20an\x20external\x20EVM\x20address;\x20irreversible.':'Cross-chain\x20bridge\x20transfer\x20—\x20funds\x20leave\x20the\x20source\x20chain;\x20recovery\x20(if\x20any)\x20requires\x20the\x20opposite-side\x20claim\x20or\x20resume_transfer,\x20never\x20a\x20rollback.']};},'bypass_on_explicit_intent':[]},{'id':'irreversible_fund_or_verdict','when':(a,b,c)=>{const d=c?.['network'],e=bestEffortTokenType(b)??GasTokenType;if(a==='payment'&&Array['isArray'](b?.['revenue'])&&b['revenue']['length']>0x0){const f=b['revenue']['map'](g=>g?.['amount']?.['balance'])['filter'](g=>typeof g==='string'||typeof g==='number');if(f['length']===b['revenue']['length']&&f['every'](g=>isFundApprovalExempt(d,e,String(g))))return![];return!![];}if(a==='treasury'&&b?.['withdraw']){const g=extractAmount(b);if(g!==null&&isFundApprovalExempt(d,e,g))return![];return!![];}if(a==='payment')return!![];if(a==='arbitration'&&b?.['arbitration']!==undefined)return!![];if(b?.['receive']!==undefined||b?.['owner_receive']!==undefined||b?.['received_coins']!==undefined||b?.['compensation_fund_receive']!==undefined)return!![];if(b?.['alloc_by_guard']!==undefined)return!![];if(a==='reward'&&b?.['claim']!==undefined)return!![];if(a==='service'&&b?.['compensation_fund_withdraw']!==undefined)return!![];if(a==='order'&&b?.['arb_claim_compensation']!==undefined)return!![];if(a==='arbitration'&&(b?.['arb_withdraw']!==undefined||b?.['fees_transfer']!==undefined))return!![];if(a==='treasury'){if(b?.['withdraw'])return!![];return![];}return![];},'level':'irreversible','preview':(a,b,c)=>{let d;if(a==='payment'&&Array['isArray'](b?.['revenue'])&&b['revenue']['length']>0x0){const f=b['revenue']['find'](g=>typeof g?.['amount']?.['balance']==='string'||typeof g?.['amount']?.['balance']==='number');if(f){const g=String(f['amount']['balance']);d={'value':g,'human_readable':describeAmount(g,bestEffortTokenType(b))};}else d={'value':'','human_readable':'entire\x20Coin\x20object(s)\x20(amount\x20resolved\x20by\x20the\x20fund\x20layer)'};}const e=[];return a==='reward'&&b?.['claim']!==undefined&&e['push']('Reward\x20claim\x20—\x20Guard-verified\x20payout\x20splits\x20the\x20pool\x20balance\x20and\x20transfers\x20coins\x20to\x20the\x20claimer;\x20the\x20exact\x20amount\x20is\x20determined\x20by\x20the\x20Reward\x27s\x20guard\x20config.'),a==='service'&&b?.['compensation_fund_withdraw']!==undefined&&e['push']('Compensation\x20fund\x20withdraw\x20—\x20withdraws\x20the\x20ENTIRE\x20compensation_fund\x20into\x20a\x20new\x20Payment\x20owned\x20by\x20\x27'+(b['compensation_fund_withdraw']?.['receipt']??'(recipient)')+'\x27.'),a==='order'&&b?.['arb_claim_compensation']!==undefined&&e['push']('Order\x20compensation\x20claim\x20—\x20splits\x20the\x20Service\x27s\x20compensation_fund\x20and\x20transfers\x20the\x20awarded\x20coins\x20to\x20the\x20caller;\x20irreversible.'),a==='arbitration'&&b?.['arb_withdraw']!==undefined&&e['push']('Arb\x20fee\x20withdraw\x20—\x20sweeps\x20the\x20Arb\x27s\x20fee\x20balance\x20into\x20the\x20Arbitration\x20object\x27s\x20balance.'),a==='arbitration'&&b?.['fees_transfer']!==undefined&&e['push']('Arbitration\x20fees\x20transfer\x20—\x20withdraws\x20the\x20ENTIRE\x20Arbitration\x20balance\x20into\x20a\x20new\x20Payment\x20for\x20the\x20target\x20Allocation/Treasury;\x20irreversible.'),{'level':'irreversible','operation':a,'irreversible':!![],'network':c?.['network'],'account':c?.['account']??'','warnings':[...collectDefaultWarnings(c,b),...e],'amount':a==='payment'&&d?{...d,'token':bestEffortTokenType(b)??GasTokenType,'recipient':b?.['revenue']?.[0x0]?.['recipient']}:undefined};},'bypass_on_explicit_intent':[]},{'id':'publish_immutable','when':(a,b,c)=>{if(a==='service'&&(b?.['publish']===!![]||b?.['bPublished']===!![]))return!![];if(a==='machine'&&b?.['publish']===!![])return!![];return![];},'level':'publish','preview':(a,b,c)=>({'level':'publish','operation':a,'object':b?.['object']??b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','immutable_after':a==='service'?['machine','order_allocators']:['nodes','pairs','forwards'],'warnings':collectDefaultWarnings(c,b)}),'bypass_on_explicit_intent':['force\x20publish','publish\x20now']},{'id':'amount_sensitive','when':(a,b,c)=>{const d=extractAmount(b);if(d!==null){if(isFundApprovalExempt(c?.['network'],bestEffortTokenType(b)??GasTokenType,d))return![];return!![];}if(a==='service'&&b?.['order_new'])return!![];if(a==='treasury'&&b?.['deposit']?.['coin']?.['coin'])return!![];if(a==='reward'&&b?.['coin_add']?.['coin'])return!![];if(a==='allocation'&&b?.['coin']?.['coin'])return!![];return![];},'level':'amount','preview':(a,b,c)=>{const d=extractAmount(b),e=bestEffortTokenType(b);return{'level':'amount','operation':a,'object':b?.['object']??b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','amount':d?{'value':d,'token':e??GasTokenType,'human_readable':describeAmount(d,e)}:{'value':'','token':e??GasTokenType,'human_readable':'entire\x20Coin\x20object\x20(amount\x20resolved\x20on-chain)'},'warnings':collectDefaultWarnings(c,b)};},'bypass_on_explicit_intent':[]},{'id':'guard_create_immutable','when':(a,b,c)=>{if(a==='guard')return!![];return![];},'level':'irreversible','preview':(a,b,c)=>{const d=b?.['table']??[],e=b?.['root'],f=b?.['rely'],g=typeof e==='object'&&e!==null&&'type'in e?e['type']:typeof e==='object'&&e!==null&&'type'in e&&e['type']==='file'?'file':'unknown',h=['table','root'];if(f)h['push']('rely');let i='';try{i=JSON['stringify'](e??{});}catch{i='';}const j=[],k=(Array['isArray'](d)?d:[])['filter'](l=>l&&l['b_submission']===!![]&&String(l['value_type'])['toLowerCase']()==='address');if(k['length']>0x0){const l=/order\.service|progress\.machine|arb\.service|order\.machine/i['test'](i);!l&&j['push']('PRE-LINT\x20R-C3-05:\x20submitted\x20Address\x20slot(s)\x20are\x20not\x20bound\x20to\x20this\x20project\x20in\x20the\x20root\x20(no\x20order.service/progress.machine\x20comparison)\x20—\x20a\x20cross-project\x20object\x20can\x20satisfy\x20this\x20Guard.\x20Add\x20the\x20binding\x20BEFORE\x20confirming:\x20the\x20Guard\x20is\x20immutable\x20after\x20creation'),!/signer/i['test'](i)&&j['push']('PRE-LINT\x20identity:\x20submitted\x20data\x20is\x20not\x20tied\x20to\x20the\x20transaction\x20signer\x20(no\x20context(Signer)\x20clause)\x20—\x20anyone\x20able\x20to\x20trigger\x20the\x20host\x20operation\x20can\x20submit\x20arbitrary\x20values.\x20Add\x20a\x20Signer\x20binding\x20if\x20the\x20submitter\x20must\x20be\x20authorized');}return{'level':'irreversible','operation':a,'object':b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','immutable_after':h,'irreversible':!![],'warnings':[...collectDefaultWarnings(c,b),'Guard\x20is\x20CREATE-only\x20and\x20immutable\x20—\x20cannot\x20be\x20edited\x20or\x20deleted\x20after\x20creation','Table\x20entries:\x20'+d['length']+'\x20(max\x20256)','Root\x20node\x20type:\x20'+g+'\x20(must\x20return\x20Bool)',...f?['Rely\x20dependencies:\x20'+(f['guards']?.['length']??0x0)+'\x20(max\x204,\x20AND/OR\x20logic)']:[],...j,'To\x20modify\x20later:\x20export\x20via\x20guard2file\x20→\x20edit\x20→\x20CREATE\x20new\x20→\x20rebind']};},'bypass_on_explicit_intent':[]},{'id':'default_values','when':(a,b,c)=>{return collectDefaultWarnings(c,b)['length']>0x0;},'level':'standard','preview':(a,b,c)=>({'level':'standard','operation':a,'object':b?.['object']??b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','warnings':collectDefaultWarnings(c,b)}),'bypass_on_explicit_intent':['use\x20default\x20account','default\x20account\x20is\x20fine','use\x20the\x20default\x20account','default\x20account\x20works\x20fine']},{'id':'guard_gen_passport_test','when':(a,b,c)=>{if(a==='gen_passport')return!![];return![];},'level':'standard','preview':(a,b,c)=>({'level':'standard','operation':a,'object':b?.['guard'],'network':c?.['network'],'account':c?.['account']??'','warnings':[...collectDefaultWarnings(c,b),'gen_passport\x20will\x20consume\x20gas\x20for\x20static\x20testing']}),'bypass_on_explicit_intent':['test\x20guard','testing\x20guard','gen\x20passport','generate\x20passport']},{'id':'progress_advance','when':(a,b,c)=>{if(a!=='progress')return![];return b?.['operate']?.['op']==='next'||b?.['owner_receive']!==undefined;},'level':'standard','preview':(a,b,c)=>({'level':'standard','operation':a,'object':b?.['object'],'network':c?.['network'],'account':c?.['account']??'','warnings':[...collectDefaultWarnings(c,b),'Advancing\x20the\x20progress\x20node\x20may\x20release\x20funds\x20per\x20the\x20machine\x20allocation']}),'bypass_on_explicit_intent':[]}];export function resolveOverrideId(a,b){if(a==='publish_immutable'){if(b==='service')return'service.publish';if(b==='machine')return'machine.publish';return undefined;}if(a==='progress_advance')return'node.advance';if(a==='default_values')return'confirm.default_values';if(a==='guard_gen_passport_test')return'confirm.gen_passport_test';return undefined;}export function extractAmount(a,b){if(!a)return null;const d=i=>{if(typeof i==='number')return String(i);if(typeof i==='string'&&i!=='')return i;return null;},e=[a?.['balance'],a?.['amount'],a?.['compensation_fund_add']?.['balance'],a?.['coin_add']?.['balance'],a?.['coin']?.['balance'],a?.['order_new']?.['buy']?.['total_pay']?.['balance'],a?.['dispute']?.['fee']?.['balance'],a?.['fee'],a?.['arbitration']?.['indemnity'],a?.['deposit']?.['coin']?.['balance'],a?.['withdraw']?.['amount']?.['fixed']],f=[];for(const i of e){const j=d(i);if(j!==null)f['push'](j);}if(Array['isArray'](a?.['revenue']))for(const k of a['revenue']){const l=d(k?.['amount']?.['balance']);if(l!==null)f['push'](l);}if(Array['isArray'](a?.['guard_add']))for(const m of a['guard_add']){if(m?.['amount']?.['type']==='Fixed'){const n=d(m['amount']['value']);if(n!==null)f['push'](n);}}if(!b?.['excludeConfigAmounts'])for(const o of[a?.['allocators'],a?.['order_allocators']]){if(!o||typeof o!=='object')continue;const p=d(o['threshold']);if(p!==null)f['push'](p);for(const q of Array['isArray'](o['allocators'])?o['allocators']:[]){if(Array['isArray'](q?.['sharing']))for(const u of q['sharing']){if(u?.['mode']==='Amount'){const w=d(u['sharing']);if(w!==null)f['push'](w);}}const t=d(q?.['max']);if(t!==null)f['push'](t);}}const h=f['filter'](x=>{try{return BigInt(x)!==0x0n;}catch{return!![];}});if(h['length']===0x0)return null;if(h['length']===0x1)return h[0x0];try{return h['reduce']((x,y)=>x+BigInt(y),0x0n)['toString']();}catch{return h[0x0];}}export const OBJECT_REUSE_RULES=[{'rule_id':'REUSE-001','object_type':'permission','recommendation':'strongly_recommended','reason':'Centralized\x20permission\x20control\x20across\x20all\x20services','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Permission\x20to\x20reuse?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-002','object_type':'machine','recommendation':'recommended','reason':'Save\x20design\x20time\x20for\x20similar\x20processes','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Machine\x20whose\x20workflow\x20fits?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-003','object_type':'guard','recommendation':'recommended','reason':'Avoid\x20redundant\x20validation\x20rules','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Guard\x20with\x20matching\x20validation\x20logic?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-004','object_type':'contact','recommendation':'recommended','reason':'Single\x20point\x20of\x20customer-service\x20management','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Contact\x20for\x20customer\x20service?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-005','object_type':'arbitration','recommendation':'always_reuse','reason':'Customers\x20choose\x20from\x20established\x20arbiters;\x20creating\x20a\x20new\x20Arbitration\x20is\x20an\x20operator-level\x20decision','ask_user':'Which\x20existing\x20Arbitration\x20service\x20should\x20disputes\x20route\x20to?\x20Provide\x20the\x20name\x20or\x20ID.'}];export const CREATE_VS_MODIFY_PATTERN={'reuse_form':'string','create_form':'object','resolution_api':'GetObjectExisted','note':'String\x20reference\x20=\x20REUSE\x20(name\x20resolution\x20failure\x20is\x20a\x20hard\x20error);\x20object\x20shape\x20=\x20CREATE\x20(always).'};export const IMMUTABILITY_RULES=[{'rule_id':'IMMUT-001','object_type':'machine','trigger':'publish','immutable_fields':['nodes','pairs','forwards'],'message':'Machine\x20topology\x20is\x20immutable\x20after\x20publish\x20—\x20verify\x20all\x20nodes/forwards\x20via\x20machineNode2file\x20BEFORE\x20publishing'},{'rule_id':'IMMUT-002','object_type':'service','trigger':'publish','immutable_fields':['machine','order_allocators'],'mutable_after':['arbitrations','rewards','sales'],'message':'Service.machine\x20and\x20order_allocators\x20are\x20PERMANENTLY\x20frozen\x20after\x20publish\x20(L1);\x20arbitrations/rewards\x20can\x20still\x20be\x20ADDED\x20but\x20remove/clear\x20is\x20time-locked\x20(L2:\x20pause\x20+\x20setting_lock_duration);\x20sales\x20remains\x20fully\x20modifiable\x20(L3)\x20without\x20pause'},{'rule_id':'IMMUT-003','object_type':'guard','trigger':'create','immutable_fields':['table','root','rely'],'message':'Guard\x20is\x20CREATE-only\x20and\x20immutable\x20—\x20cannot\x20be\x20edited\x20or\x20deleted\x20after\x20creation.\x20To\x20change:\x20export\x20via\x20guard2file\x20→\x20edit\x20→\x20CREATE\x20new\x20→\x20rebind'}];export const PROTOCOL_SLOT_RULES=[{'rule_id':'TASKBIND-01','slot':0xfe,'asserted_by':['TASK-BINDING\x20GATE\x20—\x20every\x20guarded\x20forward\x20of\x20a\x20machine\x20running\x20on\x20an\x20order\x20Progress\x20requires\x20a\x20slot-254\x20passport\x20submission\x20(aborts\x20code\x2011\x20=\x20E_TASK_BINDING_REQUIRED\x20when\x20the\x20row\x20is\x20missing;\x20code\x2012\x20=\x20E_TASK_BINDING_NOT_MATCH\x20when\x20the\x20submitted\x20value\x20is\x20not\x20the\x20order\x20address)'],'required_declaration':'{\x20identifier:\x20254,\x20b_submission:\x20true,\x20value_type:\x20\x27Address\x27\x20}\x20—\x20the\x20SUBMITTED\x20VALUE\x20must\x20be\x20the\x20ORDER\x20address\x20(Progress.task\x20is\x20set\x20to\x20the\x20order\x20at\x20purchase,\x20progress.move:516);\x20submitting\x20the\x20Progress\x20address\x20aborts\x20with\x20code\x2012\x20(zrmn-261012\x20R-HANDOVER-SLOT254)','violation':'A\x20Guard\x20bound\x20to\x20a\x20machine\x20forward\x20without\x20this\x20row\x20aborts\x20every\x20forward\x20traversal\x20once\x20an\x20order\x20drives\x20the\x20Progress;\x20the\x20table\x20is\x20frozen\x20at\x20creation,\x20so\x20the\x20path\x20strands\x20permanently.','message':'Any\x20Guard\x20bound\x20on\x20a\x20machine\x20forward\x20MUST\x20declare\x20protocol\x20slot\x20254\x20(task\x20binding)\x20as\x20a\x20b_submission\x20Address\x20row.\x20The\x20compile\x20kernel\x20auto-injects\x20the\x20row\x20for\x20edge-bound\x20guards;\x20guard\x20templates\x20ship\x20it\x20in\x20example_table.'},{'rule_id':'TASKBIND-02','slot':-0x1,'asserted_by':['allocation::assert\x20—\x20each\x20{GuardIdentifier:N}\x20allocator\x20leg\x20requires\x20a\x20passport\x20submission\x20at\x20slot\x20N\x20equal\x20to\x20payment_info.for_object\x20(aborts\x20with\x20funds\x20already\x20escrowed)'],'required_declaration':'{\x20identifier:\x20N,\x20b_submission:\x20true,\x20value_type:\x20\x27Address\x27,\x20object_type:\x20\x27Order\x27\x20}\x20for\x20EVERY\x20slot\x20N\x20named\x20by\x20a\x20GuardIdentifier\x20allocator\x20leg','violation':'A\x20static\x20Address\x20slot\x20in\x20the\x20same\x20position\x20passes\x20creation\x20but\x20fails\x20the\x20same\x20allocation\x20assertion\x20(N-11)\x20—\x20the\x20distribution\x20aborts\x20and\x20escrowed\x20funds\x20stay\x20stranded\x20(amz-7f3a2c91:\x200.98991\x20WOW).','message':'Every\x20allocator\x20{GuardIdentifier:N}\x20leg\x20MUST\x20point\x20at\x20a\x20Guard\x20table\x20slot\x20N\x20declared\x20as\x20a\x20b_submission\x20Address\x20row.\x20The\x20compile\x20kernel\x20blocks\x20publish\x20when\x20the\x20slot\x20is\x20undeclared\x20(GUARD_SLOT_UNKNOWN).'}];export const OPERATION_TYPE_CLASSIFICATION={'LOCAL_ONLY':['account_operation','local_mark_operation','local_info_operation','config_operation'],'ONCHAIN':['onchain_operations','wip_file','bridge_operation','messenger_operation'],'QUERY':['query_toolkit','onchain_table_data','onchain_events','guard2file','machineNode2file','schema_query','wowok_buildin_info'],'ENCRYPTED':['messenger_operation']};export const OPERATION_CLASS_META={'LOCAL_ONLY':{'gas':![],'confirmation_required':![],'note':'Local\x20state\x20only\x20—\x20no\x20gas,\x20no\x20confirmation\x20needed'},'ONCHAIN':{'gas':!![],'confirmation_required':!![],'note':'On-chain\x20write\x20—\x20gas\x20consumed,\x20explicit\x20user\x20confirmation\x20REQUIRED\x20before\x20execution'},'QUERY':{'gas':![],'confirmation_required':![],'note':'Read-only\x20—\x20no\x20gas,\x20no\x20confirmation\x20needed'},'ENCRYPTED':{'gas':![],'confirmation_required':![],'note':'Local\x20encryption\x20—\x20no\x20gas,\x20no\x20confirmation\x20needed'}};export function classifyTool(a){if(OPERATION_TYPE_CLASSIFICATION['ENCRYPTED']['includes'](a))return'ENCRYPTED';for(const b of['LOCAL_ONLY','ONCHAIN','QUERY']){if(OPERATION_TYPE_CLASSIFICATION[b]['includes'](a))return b;}return undefined;}export const NAMING_CONVENTIONS={'scheme':'<projectPrefix>_<type>_<purpose>_<version>','parts':{'project_prefix':{'example':'shopFunny_','purpose':'Prevents\x20cross-project\x20collisions'},'type_prefix':{'example':'machine_\x20/\x20guard_\x20/\x20service_','purpose':'Clarifies\x20object\x20type'},'purpose_suffix':{'example':'serviceWithdraw','purpose':'Describes\x20function'},'version_suffix':{'example':'_v2','purpose':'Enables\x20iteration\x20without\x20replaceExistName'}},'entry_id':{'pattern':'^<object_type>:<name>$','example':'service:myshop_service'},'replace_exist_name':{'default':![],'false_effect':'Throws\x20error\x20if\x20name\x20is\x20in\x20use\x20—\x20safe\x20default','true_effect':'Existing\x20object/account\x20with\x20the\x20same\x20name\x20is\x20suspended/unbound\x20to\x20free\x20the\x20name','account_default_forbidden':'replaceExistName:true\x20on\x20the\x20default\x20account\x20(name=\x27\x27)\x20is\x20FORBIDDEN\x20—\x20use\x20suspend()\x20explicitly','recommendation':'DISCOURAGED\x20—\x20prefer\x20versioned\x20names\x20(_v1,\x20_v2)\x20for\x20production'},'recommendations':['Always\x20provide\x20tags\x20on\x20object\x20creation\x20for\x20filtering\x20and\x20management','Use\x20names\x20as\x20primary\x20identifiers;\x20use\x20short\x20address\x20form\x20(0x1234...def)\x20only\x20for\x20display','All\x20cross-object\x20references\x20(Guard\x20tables,\x20Service\x20bindings,\x20Machine\x20forwards)\x20use\x20NAMES\x20—\x20resolved\x20per-network\x20at\x20build\x20time']};export function checkObjectReuseRules(a){const b=[];for(const c of a){if(!c['is_new'])continue;const d=OBJECT_REUSE_RULES['find'](e=>e['object_type']===c['object_type']);if(!d)continue;(d['recommendation']==='always_reuse'||d['recommendation']==='strongly_recommended')&&b['push']({'rule_id':d['rule_id'],'severity':d['recommendation']==='always_reuse'?'warn':'info','message':'Creating\x20NEW\x20'+c['object_type']+(c['name']?'\x20\x22'+c['name']+'\x22':'')+'\x20—\x20reuse\x20is\x20'+d['recommendation']+':\x20'+d['reason']+'.\x20'+d['ask_user']});}return b;}export function checkImmutabilityRules(a){const b=[];for(const c of a){const d=IMMUTABILITY_RULES['find'](e=>e['object_type']===c['object_type']&&e['trigger']===c['trigger']);if(!d)continue;b['push']({'rule_id':d['rule_id'],'severity':'warn','message':''+c['object_type']+(c['name']?'\x20\x22'+c['name']+'\x22':'')+'\x20'+c['trigger']+':\x20'+d['message']+'.\x20Immutable:\x20['+d['immutable_fields']['join'](',\x20')+']'+(d['mutable_after']?'.\x20Still\x20mutable:\x20['+d['mutable_after']['join'](',\x20')+']':'')});}return b;}export const SAFETY_RULES_VERSION=0x3;
1
+ import{formatMist,GasTokenType,MAINNET_BRIDGE_CONFIG,formatUnits,isFundApprovalExempt}from'@wowok/wowok';export const DEFAULT_VALUE_WARNINGS={'defaultAccount':'Using\x20default\x20account\x20(env.account=\x22\x22)','mainnet':'Operating\x20on\x20mainnet\x20—\x20irreversible','replaceExistName':'replaceExistName=true\x20will\x20unbind\x20the\x20existing\x20name\x20(breaking\x20refs):\x20the\x20previously\x20named\x20object\x20stays\x20on-chain\x20but\x20becomes\x20unreachable\x20by\x20name\x20—\x20any\x20funds\x20it\x20holds\x20(e.g.\x20an\x20old\x20Order\x27s\x20Allocation)\x20are\x20orphaned.\x20Re-running\x20a\x20build\x20with\x20the\x20same\x20name\x20creates\x20a\x20SECOND\x20object,\x20not\x20a\x20replacement','defaultToken':'Using\x20default\x20token\x200x2::wow::WOW'};export const DEFAULT_AMOUNT_THRESHOLD=BigInt(0x174876e800);export function getAmountThreshold(){const a=process['env']['WOWOK_AMOUNT_THRESHOLD'];if(!a)return DEFAULT_AMOUNT_THRESHOLD;try{return BigInt(a);}catch{return DEFAULT_AMOUNT_THRESHOLD;}}export function formatAmount(a){return formatMist(a);}function bestEffortTokenType(a){return a?.['object']?.['type_parameter']??a?.['type_parameter'];}function describeAmount(a,b){if(!b||b===GasTokenType)try{return formatMist(a);}catch{return a+'\x20raw\x20smallest\x20units\x20of\x20'+GasTokenType;}return a+'\x20raw\x20smallest\x20units\x20of\x20'+b;}function containsReplaceExistName(a,b,c){if(a===null||typeof a!=='object'||b>0x8)return![];const d=a;if(c['has'](d))return![];c['add'](d);if(d['replaceExistName']===!![])return!![];for(const e of Object['values'](d)){if(containsReplaceExistName(e,b+0x1,c))return!![];}return![];}export function collectDefaultWarnings(a,b){const c=[],d=a?.['account'];(d===undefined||d==='')&&c['push'](DEFAULT_VALUE_WARNINGS['defaultAccount']);const e=a?.['network'];e&&/mainnet/i['test'](String(e))&&c['push'](DEFAULT_VALUE_WARNINGS['mainnet']);const f=b?.['namedNew']??b?.['object'];return f&&typeof f==='object'&&f['replaceExistName']===!![]&&c['push'](DEFAULT_VALUE_WARNINGS['replaceExistName']),b&&typeof b==='object'&&containsReplaceExistName(b,0x0,new Set())&&c['push'](DEFAULT_VALUE_WARNINGS['replaceExistName']),[...new Set(c)];}export const BRIDGE_FUND_OPERATION_TYPES=['cross_chain_wow_to_evm','cross_chain_evm_to_wow','claim_wow_to_evm','resume_transfer','withdraw'];function describeBridgeAmount(a,b,c){if(b==='WOW'||!b&&c==='wow_to_evm')return formatMist(a);const d=MAINNET_BRIDGE_CONFIG?.['tokens']?.['find'](f=>f['symbol']?.['toUpperCase']()===b?.['toUpperCase']()),e=d?c==='wow_to_evm'?d['wowDecimals']:d['evmDecimals']:undefined;if(e===undefined)return a+'\x20raw\x20smallest\x20units\x20of\x20'+(b??'the\x20bridge\x20token');try{return formatUnits(BigInt(a),e)+'\x20'+b;}catch{return a+'\x20raw\x20smallest\x20units\x20of\x20'+b;}}export const CONFIRMATION_RULES=[{'id':'bridge_fund_movement','when':(a,b,c)=>BRIDGE_FUND_OPERATION_TYPES['includes'](a),'level':'irreversible','preview':(a,b,c)=>{const d=typeof b?.['amount']==='string'?b['amount']:undefined,e=typeof b?.['token']==='string'?b['token']:undefined,f=b?.['withdrawTo']??b?.['recipientWowAddress']??b?.['to']??(a==='claim_wow_to_evm'||a==='resume_transfer'?b?.['transferId']:undefined),g=a==='cross_chain_wow_to_evm'?'wow_to_evm':'evm_side';return{'level':'irreversible','operation':a,'irreversible':!![],'network':c?.['network'],'account':c?.['account']??'','amount':d!==undefined?{'value':d,'token':e??(g==='wow_to_evm'?GasTokenType:'ETH'),'human_readable':describeBridgeAmount(d,e,g),'recipient':f}:undefined,'warnings':[...collectDefaultWarnings(c,b),a==='withdraw'?'EVM\x20withdrawal\x20from\x20activeEvmAccount\x20—\x20funds\x20move\x20to\x20an\x20external\x20EVM\x20address;\x20irreversible.':'Cross-chain\x20bridge\x20transfer\x20—\x20funds\x20leave\x20the\x20source\x20chain;\x20recovery\x20(if\x20any)\x20requires\x20the\x20opposite-side\x20claim\x20or\x20resume_transfer,\x20never\x20a\x20rollback.']};},'bypass_on_explicit_intent':[]},{'id':'irreversible_fund_or_verdict','when':(a,b,c)=>{const d=c?.['network'],e=bestEffortTokenType(b)??GasTokenType;if(a==='payment'&&Array['isArray'](b?.['revenue'])&&b['revenue']['length']>0x0){const f=b['revenue']['map'](g=>g?.['amount']?.['balance'])['filter'](g=>typeof g==='string'||typeof g==='number');if(f['length']===b['revenue']['length']&&f['every'](g=>isFundApprovalExempt(d,e,String(g))))return![];return!![];}if(a==='treasury'&&b?.['withdraw']){const g=extractAmount(b);if(g!==null&&isFundApprovalExempt(d,e,g))return![];return!![];}if(a==='payment')return!![];if(a==='arbitration'&&b?.['arbitration']!==undefined)return!![];if(b?.['receive']!==undefined||b?.['owner_receive']!==undefined||b?.['received_coins']!==undefined||b?.['compensation_fund_receive']!==undefined)return!![];if(b?.['alloc_by_guard']!==undefined)return!![];if(a==='reward'&&b?.['claim']!==undefined)return!![];if(a==='service'&&b?.['compensation_fund_withdraw']!==undefined)return!![];if(a==='order'&&b?.['arb_claim_compensation']!==undefined)return!![];if(a==='arbitration'&&(b?.['arb_withdraw']!==undefined||b?.['fees_transfer']!==undefined))return!![];if(a==='treasury'){if(b?.['withdraw'])return!![];return![];}return![];},'level':'irreversible','preview':(a,b,c)=>{let d;if(a==='payment'&&Array['isArray'](b?.['revenue'])&&b['revenue']['length']>0x0){const f=b['revenue']['find'](g=>typeof g?.['amount']?.['balance']==='string'||typeof g?.['amount']?.['balance']==='number');if(f){const g=String(f['amount']['balance']);d={'value':g,'human_readable':describeAmount(g,bestEffortTokenType(b))};}else d={'value':'','human_readable':'entire\x20Coin\x20object(s)\x20(amount\x20resolved\x20by\x20the\x20fund\x20layer)'};}const e=[];return a==='reward'&&b?.['claim']!==undefined&&e['push']('Reward\x20claim\x20—\x20Guard-verified\x20payout\x20splits\x20the\x20pool\x20balance\x20and\x20transfers\x20coins\x20to\x20the\x20claimer;\x20the\x20exact\x20amount\x20is\x20determined\x20by\x20the\x20Reward\x27s\x20guard\x20config.'),a==='service'&&b?.['compensation_fund_withdraw']!==undefined&&e['push']('Compensation\x20fund\x20withdraw\x20—\x20withdraws\x20the\x20ENTIRE\x20compensation_fund\x20into\x20a\x20new\x20Payment\x20owned\x20by\x20\x27'+(b['compensation_fund_withdraw']?.['receipt']??'(recipient)')+'\x27.'),a==='order'&&b?.['arb_claim_compensation']!==undefined&&e['push']('Order\x20compensation\x20claim\x20—\x20splits\x20the\x20Service\x27s\x20compensation_fund\x20and\x20transfers\x20the\x20awarded\x20coins\x20to\x20the\x20caller;\x20irreversible.'),a==='arbitration'&&b?.['arb_withdraw']!==undefined&&e['push']('Arb\x20fee\x20withdraw\x20—\x20sweeps\x20the\x20Arb\x27s\x20fee\x20balance\x20into\x20the\x20Arbitration\x20object\x27s\x20balance.'),a==='arbitration'&&b?.['fees_transfer']!==undefined&&e['push']('Arbitration\x20fees\x20transfer\x20—\x20withdraws\x20the\x20ENTIRE\x20Arbitration\x20balance\x20into\x20a\x20new\x20Payment\x20for\x20the\x20target\x20Allocation/Treasury;\x20irreversible.'),{'level':'irreversible','operation':a,'irreversible':!![],'network':c?.['network'],'account':c?.['account']??'','warnings':[...collectDefaultWarnings(c,b),...e],'amount':a==='payment'&&d?{...d,'token':bestEffortTokenType(b)??GasTokenType,'recipient':b?.['revenue']?.[0x0]?.['recipient']}:undefined};},'bypass_on_explicit_intent':[]},{'id':'publish_immutable','when':(a,b,c)=>{if(a==='service'&&(b?.['publish']===!![]||b?.['bPublished']===!![]))return!![];if(a==='machine'&&b?.['publish']===!![])return!![];return![];},'level':'publish','preview':(a,b,c)=>({'level':'publish','operation':a,'object':b?.['object']??b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','immutable_after':a==='service'?['machine','order_allocators']:['nodes','pairs','forwards'],'warnings':collectDefaultWarnings(c,b)}),'bypass_on_explicit_intent':['force\x20publish','publish\x20now']},{'id':'amount_sensitive','when':(a,b,c)=>{const d=extractAmount(b);if(d!==null){if(isFundApprovalExempt(c?.['network'],bestEffortTokenType(b)??GasTokenType,d))return![];return!![];}if(a==='service'&&b?.['order_new'])return!![];if(a==='treasury'&&b?.['deposit']?.['coin']?.['coin'])return!![];if(a==='reward'&&b?.['coin_add']?.['coin'])return!![];if(a==='allocation'&&b?.['coin']?.['coin'])return!![];return![];},'level':'amount','preview':(a,b,c)=>{const d=extractAmount(b),e=bestEffortTokenType(b);return{'level':'amount','operation':a,'object':b?.['object']??b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','amount':d?{'value':d,'token':e??GasTokenType,'human_readable':describeAmount(d,e)}:{'value':'','token':e??GasTokenType,'human_readable':'entire\x20Coin\x20object\x20(amount\x20resolved\x20on-chain)'},'warnings':collectDefaultWarnings(c,b)};},'bypass_on_explicit_intent':[]},{'id':'guard_create_immutable','when':(a,b,c)=>{if(a==='guard')return!![];return![];},'level':'irreversible','preview':(a,b,c)=>{const d=b?.['table']??[],e=b?.['root'],f=b?.['rely'],g=typeof e==='object'&&e!==null&&'type'in e?e['type']:typeof e==='object'&&e!==null&&'type'in e&&e['type']==='file'?'file':'unknown',h=['table','root'];if(f)h['push']('rely');let i='';try{i=JSON['stringify'](e??{});}catch{i='';}const j=[],k=(Array['isArray'](d)?d:[])['filter'](l=>l&&l['b_submission']===!![]&&String(l['value_type'])['toLowerCase']()==='address');if(k['length']>0x0){const l=/order\.service|progress\.machine|arb\.service|order\.machine/i['test'](i);!l&&j['push']('PRE-LINT\x20R-C3-05:\x20submitted\x20Address\x20slot(s)\x20are\x20not\x20bound\x20to\x20this\x20project\x20in\x20the\x20root\x20(no\x20order.service/progress.machine\x20comparison)\x20—\x20a\x20cross-project\x20object\x20can\x20satisfy\x20this\x20Guard.\x20Add\x20the\x20binding\x20BEFORE\x20confirming:\x20the\x20Guard\x20is\x20immutable\x20after\x20creation'),!/signer/i['test'](i)&&j['push']('PRE-LINT\x20identity:\x20submitted\x20data\x20is\x20not\x20tied\x20to\x20the\x20transaction\x20signer\x20(no\x20context(Signer)\x20clause)\x20—\x20anyone\x20able\x20to\x20trigger\x20the\x20host\x20operation\x20can\x20submit\x20arbitrary\x20values.\x20Add\x20a\x20Signer\x20binding\x20if\x20the\x20submitter\x20must\x20be\x20authorized');}return{'level':'irreversible','operation':a,'object':b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','immutable_after':h,'irreversible':!![],'warnings':[...collectDefaultWarnings(c,b),'Guard\x20is\x20CREATE-only\x20and\x20immutable\x20—\x20cannot\x20be\x20edited\x20or\x20deleted\x20after\x20creation','Table\x20entries:\x20'+d['length']+'\x20(max\x20256)','Root\x20node\x20type:\x20'+g+'\x20(must\x20return\x20Bool)',...f?['Rely\x20dependencies:\x20'+(f['guards']?.['length']??0x0)+'\x20(max\x204,\x20AND/OR\x20logic)']:[],...j,'To\x20modify\x20later:\x20export\x20via\x20guard2file\x20→\x20edit\x20→\x20CREATE\x20new\x20→\x20rebind']};},'bypass_on_explicit_intent':[]},{'id':'default_values','when':(a,b,c)=>{return collectDefaultWarnings(c,b)['length']>0x0;},'level':'standard','preview':(a,b,c)=>({'level':'standard','operation':a,'object':b?.['object']??b?.['namedNew']?.['name'],'network':c?.['network'],'account':c?.['account']??'','warnings':collectDefaultWarnings(c,b)}),'bypass_on_explicit_intent':['use\x20default\x20account','default\x20account\x20is\x20fine','use\x20the\x20default\x20account','default\x20account\x20works\x20fine']},{'id':'guard_gen_passport_test','when':(a,b,c)=>{if(a==='gen_passport')return!![];return![];},'level':'standard','preview':(a,b,c)=>({'level':'standard','operation':a,'object':b?.['guard'],'network':c?.['network'],'account':c?.['account']??'','warnings':[...collectDefaultWarnings(c,b),'gen_passport\x20will\x20consume\x20gas\x20for\x20static\x20testing']}),'bypass_on_explicit_intent':['test\x20guard','testing\x20guard','gen\x20passport','generate\x20passport']},{'id':'progress_advance','when':(a,b,c)=>{if(a!=='progress')return![];return b?.['operate']?.['op']==='next'||b?.['owner_receive']!==undefined;},'level':'standard','preview':(a,b,c)=>({'level':'standard','operation':a,'object':b?.['object'],'network':c?.['network'],'account':c?.['account']??'','warnings':[...collectDefaultWarnings(c,b),'Advancing\x20the\x20progress\x20node\x20may\x20release\x20funds\x20per\x20the\x20machine\x20allocation']}),'bypass_on_explicit_intent':[]}];export function resolveOverrideId(a,b){if(a==='publish_immutable'){if(b==='service')return'service.publish';if(b==='machine')return'machine.publish';return undefined;}if(a==='progress_advance')return'node.advance';if(a==='default_values')return'confirm.default_values';if(a==='guard_gen_passport_test')return'confirm.gen_passport_test';return undefined;}export function extractAmount(a,b){if(!a)return null;const d=i=>{if(typeof i==='number')return String(i);if(typeof i==='string'&&i!=='')return i;return null;},e=[a?.['balance'],a?.['amount'],a?.['compensation_fund_add']?.['balance'],a?.['coin_add']?.['balance'],a?.['coin']?.['balance'],a?.['order_new']?.['buy']?.['total_pay']?.['balance'],a?.['dispute']?.['fee']?.['balance'],a?.['fee'],a?.['arbitration']?.['indemnity'],a?.['deposit']?.['coin']?.['balance'],a?.['withdraw']?.['amount']?.['fixed']],f=[];for(const i of e){const j=d(i);if(j!==null)f['push'](j);}if(Array['isArray'](a?.['revenue']))for(const k of a['revenue']){const l=d(k?.['amount']?.['balance']);if(l!==null)f['push'](l);}if(Array['isArray'](a?.['guard_add']))for(const m of a['guard_add']){if(m?.['amount']?.['type']==='Fixed'){const n=d(m['amount']['value']);if(n!==null)f['push'](n);}}if(!b?.['excludeConfigAmounts'])for(const o of[a?.['allocators'],a?.['order_allocators']]){if(!o||typeof o!=='object')continue;const p=d(o['threshold']);if(p!==null)f['push'](p);for(const q of Array['isArray'](o['allocators'])?o['allocators']:[]){if(Array['isArray'](q?.['sharing']))for(const u of q['sharing']){if(u?.['mode']==='Amount'){const w=d(u['sharing']);if(w!==null)f['push'](w);}}const t=d(q?.['max']);if(t!==null)f['push'](t);}}const h=f['filter'](x=>{try{return BigInt(x)!==0x0n;}catch{return!![];}});if(h['length']===0x0)return null;if(h['length']===0x1)return h[0x0];try{return h['reduce']((x,y)=>x+BigInt(y),0x0n)['toString']();}catch{return h[0x0];}}export const OBJECT_REUSE_RULES=[{'rule_id':'REUSE-001','object_type':'permission','recommendation':'strongly_recommended','reason':'Centralized\x20permission\x20control\x20across\x20all\x20services','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Permission\x20to\x20reuse?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-002','object_type':'machine','recommendation':'recommended','reason':'Save\x20design\x20time\x20for\x20similar\x20processes','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Machine\x20whose\x20workflow\x20fits?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-003','object_type':'guard','recommendation':'recommended','reason':'Avoid\x20redundant\x20validation\x20rules','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Guard\x20with\x20matching\x20validation\x20logic?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-004','object_type':'contact','recommendation':'recommended','reason':'Single\x20point\x20of\x20customer-service\x20management','ask_user':'Do\x20you\x20have\x20an\x20existing\x20Contact\x20for\x20customer\x20service?\x20Provide\x20the\x20name\x20or\x20ID.'},{'rule_id':'REUSE-005','object_type':'arbitration','recommendation':'always_reuse','reason':'Customers\x20choose\x20from\x20established\x20arbiters;\x20creating\x20a\x20new\x20Arbitration\x20is\x20an\x20operator-level\x20decision','ask_user':'Which\x20existing\x20Arbitration\x20service\x20should\x20disputes\x20route\x20to?\x20Provide\x20the\x20name\x20or\x20ID.'}];export const CREATE_VS_MODIFY_PATTERN={'reuse_form':'string','create_form':'object','resolution_api':'GetObjectExisted','note':'String\x20reference\x20=\x20REUSE\x20(name\x20resolution\x20failure\x20is\x20a\x20hard\x20error);\x20object\x20shape\x20=\x20CREATE\x20(always).'};export const IMMUTABILITY_RULES=[{'rule_id':'IMMUT-001','object_type':'machine','trigger':'publish','immutable_fields':['nodes','pairs','forwards'],'message':'Machine\x20topology\x20is\x20immutable\x20after\x20publish\x20—\x20verify\x20all\x20nodes/forwards\x20via\x20machineNode2file\x20BEFORE\x20publishing'},{'rule_id':'IMMUT-002','object_type':'service','trigger':'publish','immutable_fields':['machine','order_allocators'],'mutable_after':['arbitrations','rewards','sales'],'message':'Service.machine\x20and\x20order_allocators\x20are\x20PERMANENTLY\x20frozen\x20after\x20publish\x20(L1);\x20arbitrations/rewards\x20can\x20still\x20be\x20ADDED\x20but\x20remove/clear\x20is\x20time-locked\x20(L2:\x20pause\x20+\x20setting_lock_duration);\x20sales\x20remains\x20fully\x20modifiable\x20(L3)\x20without\x20pause'},{'rule_id':'IMMUT-003','object_type':'guard','trigger':'create','immutable_fields':['table','root','rely'],'message':'Guard\x20is\x20CREATE-only\x20and\x20immutable\x20—\x20cannot\x20be\x20edited\x20or\x20deleted\x20after\x20creation.\x20To\x20change:\x20export\x20via\x20guard2file\x20→\x20edit\x20→\x20CREATE\x20new\x20→\x20rebind'}];export const PROTOCOL_SLOT_RULES=[{'rule_id':'TASKBIND-01','slot':0xfe,'asserted_by':['TASK-BINDING\x20GATE\x20—\x20every\x20guarded\x20forward\x20of\x20a\x20machine\x20running\x20on\x20an\x20order\x20Progress\x20requires\x20a\x20slot-254\x20passport\x20submission\x20(aborts\x20code\x2011\x20=\x20E_TASK_BINDING_REQUIRED\x20when\x20the\x20row\x20is\x20missing;\x20code\x2012\x20=\x20E_TASK_BINDING_NOT_MATCH\x20when\x20the\x20submitted\x20value\x20is\x20not\x20the\x20order\x20address)'],'required_declaration':'{\x20identifier:\x20254,\x20b_submission:\x20true,\x20value_type:\x20\x27Address\x27\x20}\x20—\x20the\x20SUBMITTED\x20VALUE\x20must\x20be\x20the\x20ORDER\x20address\x20(Progress.task\x20is\x20set\x20to\x20the\x20order\x20at\x20purchase\x20on-chain);\x20submitting\x20the\x20Progress\x20address\x20aborts\x20with\x20code\x2012\x20(zrmn-261012\x20R-HANDOVER-SLOT254)','violation':'A\x20Guard\x20bound\x20to\x20a\x20machine\x20forward\x20without\x20this\x20row\x20aborts\x20every\x20forward\x20traversal\x20once\x20an\x20order\x20drives\x20the\x20Progress;\x20the\x20table\x20is\x20frozen\x20at\x20creation,\x20so\x20the\x20path\x20strands\x20permanently.','message':'Any\x20Guard\x20bound\x20on\x20a\x20machine\x20forward\x20MUST\x20declare\x20protocol\x20slot\x20254\x20(task\x20binding)\x20as\x20a\x20b_submission\x20Address\x20row.\x20The\x20compile\x20kernel\x20auto-injects\x20the\x20row\x20for\x20edge-bound\x20guards;\x20guard\x20templates\x20ship\x20it\x20in\x20example_table.'},{'rule_id':'TASKBIND-02','slot':-0x1,'asserted_by':['allocation::assert\x20—\x20each\x20{GuardIdentifier:N}\x20allocator\x20leg\x20requires\x20a\x20passport\x20submission\x20at\x20slot\x20N\x20equal\x20to\x20payment_info.for_object\x20(aborts\x20with\x20funds\x20already\x20escrowed)'],'required_declaration':'{\x20identifier:\x20N,\x20b_submission:\x20true,\x20value_type:\x20\x27Address\x27,\x20object_type:\x20\x27Order\x27\x20}\x20for\x20EVERY\x20slot\x20N\x20named\x20by\x20a\x20GuardIdentifier\x20allocator\x20leg','violation':'A\x20static\x20Address\x20slot\x20in\x20the\x20same\x20position\x20passes\x20creation\x20but\x20fails\x20the\x20same\x20allocation\x20assertion\x20(N-11)\x20—\x20the\x20distribution\x20aborts\x20and\x20escrowed\x20funds\x20stay\x20stranded\x20(amz-7f3a2c91:\x200.98991\x20WOW).','message':'Every\x20allocator\x20{GuardIdentifier:N}\x20leg\x20MUST\x20point\x20at\x20a\x20Guard\x20table\x20slot\x20N\x20declared\x20as\x20a\x20b_submission\x20Address\x20row.\x20The\x20compile\x20kernel\x20blocks\x20publish\x20when\x20the\x20slot\x20is\x20undeclared\x20(GUARD_SLOT_UNKNOWN).'}];export const OPERATION_TYPE_CLASSIFICATION={'LOCAL_ONLY':['account_operation','local_mark_operation','local_info_operation','config_operation'],'ONCHAIN':['onchain_operations','wip_file','bridge_operation','messenger_operation'],'QUERY':['query_toolkit','onchain_table_data','onchain_events','guard2file','machineNode2file','schema_query','wowok_buildin_info'],'ENCRYPTED':['messenger_operation']};export const OPERATION_CLASS_META={'LOCAL_ONLY':{'gas':![],'confirmation_required':![],'note':'Local\x20state\x20only\x20—\x20no\x20gas,\x20no\x20confirmation\x20needed'},'ONCHAIN':{'gas':!![],'confirmation_required':!![],'note':'On-chain\x20write\x20—\x20gas\x20consumed,\x20explicit\x20user\x20confirmation\x20REQUIRED\x20before\x20execution'},'QUERY':{'gas':![],'confirmation_required':![],'note':'Read-only\x20—\x20no\x20gas,\x20no\x20confirmation\x20needed'},'ENCRYPTED':{'gas':![],'confirmation_required':![],'note':'Local\x20encryption\x20—\x20no\x20gas,\x20no\x20confirmation\x20needed'}};export function classifyTool(a){if(OPERATION_TYPE_CLASSIFICATION['ENCRYPTED']['includes'](a))return'ENCRYPTED';for(const b of['LOCAL_ONLY','ONCHAIN','QUERY']){if(OPERATION_TYPE_CLASSIFICATION[b]['includes'](a))return b;}return undefined;}export const NAMING_CONVENTIONS={'scheme':'<projectPrefix>_<type>_<purpose>_<version>','parts':{'project_prefix':{'example':'shopFunny_','purpose':'Prevents\x20cross-project\x20collisions'},'type_prefix':{'example':'machine_\x20/\x20guard_\x20/\x20service_','purpose':'Clarifies\x20object\x20type'},'purpose_suffix':{'example':'serviceWithdraw','purpose':'Describes\x20function'},'version_suffix':{'example':'_v2','purpose':'Enables\x20iteration\x20without\x20replaceExistName'}},'entry_id':{'pattern':'^<object_type>:<name>$','example':'service:myshop_service'},'replace_exist_name':{'default':![],'false_effect':'Throws\x20error\x20if\x20name\x20is\x20in\x20use\x20—\x20safe\x20default','true_effect':'Existing\x20object/account\x20with\x20the\x20same\x20name\x20is\x20suspended/unbound\x20to\x20free\x20the\x20name','account_default_forbidden':'replaceExistName:true\x20on\x20the\x20default\x20account\x20(name=\x27\x27)\x20is\x20FORBIDDEN\x20—\x20use\x20suspend()\x20explicitly','recommendation':'DISCOURAGED\x20—\x20prefer\x20versioned\x20names\x20(_v1,\x20_v2)\x20for\x20production'},'recommendations':['Always\x20provide\x20tags\x20on\x20object\x20creation\x20for\x20filtering\x20and\x20management','Use\x20names\x20as\x20primary\x20identifiers;\x20use\x20short\x20address\x20form\x20(0x1234...def)\x20only\x20for\x20display','All\x20cross-object\x20references\x20(Guard\x20tables,\x20Service\x20bindings,\x20Machine\x20forwards)\x20use\x20NAMES\x20—\x20resolved\x20per-network\x20at\x20build\x20time']};export function checkObjectReuseRules(a){const b=[];for(const c of a){if(!c['is_new'])continue;const d=OBJECT_REUSE_RULES['find'](e=>e['object_type']===c['object_type']);if(!d)continue;(d['recommendation']==='always_reuse'||d['recommendation']==='strongly_recommended')&&b['push']({'rule_id':d['rule_id'],'severity':d['recommendation']==='always_reuse'?'warn':'info','message':'Creating\x20NEW\x20'+c['object_type']+(c['name']?'\x20\x22'+c['name']+'\x22':'')+'\x20—\x20reuse\x20is\x20'+d['recommendation']+':\x20'+d['reason']+'.\x20'+d['ask_user']});}return b;}export function checkImmutabilityRules(a){const b=[];for(const c of a){const d=IMMUTABILITY_RULES['find'](e=>e['object_type']===c['object_type']&&e['trigger']===c['trigger']);if(!d)continue;b['push']({'rule_id':d['rule_id'],'severity':'warn','message':''+c['object_type']+(c['name']?'\x20\x22'+c['name']+'\x22':'')+'\x20'+c['trigger']+':\x20'+d['message']+'.\x20Immutable:\x20['+d['immutable_fields']['join'](',\x20')+']'+(d['mutable_after']?'.\x20Still\x20mutable:\x20['+d['mutable_after']['join'](',\x20')+']':'')});}return b;}export const SAFETY_RULES_VERSION=0x3;
@@ -15,6 +15,7 @@ export interface ModeAllocatorRow {
15
15
  value?: string | number;
16
16
  value_from?: string;
17
17
  value_from_complement?: string;
18
+ repeat_from?: string;
18
19
  fix?: string | number;
19
20
  fix_from?: string;
20
21
  guard_key?: string;