@wowok/agent-mcp 3.0.2 → 3.0.4
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.
- package/LICENSE +0 -3
- package/dist/harness/recover.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/knowledge/account-marks.js +1 -1
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/flywheel-loop.d.ts +4 -52
- package/dist/knowledge/flywheel-loop.js +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/index.d.ts +2 -225
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/order-ledger.d.ts +2 -2
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/order-puzzle.d.ts +4 -4
- package/dist/knowledge/order-puzzle.js +1 -1
- package/dist/knowledge/order-risk.d.ts +1 -0
- package/dist/knowledge/order-risk.js +1 -1
- package/dist/knowledge/order-templates.d.ts +1 -1
- package/dist/knowledge/order-templates.js +1 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-risk.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workspace-lists.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/context-assembly.d.ts +3 -1
- package/dist/playbooks/service-build/context-assembly.js +1 -1
- package/dist/playbooks/service-build/machine-nodes.d.ts +2 -0
- package/dist/playbooks/service-build/machine-nodes.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.d.ts +7 -0
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/review/machine.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/call/allocation.d.ts +5 -0
- package/dist/schema/call/arbitration.d.ts +5 -0
- package/dist/schema/call/base.d.ts +17 -3
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +29 -0
- package/dist/schema/call/bridge.js +1 -1
- package/dist/schema/call/contact.d.ts +5 -0
- package/dist/schema/call/demand.d.ts +5 -0
- package/dist/schema/call/error-codes.d.ts +2 -0
- package/dist/schema/call/error-codes.js +1 -0
- package/dist/schema/call/guard.d.ts +19 -4
- package/dist/schema/call/machine.d.ts +10 -0
- package/dist/schema/call/order.d.ts +5 -0
- package/dist/schema/call/payment.d.ts +5 -0
- package/dist/schema/call/permission.d.ts +5 -0
- package/dist/schema/call/personal.d.ts +5 -0
- package/dist/schema/call/progress.d.ts +5 -0
- package/dist/schema/call/proof.d.ts +10 -0
- package/dist/schema/call/repository.d.ts +5 -0
- package/dist/schema/call/reward.d.ts +5 -0
- package/dist/schema/call/semantic.d.ts +9 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +5 -0
- package/dist/schema/call/treasury.d.ts +5 -0
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +3 -3
- package/dist/schema/goal/planning.d.ts +2 -2
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +4 -4
- package/dist/schema/industry-pack/modes.d.ts +4 -4
- package/dist/schema/interaction/index.d.ts +34 -0
- package/dist/schema/interaction/index.js +1 -0
- package/dist/schema/local/index.d.ts +558 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +31 -25
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +91 -1
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +2 -2
- package/dist/schema/query/bi.d.ts +0 -4
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/trust/index.d.ts +3 -3
- package/dist/schema/workspace/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +4 -0
- package/dist/schemas/ask_user.output.json +54 -0
- package/dist/schemas/ask_user.schema.json +78 -0
- package/dist/schemas/bridge_operation.output.json +4 -0
- package/dist/schemas/bridge_operation.schema.json +50 -5
- package/dist/schemas/guard2file.schema.json +10 -1
- package/dist/schemas/index.json +13 -1
- package/dist/schemas/local_history_operation.output.json +1458 -0
- package/dist/schemas/local_history_operation.schema.json +105 -0
- package/dist/schemas/local_info_operation.output.json +4 -0
- package/dist/schemas/local_mark_operation.output.json +4 -0
- package/dist/schemas/machineNode2file.schema.json +10 -1
- package/dist/schemas/messenger_operation.output.json +8 -0
- package/dist/schemas/messenger_operation.schema.json +8 -0
- package/dist/schemas/onchain_events.output.json +2 -2
- package/dist/schemas/onchain_operations.output.json +4 -1
- package/dist/schemas/onchain_operations.schema.json +210 -28
- package/dist/schemas/onchain_operations_allocation.schema.json +10 -1
- package/dist/schemas/onchain_operations_arbitration.schema.json +10 -1
- package/dist/schemas/onchain_operations_contact.schema.json +10 -1
- package/dist/schemas/onchain_operations_demand.schema.json +10 -1
- package/dist/schemas/onchain_operations_gen_passport.schema.json +10 -1
- package/dist/schemas/onchain_operations_gen_proof.schema.json +10 -1
- package/dist/schemas/onchain_operations_guard.schema.json +40 -11
- package/dist/schemas/onchain_operations_machine.schema.json +10 -1
- package/dist/schemas/onchain_operations_order.schema.json +10 -1
- package/dist/schemas/onchain_operations_payment.schema.json +10 -1
- package/dist/schemas/onchain_operations_permission.schema.json +10 -1
- package/dist/schemas/onchain_operations_personal.schema.json +10 -1
- package/dist/schemas/onchain_operations_progress.schema.json +10 -1
- package/dist/schemas/onchain_operations_proof.schema.json +10 -1
- package/dist/schemas/onchain_operations_repository.schema.json +10 -1
- package/dist/schemas/onchain_operations_reward.schema.json +10 -1
- package/dist/schemas/onchain_operations_service.schema.json +10 -1
- package/dist/schemas/onchain_operations_treasury.schema.json +10 -1
- package/dist/schemas/query_toolkit.output.json +17 -16
- package/dist/schemas/query_toolkit.schema.json +1 -1
- package/dist/tools/handlers/ask-user.d.ts +3 -0
- package/dist/tools/handlers/ask-user.js +1 -0
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/local.d.ts +1 -0
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.js +1 -1
- package/dist/tools/registry/bridge.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/interaction.d.ts +2 -0
- package/dist/tools/registry/interaction.js +1 -0
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/monitor.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/types.d.ts +7 -1
- package/dist/tools/wrap.d.ts +3 -3
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
- package/dist/knowledge/allocation-confirm.d.ts +0 -115
- package/dist/knowledge/allocation-confirm.js +0 -1
- package/dist/knowledge/allocation-context.d.ts +0 -58
- package/dist/knowledge/allocation-context.js +0 -1
- package/dist/knowledge/allocation-translation.d.ts +0 -72
- package/dist/knowledge/allocation-translation.js +0 -1
- package/dist/knowledge/arb-confirm.d.ts +0 -28
- package/dist/knowledge/arb-confirm.js +0 -1
- package/dist/knowledge/arb-translation.d.ts +0 -48
- package/dist/knowledge/arb-translation.js +0 -1
- package/dist/knowledge/arbitration-confirm.d.ts +0 -135
- package/dist/knowledge/arbitration-confirm.js +0 -1
- package/dist/knowledge/arbitration-context.d.ts +0 -81
- package/dist/knowledge/arbitration-context.js +0 -1
- package/dist/knowledge/arbitration-translation.d.ts +0 -91
- package/dist/knowledge/arbitration-translation.js +0 -1
- package/dist/knowledge/bridge-confirm.d.ts +0 -26
- package/dist/knowledge/bridge-confirm.js +0 -1
- package/dist/knowledge/bridge-translation.d.ts +0 -37
- package/dist/knowledge/bridge-translation.js +0 -1
- package/dist/knowledge/contact-confirm.d.ts +0 -27
- package/dist/knowledge/contact-confirm.js +0 -1
- package/dist/knowledge/contact-translation.d.ts +0 -39
- package/dist/knowledge/contact-translation.js +0 -1
- package/dist/knowledge/demand-confirm.d.ts +0 -32
- package/dist/knowledge/demand-confirm.js +0 -1
- package/dist/knowledge/demand-context.d.ts +0 -17
- package/dist/knowledge/demand-context.js +0 -1
- package/dist/knowledge/demand-ledger.d.ts +0 -26
- package/dist/knowledge/demand-ledger.js +0 -1
- package/dist/knowledge/demand-puzzle.d.ts +0 -29
- package/dist/knowledge/demand-puzzle.js +0 -1
- package/dist/knowledge/demand-templates.d.ts +0 -12
- package/dist/knowledge/demand-templates.js +0 -1
- package/dist/knowledge/demand-translation.d.ts +0 -55
- package/dist/knowledge/demand-translation.js +0 -1
- package/dist/knowledge/examples-scanner-cli.d.ts +0 -1
- package/dist/knowledge/examples-scanner-cli.js +0 -1
- package/dist/knowledge/examples-scanner.d.ts +0 -121
- package/dist/knowledge/examples-scanner.js +0 -1
- package/dist/knowledge/glossary.d.ts +0 -18
- package/dist/knowledge/glossary.js +0 -1
- package/dist/knowledge/guard-bytecode-spec.d.ts +0 -82
- package/dist/knowledge/guard-bytecode-spec.js +0 -1
- package/dist/knowledge/guard-confirm.d.ts +0 -86
- package/dist/knowledge/guard-confirm.js +0 -1
- package/dist/knowledge/immutability.d.ts +0 -11
- package/dist/knowledge/immutability.js +0 -1
- package/dist/knowledge/machine-confirm.d.ts +0 -102
- package/dist/knowledge/machine-confirm.js +0 -1
- package/dist/knowledge/machine-context.d.ts +0 -160
- package/dist/knowledge/machine-context.js +0 -1
- package/dist/knowledge/machine-render.d.ts +0 -41
- package/dist/knowledge/machine-render.js +0 -1
- package/dist/knowledge/mcp-schema-audit-cli.d.ts +0 -1
- package/dist/knowledge/mcp-schema-audit-cli.js +0 -1
- package/dist/knowledge/mcp-schema-audit.d.ts +0 -91
- package/dist/knowledge/mcp-schema-audit.js +0 -1
- package/dist/knowledge/messenger-guard-guidance.d.ts +0 -17
- package/dist/knowledge/messenger-guard-guidance.js +0 -1
- package/dist/knowledge/order-confirm.d.ts +0 -115
- package/dist/knowledge/order-confirm.js +0 -1
- package/dist/knowledge/order-context.d.ts +0 -66
- package/dist/knowledge/order-context.js +0 -1
- package/dist/knowledge/order-translation.d.ts +0 -78
- package/dist/knowledge/order-translation.js +0 -1
- package/dist/knowledge/overrides-loader.d.ts +0 -13
- package/dist/knowledge/overrides-loader.js +0 -1
- package/dist/knowledge/passport-confirm.d.ts +0 -130
- package/dist/knowledge/passport-confirm.js +0 -1
- package/dist/knowledge/passport-context.d.ts +0 -59
- package/dist/knowledge/passport-context.js +0 -1
- package/dist/knowledge/passport-puzzle.d.ts +0 -108
- package/dist/knowledge/passport-puzzle.js +0 -1
- package/dist/knowledge/passport-risk.d.ts +0 -70
- package/dist/knowledge/passport-risk.js +0 -1
- package/dist/knowledge/passport-translation.d.ts +0 -68
- package/dist/knowledge/passport-translation.js +0 -1
- package/dist/knowledge/payment-confirm.d.ts +0 -26
- package/dist/knowledge/payment-confirm.js +0 -1
- package/dist/knowledge/payment-translation.d.ts +0 -37
- package/dist/knowledge/payment-translation.js +0 -1
- package/dist/knowledge/permission-confirm.d.ts +0 -110
- package/dist/knowledge/permission-confirm.js +0 -1
- package/dist/knowledge/permission-context.d.ts +0 -69
- package/dist/knowledge/permission-context.js +0 -1
- package/dist/knowledge/permission-translation.d.ts +0 -57
- package/dist/knowledge/permission-translation.js +0 -1
- package/dist/knowledge/personal-confirm.d.ts +0 -29
- package/dist/knowledge/personal-confirm.js +0 -1
- package/dist/knowledge/personal-translation.d.ts +0 -37
- package/dist/knowledge/personal-translation.js +0 -1
- package/dist/knowledge/process-model.d.ts +0 -14
- package/dist/knowledge/process-model.js +0 -1
- package/dist/knowledge/progress-confirm.d.ts +0 -108
- package/dist/knowledge/progress-confirm.js +0 -1
- package/dist/knowledge/progress-context.d.ts +0 -123
- package/dist/knowledge/progress-context.js +0 -1
- package/dist/knowledge/progress-translation.d.ts +0 -52
- package/dist/knowledge/progress-translation.js +0 -1
- package/dist/knowledge/proof-confirm.d.ts +0 -31
- package/dist/knowledge/proof-confirm.js +0 -1
- package/dist/knowledge/proof-context.d.ts +0 -17
- package/dist/knowledge/proof-context.js +0 -1
- package/dist/knowledge/proof-ledger.d.ts +0 -34
- package/dist/knowledge/proof-ledger.js +0 -1
- package/dist/knowledge/proof-puzzle.d.ts +0 -35
- package/dist/knowledge/proof-puzzle.js +0 -1
- package/dist/knowledge/proof-templates.d.ts +0 -22
- package/dist/knowledge/proof-templates.js +0 -1
- package/dist/knowledge/proof-translation.d.ts +0 -52
- package/dist/knowledge/proof-translation.js +0 -1
- package/dist/knowledge/registrar-confirm.d.ts +0 -26
- package/dist/knowledge/registrar-confirm.js +0 -1
- package/dist/knowledge/registrar-translation.d.ts +0 -37
- package/dist/knowledge/registrar-translation.js +0 -1
- package/dist/knowledge/repository-confirm.d.ts +0 -40
- package/dist/knowledge/repository-confirm.js +0 -1
- package/dist/knowledge/repository-context.d.ts +0 -12
- package/dist/knowledge/repository-context.js +0 -1
- package/dist/knowledge/repository-ledger.d.ts +0 -25
- package/dist/knowledge/repository-ledger.js +0 -1
- package/dist/knowledge/repository-puzzle.d.ts +0 -30
- package/dist/knowledge/repository-puzzle.js +0 -1
- package/dist/knowledge/repository-templates.d.ts +0 -14
- package/dist/knowledge/repository-templates.js +0 -1
- package/dist/knowledge/repository-translation.d.ts +0 -58
- package/dist/knowledge/repository-translation.js +0 -1
- package/dist/knowledge/resource-confirm.d.ts +0 -25
- package/dist/knowledge/resource-confirm.js +0 -1
- package/dist/knowledge/resource-translation.d.ts +0 -37
- package/dist/knowledge/resource-translation.js +0 -1
- package/dist/knowledge/reward-confirm.d.ts +0 -116
- package/dist/knowledge/reward-confirm.js +0 -1
- package/dist/knowledge/reward-context.d.ts +0 -127
- package/dist/knowledge/reward-context.js +0 -1
- package/dist/knowledge/reward-translation.d.ts +0 -58
- package/dist/knowledge/reward-translation.js +0 -1
- package/dist/knowledge/service-confirm.d.ts +0 -161
- package/dist/knowledge/service-confirm.js +0 -1
- package/dist/knowledge/service-context.d.ts +0 -66
- package/dist/knowledge/service-context.js +0 -1
- package/dist/knowledge/service-translation.d.ts +0 -103
- package/dist/knowledge/service-translation.js +0 -1
- package/dist/knowledge/treasury-confirm.d.ts +0 -133
- package/dist/knowledge/treasury-confirm.js +0 -1
- package/dist/knowledge/treasury-context.d.ts +0 -64
- package/dist/knowledge/treasury-context.js +0 -1
- package/dist/knowledge/treasury-translation.d.ts +0 -78
- package/dist/knowledge/treasury-translation.js +0 -1
- package/dist/knowledge/util-confirm.d.ts +0 -24
- package/dist/knowledge/util-confirm.js +0 -1
- package/dist/knowledge/util-translation.d.ts +0 -39
- package/dist/knowledge/util-translation.js +0 -1
- package/dist/loop-engineering/aggregate.d.ts +0 -50
- package/dist/loop-engineering/aggregate.js +0 -1
- package/dist/loop-engineering/context-collect.d.ts +0 -7
- package/dist/loop-engineering/context-collect.js +0 -1
- package/dist/loop-engineering/diagnose.d.ts +0 -22
- package/dist/loop-engineering/diagnose.js +0 -1
- package/dist/loop-engineering/improve.d.ts +0 -55
- package/dist/loop-engineering/improve.js +0 -1
- package/dist/loop-engineering/index.d.ts +0 -4
- package/dist/loop-engineering/index.js +0 -1
- package/dist/loop-engineering/pipeline.d.ts +0 -17
- package/dist/loop-engineering/pipeline.js +0 -1
- package/dist/schema/utils/object-type-utils.d.ts +0 -12
- package/dist/schema/utils/object-type-utils.js +0 -1
- package/dist/telemetry/index.d.ts +0 -19
- package/dist/telemetry/index.js +0 -1
- package/dist/telemetry/redact.d.ts +0 -2
- package/dist/telemetry/redact.js +0 -1
- package/dist/telemetry/storage.d.ts +0 -8
- package/dist/telemetry/storage.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SEMANTIC_TO_MACHINE_RULES=[{'id':'P-M-SEQ','pattern_name':'Sequential\x20Execution','category':'execution','semantic_intent':'Single\x20actor\x20advances\x20workflow\x20one\x20step\x20at\x20a\x20time.\x20Each\x20Pair\x20has\x20threshold=1\x20with\x20a\x20single\x20Forward\x20weight=1.','match_keywords':['sequential','linear','one\x20step\x20at\x20a\x20time'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Each\x20Pair:\x20{\x20threshold:\x201,\x20forwards:\x20[{\x20name,\x20weight:\x201,\x20namedOperator\x20|\x20permissionIndex\x20}]\x20}'},'constraints':['Each\x20Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex','weight\x20>\x200\x20(typically\x201)','prev_node\x20references\x20must\x20form\x20a\x20valid\x20DAG\x20(no\x20cycles)'],'example':{'pair':{'prev_node':'NodeA','next_node':'NodeB','threshold':0x1,'forwards':[{'name':'Advance','weight':0x1,'named_operator':''}]}}},{'id':'P-M-AND','pattern_name':'Parallel\x20AND\x20(Dual-Signature\x20Consensus)','category':'execution','semantic_intent':'Multiple\x20parties\x20must\x20ALL\x20contribute\x20to\x20advance.\x20Pair\x20threshold=N\x20with\x20N\x20DISTINCT\x20Forwards\x20(weight=1\x20each)\x20—\x20one\x20forward\x20per\x20contributing\x20operator.\x20'+'A\x20single\x20forward\x20CANNOT\x20be\x20executed\x20by\x20two\x20different\x20people:\x20each\x20forward\x20is\x20single-operator-locked\x20by\x20the\x20first\x20account\x20that\x20accomplishes\x20it\x20'+'(progress.move\x20session_accomplish_imp;\x20a\x20second\x20operator\x20re-executing\x20the\x20same\x20accomplished\x20forward\x20aborts\x20E_NOT_THE_HOLDER,\x20and\x20the\x20weight\x20is\x20counted\x20only\x20once).\x20'+'So\x20N\x20operators\x20cooperating\x20on\x20a\x20threshold-N\x20transition\x20MUST\x20each\x20have\x20their\x20own\x20forward\x20in\x20the\x20Pair.','match_keywords':['and','all','dual-sig','both\x20confirm','both\x20must'],'schema_elements':{'threshold':0x2,'forward_count':0x2,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20N,\x20forwards:\x20[{\x20weight:\x201,\x20namedOperator:\x20\x27\x27\x20},\x20{\x20weight:\x201,\x20permissionIndex:\x202\x20}]\x20}'},'constraints':['threshold\x20must\x20equal\x20the\x20number\x20of\x20required\x20Forwards','Each\x20contributing\x20operator\x20needs\x20a\x20DISTINCT\x20Forward\x20—\x20never\x20reuse\x20one\x20forward\x20for\x20two\x20people','Each\x20Forward\x20must\x20have\x20a\x20distinct\x20permission\x20model\x20(no\x20two\x20identical)','A\x20forward\x20is\x20locked\x20by\x20its\x20first\x20operator:\x20once\x20accomplished\x20it\x20contributes\x20its\x20weight\x20once\x20and\x20re-execution\x20by\x20others\x20aborts\x20E_NOT_THE_HOLDER','If\x20either\x20party\x20fails\x20to\x20sign,\x20workflow\x20stalls\x20—\x20consider\x20adding\x20timeout\x20Guard'],'example':{'pair':{'prev_node':'Initiated','next_node':'Approved','threshold':0x2,'forwards':[{'name':'CustomerApprove','weight':0x1,'named_operator':''},{'name':'MerchantApprove','weight':0x1,'permission_index':0x2}]}}},{'id':'P-M-OR','pattern_name':'Parallel\x20OR\x20(Any-One\x20Execution)','category':'execution','semantic_intent':'Any\x20one\x20of\x20multiple\x20paths\x20can\x20advance\x20the\x20workflow.\x20Multiple\x20Pairs,\x20each\x20threshold=1.','match_keywords':['or','any','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Multiple\x20Pairs\x20from\x20same\x20prev_node,\x20each\x20with\x20threshold=1'},'constraints':['Distinct\x20next_node\x20for\x20each\x20Pair\x20(or\x20distinct\x20Forward)','If\x20targets\x20are\x20different\x20nodes,\x20this\x20becomes\x20COMPETING\x20topology','If\x20targets\x20are\x20same\x20node,\x20alternative\x20paths\x20converge\x20(FORKMERGE)'],'example':{'pairs':[{'prev_node':'Choice','next_node':'PathA','threshold':0x1,'forwards':[{'name':'ChooseA','weight':0x1,'named_operator':''}]},{'prev_node':'Choice','next_node':'PathB','threshold':0x1,'forwards':[{'name':'ChooseB','weight':0x1,'named_operator':''}]}]}},{'id':'P-M-VOTE','pattern_name':'Weighted\x20Voting','category':'execution','semantic_intent':'Multiple\x20parties\x20vote\x20with\x20unequal\x20weights.\x20threshold=100,\x20varied\x20weights\x20(e.g.\x2060+40).\x20'+'Guard\x20extracts\x20weight\x20dynamically\x20from\x20Arbitration\x20object.','match_keywords':['vote','weight','stakeholder'],'schema_elements':{'threshold':0x64,'forward_count':'dynamic','permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20100,\x20forwards:\x20[{\x20weight:\x2060,\x20permissionIndex:\x202,\x20guard:\x20arb_voting_guard\x20},\x20{\x20weight:\x208,\x20namedOperator:\x20\x27member\x27,\x20guard:\x20arb_voting_guard\x20}]\x20}'},'constraints':['Guard\x20MUST\x20check\x20arb.voted\x20has\x20[Signer]\x20to\x20prevent\x20double-voting\x20(R-X1-14\x20CRITICAL)','Weight\x20is\x20query-derived\x20from\x20Arbitration\x20object\x20(not\x20hardcoded\x20in\x20Forward)','Competing\x20Pair\x20often\x20added:\x20Approved\x20vs\x20Rejected\x20(timeout)\x20—\x20first-wins','Forward\x20weight\x20field\x20is\x20just\x20session\x20counter;\x20actual\x20weight\x20from\x20Guard'],'example':{'pair':{'prev_node':'Voting','next_node':'Approved','threshold':0x64,'forwards':[{'name':'ChiefVote','weight':0x3c,'permission_index':0x2,'guard':'arb_voting_guard'},{'name':'MemberVote','weight':0x8,'named_operator':'member','guard':'arb_voting_guard'}]}}},{'id':'P-M-HYBRID','pattern_name':'Hybrid\x20Mode\x20(Key\x20Party\x20Required\x20+\x20Others\x20Optional)','category':'execution','semantic_intent':'One\x20key\x20party\x20must\x20contribute,\x20others\x20are\x20optional.\x20threshold=5\x20with\x20mixed\x20weights\x20(3+1+1).','match_keywords':['hybrid','mixed','key\x20party'],'schema_elements':{'threshold':0x5,'forward_count':0x3,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x205,\x20forwards:\x20[{\x20weight:\x203,\x20permissionIndex:\x202\x20(key)\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role1\x27\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role2\x27\x20}]\x20}'},'constraints':['Key\x20party\x27s\x20weight\x20must\x20alone\x20be\x20insufficient\x20(otherwise\x20optional\x20parties\x20are\x20meaningless)','Total\x20weight\x20of\x20all\x20Forwards\x20must\x20be\x20>=\x20threshold','Each\x20Forward\x20must\x20have\x20distinct\x20permission\x20model'],'example':{'pair':{'prev_node':'Review','next_node':'Approved','threshold':0x5,'forwards':[{'name':'ManagerApprove','weight':0x3,'permission_index':0x2},{'name':'EngineerApprove','weight':0x1,'named_operator':'engineer'},{'name':'QAApprove','weight':0x1,'named_operator':'qa'}]}}},{'id':'P-M-LINEAR','pattern_name':'Linear\x20Flow\x20(No\x20Branches)','category':'topology','semantic_intent':'Workflow\x20progresses\x20in\x20a\x20straight\x20line\x20with\x20no\x20branches.','match_keywords':['linear','straight','no\x20branches'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Chain\x20of\x20Pairs:\x20A->B->C->D->...->Terminal'},'constraints':['Exactly\x20one\x20entry\x20Pair\x20(prev_node=\x27\x27)','Exactly\x20one\x20terminal\x20node\x20(no\x20outgoing\x20Pairs)','Each\x20non-terminal\x20node\x20has\x20exactly\x20one\x20outgoing\x20Pair'],'example':{'topology':'Entry\x20->\x20A\x20->\x20B\x20->\x20C\x20->\x20Terminal'}},{'id':'P-M-FORKMERGE','pattern_name':'Fork-Merge\x20(Parallel\x20Branches\x20Converging)','category':'topology','semantic_intent':'Main\x20flow\x20forks\x20into\x20multiple\x20parallel\x20branches,\x20then\x20merges\x20back\x20to\x20main\x20flow.','match_keywords':['fork','merge','parallel'],'schema_elements':{'threshold':0x1,'forward_count':'dynamic','permission_model':'mixed','pair_count':'dynamic','structure':'ForkNode\x20->\x20{BranchA,\x20BranchB}\x20->\x20MergeNode'},'constraints':['Multiple\x20Pairs\x20from\x20ForkNode\x20(one\x20per\x20branch)','All\x20branches\x20must\x20eventually\x20reach\x20MergeNode','MergeNode\x20has\x20multiple\x20incoming\x20Pairs\x20(merge\x20point)','Threshold\x20at\x20MergeNode\x20determines\x20if\x20all\x20branches\x20must\x20complete\x20or\x20just\x20some'],'example':{'topology':'ForkNode\x20->\x20BranchA\x20->\x20MergeNode;\x20ForkNode\x20->\x20BranchB\x20->\x20MergeNode'}},{'id':'P-M-COMPETING','pattern_name':'Competing\x20Pairs\x20(Mutually\x20Exclusive\x20Branches)','category':'topology','semantic_intent':'Multiple\x20Pairs\x20from\x20same\x20node\x20compete;\x20first\x20Pair\x20to\x20meet\x20threshold\x20wins,\x20others\x20abandoned.','match_keywords':['competing','exclusive','race'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Same\x20prev_node\x20->\x20multiple\x20next_nodes\x20(each\x20Pair\x20independent)'},'constraints':['Mutually\x20exclusive\x20—\x20only\x20one\x20Pair\x20can\x20complete\x20per\x20session','First\x20Pair\x20to\x20reach\x20threshold\x20wins','Other\x20incomplete\x20Pairs\x20are\x20abandoned','Verify\x20no\x20dead\x20branches\x20(a\x20Pair\x20that\x20always\x20loses\x20to\x20another)'],'example':{'topology':'Shipped\x20->\x20Received;\x20Shipped\x20->\x20Lost;\x20Shipped\x20->\x20Return\x20(first\x20wins)'}},{'id':'P-M-PERM-SINGLE','pattern_name':'Single\x20Permission','category':'permission','semantic_intent':'Forward\x20uses\x20only\x20one\x20permission\x20type:\x20namedOperator\x20OR\x20permissionIndex.','match_keywords':['single\x20permission'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27\x20|\x20permissionIndex:\x20<index>\x20}\x20(only\x20one\x20set)'},'constraints':['Either\x20namedOperator\x20or\x20permissionIndex\x20is\x20set\x20(not\x20both)','Empty\x20namedOperator=\x27\x27\x20grants\x20OrderHolder\x20(order\x20owner\x20+\x20agents)'],'example':{'forward':{'name':'Ship','weight':0x1,'permission_index':0x2}}},{'id':'P-M-PERM-MIXED','pattern_name':'Mixed\x20Permission\x20(Either-Or)','category':'permission','semantic_intent':'Forward\x20allows\x20EITHER\x20permission\x20to\x20execute\x20(internal\x20staff\x20OR\x20external\x20roles).','match_keywords':['mixed\x20permission','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'mixed','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27,\x20permissionIndex:\x20<index>\x20}\x20(both\x20set)'},'constraints':['Both\x20namedOperator\x20and\x20permissionIndex\x20are\x20set','Executor\x20needs\x20EITHER\x20permission\x20—\x20passing\x20either\x20check\x20is\x20sufficient','Use\x20case:\x20allow\x20internal\x20staff\x20OR\x20external\x20role\x20to\x20execute\x20the\x20same\x20Forward'],'example':{'forward':{'name':'Confirm','weight':0x1,'named_operator':'auditor','permission_index':0x2}}},{'id':'P-M-CROSS-MACHINE','pattern_name':'Cross-Machine\x20Dependency','category':'integration','semantic_intent':'Machine\x20B\x27s\x20Forward\x20Guard\x20queries\x20Machine\x20A\x27s\x20Progress\x20to\x20verify\x20upstream\x20completion.','match_keywords':['cross-machine','supply\x20chain','upstream'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20guard:\x20\x27upstream_progress_guard\x27,\x20retained_submission:\x20\x27upstream_progress_id\x27\x20}'},'constraints':['Machine\x20A\x20MUST\x20be\x20published\x20before\x20Machine\x20B\x20(dependency\x20order)','Guard\x20uses\x20convert_witness=100\x20to\x20convert\x20submitted\x20Order/Progress\x20ID\x20into\x20queryable\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Dependency\x20verification:\x20indirect\x20via\x20progress::new\x20->\x20assert_published\x20(see\x2006\x20§14.6)','retained_submission\x20stores\x20upstream\x20Progress\x20ID\x20for\x20audit'],'example':{'forward':{'name':'VerifyUpstream','weight':0x1,'permission_index':0x2,'guard':'upstream_progress_guard','retained_submission':'upstream_progress_id'}}},{'id':'P-M-ALLOCATION-INTEGRATED','pattern_name':'Allocation-Integrated\x20Terminal','category':'integration','semantic_intent':'Terminal\x20node\x20triggers\x20Allocator\x20to\x20distribute\x20funds.\x20Allocation\x20independent\x20of\x20Machine\x20flow.','match_keywords':['allocation','fund\x20distribution','terminal'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Terminal\x20node\x20->\x20Allocator\x20entry\x20(configured\x20on\x20Service\x20order_allocators)'},'constraints':['Terminal\x20node\x20must\x20be\x20referenced\x20in\x20Service\x20order_allocators','Allocator\x20Guard\x20verifies\x20progress.current\x20==\x20terminal_node_name','sharing.who\x20determines\x20fund\x20recipient\x20(Entity\x20/\x20OrderHolder\x20/\x20etc.)','Multiple\x20Allocators\x20can\x20fire\x20on\x20different\x20terminal\x20nodes'],'example':{'terminal_node':'Complete','allocator':{'trigger_node':'Complete','sharing_who':'Entity','recipient':'merchant_treasury'}}}];export const NODE_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Node\x20name\x20(unique\x20identifier)','constraint':'<=64\x20BCS\x20bytes,\x20globally\x20unique'},{'field':'description','type':'string','required':![],'semantic':'Human-readable\x20description','constraint':'<=MAX_DESCRIPTION_LENGTH'},{'field':'b_pause','type':'boolean','required':![],'semantic':'Whether\x20node\x20is\x20paused\x20(blocks\x20execution)','constraint':'Default\x20false'},{'field':'b_submission','type':'boolean','required':![],'semantic':'Whether\x20submission\x20is\x20allowed\x20at\x20this\x20node','constraint':'Used\x20for\x20retained_submission\x20storage'}];export const PAIR_FIELD_EXPLANATIONS=[{'field':'prev_node','type':'string','required':!![],'semantic':'Source\x20node\x20(empty\x20\x27\x27\x20=\x20entry\x20point)','constraint':'Must\x20reference\x20existing\x20node\x20or\x20\x27\x27'},{'field':'next_node','type':'string','required':!![],'semantic':'Target\x20node','constraint':'Must\x20reference\x20existing\x20node'},{'field':'threshold','type':'number','required':!![],'semantic':'Required\x20total\x20forward\x20weight\x20to\x20advance','constraint':'>=0,\x20typically\x201-100'},{'field':'forwards','type':'array<Forward>','required':!![],'semantic':'List\x20of\x20Forwards\x20in\x20this\x20Pair','constraint':'1-20\x20Forwards\x20per\x20Pair'}];export const FORWARD_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Forward\x20name\x20(unique\x20within\x20Pair)','constraint':'<=64\x20BCS\x20bytes,\x20unique\x20within\x20Pair'},{'field':'weight','type':'number','required':!![],'semantic':'Weight\x20contribution\x20to\x20threshold','constraint':'>0,\x20typically\x201-100'},{'field':'namedOperator','type':'string\x20(optional)','required':![],'semantic':'Named\x20operator\x20role\x20(\x27\x27\x20=\x20OrderHolder)','constraint':'Optional,\x20but\x20Forward\x20needs\x20at\x20least\x20one\x20permission'},{'field':'permissionIndex','type':'number\x20(optional)','required':![],'semantic':'Permission\x20index\x20(custom\x20or\x20builtin)','constraint':'<\x20Permission.indices.length'},{'field':'guard','type':'address\x20(optional)','required':![],'semantic':'Guard\x20object\x20address\x20for\x20validation','constraint':'Must\x20be\x20CREATE-only\x20Guard,\x20already\x20created'},{'field':'retained_submission','type':'string\x20(optional)','required':![],'semantic':'Key\x20for\x20storing\x20submitted\x20values\x20in\x20history','constraint':'Uniquely\x20located\x20by\x20(current_node,\x20next_node,\x20forward_name)'}];export function identifyExecutionMode(a){const {threshold:b,forwards:c}=a,d=c['length'];if(b===0x1&&d===0x1)return'P-M-SEQ\x20(Sequential)';if(b===d&&d>=0x2){const e=c['some'](g=>g['permission_index']!==undefined)&&c['some'](g=>g['named_operator']!==undefined);return e?'P-M-AND\x20(Parallel\x20AND\x20/\x20Dual-Signature)':'P-M-AND\x20(Parallel\x20AND)';}if(b===0x64&&c['some'](g=>g['weight']<0x32&&g['weight']>0x0))return'P-M-VOTE\x20(Weighted\x20Voting)';if(b<d&&b>0x1)return'P-M-HYBRID\x20(Hybrid\x20Mode)';if(b===0x1&&d>=0x1)return'P-M-OR\x20(Parallel\x20OR)\x20or\x20P-M-SEQ\x20(if\x20single\x20Forward)';return'Unknown\x20(manual\x20review\x20needed)';}export function identifyTopology(a){const b=new Map(),c=new Map();for(const d of a){if(!b['has'](d['prev_node']))b['set'](d['prev_node'],[]);b['get'](d['prev_node'])['push'](d['next_node']);if(!c['has'](d['next_node']))c['set'](d['next_node'],[]);c['get'](d['next_node'])['push'](d['prev_node']);}for(const [e,f]of b){if(f['length']>0x1&&e!=='')return'P-M-COMPETING\x20(Competing\x20Pairs)';}for(const [g,h]of c){if(h['length']>0x1)return'P-M-FORKMERGE\x20(Fork-Merge)';}return'P-M-LINEAR\x20(Linear\x20Flow)';}export function matchSemanticPattern(a){const b=a['toLowerCase']();return SEMANTIC_TO_MACHINE_RULES['find'](c=>c['match_keywords']['some'](d=>b['includes'](d['toLowerCase']())));}export function explainForwardPermission(a){const b=a['named_operator']!==undefined&&a['named_operator']!==null,c=a['permission_index']!==undefined&&a['permission_index']!==null;if(b&&c){const d=a['named_operator']===''?'OrderHolder':'role\x20\x22'+a['named_operator']+'\x22';return'Mixed\x20permission:\x20'+d+'\x20OR\x20Permission\x20index\x20'+a['permission_index']+'\x20(either\x20sufficient)';}if(b){if(a['named_operator']==='')return'OrderHolder\x20(order\x20owner\x20+\x20agents)';return'NamedOperator\x20role\x20\x22'+a['named_operator']+'\x22';}if(c)return'Permission\x20index\x20'+a['permission_index'];return'❌\x20INVALID:\x20no\x20permission\x20set\x20(Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex)';}export const MACHINE_CONSTRAINT_RULES=[{'id':'MC-C-01','name':'Node\x20count\x20<=\x20'+MAX_NODE_COUNT,'description':'MAX_NODE_COUNT','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-02','name':'Pair\x20count\x20per\x20node\x20<=\x20'+MAX_NODE_PAIR_COUNT,'description':'MAX_NODE_PAIR_COUNT','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-03','name':'Forward\x20count\x20per\x20Pair\x20<=\x20'+MAX_FORWARD_COUNT,'description':'MAX_FORWARD_COUNT','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-04','name':'Node\x20name\x20unique','description':'name\x20globally\x20unique','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-05','name':'Forward\x20name\x20unique\x20within\x20Pair','description':'name\x20unique\x20within\x20Pair','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-06','name':'Node\x20name\x20<=\x2064\x20BCS\x20bytes','description':'MAX_NAME_LENGTH','category':'creation','verification_location':'common.ts','on_chain_enforced':!![]},{'id':'MC-C-07','name':'Forward\x20has\x20at\x20least\x20one\x20permission','description':'namedOperator\x20or\x20permissionIndex','category':'creation','verification_location':'wowok-machine\x20SKILL','on_chain_enforced':![]},{'id':'MC-C-08','name':'permissionIndex\x20valid','description':'<\x20Permission.indices.length','category':'creation','verification_location':'permission.move','on_chain_enforced':!![]},{'id':'MC-C-09','name':'Guard\x20already\x20created','description':'guard\x20field\x20references\x20existing\x20Guard','category':'creation','verification_location':'guard.move','on_chain_enforced':!![]},{'id':'MC-C-10','name':'Guard\x20immutable','description':'Guard.b_immutable\x20==\x20true','category':'creation','verification_location':'guard.move','on_chain_enforced':!![]},{'id':'MC-C-11','name':'retained_submission\x20index\x20valid','description':'Corresponds\x20to\x20Guard\x20table\x20b_submission=true','category':'creation','verification_location':'guard.move','on_chain_enforced':!![]},{'id':'MC-C-12','name':'prev_node\x20references\x20valid','description':'Points\x20to\x20existing\x20node\x20or\x20\x27\x27','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-13','name':'threshold\x20>=\x200','description':'Non-negative','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-14','name':'weight\x20>\x200','description':'Positive','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-15','name':'description\x20length','description':'<=\x20MAX_DESCRIPTION_LENGTH','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-16','name':'bReplace\x20scope','description':'Acts\x20on\x20existing\x20node\x27s\x20pairs\x20list,\x20not\x20whole\x20Machine','category':'node_operation','verification_location':'machine.move:405-443','on_chain_enforced':!![]},{'id':'MC-C-17','name':'bReplace=false\x20merge\x20semantics','description':'Incremental\x20merge\x20by\x20prev_node\x20into\x20existing\x20pairs','category':'node_operation','verification_location':'machine.move:418-443','on_chain_enforced':!![]},{'id':'MC-C-18','name':'Non-existing\x20node\x20append','description':'push_back\x20new\x20node\x20(no\x20clear\x20triggered)','category':'node_operation','verification_location':'machine.move:418-443','on_chain_enforced':!![]},{'id':'MC-C-19','name':'Full\x20node\x20replacement\x20via\x20file\x20entry','description':'NodeJsonOrMarkdownFileSchema\x20(not\x20bReplace=true)','category':'node_operation','verification_location':'machine.ts:93-112','on_chain_enforced':![]},{'id':'MC-S-01','name':'At\x20least\x20one\x20entry\x20point','description':'Pair\x20with\x20prev_node=\x27\x27','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-02','name':'At\x20least\x20one\x20terminal','description':'Node\x20with\x20no\x20outgoing\x20Pairs','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-03','name':'No\x20orphaned\x20nodes','description':'All\x20non-entry\x20nodes\x20have\x20incoming\x20Pair','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-04','name':'No\x20dead\x20branches','description':'All\x20thresholds\x20achievable','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-05','name':'DAG\x20acyclic','description':'No\x20cycle\x20references','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-P-01','name':'All\x20Guards\x20tested','description':'gen_passport\x20passed','category':'publish','verification_location':'machine-confirm.ts','on_chain_enforced':![]},{'id':'MC-P-02','name':'Backup\x20exported','description':'machineNode2file\x20executed','category':'publish','verification_location':'machine-confirm.ts','on_chain_enforced':![]},{'id':'MC-P-03','name':'Testnet\x20verified','description':'(recommended)\x20testnet\x20passed','category':'publish','verification_location':'machine-confirm.ts','on_chain_enforced':![]},{'id':'MC-P-04','name':'User\x20100%\x20confirmed','description':'ConfirmGate\x20passed','category':'publish','verification_location':'machine-confirm.ts','on_chain_enforced':![]},{'id':'MC-P-05','name':'Service\x20created\x20(if\x20bound)','description':'Service\x20exists','category':'publish','verification_location':'machine-context.ts','on_chain_enforced':![]},{'id':'MC-R-01','name':'Node\x20ops\x20fail\x20after\x20publish','description':'E_ALREADY_PUBLISHED','category':'runtime','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-R-02','name':'Session\x20accumulation\x20correct','description':'weight\x20accumulation\x20logic','category':'runtime','verification_location':'progress.move','on_chain_enforced':!![]},{'id':'MC-R-03','name':'Competing\x20Pair\x20first-wins','description':'First\x20Pair\x20to\x20reach\x20threshold\x20wins','category':'runtime','verification_location':'progress.move','on_chain_enforced':!![]}];export function getConstraintsByCategory(a){return MACHINE_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function getConstraintById(a){return MACHINE_CONSTRAINT_RULES['find'](b=>b['id']===a);}export function getOnChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>a['on_chain_enforced']);}export function getOffChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>!a['on_chain_enforced']);}export const MACHINE_TRANSLATION_VERSION='1.0.0';export const MACHINE_PATTERNS_COUNT=SEMANTIC_TO_MACHINE_RULES['length'];export const MACHINE_CONSTRAINTS_COUNT=MACHINE_CONSTRAINT_RULES['length'];import{MAX_NODE_COUNT,MAX_NODE_PAIR_COUNT,MAX_FORWARD_COUNT}from'./onchain-constants.js';export function identifyNodeRole(a){const b=a['all_pairs']??[],c=(a['pairs']??b)['filter'](i=>i['prev_node']===a['name']),d=b['filter'](i=>i['next_node']===a['name']),e=b['some'](i=>i['prev_node']===''&&i['next_node']===a['name']),f=c['length']===0x0;if(e)return'entry';if(f)return'terminal';const g=new Set(c['map'](i=>i['next_node']));if(g['size']>0x1)return'branch';const h=new Set(d['map'](i=>i['prev_node'])['filter'](i=>i!==''));if(h['size']>0x1)return'merge';return'normal';}function explainGuardBinding(a){return{'address':a,'immutable_required':!![],'note':'Guard\x20'+a+'\x20validates\x20this\x20Forward\x27s\x20execution;\x20'+'must\x20be\x20immutable\x20(b_immutable=true)\x20and\x20pre-created\x20on-chain.'};}export function explainNode(a){const b=a['pairs']??[];return{'name':a['name'],'role':identifyNodeRole(a),'pairs':b['map'](c=>explainPair(c)),'description':a['description']};}export function explainPair(a){return{'prev_node':a['prev_node'],'next_node':a['next_node'],'threshold':a['threshold'],'execution_pattern':identifyExecutionMode(a),'forwards':a['forwards']['map'](b=>explainForward(b))};}export function explainForward(a){return{'name':a['name'],'permission':explainForwardPermission(a),'weight':a['weight'],'guard':a['guard']?explainGuardBinding(a['guard']):null,'retained_submission':a['retained_submission']??null};}
|
|
1
|
+
export const SEMANTIC_TO_MACHINE_RULES=[{'id':'P-M-SEQ','pattern_name':'Sequential\x20Execution','category':'execution','semantic_intent':'Single\x20actor\x20advances\x20workflow\x20one\x20step\x20at\x20a\x20time.\x20Each\x20Pair\x20has\x20threshold=1\x20with\x20a\x20single\x20Forward\x20weight=1.','match_keywords':['sequential','linear','one\x20step\x20at\x20a\x20time'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Each\x20Pair:\x20{\x20threshold:\x201,\x20forwards:\x20[{\x20name,\x20weight:\x201,\x20namedOperator\x20|\x20permissionIndex\x20}]\x20}'},'constraints':['Each\x20Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex','weight\x20>\x200\x20(typically\x201)','prev_node\x20references\x20must\x20form\x20a\x20valid\x20DAG\x20(no\x20cycles)'],'example':{'pair':{'prev_node':'NodeA','next_node':'NodeB','threshold':0x1,'forwards':[{'name':'Advance','weight':0x1,'named_operator':''}]}}},{'id':'P-M-AND','pattern_name':'Parallel\x20AND\x20(Dual-Signature\x20Consensus)','category':'execution','semantic_intent':'Multiple\x20parties\x20must\x20ALL\x20contribute\x20to\x20advance.\x20Pair\x20threshold=N\x20with\x20N\x20DISTINCT\x20Forwards\x20(weight=1\x20each)\x20—\x20one\x20forward\x20per\x20contributing\x20operator.\x20'+'A\x20single\x20forward\x20CANNOT\x20be\x20executed\x20by\x20two\x20different\x20people:\x20each\x20forward\x20is\x20single-operator-locked\x20by\x20the\x20first\x20account\x20that\x20accomplishes\x20it\x20'+'(progress.move\x20session_accomplish_imp;\x20a\x20second\x20operator\x20re-executing\x20the\x20same\x20accomplished\x20forward\x20aborts\x20E_NOT_THE_HOLDER,\x20and\x20the\x20weight\x20is\x20counted\x20only\x20once).\x20'+'So\x20N\x20operators\x20cooperating\x20on\x20a\x20threshold-N\x20transition\x20MUST\x20each\x20have\x20their\x20own\x20forward\x20in\x20the\x20Pair.','match_keywords':['and','all','dual-sig','both\x20confirm','both\x20must'],'schema_elements':{'threshold':0x2,'forward_count':0x2,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20N,\x20forwards:\x20[{\x20weight:\x201,\x20namedOperator:\x20\x27\x27\x20},\x20{\x20weight:\x201,\x20permissionIndex:\x202\x20}]\x20}'},'constraints':['threshold\x20must\x20equal\x20the\x20number\x20of\x20required\x20Forwards','Each\x20contributing\x20operator\x20needs\x20a\x20DISTINCT\x20Forward\x20—\x20never\x20reuse\x20one\x20forward\x20for\x20two\x20people','Each\x20Forward\x20must\x20have\x20a\x20distinct\x20permission\x20model\x20(no\x20two\x20identical)','A\x20forward\x20is\x20locked\x20by\x20its\x20first\x20operator:\x20once\x20accomplished\x20it\x20contributes\x20its\x20weight\x20once\x20and\x20re-execution\x20by\x20others\x20aborts\x20E_NOT_THE_HOLDER','If\x20either\x20party\x20fails\x20to\x20sign,\x20workflow\x20stalls\x20—\x20consider\x20adding\x20timeout\x20Guard'],'example':{'pair':{'prev_node':'Initiated','next_node':'Approved','threshold':0x2,'forwards':[{'name':'CustomerApprove','weight':0x1,'named_operator':''},{'name':'MerchantApprove','weight':0x1,'permission_index':0x2}]}}},{'id':'P-M-OR','pattern_name':'Parallel\x20OR\x20(Any-One\x20Execution)','category':'execution','semantic_intent':'Any\x20one\x20of\x20multiple\x20paths\x20can\x20advance\x20the\x20workflow.\x20Multiple\x20Pairs,\x20each\x20threshold=1.','match_keywords':['or','any','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Multiple\x20Pairs\x20from\x20same\x20prev_node,\x20each\x20with\x20threshold=1'},'constraints':['Distinct\x20next_node\x20for\x20each\x20Pair\x20(or\x20distinct\x20Forward)','If\x20targets\x20are\x20different\x20nodes,\x20this\x20becomes\x20COMPETING\x20topology','If\x20targets\x20are\x20same\x20node,\x20alternative\x20paths\x20converge\x20(FORKMERGE)'],'example':{'pairs':[{'prev_node':'Choice','next_node':'PathA','threshold':0x1,'forwards':[{'name':'ChooseA','weight':0x1,'named_operator':''}]},{'prev_node':'Choice','next_node':'PathB','threshold':0x1,'forwards':[{'name':'ChooseB','weight':0x1,'named_operator':''}]}]}},{'id':'P-M-VOTE','pattern_name':'Weighted\x20Voting','category':'execution','semantic_intent':'Multiple\x20parties\x20vote\x20with\x20unequal\x20weights.\x20threshold=100,\x20varied\x20weights\x20(e.g.\x2060+40).\x20'+'Guard\x20extracts\x20weight\x20dynamically\x20from\x20Arbitration\x20object.','match_keywords':['vote','weight','stakeholder'],'schema_elements':{'threshold':0x64,'forward_count':'dynamic','permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x20100,\x20forwards:\x20[{\x20weight:\x2060,\x20permissionIndex:\x202,\x20guard:\x20arb_voting_guard\x20},\x20{\x20weight:\x208,\x20namedOperator:\x20\x27member\x27,\x20guard:\x20arb_voting_guard\x20}]\x20}'},'constraints':['Guard\x20MUST\x20check\x20arb.voted\x20has\x20[Signer]\x20to\x20prevent\x20double-voting\x20(R-X1-14\x20CRITICAL)','Weight\x20is\x20query-derived\x20from\x20Arbitration\x20object\x20(not\x20hardcoded\x20in\x20Forward)','Competing\x20Pair\x20often\x20added:\x20Approved\x20vs\x20Rejected\x20(timeout)\x20—\x20first-wins','Forward\x20weight\x20field\x20is\x20just\x20session\x20counter;\x20actual\x20weight\x20from\x20Guard'],'example':{'pair':{'prev_node':'Voting','next_node':'Approved','threshold':0x64,'forwards':[{'name':'ChiefVote','weight':0x3c,'permission_index':0x2,'guard':'arb_voting_guard'},{'name':'MemberVote','weight':0x8,'named_operator':'member','guard':'arb_voting_guard'}]}}},{'id':'P-M-HYBRID','pattern_name':'Hybrid\x20Mode\x20(Key\x20Party\x20Required\x20+\x20Others\x20Optional)','category':'execution','semantic_intent':'One\x20key\x20party\x20must\x20contribute,\x20others\x20are\x20optional.\x20threshold=5\x20with\x20mixed\x20weights\x20(3+1+1).','match_keywords':['hybrid','mixed','key\x20party'],'schema_elements':{'threshold':0x5,'forward_count':0x3,'permission_model':'mixed','pair_count':0x1,'structure':'Pair:\x20{\x20threshold:\x205,\x20forwards:\x20[{\x20weight:\x203,\x20permissionIndex:\x202\x20(key)\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role1\x27\x20},\x20{\x20weight:\x201,\x20namedOperator:\x20\x27role2\x27\x20}]\x20}'},'constraints':['Key\x20party\x27s\x20weight\x20must\x20alone\x20be\x20insufficient\x20(otherwise\x20optional\x20parties\x20are\x20meaningless)','Total\x20weight\x20of\x20all\x20Forwards\x20must\x20be\x20>=\x20threshold','Each\x20Forward\x20must\x20have\x20distinct\x20permission\x20model'],'example':{'pair':{'prev_node':'Review','next_node':'Approved','threshold':0x5,'forwards':[{'name':'ManagerApprove','weight':0x3,'permission_index':0x2},{'name':'EngineerApprove','weight':0x1,'named_operator':'engineer'},{'name':'QAApprove','weight':0x1,'named_operator':'qa'}]}}},{'id':'P-M-LINEAR','pattern_name':'Linear\x20Flow\x20(No\x20Branches)','category':'topology','semantic_intent':'Workflow\x20progresses\x20in\x20a\x20straight\x20line\x20with\x20no\x20branches.','match_keywords':['linear','straight','no\x20branches'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Chain\x20of\x20Pairs:\x20A->B->C->D->...->Terminal'},'constraints':['Exactly\x20one\x20entry\x20Pair\x20(prev_node=\x27\x27)','Exactly\x20one\x20terminal\x20node\x20(no\x20outgoing\x20Pairs)','Each\x20non-terminal\x20node\x20has\x20exactly\x20one\x20outgoing\x20Pair'],'example':{'topology':'Entry\x20->\x20A\x20->\x20B\x20->\x20C\x20->\x20Terminal'}},{'id':'P-M-FORKMERGE','pattern_name':'Fork-Merge\x20(Parallel\x20Branches\x20Converging)','category':'topology','semantic_intent':'Main\x20flow\x20forks\x20into\x20multiple\x20parallel\x20branches,\x20then\x20merges\x20back\x20to\x20main\x20flow.','match_keywords':['fork','merge','parallel'],'schema_elements':{'threshold':0x1,'forward_count':'dynamic','permission_model':'mixed','pair_count':'dynamic','structure':'ForkNode\x20->\x20{BranchA,\x20BranchB}\x20->\x20MergeNode'},'constraints':['Multiple\x20Pairs\x20from\x20ForkNode\x20(one\x20per\x20branch)','All\x20branches\x20must\x20eventually\x20reach\x20MergeNode','MergeNode\x20has\x20multiple\x20incoming\x20Pairs\x20(merge\x20point)','Threshold\x20at\x20MergeNode\x20determines\x20if\x20all\x20branches\x20must\x20complete\x20or\x20just\x20some'],'example':{'topology':'ForkNode\x20->\x20BranchA\x20->\x20MergeNode;\x20ForkNode\x20->\x20BranchB\x20->\x20MergeNode'}},{'id':'P-M-COMPETING','pattern_name':'Competing\x20Pairs\x20(Mutually\x20Exclusive\x20Branches)','category':'topology','semantic_intent':'Multiple\x20Pairs\x20from\x20same\x20node\x20compete;\x20first\x20Pair\x20to\x20meet\x20threshold\x20wins,\x20others\x20abandoned.','match_keywords':['competing','exclusive','race'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':'dynamic','structure':'Same\x20prev_node\x20->\x20multiple\x20next_nodes\x20(each\x20Pair\x20independent)'},'constraints':['Mutually\x20exclusive\x20—\x20only\x20one\x20Pair\x20can\x20complete\x20per\x20session','First\x20Pair\x20to\x20reach\x20threshold\x20wins','Other\x20incomplete\x20Pairs\x20are\x20abandoned','Verify\x20no\x20dead\x20branches\x20(a\x20Pair\x20that\x20always\x20loses\x20to\x20another)'],'example':{'topology':'Shipped\x20->\x20Received;\x20Shipped\x20->\x20Lost;\x20Shipped\x20->\x20Return\x20(first\x20wins)'}},{'id':'P-M-PERM-SINGLE','pattern_name':'Single\x20Permission','category':'permission','semantic_intent':'Forward\x20uses\x20only\x20one\x20permission\x20type:\x20namedOperator\x20OR\x20permissionIndex.','match_keywords':['single\x20permission'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27\x20|\x20permissionIndex:\x20<index>\x20}\x20(only\x20one\x20set)'},'constraints':['Either\x20namedOperator\x20or\x20permissionIndex\x20is\x20set\x20(not\x20both)','Empty\x20namedOperator=\x27\x27\x20grants\x20OrderHolder\x20(order\x20owner\x20+\x20agents)'],'example':{'forward':{'name':'Ship','weight':0x1,'permission_index':0x2}}},{'id':'P-M-PERM-MIXED','pattern_name':'Mixed\x20Permission\x20(Either-Or)','category':'permission','semantic_intent':'Forward\x20allows\x20EITHER\x20permission\x20to\x20execute\x20(internal\x20staff\x20OR\x20external\x20roles).','match_keywords':['mixed\x20permission','either'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'mixed','pair_count':0x1,'structure':'Forward:\x20{\x20name,\x20weight:\x201,\x20namedOperator:\x20\x27<role>\x27,\x20permissionIndex:\x20<index>\x20}\x20(both\x20set)'},'constraints':['Both\x20namedOperator\x20and\x20permissionIndex\x20are\x20set','Executor\x20needs\x20EITHER\x20permission\x20—\x20passing\x20either\x20check\x20is\x20sufficient','Use\x20case:\x20allow\x20internal\x20staff\x20OR\x20external\x20role\x20to\x20execute\x20the\x20same\x20Forward'],'example':{'forward':{'name':'Confirm','weight':0x1,'named_operator':'auditor','permission_index':0x2}}},{'id':'P-M-CROSS-MACHINE','pattern_name':'Cross-Machine\x20Dependency','category':'integration','semantic_intent':'Machine\x20B\x27s\x20Forward\x20Guard\x20queries\x20Machine\x20A\x27s\x20Progress\x20to\x20verify\x20upstream\x20completion.','match_keywords':['cross-machine','supply\x20chain','upstream'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Forward:\x20{\x20guard:\x20\x27upstream_progress_guard\x27,\x20retained_submission:\x20\x27upstream_progress_id\x27\x20}'},'constraints':['Machine\x20A\x20MUST\x20be\x20published\x20before\x20Machine\x20B\x20(dependency\x20order)','Guard\x20uses\x20convert_witness=100\x20to\x20convert\x20submitted\x20Order/Progress\x20ID\x20into\x20queryable\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Dependency\x20verification:\x20indirect\x20via\x20progress::new\x20->\x20assert_published\x20(see\x2006\x20§14.6)','retained_submission\x20stores\x20upstream\x20Progress\x20ID\x20for\x20audit'],'example':{'forward':{'name':'VerifyUpstream','weight':0x1,'permission_index':0x2,'guard':'upstream_progress_guard','retained_submission':'upstream_progress_id'}}},{'id':'P-M-ALLOCATION-INTEGRATED','pattern_name':'Allocation-Integrated\x20Terminal','category':'integration','semantic_intent':'Terminal\x20node\x20triggers\x20Allocator\x20to\x20distribute\x20funds.\x20Allocation\x20independent\x20of\x20Machine\x20flow.','match_keywords':['allocation','fund\x20distribution','terminal'],'schema_elements':{'threshold':0x1,'forward_count':0x1,'permission_model':'single','pair_count':0x1,'structure':'Terminal\x20node\x20->\x20Allocator\x20entry\x20(configured\x20on\x20Service\x20order_allocators)'},'constraints':['Terminal\x20node\x20must\x20be\x20referenced\x20in\x20Service\x20order_allocators','Allocator\x20Guard\x20verifies\x20progress.current\x20==\x20terminal_node_name','sharing.who\x20determines\x20fund\x20recipient\x20(Entity\x20/\x20OrderHolder\x20/\x20etc.)','Multiple\x20Allocators\x20can\x20fire\x20on\x20different\x20terminal\x20nodes'],'example':{'terminal_node':'Complete','allocator':{'trigger_node':'Complete','sharing_who':'Entity','recipient':'merchant_treasury'}}}];export const NODE_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Node\x20name\x20(unique\x20identifier)','constraint':'<=64\x20BCS\x20bytes,\x20globally\x20unique'},{'field':'description','type':'string','required':![],'semantic':'Human-readable\x20description','constraint':'<=MAX_DESCRIPTION_LENGTH'},{'field':'b_pause','type':'boolean','required':![],'semantic':'Whether\x20node\x20is\x20paused\x20(blocks\x20execution)','constraint':'Default\x20false'},{'field':'b_submission','type':'boolean','required':![],'semantic':'Whether\x20submission\x20is\x20allowed\x20at\x20this\x20node','constraint':'Used\x20for\x20retained_submission\x20storage'}];export const PAIR_FIELD_EXPLANATIONS=[{'field':'prev_node','type':'string','required':!![],'semantic':'Source\x20node\x20(empty\x20\x27\x27\x20=\x20entry\x20point)','constraint':'Must\x20reference\x20existing\x20node\x20or\x20\x27\x27'},{'field':'next_node','type':'string','required':!![],'semantic':'Target\x20node','constraint':'Must\x20reference\x20existing\x20node'},{'field':'threshold','type':'number','required':!![],'semantic':'Required\x20total\x20forward\x20weight\x20to\x20advance','constraint':'>=0,\x20typically\x201-100'},{'field':'forwards','type':'array<Forward>','required':!![],'semantic':'List\x20of\x20Forwards\x20in\x20this\x20Pair','constraint':'1-20\x20Forwards\x20per\x20Pair'}];export const FORWARD_FIELD_EXPLANATIONS=[{'field':'name','type':'string','required':!![],'semantic':'Forward\x20name\x20(unique\x20within\x20Pair)','constraint':'<=64\x20BCS\x20bytes,\x20unique\x20within\x20Pair'},{'field':'weight','type':'number','required':!![],'semantic':'Weight\x20contribution\x20to\x20threshold','constraint':'>0,\x20typically\x201-100'},{'field':'namedOperator','type':'string\x20(optional)','required':![],'semantic':'Named\x20operator\x20role\x20(\x27\x27\x20=\x20OrderHolder)','constraint':'Optional,\x20but\x20Forward\x20needs\x20at\x20least\x20one\x20permission'},{'field':'permissionIndex','type':'number\x20(optional)','required':![],'semantic':'Permission\x20index\x20(custom\x20or\x20builtin)','constraint':'<\x20Permission.indices.length'},{'field':'guard','type':'address\x20(optional)','required':![],'semantic':'Guard\x20object\x20address\x20for\x20validation','constraint':'Must\x20be\x20CREATE-only\x20Guard,\x20already\x20created'},{'field':'retained_submission','type':'string\x20(optional)','required':![],'semantic':'Key\x20for\x20storing\x20submitted\x20values\x20in\x20history','constraint':'Uniquely\x20located\x20by\x20(current_node,\x20next_node,\x20forward_name)'}];export function identifyExecutionMode(a){const {threshold:b,forwards:c}=a,d=c['length'];if(b===0x1&&d===0x1)return'P-M-SEQ\x20(Sequential)';if(b===d&&d>=0x2){const e=c['some'](g=>g['permission_index']!==undefined)&&c['some'](g=>g['named_operator']!==undefined);return e?'P-M-AND\x20(Parallel\x20AND\x20/\x20Dual-Signature)':'P-M-AND\x20(Parallel\x20AND)';}if(b===0x64&&c['some'](g=>g['weight']<0x32&&g['weight']>0x0))return'P-M-VOTE\x20(Weighted\x20Voting)';if(b<d&&b>0x1)return'P-M-HYBRID\x20(Hybrid\x20Mode)';if(b===0x1&&d>=0x1)return'P-M-OR\x20(Parallel\x20OR)\x20or\x20P-M-SEQ\x20(if\x20single\x20Forward)';return'Unknown\x20(manual\x20review\x20needed)';}export function identifyTopology(a){const b=new Map(),c=new Map();for(const d of a){if(!b['has'](d['prev_node']))b['set'](d['prev_node'],[]);b['get'](d['prev_node'])['push'](d['next_node']);if(!c['has'](d['next_node']))c['set'](d['next_node'],[]);c['get'](d['next_node'])['push'](d['prev_node']);}for(const [e,f]of b){if(f['length']>0x1&&e!=='')return'P-M-COMPETING\x20(Competing\x20Pairs)';}for(const [g,h]of c){if(h['length']>0x1)return'P-M-FORKMERGE\x20(Fork-Merge)';}return'P-M-LINEAR\x20(Linear\x20Flow)';}export function matchSemanticPattern(a){const b=a['toLowerCase']();return SEMANTIC_TO_MACHINE_RULES['find'](c=>c['match_keywords']['some'](d=>b['includes'](d['toLowerCase']())));}export function explainForwardPermission(a){const b=a['named_operator']!==undefined&&a['named_operator']!==null,c=a['permission_index']!==undefined&&a['permission_index']!==null;if(b&&c){const d=a['named_operator']===''?'OrderHolder':'role\x20\x22'+a['named_operator']+'\x22';return'Mixed\x20permission:\x20'+d+'\x20OR\x20Permission\x20index\x20'+a['permission_index']+'\x20(either\x20sufficient)';}if(b){if(a['named_operator']==='')return'OrderHolder\x20(order\x20owner\x20+\x20agents)';return'NamedOperator\x20role\x20\x22'+a['named_operator']+'\x22';}if(c)return'Permission\x20index\x20'+a['permission_index'];return'❌\x20INVALID:\x20no\x20permission\x20set\x20(Forward\x20must\x20have\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex)';}export const MACHINE_CONSTRAINT_RULES=[{'id':'MC-C-01','name':'Node\x20count\x20<=\x20'+MAX_NODE_COUNT,'description':'MAX_NODE_COUNT','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-02','name':'Pair\x20count\x20per\x20node\x20<=\x20'+MAX_NODE_PAIR_COUNT,'description':'MAX_NODE_PAIR_COUNT','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-03','name':'Forward\x20count\x20per\x20Pair\x20<=\x20'+MAX_FORWARD_COUNT,'description':'MAX_FORWARD_COUNT','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-04','name':'Node\x20name\x20unique','description':'name\x20globally\x20unique','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-05','name':'Forward\x20name\x20unique\x20within\x20Pair','description':'name\x20unique\x20within\x20Pair','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-06','name':'Node\x20name\x20<=\x2064\x20BCS\x20bytes','description':'MAX_NAME_LENGTH','category':'creation','verification_location':'common.ts','on_chain_enforced':!![]},{'id':'MC-C-07','name':'Forward\x20has\x20at\x20least\x20one\x20permission','description':'namedOperator\x20or\x20permissionIndex','category':'creation','verification_location':'wowok-machine\x20SKILL','on_chain_enforced':![]},{'id':'MC-C-08','name':'permissionIndex\x20valid','description':'<\x20Permission.indices.length','category':'creation','verification_location':'permission.move','on_chain_enforced':!![]},{'id':'MC-C-09','name':'Guard\x20already\x20created','description':'guard\x20field\x20references\x20existing\x20Guard','category':'creation','verification_location':'guard.move','on_chain_enforced':!![]},{'id':'MC-C-10','name':'Guard\x20immutable','description':'Guard.b_immutable\x20==\x20true','category':'creation','verification_location':'guard.move','on_chain_enforced':!![]},{'id':'MC-C-11','name':'retained_submission\x20index\x20valid','description':'Corresponds\x20to\x20Guard\x20table\x20b_submission=true','category':'creation','verification_location':'guard.move','on_chain_enforced':!![]},{'id':'MC-C-12','name':'prev_node\x20references\x20valid','description':'Points\x20to\x20existing\x20node\x20or\x20\x27\x27','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-13','name':'threshold\x20>=\x200','description':'Non-negative','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-14','name':'weight\x20>\x200','description':'Positive','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-15','name':'description\x20length','description':'<=\x20MAX_DESCRIPTION_LENGTH','category':'creation','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-C-16','name':'bReplace\x20scope','description':'Acts\x20on\x20existing\x20node\x27s\x20pairs\x20list,\x20not\x20whole\x20Machine','category':'node_operation','verification_location':'machine.move:405-443','on_chain_enforced':!![]},{'id':'MC-C-17','name':'bReplace=false\x20merge\x20semantics','description':'Incremental\x20merge\x20by\x20prev_node\x20into\x20existing\x20pairs','category':'node_operation','verification_location':'machine.move:418-443','on_chain_enforced':!![]},{'id':'MC-C-18','name':'Non-existing\x20node\x20append','description':'push_back\x20new\x20node\x20(no\x20clear\x20triggered)','category':'node_operation','verification_location':'machine.move:418-443','on_chain_enforced':!![]},{'id':'MC-C-19','name':'Full\x20node\x20replacement\x20via\x20file\x20entry','description':'NodeJsonOrMarkdownFileSchema\x20(not\x20bReplace=true)','category':'node_operation','verification_location':'machine.ts:93-112','on_chain_enforced':![]},{'id':'MC-S-01','name':'At\x20least\x20one\x20entry\x20point','description':'Pair\x20with\x20prev_node=\x27\x27','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-02','name':'At\x20least\x20one\x20terminal','description':'Node\x20with\x20no\x20outgoing\x20Pairs','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-03','name':'No\x20orphaned\x20nodes','description':'All\x20non-entry\x20nodes\x20have\x20incoming\x20Pair','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-04','name':'No\x20dead\x20branches','description':'All\x20thresholds\x20achievable','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-S-05','name':'DAG\x20acyclic','description':'No\x20cycle\x20references','category':'structure','verification_location':'machine-topology.ts','on_chain_enforced':![]},{'id':'MC-P-01','name':'All\x20Guards\x20tested','description':'gen_passport\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-02','name':'Backup\x20exported','description':'machineNode2file\x20executed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-03','name':'Testnet\x20verified','description':'(recommended)\x20testnet\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-04','name':'User\x20100%\x20confirmed','description':'ConfirmGate\x20passed','category':'publish','verification_location':'confirm-gate.ts','on_chain_enforced':![]},{'id':'MC-P-05','name':'Service\x20created\x20(if\x20bound)','description':'Service\x20exists','category':'publish','verification_location':'workflow-guidance.ts','on_chain_enforced':![]},{'id':'MC-R-01','name':'Node\x20ops\x20fail\x20after\x20publish','description':'E_ALREADY_PUBLISHED','category':'runtime','verification_location':'machine.move','on_chain_enforced':!![]},{'id':'MC-R-02','name':'Session\x20accumulation\x20correct','description':'weight\x20accumulation\x20logic','category':'runtime','verification_location':'progress.move','on_chain_enforced':!![]},{'id':'MC-R-03','name':'Competing\x20Pair\x20first-wins','description':'First\x20Pair\x20to\x20reach\x20threshold\x20wins','category':'runtime','verification_location':'progress.move','on_chain_enforced':!![]}];export function getConstraintsByCategory(a){return MACHINE_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function getConstraintById(a){return MACHINE_CONSTRAINT_RULES['find'](b=>b['id']===a);}export function getOnChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>a['on_chain_enforced']);}export function getOffChainConstraints(){return MACHINE_CONSTRAINT_RULES['filter'](a=>!a['on_chain_enforced']);}export const MACHINE_TRANSLATION_VERSION='1.0.0';export const MACHINE_PATTERNS_COUNT=SEMANTIC_TO_MACHINE_RULES['length'];export const MACHINE_CONSTRAINTS_COUNT=MACHINE_CONSTRAINT_RULES['length'];import{MAX_NODE_COUNT,MAX_NODE_PAIR_COUNT,MAX_FORWARD_COUNT}from'./onchain-constants.js';export function identifyNodeRole(a){const b=a['all_pairs']??[],c=(a['pairs']??b)['filter'](i=>i['prev_node']===a['name']),d=b['filter'](i=>i['next_node']===a['name']),e=b['some'](i=>i['prev_node']===''&&i['next_node']===a['name']),f=c['length']===0x0;if(e)return'entry';if(f)return'terminal';const g=new Set(c['map'](i=>i['next_node']));if(g['size']>0x1)return'branch';const h=new Set(d['map'](i=>i['prev_node'])['filter'](i=>i!==''));if(h['size']>0x1)return'merge';return'normal';}function explainGuardBinding(a){return{'address':a,'immutable_required':!![],'note':'Guard\x20'+a+'\x20validates\x20this\x20Forward\x27s\x20execution;\x20'+'must\x20be\x20immutable\x20(b_immutable=true)\x20and\x20pre-created\x20on-chain.'};}export function explainNode(a){const b=a['pairs']??[];return{'name':a['name'],'role':identifyNodeRole(a),'pairs':b['map'](c=>explainPair(c)),'description':a['description']};}export function explainPair(a){return{'prev_node':a['prev_node'],'next_node':a['next_node'],'threshold':a['threshold'],'execution_pattern':identifyExecutionMode(a),'forwards':a['forwards']['map'](b=>explainForward(b))};}export function explainForward(a){return{'name':a['name'],'permission':explainForwardPermission(a),'weight':a['weight'],'guard':a['guard']?explainGuardBinding(a['guard']):null,'retained_submission':a['retained_submission']??null};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ONCHAIN_CONSTANTS,MAX_NODE_COUNT,MAX_NODE_COUNT_ONCHAIN,MAX_FORWARD_COUNT,MAX_FORWARD_ORDER_COUNT,MAX_NODE_PAIR_COUNT,MAX_CONSENSUS_REPOSITORIES_COUNT,USER_DEFINED_PERM_INDEX_START,MAX_PERM_FOR_ENTITY,MAX_ADMIN_COUNT,MAX_ITEM_COUNT,ROLE_OWNER,ROLE_ADMIN,ROLE_ENTITY,MAX_AGENT_COUNT,MAX_DISPUTE_COUNT,MAX_SHARING_COUNT,MAX_VOTING_GUARD_COUNT,MAX_POLICY_COUNT,MAX_ID_COUNT_ONCE,MAX_REWARD_COUNT,MAX_GUARD_COUNT_REWARD,MAX_RECORD_COUNT_REWARD,MAX_CONTEXT_REPOSITORY_COUNT,MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_IM_COUNT,MAX_TAGS_COUNT,MAX_RECIPIENT_COUNT,MAX_PROPOSITION_COUNT,MAX_VOTOR_COUNT,WITHDRAW_DURATION_TIME,MAX_ADDRESS_COUNT,MAX_RECORD_LENGTH,BRIDGE_MESSAGE_VERSION,BRIDGE_EVM_ADDRESS_LENGTH,BRIDGE_CURRENT_VERSION,BRIDGE_TRANSFER_STATUS_PENDING,BRIDGE_TRANSFER_STATUS_APPROVED,BRIDGE_TRANSFER_STATUS_CLAIMED,BRIDGE_TRANSFER_STATUS_NOT_FOUND}from'@wowok/wowok';export{ONCHAIN_CONSTANTS,MAX_NODE_COUNT,MAX_NODE_COUNT_ONCHAIN,MAX_FORWARD_COUNT,MAX_FORWARD_ORDER_COUNT,MAX_NODE_PAIR_COUNT,MAX_CONSENSUS_REPOSITORIES_COUNT,USER_DEFINED_PERM_INDEX_START,MAX_PERM_FOR_ENTITY,MAX_ADMIN_COUNT,MAX_ITEM_COUNT,ROLE_OWNER,ROLE_ADMIN,ROLE_ENTITY,MAX_AGENT_COUNT,MAX_DISPUTE_COUNT,MAX_SHARING_COUNT,MAX_VOTING_GUARD_COUNT,MAX_POLICY_COUNT,MAX_ID_COUNT_ONCE,MAX_REWARD_COUNT,MAX_GUARD_COUNT_REWARD,MAX_RECORD_COUNT_REWARD,MAX_CONTEXT_REPOSITORY_COUNT,MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_IM_COUNT,MAX_TAGS_COUNT,MAX_RECIPIENT_COUNT,MAX_PROPOSITION_COUNT,MAX_VOTOR_COUNT,WITHDRAW_DURATION_TIME,MAX_ADDRESS_COUNT,MAX_RECORD_LENGTH,BRIDGE_MESSAGE_VERSION,BRIDGE_EVM_ADDRESS_LENGTH,BRIDGE_CURRENT_VERSION,BRIDGE_TRANSFER_STATUS_PENDING,BRIDGE_TRANSFER_STATUS_APPROVED,BRIDGE_TRANSFER_STATUS_CLAIMED,BRIDGE_TRANSFER_STATUS_NOT_FOUND};export const ONCHAIN_CONSTANT_MCP_CONSUMERS={'MAX_NODE_COUNT':['machine-topology.ts\x20(within_limits\x20check)','machine-risk.ts\x20R-M1-07','machine-
|
|
1
|
+
import{ONCHAIN_CONSTANTS,MAX_NODE_COUNT,MAX_NODE_COUNT_ONCHAIN,MAX_FORWARD_COUNT,MAX_FORWARD_ORDER_COUNT,MAX_NODE_PAIR_COUNT,MAX_CONSENSUS_REPOSITORIES_COUNT,USER_DEFINED_PERM_INDEX_START,MAX_PERM_FOR_ENTITY,MAX_ADMIN_COUNT,MAX_ITEM_COUNT,ROLE_OWNER,ROLE_ADMIN,ROLE_ENTITY,MAX_AGENT_COUNT,MAX_DISPUTE_COUNT,MAX_SHARING_COUNT,MAX_VOTING_GUARD_COUNT,MAX_POLICY_COUNT,MAX_ID_COUNT_ONCE,MAX_REWARD_COUNT,MAX_GUARD_COUNT_REWARD,MAX_RECORD_COUNT_REWARD,MAX_CONTEXT_REPOSITORY_COUNT,MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_IM_COUNT,MAX_TAGS_COUNT,MAX_RECIPIENT_COUNT,MAX_PROPOSITION_COUNT,MAX_VOTOR_COUNT,WITHDRAW_DURATION_TIME,MAX_ADDRESS_COUNT,MAX_RECORD_LENGTH,BRIDGE_MESSAGE_VERSION,BRIDGE_EVM_ADDRESS_LENGTH,BRIDGE_CURRENT_VERSION,BRIDGE_TRANSFER_STATUS_PENDING,BRIDGE_TRANSFER_STATUS_APPROVED,BRIDGE_TRANSFER_STATUS_CLAIMED,BRIDGE_TRANSFER_STATUS_NOT_FOUND}from'@wowok/wowok';export{ONCHAIN_CONSTANTS,MAX_NODE_COUNT,MAX_NODE_COUNT_ONCHAIN,MAX_FORWARD_COUNT,MAX_FORWARD_ORDER_COUNT,MAX_NODE_PAIR_COUNT,MAX_CONSENSUS_REPOSITORIES_COUNT,USER_DEFINED_PERM_INDEX_START,MAX_PERM_FOR_ENTITY,MAX_ADMIN_COUNT,MAX_ITEM_COUNT,ROLE_OWNER,ROLE_ADMIN,ROLE_ENTITY,MAX_AGENT_COUNT,MAX_DISPUTE_COUNT,MAX_SHARING_COUNT,MAX_VOTING_GUARD_COUNT,MAX_POLICY_COUNT,MAX_ID_COUNT_ONCE,MAX_REWARD_COUNT,MAX_GUARD_COUNT_REWARD,MAX_RECORD_COUNT_REWARD,MAX_CONTEXT_REPOSITORY_COUNT,MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_IM_COUNT,MAX_TAGS_COUNT,MAX_RECIPIENT_COUNT,MAX_PROPOSITION_COUNT,MAX_VOTOR_COUNT,WITHDRAW_DURATION_TIME,MAX_ADDRESS_COUNT,MAX_RECORD_LENGTH,BRIDGE_MESSAGE_VERSION,BRIDGE_EVM_ADDRESS_LENGTH,BRIDGE_CURRENT_VERSION,BRIDGE_TRANSFER_STATUS_PENDING,BRIDGE_TRANSFER_STATUS_APPROVED,BRIDGE_TRANSFER_STATUS_CLAIMED,BRIDGE_TRANSFER_STATUS_NOT_FOUND};export const ONCHAIN_CONSTANT_MCP_CONSUMERS={'MAX_NODE_COUNT':['machine-topology.ts\x20(within_limits\x20check)','machine-risk.ts\x20R-M1-07','machine-translation.ts\x20MC-C-01','knowledge/index.ts\x20(max_node_count\x20field)'],'MAX_FORWARD_ORDER_COUNT':[],'MAX_NODE_PAIR_COUNT':['machine-topology.ts\x20(within_limits\x20check)'],'USER_DEFINED_PERM_INDEX_START':['machine-risk.ts\x20R-M3-08','guard-risk.ts\x20(forward\x20permissionIndex\x20guidance)'],'MAX_VOTING_GUARD_COUNT':['evaluation/builtins/arbitration-score.ts\x20(fairness_governance\x20reason)'],'MAX_ITEM_COUNT':['permission-context.ts\x20(entity_permission\x20reverse\x20index)'],'ROLE_OWNER':['permission-context.ts\x20(entity_permission\x20role\x20flags)'],'ROLE_ADMIN':['permission-context.ts\x20(entity_permission\x20role\x20flags)'],'ROLE_ENTITY':['permission-context.ts\x20(entity_permission\x20role\x20flags)']};export function getOnchainConstant(a){const b=ONCHAIN_CONSTANTS[a];if(b===undefined)throw new Error('Unknown\x20on-chain\x20constant:\x20'+String(a));return b;}
|
|
@@ -10,8 +10,8 @@ export interface OrderScene {
|
|
|
10
10
|
related_risks: string[];
|
|
11
11
|
recommended_templates: string[];
|
|
12
12
|
}
|
|
13
|
-
export type OrderPermissionLayer = "L1_owner_only" | "L2_owner_or_agent" | "L3_package_only";
|
|
14
|
-
export type OrderReversibility = "reversible" | "one_time_set" | "
|
|
13
|
+
export type OrderPermissionLayer = "L1_owner_only" | "L2_owner_or_agent" | "L3_package_only" | "L4_object_gated";
|
|
14
|
+
export type OrderReversibility = "reversible" | "one_time_set" | "irreversible" | "append_only" | "immutable";
|
|
15
15
|
export interface OrderFieldDef {
|
|
16
16
|
move_name: string;
|
|
17
17
|
sdk_name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const ORDER_FIELDS=[{'move_name':'id','sdk_name':'id','move_type':'UID','mutability_layer':0x1,'description':'Order\x20unique\x20ID'},{'move_name':'items','sdk_name':'items','move_type':'vector<SaleItem>','mutability_layer':0x1,'description':'Purchased\x20items\x20(created-immutable)'},{'move_name':'discount','sdk_name':'discount','move_type':'Option<address>','mutability_layer':0x1,'description':'Discount\x20object\x20address\x20(created-immutable)'},{'move_name':'progress','sdk_name':'progress','move_type':'Option<address>','mutability_layer':0x2,'description':'Progress\x20object\x20address\x20(one-time-set\x20via\x20on_progress)'},{'move_name':'machine','sdk_name':'machine','move_type':'Option<address>','mutability_layer':0x1,'description':'Machine\x20snapshot\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'},{'move_name':'amount','sdk_name':'amount','move_type':'u64','mutability_layer':0x1,'description':'Order\x20amount\x20in\x20MIST\x20(created-immutable)'},{'move_name':'owner','sdk_name':'builder','move_type':'address','mutability_layer':0x3,'description':'Order\x20owner\x20/\x20buyer.\x20⚠️\x20SDK\x20field\x20name\x20is\x20\x27builder\x27\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)'},{'move_name':'service','sdk_name':'service','move_type':'address','mutability_layer':0x1,'description':'Service\x20object\x20address\x20(created-immutable,\x20reference\x20only)'},{'move_name':'dispute','sdk_name':'dispute','move_type':'vector<address>','mutability_layer':0x4,'description':'Arb\x20object\x20addresses\x20(append-only,\x20max\x2010,\x20frozen\x20when\x20claimed_by\x20set)'},{'move_name':'agent','sdk_name':'agent','move_type':'vector<address>','mutability_layer':0x3,'description':'Agent\x20addresses\x20(max\x2010\x20per\x20docs,\x20⚠️\x20actual\x20allows\x2011\x20due\x20to\x20<=\x20bug;\x20frozen\x20after\x20progress\x20binding)'},{'move_name':'allocation','sdk_name':'allocation','move_type':'Option<address>','mutability_layer':0x2,'description':'Allocation\x20object\x20address\x20(one-time-set\x20via\x20on_allocation)'},{'move_name':'claimed_by','sdk_name':'claimed_by','move_type':'Option<address>','mutability_layer':0x2,'description':'Claimed\x20Arb\x20object\x20address\x20(one-time,\x20irreversible;\x20blocks\x20new\x20disputes)'},{'move_name':'required_info','sdk_name':'required_info','move_type':'Option<address>','mutability_layer':0x4,'description':'Contact\x20(recipient)\x20or\x20WTS\x20Proof\x20(delivery\x20proof);\x20mutable\x20by\x20owner\x20or\x20agent'},{'move_name':'time','sdk_name':'time','move_type':'u64','mutability_layer':0x1,'description':'Creation\x20timestamp\x20(clock::timestamp_ms)'}];export const ORDER_STATES=['CREATED','IN_PROGRESS','DISPUTED','CLAIMED','COMPLETED','CANCELLED'];export const ORDER_STATE_TRANSITIONS=[{'from':'CREATED','to':'IN_PROGRESS','trigger':'service::buy()\x20with\x20machine\x20→\x20on_progress\x20sets\x20progress'},{'from':'CREATED','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'CREATED','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20(no\x20machine\x20path)\x20or\x20manual'},{'from':'IN_PROGRESS','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'IN_PROGRESS','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20node'},{'from':'IN_PROGRESS','to':'CANCELLED','trigger':'Progress\x20reaches\x20cancel\x20node'},{'from':'DISPUTED','to':'CLAIMED','trigger':'arb_claim_compensation\x20→\x20compensate()\x20sets\x20claimed_by'},{'from':'DISPUTED','to':'COMPLETED','trigger':'Arb\x20resolution\x20+\x20Progress\x20terminal'},{'from':'DISPUTED','to':'CANCELLED','trigger':'Arb\x20resolution\x20=\x20cancel'}];export const ORDER_LIFECYCLE_EVENTS=[{'name':'NewOrderEvent','trigger':'service::buy()\x20phase\x205\x20(order::create)','emit_source':'order::create()','actually_emitted':!![],'fields':['object','service','progress','discount','allocation','amount']},{'name':'OrderCompletedEvent','trigger':'Progress\x20reaches\x20terminal','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','completion_time']},{'name':'OrderCancelledEvent','trigger':'Progress\x20reaches\x20cancel','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','cancel_reason']},{'name':'OrderAdvancedEvent','trigger':'order.progress\x20forward','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','from_node','to_node']},{'name':'OrderDisputeAppendedEvent','trigger':'arb_confirm\x20→\x20dispute()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb']},{'name':'OrderClaimedEvent','trigger':'arb_claim_compensation\x20→\x20compensate()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb','claimed_by']},{'name':'OwnerChangedEvent','trigger':'owner_change\x20/\x20transfer_to','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','old_owner','new_owner']},{'name':'AgentSetEvent','trigger':'agent_set','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','agent_list']},{'name':'RequiredInfoUpdatedEvent','trigger':'required_info_update','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','required_info']},{'name':'AllocationBoundEvent','trigger':'on_allocation','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','allocation']},{'name':'ProgressBoundEvent','trigger':'on_progress','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','progress']}];export const ORDER_PERMISSION_MATRIX=[{'operation':'owner_receive\x20/\x20receive','move_function':'owner_receive\x20/\x20owner_receive_object','layer':'L1_owner_only','aborts_with':'E_OWNER','notes':'Only\x20owner\x20can\x20collect\x20payments.\x20Agent\x20CANNOT\x20receive.'},{'operation':'transfer_to\x20(ownership\x20transfer)','move_function':'owner_change','layer':'L1_owner_only','aborts_with':'E_OWNER','notes':'Irreversible.\x20New\x20owner\x20takes\x20over\x20ALL\x20permissions.'},{'operation':'owner_change\x20(pre-progress)','move_function':'owner_change','layer':'L1_owner_only','aborts_with':'E_OWNER,\x20E_PROGRESS_NOT_SPECIFIED','notes':'Frozen\x20after\x20progress\x20binding.'},{'operation':'agent_set','move_function':'agent_set','layer':'L1_owner_only','aborts_with':'E_OWNER,\x20E_PROGRESS_NOT_SPECIFIED,\x20E_AGENT_COUNT_EXCEEDED','notes':'Frozen\x20after\x20progress\x20binding.\x20⚠️\x20Boundary\x20bug:\x20actual\x20max\x2011\x20(not\x2010).'},{'operation':'required_info_update','move_function':'required_info_update','layer':'L2_owner_or_agent','aborts_with':'E_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20update.'},{'operation':'progress\x20(advance)','move_function':'(progress::operate)','layer':'L2_owner_or_agent','aborts_with':'E_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20advance\x20Progress.'},{'operation':'arb_confirm','move_function':'(arb::principal_confirm)','layer':'L2_owner_or_agent','aborts_with':'E_PERMISSION','notes':'Both\x20can\x20file\x20arbitration.\x20Irreversible.'},{'operation':'arb_objection','move_function':'(arb::objection)','layer':'L2_owner_or_agent','aborts_with':'E_PERMISSION','notes':'Both\x20can\x20object\x20to\x20Arb\x20ruling.\x20Irreversible.'},{'operation':'arb_claim_compensation','move_function':'(service::compensation_claim)','layer':'L2_owner_or_agent','aborts_with':'E_PERMISSION,\x20E_ORDER_ALREADY_CLAIMED','notes':'Sets\x20claimed_by\x20—\x20one-time,\x20irreversible.'},{'operation':'on_progress\x20(package-only)','move_function':'on_progress','layer':'L3_package_only','aborts_with':'E_PROGRESS_ALREADY_SPECIFIED','notes':'Progress\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'on_allocation\x20(package-only)','move_function':'on_allocation','layer':'L3_package_only','aborts_with':'E_ALLOCATION_ALREADY_SPECIFIED','notes':'Allocation\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'dispute\x20(package-only)','move_function':'dispute','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED,\x20E_DISPUTE_COUNT_EXCEEDED','notes':'Arbitration\x20module\x20appends\x20Arb\x20address.'},{'operation':'compensate\x20(package-only)','move_function':'compensate','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED','notes':'Arbitration\x20module\x20sets\x20claimed_by.\x20Irreversible.'}];export const ORDER_SCENES=[{'id':'order_create','name':'Create\x20order\x20via\x20service::buy\x20(composite\x20creation)','operation_field':'object','move_entry':'service::buy\x20→\x20order::new\x20→\x20order::create','permission_layer':'L3_package_only','reversibility':'irreversible','governed_operations':['service::buy(items,\x20discount,\x20machine_forward?,\x20named_order?)','order::new\x20(package-only)','allocation::new\x20+\x20order::on_allocation\x20(if\x20order_allocators\x20configured)','progress::new\x20+\x20order::on_progress\x20(if\x20machine\x20configured)','order::create\x20+\x20emit\x20NewOrderEvent'],'common_patterns':['Composite\x20creation:\x20Order\x20+\x20Allocation\x20+\x20Progress\x20in\x20one\x20transaction','Service.machine\x20is\x20SNAPSHOTTED\x20to\x20order.machine\x20(not\x20a\x20reference)','owner\x20=\x20tx_context::sender\x20(buyer);\x20agent\x20=\x20[]\x20initially','Allotment\x206\x20phases\x20are\x20atomic\x20—\x20any\x20failure\x20rolls\x20back\x20fully'],'related_risks':['R-O-1-05','R-O-2-01','R-O-4-01','R-O-5-01'],'recommended_templates':['T-O-01','T-O-02','T-O-03']},{'id':'order_advance','name':'Advance\x20Progress\x20(forward/hold)','operation_field':'progress','move_entry':'progress::operate\x20(via\x20order.progress\x20delegation)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['progress.operation.next_node_name\x20+\x20forward','progress.op\x20(next/hold/unhold/adminUnhold)','progress.message\x20(optional)'],'common_patterns':['Both\x20owner\x20and\x20agent\x20can\x20advance\x20—\x20agent\x20enables\x20third-party\x20logistics','Node\x20transition\x20is\x20irreversible\x20(no\x20backward\x20movement)','Forward.guard\x20may\x20require\x20Guard\x20submission'],'related_risks':['R-O-3-02','R-O-4-03','R-O-5-03'],'recommended_templates':['T-O-02']},{'id':'order_set_agent','name':'Set\x20agent\x20list\x20(owner-only,\x20frozen\x20after\x20progress)','operation_field':'agent','move_entry':'order::agent_set','permission_layer':'L1_owner_only','reversibility':'frozen_after_progress','governed_operations':['agent_set\x20(overwrites\x20entire\x20agent\x20list)'],'common_patterns':['Set\x20agents\x20BEFORE\x20service::buy\x20triggers\x20Progress\x20binding','⚠️\x20Boundary\x20bug:\x20actual\x20max\x2011\x20(Move\x20uses\x20<=,\x20doc\x20says\x2010)','Agents\x20can\x20operate\x20order\x20but\x20CANNOT\x20receive\x20funds','After\x20progress.is_some(),\x20agent_set\x20aborts\x20E_PROGRESS_NOT_SPECIFIED'],'related_risks':['R-O-1-04','R-O-3-01','R-O-4-02'],'recommended_templates':['T-O-03']},{'id':'order_required_info','name':'Update\x20required_info\x20(Contact\x20or\x20WTS\x20Proof)','operation_field':'required_info','move_entry':'order::required_info_update','permission_layer':'L2_owner_or_agent','reversibility':'reversible','governed_operations':['required_info_update\x20(set\x20Contact\x20or\x20WTS\x20Proof\x20address)','required_info\x20=\x20null\x20(clear)'],'common_patterns':['Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(via\x20Wowok\x20Messenger)','Both\x20owner\x20and\x20agent\x20can\x20update\x20—\x20useful\x20for\x20logistics\x20agent'],'related_risks':['R-O-3-02'],'recommended_templates':['T-O-01']},{'id':'order_arb_confirm','name':'Apply\x20for\x20arbitration\x20compensation','operation_field':'arb_confirm','move_entry':'arb::principal_confirm\x20/\x20arb::description_change\x20/\x20arb::proposition_change','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_confirm.confirm\x20(true=confirm\x20materials,\x20false=deny)','arb_confirm.description\x20(compensation\x20application\x20description)','arb_confirm.proposition\x20(compensation\x20claims\x20list)'],'common_patterns':['Triggers\x20Arb\x20→\x20dispute()\x20appends\x20Arb\x20to\x20order.dispute','Both\x20owner\x20and\x20agent\x20can\x20file\x20—\x20agent\x20useful\x20for\x20representative\x20cases','Once\x20filed,\x20the\x20Arb\x20process\x20is\x20irreversible'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_objection','name':'Object\x20to\x20arbitration\x20result','operation_field':'arb_objection','move_entry':'arb::objection','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_objection.objection\x20(reason\x20for\x20re-arbitration)'],'common_patterns':['Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(after\x20ruling)','Triggers\x20re-arbitration\x20flow','Both\x20owner\x20and\x20agent\x20can\x20object'],'related_risks':['R-O-3-03','R-O-4-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_claim_compensation','name':'Claim\x20compensation\x20(sets\x20claimed_by,\x20irreversible)','operation_field':'arb_claim_compensation','move_entry':'service::compensation_claim\x20→\x20order::compensate','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_claim_compensation.arb\x20(the\x20ruled\x20Arb\x20object)','compensate()\x20sets\x20order.claimed_by\x20=\x20arb'],'common_patterns':['⚠️\x20ONE-TIME,\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim,\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED)','Requires\x20Arb\x20status\x20=\x20Arbitrated','Both\x20owner\x20and\x20agent\x20can\x20claim'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-06']},{'id':'order_receive','name':'Receive\x20payment\x20(owner-only)','operation_field':'receive','move_entry':'order::owner_receive\x20/\x20order::owner_receive_object','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['receive\x20CoinWrapper\x20(unwrap\x20and\x20forward\x20to\x20owner)','receive\x20arbitrary\x20Receiving<K>\x20object'],'common_patterns':['⚠️\x20Only\x20owner\x20can\x20receive\x20—\x20agent\x20CANNOT','Aborts\x20E_ORDER_DELIVERING\x20if\x20Progress\x20not\x20at\x20terminal\x20node','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Receives\x20are\x20unwrapped\x20and\x20transferred\x20to\x20owner\x20address'],'related_risks':['R-O-3-01','R-O-4-05'],'recommended_templates':['T-O-05']},{'id':'order_transfer','name':'Transfer\x20order\x20ownership\x20(irreversible)','operation_field':'transfer_to','move_entry':'order::owner_change','permission_layer':'L1_owner_only','reversibility':'irreversible','governed_operations':['transfer_to\x20(new\x20owner\x20address)'],'common_patterns':['⚠️\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','Only\x20owner\x20can\x20transfer\x20(assert_owner)','Can\x20be\x20called\x20even\x20after\x20Progress\x20binding\x20(unlike\x20agent_set)','New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20future\x20payments'],'related_risks':['R-O-3-01','R-O-4-06'],'recommended_templates':['T-O-05']},{'id':'order_dispute_append','name':'Append\x20Arb\x20to\x20dispute\x20list\x20(package-only)','operation_field':'lifecycle','move_entry':'order::dispute\x20(package-only)','permission_layer':'L3_package_only','reversibility':'append_only','governed_operations':['dispute(arb)\x20—\x20append\x20Arb\x20address\x20to\x20order.dispute'],'common_patterns':['Called\x20by\x20Arbitration\x20module\x20(arb::create),\x20NOT\x20by\x20external\x20users','Max\x2010\x20Arb\x20addresses\x20(MAX_DISPUTE_COUNT)','Frozen\x20when\x20claimed_by\x20is\x20set\x20(E_ORDER_ALREADY_CLAIMED)','Duplicate\x20Arb\x20addresses\x20are\x20silently\x20skipped'],'related_risks':['R-O-1-03','R-O-3-03','R-O-5-04'],'recommended_templates':['T-O-04']}];export const ORDER_AUDIT_FORMULAS={'status_inference':'if\x20claimed_by\x20!=\x20null:\x20CLAIMED;\x20'+'elif\x20progress\x20!=\x20null:\x20query\x20Progress\x20→\x20terminal?\x20COMPLETED\x20:\x20cancel?\x20CANCELLED\x20:\x20IN_PROGRESS;\x20'+'elif\x20dispute.length\x20>\x200:\x20DISPUTED;\x20'+'else:\x20CREATED','amount_check':'order.amount\x20=\x20sum(items[].price\x20*\x20items[].quantity)\x20-\x20discount_value','fund_balance':'order.amount\x20=\x20allocation_distributed\x20+\x20compensation_paid\x20+\x20refund_amount','dispute_constraint':'dispute.length\x20<=\x20MAX_DISPUTE_COUNT\x20(10);\x20frozen\x20when\x20claimed_by.is_some()','agent_constraint':'agent.length\x20<=\x20MAX_AGENT_COUNT\x20(doc=10,\x20⚠️\x20actual=11\x20due\x20to\x20<=\x20bug\x20in\x20agent_set_imp)'};export const ORDER_LEDGER_VERSION='1.0.0';export function getScenesByOperationField(a){return ORDER_SCENES['filter'](b=>b['operation_field']===a);}export function findSceneById(a){return ORDER_SCENES['find'](b=>b['id']===a);}export function findSceneByMoveEntry(a){return ORDER_SCENES['find'](b=>b['move_entry']['includes'](a));}export function getScenesByPermissionLayer(a){return ORDER_SCENES['filter'](b=>b['permission_layer']===a);}export function getScenesByReversibility(a){return ORDER_SCENES['filter'](b=>b['reversibility']===a);}export function getFieldDef(a){return ORDER_FIELDS['find'](b=>b['move_name']===a);}export function getMutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x4);}export function getImmutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x1);}export function getFrozenAfterProgressFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x3);}export function getOneTimeSetFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x2);}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['buy','order_create'],['purchase','order_create'],['advance','order_advance'],['forward','order_advance'],['progress','order_advance'],['set\x20agent','order_set_agent'],['agent','order_set_agent'],['required_info','order_required_info'],['recipient','order_required_info'],['arb\x20confirm','order_arb_confirm'],['apply\x20arbitration','order_arb_confirm'],['apply\x20compensation','order_arb_confirm'],['objection','order_arb_objection'],['object','order_arb_objection'],['claim\x20compensation','order_arb_claim_compensation'],['claim','order_arb_claim_compensation'],['receive','order_receive'],['collect','order_receive'],['withdraw','order_receive'],['transfer','order_transfer'],['transfer\x20ownership','order_transfer'],['handover','order_transfer']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return findSceneById(e);}return undefined;}export function getEmittedEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>a['actually_emitted']);}export function getInferredEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>!a['actually_emitted']);}export function getOrderScenesCount(){return ORDER_SCENES['length'];}export function sdkToMoveField(a){const b=ORDER_FIELDS['find'](c=>c['sdk_name']===a);return b?.['move_name'];}export function moveToSdkField(a){const b=ORDER_FIELDS['find'](c=>c['move_name']===a);return b?.['sdk_name'];}
|
|
1
|
+
export const ORDER_FIELDS=[{'move_name':'id','sdk_name':'id','move_type':'UID','mutability_layer':0x1,'description':'Order\x20unique\x20ID'},{'move_name':'items','sdk_name':'items','move_type':'vector<SaleItem>','mutability_layer':0x1,'description':'Purchased\x20items\x20(created-immutable)'},{'move_name':'discount','sdk_name':'discount','move_type':'Option<address>','mutability_layer':0x1,'description':'Discount\x20object\x20address\x20(created-immutable)'},{'move_name':'progress','sdk_name':'progress','move_type':'Option<address>','mutability_layer':0x2,'description':'Progress\x20object\x20address\x20(one-time-set\x20via\x20on_progress)'},{'move_name':'machine','sdk_name':'machine','move_type':'Option<address>','mutability_layer':0x1,'description':'Machine\x20snapshot\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'},{'move_name':'amount','sdk_name':'amount','move_type':'u64','mutability_layer':0x1,'description':'Order\x20amount\x20in\x20MIST\x20(created-immutable)'},{'move_name':'owner','sdk_name':'builder','move_type':'address','mutability_layer':0x4,'description':'Order\x20owner\x20/\x20buyer.\x20Mutable\x20at\x20ANY\x20time\x20via\x20owner_change\x20(L1,\x20E_NOT_THE_OWNER).\x20⚠️\x20SDK\x20field\x20name\x20is\x20\x27builder\x27\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)'},{'move_name':'service','sdk_name':'service','move_type':'address','mutability_layer':0x1,'description':'Service\x20object\x20address\x20(created-immutable,\x20reference\x20only)'},{'move_name':'dispute','sdk_name':'dispute','move_type':'vector<address>','mutability_layer':0x4,'description':'Arb\x20object\x20addresses\x20(append-only,\x20max\x2010,\x20frozen\x20when\x20claimed_by\x20set)'},{'move_name':'agent','sdk_name':'agent','move_type':'vector<address>','mutability_layer':0x4,'description':'Agent\x20addresses\x20(max\x2010\x20distinct\x20per\x20call\x20—\x20input\x20deduped\x20on-chain;\x20agent_set\x20REPLACES\x20the\x20whole\x20list\x20at\x20any\x20time,\x20no\x20progress\x20freeze)'},{'move_name':'allocation','sdk_name':'allocation','move_type':'Option<address>','mutability_layer':0x2,'description':'Allocation\x20object\x20address\x20(one-time-set\x20via\x20on_allocation)'},{'move_name':'claimed_by','sdk_name':'claimed_by','move_type':'Option<address>','mutability_layer':0x2,'description':'Claimed\x20Arb\x20object\x20address\x20(one-time,\x20irreversible;\x20blocks\x20new\x20disputes)'},{'move_name':'required_info','sdk_name':'required_info','move_type':'Option<address>','mutability_layer':0x4,'description':'Contact\x20(recipient)\x20or\x20WTS\x20Proof\x20(delivery\x20proof);\x20owner-only\x20(assert_owner)'},{'move_name':'time','sdk_name':'time','move_type':'u64','mutability_layer':0x1,'description':'Creation\x20timestamp\x20(clock::timestamp_ms)'}];export const ORDER_STATES=['CREATED','IN_PROGRESS','DISPUTED','CLAIMED','COMPLETED','CANCELLED'];export const ORDER_STATE_TRANSITIONS=[{'from':'CREATED','to':'IN_PROGRESS','trigger':'service::buy()\x20with\x20machine\x20→\x20on_progress\x20sets\x20progress'},{'from':'CREATED','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'CREATED','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20(no\x20machine\x20path)\x20or\x20manual'},{'from':'IN_PROGRESS','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'IN_PROGRESS','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20node'},{'from':'IN_PROGRESS','to':'CANCELLED','trigger':'Progress\x20reaches\x20cancel\x20node'},{'from':'DISPUTED','to':'CLAIMED','trigger':'arb_claim_compensation\x20→\x20compensate()\x20sets\x20claimed_by'},{'from':'DISPUTED','to':'COMPLETED','trigger':'Arb\x20resolution\x20+\x20Progress\x20terminal'},{'from':'DISPUTED','to':'CANCELLED','trigger':'Arb\x20resolution\x20=\x20cancel'}];export const ORDER_LIFECYCLE_EVENTS=[{'name':'NewOrderEvent','trigger':'service::buy()\x20phase\x205\x20(order::create)','emit_source':'order::create()','actually_emitted':!![],'fields':['object','service','progress','discount','allocation','amount']},{'name':'OrderCompletedEvent','trigger':'Progress\x20reaches\x20terminal','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','completion_time']},{'name':'OrderCancelledEvent','trigger':'Progress\x20reaches\x20cancel','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','cancel_reason']},{'name':'OrderAdvancedEvent','trigger':'order.progress\x20forward','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','from_node','to_node']},{'name':'OrderDisputeAppendedEvent','trigger':'arb_confirm\x20→\x20dispute()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb']},{'name':'OrderClaimedEvent','trigger':'arb_claim_compensation\x20→\x20compensate()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb','claimed_by']},{'name':'OwnerChangedEvent','trigger':'owner_change\x20/\x20transfer_to','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','old_owner','new_owner']},{'name':'AgentSetEvent','trigger':'agent_set','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','agent_list']},{'name':'RequiredInfoUpdatedEvent','trigger':'required_info_update','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','required_info']},{'name':'AllocationBoundEvent','trigger':'on_allocation','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','allocation']},{'name':'ProgressBoundEvent','trigger':'on_progress','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','progress']}];export const ORDER_PERMISSION_MATRIX=[{'operation':'owner_receive\x20/\x20receive','move_function':'owner_receive\x20/\x20owner_receive_object','layer':'L4_object_gated','aborts_with':'EPAYMENT_NOT_MATCH\x20(payment.move)','notes':'Gated\x20by\x20Receiving\x20existence,\x20NOT\x20by\x20an\x20owner\x20assert:\x20allocation::alloc\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address.\x20No\x20assert_owner\x20—\x20funds\x20ALWAYS\x20go\x20to\x20order.owner\x20regardless\x20of\x20caller.\x20Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH).'},{'operation':'transfer_to\x20(ownership\x20transfer)','move_function':'owner_change','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Irreversible.\x20New\x20owner\x20takes\x20over\x20ALL\x20permissions.\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'agent_set','move_function':'agent_set','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER,\x20E_MAX_AGENT_COUNT','notes':'REPLACES\x20the\x20whole\x20agent\x20list\x20(not\x20append).\x20Max\x2010\x20distinct\x20agents\x20(assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push).\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'required_info_update','move_function':'required_info_update','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Owner-only\x20(assert_owner).\x20Agent\x20CANNOT\x20update\x20required_info.'},{'operation':'progress\x20(advance)','move_function':'(progress::operate)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20advance\x20Progress.'},{'operation':'arb_confirm','move_function':'(arb::principal_confirm)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'Both\x20can\x20file\x20arbitration.\x20confirmed=true\x20additionally\x20asserts\x20claimed_by\x20is\x20none.\x20Irreversible.'},{'operation':'arb_objection','move_function':'(arb::objection)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_ORDER_ALREADY_CLAIMED,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH','notes':'Both\x20can\x20object\x20to\x20Arb\x20ruling.\x20Requires\x20Arb\x20status\x20==\x20Arbirated.\x20Irreversible.'},{'operation':'arb_claim_compensation','move_function':'(service::compensation_claim)','layer':'L4_object_gated','aborts_with':'E_ORDER_SERVICE_NOT_MATCH,\x20E_ARBITRATION_ARB_NOT_MATCH,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_COMPENSATION_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'No\x20op-permission\x20assert\x20—\x20gated\x20by\x20Arb\x20status\x20(must\x20be\x20Arbirated\x20via\x20arb::finish).\x20Compensation\x20is\x20paid\x20to\x20tx\x20sender.\x20Sets\x20claimed_by\x20—\x20one-time,\x20irreversible.'},{'operation':'on_progress\x20(package-only)','move_function':'on_progress','layer':'L3_package_only','aborts_with':'E_PROGRESS_ALREADY_SPECIFIED','notes':'Progress\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'on_allocation\x20(package-only)','move_function':'on_allocation','layer':'L3_package_only','aborts_with':'E_ALLOCATION_ALREADY_SPECIFIED','notes':'Allocation\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'dispute\x20(package-only)','move_function':'dispute','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED,\x20E_MAX_DISPUTE_COUNT','notes':'Arbitration\x20module\x20appends\x20Arb\x20address.'},{'operation':'compensate\x20(package-only)','move_function':'compensate','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED','notes':'Arbitration\x20module\x20sets\x20claimed_by.\x20Irreversible.'}];export const ORDER_SCENES=[{'id':'order_create','name':'Create\x20order\x20via\x20service::buy\x20(composite\x20creation)','operation_field':'object','move_entry':'service::buy\x20→\x20order::new\x20→\x20order::create','permission_layer':'L3_package_only','reversibility':'irreversible','governed_operations':['service::buy(items,\x20discount,\x20machine_forward?,\x20named_order?)','order::new\x20(package-only)','allocation::new\x20+\x20order::on_allocation\x20(if\x20order_allocators\x20configured)','progress::new\x20+\x20order::on_progress\x20(if\x20machine\x20configured)','order::create\x20+\x20emit\x20NewOrderEvent'],'common_patterns':['Composite\x20creation:\x20Order\x20+\x20Allocation\x20+\x20Progress\x20in\x20one\x20transaction','Service.machine\x20is\x20SNAPSHOTTED\x20to\x20order.machine\x20(not\x20a\x20reference)','owner\x20=\x20tx_context::sender\x20(buyer);\x20agent\x20=\x20[]\x20initially','Allotment\x206\x20phases\x20are\x20atomic\x20—\x20any\x20failure\x20rolls\x20back\x20fully'],'related_risks':['R-O-1-05','R-O-2-01','R-O-4-01','R-O-5-01'],'recommended_templates':['T-O-01','T-O-02','T-O-03']},{'id':'order_advance','name':'Advance\x20Progress\x20(forward/hold)','operation_field':'progress','move_entry':'progress::operate\x20(via\x20order.progress\x20delegation)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['progress.operation.next_node_name\x20+\x20forward','progress.op\x20(next/hold/unhold/adminUnhold)','progress.message\x20(optional)'],'common_patterns':['Both\x20owner\x20and\x20agent\x20can\x20advance\x20—\x20agent\x20enables\x20third-party\x20logistics','Node\x20transition\x20is\x20irreversible\x20(no\x20backward\x20movement)','Forward.guard\x20may\x20require\x20Guard\x20submission'],'related_risks':['R-O-3-02','R-O-4-03','R-O-5-03'],'recommended_templates':['T-O-02']},{'id':'order_set_agent','name':'Set\x20agent\x20list\x20(owner-only,\x20replaces\x20entire\x20list)','operation_field':'agent','move_entry':'order::agent_set','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['agent_set\x20(overwrites\x20entire\x20agent\x20list)'],'common_patterns':['agent_set\x20REPLACES\x20the\x20whole\x20list\x20—\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access\x20(old\x20agent\x20role\x20records\x20are\x20removed\x20from\x20EntityOrders)','Max\x2010\x20distinct\x20agents\x20per\x20call\x20(E_MAX_AGENT_COUNT,\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20operate\x20the\x20order\x20(L2\x20ops)\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)'],'related_risks':['R-O-1-04','R-O-3-01','R-O-4-02'],'recommended_templates':['T-O-03']},{'id':'order_required_info','name':'Update\x20required_info\x20(Contact\x20or\x20WTS\x20Proof)','operation_field':'required_info','move_entry':'order::required_info_update','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['required_info_update\x20(set\x20Contact\x20or\x20WTS\x20Proof\x20address)','required_info\x20=\x20null\x20(clear)'],'common_patterns':['Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(via\x20Wowok\x20Messenger)','Owner-only\x20(assert_owner)\x20—\x20agent\x20CANNOT\x20update\x20required_info'],'related_risks':['R-O-3-02'],'recommended_templates':['T-O-01']},{'id':'order_arb_confirm','name':'Apply\x20for\x20arbitration\x20compensation','operation_field':'arb_confirm','move_entry':'arb::principal_confirm\x20/\x20arb::description_change\x20/\x20arb::proposition_change','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_confirm.confirm\x20(true=confirm\x20materials,\x20false=deny)','arb_confirm.description\x20(compensation\x20application\x20description)','arb_confirm.proposition\x20(compensation\x20claims\x20list)'],'common_patterns':['Triggers\x20Arb\x20→\x20dispute()\x20appends\x20Arb\x20to\x20order.dispute','Both\x20owner\x20and\x20agent\x20can\x20file\x20—\x20agent\x20useful\x20for\x20representative\x20cases','Once\x20filed,\x20the\x20Arb\x20process\x20is\x20irreversible'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_objection','name':'Object\x20to\x20arbitration\x20result','operation_field':'arb_objection','move_entry':'arb::objection','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_objection.objection\x20(reason\x20for\x20re-arbitration)'],'common_patterns':['Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(after\x20ruling)','Triggers\x20re-arbitration\x20flow','Both\x20owner\x20and\x20agent\x20can\x20object'],'related_risks':['R-O-3-03','R-O-4-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_claim_compensation','name':'Claim\x20compensation\x20(sets\x20claimed_by,\x20irreversible)','operation_field':'arb_claim_compensation','move_entry':'service::compensation_claim\x20→\x20order::compensate','permission_layer':'L4_object_gated','reversibility':'irreversible','governed_operations':['arb_claim_compensation.arb\x20(the\x20ruled\x20Arb\x20object)','compensate()\x20sets\x20order.claimed_by\x20=\x20arb'],'common_patterns':['⚠️\x20ONE-TIME,\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim,\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED)','Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(arb::finish\x20gating\x20—\x20no\x20op-permission\x20assert)','Compensation\x20is\x20paid\x20to\x20the\x20tx\x20sender\x20(typically\x20the\x20principal\x20who\x20filed\x20the\x20dispute)'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-06']},{'id':'order_receive','name':'Receive\x20payment\x20(Receiving-gated,\x20funds\x20to\x20owner)','operation_field':'receive','move_entry':'order::owner_receive\x20/\x20order::owner_receive_object','permission_layer':'L4_object_gated','reversibility':'reversible','governed_operations':['receive\x20CoinWrapper\x20(unwrap\x20and\x20forward\x20to\x20owner)','receive\x20arbitrary\x20Receiving<K>\x20object'],'common_patterns':['⚠️\x20Gated\x20by\x20Receiving\x20existence:\x20allocation::alloc\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20—\x20without\x20it\x20the\x20call\x20cannot\x20even\x20be\x20constructed','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20funds\x20are\x20ALWAYS\x20forwarded\x20to\x20order.owner\x20regardless\x20of\x20caller','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Receives\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address'],'related_risks':['R-O-3-01','R-O-4-05'],'recommended_templates':['T-O-05']},{'id':'order_transfer','name':'Transfer\x20order\x20ownership\x20(irreversible)','operation_field':'transfer_to','move_entry':'order::owner_change','permission_layer':'L1_owner_only','reversibility':'irreversible','governed_operations':['transfer_to\x20(new\x20owner\x20address)'],'common_patterns':['⚠️\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','Only\x20owner\x20can\x20transfer\x20(assert_owner)','Can\x20be\x20called\x20even\x20after\x20Progress\x20binding\x20(unlike\x20agent_set)','New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20future\x20payments'],'related_risks':['R-O-3-01','R-O-4-06'],'recommended_templates':['T-O-05']},{'id':'order_dispute_append','name':'Append\x20Arb\x20to\x20dispute\x20list\x20(package-only)','operation_field':'lifecycle','move_entry':'order::dispute\x20(package-only)','permission_layer':'L3_package_only','reversibility':'append_only','governed_operations':['dispute(arb)\x20—\x20append\x20Arb\x20address\x20to\x20order.dispute'],'common_patterns':['Called\x20by\x20Arbitration\x20module\x20(arb::create),\x20NOT\x20by\x20external\x20users','Max\x2010\x20Arb\x20addresses\x20(MAX_DISPUTE_COUNT)','Frozen\x20when\x20claimed_by\x20is\x20set\x20(E_ORDER_ALREADY_CLAIMED)','Duplicate\x20Arb\x20addresses\x20are\x20silently\x20skipped'],'related_risks':['R-O-1-03','R-O-3-03','R-O-5-04'],'recommended_templates':['T-O-04']}];export const ORDER_AUDIT_FORMULAS={'status_inference':'if\x20claimed_by\x20!=\x20null:\x20CLAIMED;\x20'+'elif\x20progress\x20!=\x20null:\x20query\x20Progress\x20→\x20terminal?\x20COMPLETED\x20:\x20cancel?\x20CANCELLED\x20:\x20IN_PROGRESS;\x20'+'elif\x20dispute.length\x20>\x200:\x20DISPUTED;\x20'+'else:\x20CREATED','amount_check':'order.amount\x20=\x20sum(items[].price\x20*\x20items[].quantity)\x20-\x20discount_value','fund_balance':'order.amount\x20=\x20allocation_distributed\x20+\x20compensation_paid\x20+\x20refund_amount','dispute_constraint':'dispute.length\x20<=\x20MAX_DISPUTE_COUNT\x20(10);\x20frozen\x20when\x20claimed_by.is_some()','agent_constraint':'agent.length\x20<=\x20MAX_AGENT_COUNT\x20(doc=10,\x20⚠️\x20actual=11\x20due\x20to\x20<=\x20bug\x20in\x20agent_set_imp)'};export const ORDER_LEDGER_VERSION='1.0.0';export function getScenesByOperationField(a){return ORDER_SCENES['filter'](b=>b['operation_field']===a);}export function findSceneById(a){return ORDER_SCENES['find'](b=>b['id']===a);}export function findSceneByMoveEntry(a){return ORDER_SCENES['find'](b=>b['move_entry']['includes'](a));}export function getScenesByPermissionLayer(a){return ORDER_SCENES['filter'](b=>b['permission_layer']===a);}export function getScenesByReversibility(a){return ORDER_SCENES['filter'](b=>b['reversibility']===a);}export function getFieldDef(a){return ORDER_FIELDS['find'](b=>b['move_name']===a);}export function getMutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x4);}export function getImmutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x1);}export function getFrozenAfterProgressFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x3);}export function getOneTimeSetFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x2);}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['buy','order_create'],['purchase','order_create'],['advance','order_advance'],['forward','order_advance'],['progress','order_advance'],['set\x20agent','order_set_agent'],['agent','order_set_agent'],['required_info','order_required_info'],['recipient','order_required_info'],['arb\x20confirm','order_arb_confirm'],['apply\x20arbitration','order_arb_confirm'],['apply\x20compensation','order_arb_confirm'],['objection','order_arb_objection'],['object','order_arb_objection'],['claim\x20compensation','order_arb_claim_compensation'],['claim','order_arb_claim_compensation'],['receive','order_receive'],['collect','order_receive'],['withdraw','order_receive'],['transfer','order_transfer'],['transfer\x20ownership','order_transfer'],['handover','order_transfer']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return findSceneById(e);}return undefined;}export function getEmittedEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>a['actually_emitted']);}export function getInferredEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>!a['actually_emitted']);}export function getOrderScenesCount(){return ORDER_SCENES['length'];}export function sdkToMoveField(a){const b=ORDER_FIELDS['find'](c=>c['sdk_name']===a);return b?.['move_name'];}export function moveToSdkField(a){const b=ORDER_FIELDS['find'](c=>c['move_name']===a);return b?.['sdk_name'];}
|
|
@@ -90,16 +90,16 @@ export interface OrderConstraintChecklist {
|
|
|
90
90
|
F_O_01_no_permission_uses_owner_agent: boolean;
|
|
91
91
|
F_O_02_machine_is_snapshot: boolean;
|
|
92
92
|
F_O_03_compound_creation_via_service_buy: boolean;
|
|
93
|
-
|
|
93
|
+
F_O_04_progress_binding_does_not_freeze_owner_agent: boolean;
|
|
94
94
|
F_O_05_claimed_by_irreversible_blocks_dispute: boolean;
|
|
95
95
|
F_O_06_only_new_order_event_emitted: boolean;
|
|
96
96
|
F_O_07_dispute_max_10: boolean;
|
|
97
97
|
F_O_08_agent_max_10_actual_11: boolean;
|
|
98
98
|
F_O_09_no_store_cannot_be_nested: boolean;
|
|
99
99
|
F_O_10_sdk_builder_equals_move_owner: boolean;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
F_O_11_receive_gated_by_receiving_existence: boolean;
|
|
101
|
+
F_O_12_receive_funds_always_to_owner: boolean;
|
|
102
|
+
F_O_13_e_progress_not_specified_creation_check: boolean;
|
|
103
103
|
F_O_14_buy_is_atomic: boolean;
|
|
104
104
|
F_O_15_package_only_callbacks: boolean;
|
|
105
105
|
F_O_16_order_allocation_1_to_1: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MAX_AGENT_COUNT}from'@wowok/wowok';import{ORDER_SCENES,findSceneById,inferSceneFromIntent}from'./order-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'buy','lifecycle_phase':a['lifecycle_phase']??'P-O-01_Created','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_O_01_no_permission_uses_owner_agent':!![],'F_O_02_machine_is_snapshot':!![],'F_O_03_compound_creation_via_service_buy':!![],'
|
|
1
|
+
import{MAX_AGENT_COUNT}from'@wowok/wowok';import{ORDER_SCENES,findSceneById,inferSceneFromIntent}from'./order-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'buy','lifecycle_phase':a['lifecycle_phase']??'P-O-01_Created','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_O_01_no_permission_uses_owner_agent':!![],'F_O_02_machine_is_snapshot':!![],'F_O_03_compound_creation_via_service_buy':!![],'F_O_04_progress_binding_does_not_freeze_owner_agent':!![],'F_O_05_claimed_by_irreversible_blocks_dispute':!![],'F_O_06_only_new_order_event_emitted':!![],'F_O_07_dispute_max_10':!![],'F_O_08_agent_max_10_actual_11':!![],'F_O_09_no_store_cannot_be_nested':!![],'F_O_10_sdk_builder_equals_move_owner':!![],'F_O_11_receive_gated_by_receiving_existence':!![],'F_O_12_receive_funds_always_to_owner':!![],'F_O_13_e_progress_not_specified_creation_check':!![],'F_O_14_buy_is_atomic':!![],'F_O_15_package_only_callbacks':!![],'F_O_16_order_allocation_1_to_1':!![],'F_O_17_order_progress_1_to_1':!![],'F_O_18_wip_hash_no_empty_string':!![],'F_O_19_saleitem_item_to_purchaseditem_name':!![],'F_O_20_time_auto_set':!![],'F_O_21_new_order_event_fields':!![],'F_O_22_required_info_contact_or_wts':!![],'F_O_23_transfer_to_irreversible':!![],'F_O_24_sdk_no_client_side_count_check':!![],'F_O_25_service_decoupled_after_publish':!![]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else!a['intent']['rule_sentence']&&(b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'}));if(!a['binding'])a['intent']?.['action']==='buy'&&(b['push']('B'),c['push']({'dimension':'B','reason':'Binding\x20not\x20specified\x20(service\x20+\x20items\x20+\x20owner)'}));else a['intent']?.['action']==='buy'&&!a['binding']['service']&&(b['push']('B'),c['push']({'dimension':'B','reason':'service\x20address\x20missing'}));return!a['data_source']&&a['intent']?.['action']==='buy'&&(b['push']('C'),c['push']({'dimension':'C','reason':'Data\x20source\x20not\x20specified\x20(where\x20fields\x20come\x20from)'})),!a['operations']&&(a['intent']&&a['intent']['action']!=='buy'&&(b['push']('D'),c['push']({'dimension':'D','reason':'Operations\x20not\x20enumerated'}))),!a['logic']&&(b['push']('E'),c['push']({'dimension':'E','reason':'Logic\x20flow\x20not\x20defined\x20(state\x20transitions\x20+\x20mutex)'})),!a['constraints']&&(b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'})),{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export function validateConstraints(a){const c=[];if(a['binding']){const d=a['binding'];d['agents']['length']>MAX_AGENT_COUNT&&c['push']({'constraint_id':'F-O-08','severity':'HIGH','message':'Agent\x20count\x20'+d['agents']['length']+'\x20exceeds\x20MAX_AGENT_COUNT\x20'+MAX_AGENT_COUNT+'\x20(distinct\x20count\x20after\x20on-chain\x20dedup\x20is\x20the\x20limit\x20—\x20E_MAX_AGENT_COUNT)','current_value':d['agents']['length'],'limit':MAX_AGENT_COUNT});for(const e of d['items']){(!e['wip_hash']||e['wip_hash']==='')&&c['push']({'constraint_id':'F-O-18','severity':'HIGH','message':'Item\x20\x22'+e['name']+'\x22\x20has\x20empty\x20wip_hash\x20(Move\x20rejects\x20empty\x20string)'});}}if(a['operations'])for(const f of a['operations']['operations']){f['type']==='agent_set'&&a['binding']?.['progress']&&c['push']({'constraint_id':'F-O-04','severity':'MEDIUM','message':'agent_set\x20mid-fulfillment:\x20Progress\x20is\x20bound\x20—\x20allowed\x20on-chain\x20(no\x20freeze),\x20but\x20the\x20call\x20REPLACES\x20the\x20entire\x20agent\x20list;\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access'}),f['type']==='transfer_to'&&c['push']({'constraint_id':'F-O-23','severity':'CRITICAL','message':'transfer_to\x20is\x20IRREVERSIBLE\x20—\x20new\x20owner\x20'+f['new_owner']+'\x20will\x20take\x20over\x20ALL\x20permissions'}),f['type']==='agent_set'&&f['agents']['length']>MAX_AGENT_COUNT&&c['push']({'constraint_id':'F-O-08','severity':'HIGH','message':'agent_set\x20with\x20'+f['agents']['length']+'\x20agents\x20exceeds\x20MAX_AGENT_COUNT\x20'+MAX_AGENT_COUNT,'current_value':f['agents']['length'],'limit':MAX_AGENT_COUNT});}return c;}export function generateConfirmationText(a){const c=[];c['push']('═══\x20Order\x20Confirmation\x20═══'),c['push']('');if(a['intent']){c['push']('Action:\x20'+a['intent']['action']),c['push']('Lifecycle\x20phase:\x20'+a['intent']['lifecycle_phase']),c['push']('Intent:\x20'+a['intent']['rule_sentence']);if(a['intent']['failure_conditions']['length']>0x0){c['push']('Failure\x20conditions:');for(const f of a['intent']['failure_conditions'])c['push']('\x20\x20-\x20'+f);}c['push']('');}if(a['binding']){const g=a['binding'];c['push']('─\x20Binding\x20(Service\x20snapshot)\x20──────────────'),c['push']('Service:\x20'+g['service']),c['push']('Machine\x20snapshot:\x20'+(g['machine_snapshot']??'(none\x20—\x20no\x20workflow)')),c['push']('Discount:\x20'+(g['discount']??'(none)')),c['push']('Items:\x20'+g['items']['length']);for(const h of g['items']){c['push']('\x20\x20-\x20'+h['name']+'\x20x'+h['quantity']+'\x20@\x20'+h['price']+'\x20(wip:\x20'+h['wip_hash']['slice'](0x0,0xa)+'...)');}c['push']('Amount:\x20'+g['amount']+'\x20MIST'),c['push']('Owner\x20(Move)\x20/\x20Builder\x20(SDK):\x20'+g['owner']),c['push']('Agents:\x20'+(g['agents']['length']>0x0?g['agents']['join'](',\x20'):'(none)')),c['push']('Progress:\x20'+(g['progress']??'(not\x20bound)')),c['push']('Allocation:\x20'+(g['allocation']??'(not\x20bound)')),c['push']('');}if(a['data_source']){c['push']('─\x20Data\x20Source\x20──────────────');const j=a['data_source'];c['push']('Service:\x20'+j['service_source']),c['push']('Machine:\x20'+j['machine_source']),c['push']('Amount:\x20'+j['amount_source']),c['push']('Owner:\x20'+j['owner_source']);if(j['progress_source']!=='none')c['push']('Progress:\x20'+j['progress_source']);if(j['allocation_source']!=='none')c['push']('Allocation:\x20'+j['allocation_source']);c['push']('');}if(a['operations']&&a['operations']['operations']['length']>0x0){c['push']('─\x20Operations\x20──────────────');for(const k of a['operations']['operations'])c['push']('\x20\x20-\x20'+JSON['stringify'](k));c['push']('');}a['logic']&&(c['push']('─\x20Logic\x20──────────────'),c['push']('State\x20transitions:\x20'+a['logic']['state_transitions']['length']),c['push']('Field\x20mutex\x20rules:\x20'+a['logic']['field_mutex']['length']),c['push']('Cross-object\x20flows:\x20'+a['logic']['cross_object_flows']['length']),c['push'](''));const e=validateConstraints(a);if(e['length']>0x0){c['push']('─\x20Constraint\x20Violations\x20──────────────');for(const l of e)c['push']('\x20\x20['+l['severity']+']\x20'+l['constraint_id']+':\x20'+l['message']);c['push']('');}return c['join']('\x0a');}export function verifySnapshotMechanism(a){if(!a['binding'])return{'snapshot_understood':![],'message':'Binding\x20not\x20specified\x20—\x20cannot\x20verify\x20snapshot'};if(a['binding']['machine_snapshot']&&!a['data_source'])return{'snapshot_understood':![],'message':'machine_snapshot\x20set\x20but\x20data_source\x20missing\x20—\x20cannot\x20confirm\x20snapshot\x20semantics'};if(a['binding']['machine_snapshot']&&a['data_source']?.['machine_source']!=='service_machine_snapshot')return{'snapshot_understood':![],'message':'machine_source\x20is\x20'+a['data_source']?.['machine_source']+',\x20expected\x20\x22service_machine_snapshot\x22'};return{'snapshot_understood':!![],'message':'Snapshot\x20mechanism\x20correctly\x20captured:\x20machine\x20is\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'};}export function inferLifecyclePhase(a){if(a['claimed_by'])return'P-O-04_Claimed';if(a['progress']){if(a['progress_at_terminal'])return'P-O-05_Completed';if(a['progress_at_cancel'])return'P-O-06_Cancelled';return'P-O-02_Progressing';}if(a['dispute']&&a['dispute']['length']>0x0)return'P-O-03_Disputed';return'P-O-01_Created';}export function matchSceneFromPuzzle(a){if(!a['intent'])return undefined;return inferSceneFromIntent(a['intent']['rule_sentence'])??inferSceneFromIntent(a['intent']['action']);}export function listAllScenes(){return ORDER_SCENES;}export function lookupScene(a){return findSceneById(a);}
|
|
@@ -40,6 +40,7 @@ export interface OrderRiskCheckContext {
|
|
|
40
40
|
current_service_machine?: string;
|
|
41
41
|
order_machine_snapshot?: string;
|
|
42
42
|
progress_at_terminal?: boolean;
|
|
43
|
+
receiving_exists?: boolean;
|
|
43
44
|
transfer_to_new_owner?: string;
|
|
44
45
|
caller_is_owner?: boolean;
|
|
45
46
|
caller_is_agent?: boolean;
|