@wowok/agent-mcp 2.7.2 → 2.7.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/dist/config/runtime.js +1 -1
- package/dist/customer/account-events.d.ts +32 -0
- package/dist/customer/account-events.js +1 -0
- package/dist/customer/customer-advice.d.ts +1 -0
- package/dist/customer/customer-advice.js +1 -1
- package/dist/customer/info-puzzle.js +1 -1
- package/dist/customer/order-strategy.d.ts +1 -1
- package/dist/customer/reminder-system.d.ts +2 -0
- package/dist/customer/reminder-system.js +1 -1
- package/dist/customer/risk-assessment.d.ts +1 -0
- package/dist/customer/risk-assessment.js +1 -1
- package/dist/customer/types.d.ts +2 -0
- package/dist/evaluation/builtins/arbitration-score.d.ts +41 -0
- package/dist/evaluation/builtins/arbitration-score.js +1 -0
- package/dist/evaluation/builtins/index.d.ts +1 -0
- package/dist/evaluation/builtins/index.js +1 -1
- package/dist/evaluation/category-match-rules.d.ts +30 -0
- package/dist/evaluation/category-match-rules.js +1 -0
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/index.d.ts +1 -0
- package/dist/evaluation/index.js +1 -1
- package/dist/evaluation/location-match.d.ts +42 -0
- package/dist/evaluation/location-match.js +1 -0
- package/dist/evaluation/path-reasoning.d.ts +35 -0
- package/dist/evaluation/path-reasoning.js +1 -0
- package/dist/evaluation/region.d.ts +6 -0
- package/dist/evaluation/region.js +1 -1
- package/dist/evaluation/types.d.ts +17 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/experience/user-profile.d.ts +1 -1
- package/dist/extensions/index.d.ts +6 -0
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-layers.d.ts +75 -0
- package/dist/extensions/industry-layers.js +1 -0
- package/dist/extensions/industry-pack.d.ts +105 -0
- package/dist/extensions/industry-pack.js +1 -0
- package/dist/extensions/metric-registry.js +1 -1
- package/dist/extensions/mode-evaluator.d.ts +1 -1
- package/dist/extensions/registry.d.ts +1 -0
- package/dist/extensions/registry.js +1 -1
- package/dist/graph/base.d.ts +8 -0
- package/dist/graph/base.js +1 -0
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/index.js +1 -1
- package/dist/harness/plan.d.ts +2 -0
- package/dist/harness/plan.js +1 -1
- package/dist/harness/recover.d.ts +1 -1
- package/dist/harness/types.d.ts +2 -3
- package/dist/index.js +1 -1
- package/dist/knowledge/allocation-confirm.js +1 -1
- package/dist/knowledge/anti-cheat.d.ts +37 -0
- package/dist/knowledge/anti-cheat.js +1 -0
- package/dist/knowledge/arb-confirm.d.ts +28 -0
- package/dist/knowledge/arb-confirm.js +1 -0
- package/dist/knowledge/arb-translation.d.ts +48 -0
- package/dist/knowledge/arb-translation.js +1 -0
- package/dist/knowledge/arbitration-context.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/bridge-confirm.d.ts +26 -0
- package/dist/knowledge/bridge-confirm.js +1 -0
- package/dist/knowledge/bridge-translation.d.ts +37 -0
- package/dist/knowledge/bridge-translation.js +1 -0
- package/dist/knowledge/contact-confirm.d.ts +27 -0
- package/dist/knowledge/contact-confirm.js +1 -0
- package/dist/knowledge/contact-translation.d.ts +39 -0
- package/dist/knowledge/contact-translation.js +1 -0
- package/dist/knowledge/demand-confirm.js +1 -1
- package/dist/knowledge/demand-context.d.ts +17 -0
- package/dist/knowledge/demand-context.js +1 -0
- package/dist/knowledge/demand-ledger.d.ts +26 -0
- package/dist/knowledge/demand-ledger.js +1 -0
- package/dist/knowledge/demand-puzzle.d.ts +29 -0
- package/dist/knowledge/demand-puzzle.js +1 -0
- package/dist/knowledge/demand-risk.js +1 -1
- package/dist/knowledge/demand-templates.d.ts +12 -0
- package/dist/knowledge/demand-templates.js +1 -0
- package/dist/knowledge/demand-translation.js +1 -1
- package/dist/knowledge/deployment-scanner.js +1 -1
- package/dist/knowledge/evidence-review.d.ts +12 -0
- package/dist/knowledge/evidence-review.js +1 -0
- package/dist/knowledge/examples-scanner-cli.js +1 -1
- package/dist/knowledge/examples-scanner.js +1 -1
- package/dist/knowledge/flywheel-loop.d.ts +0 -1
- package/dist/knowledge/flywheel-loop.js +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-migration.d.ts +1 -1
- package/dist/knowledge/index.d.ts +71 -3
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/machine-render.js +1 -1
- package/dist/knowledge/market-metrics.d.ts +12 -0
- package/dist/knowledge/market-metrics.js +1 -0
- package/dist/knowledge/market-operations.d.ts +46 -0
- package/dist/knowledge/market-operations.js +1 -0
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
- package/dist/knowledge/mcp-schema-audit.d.ts +22 -22
- package/dist/knowledge/mcp-schema-audit.js +1 -1
- package/dist/knowledge/onchain-constants.d.ts +2 -2
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/payment-confirm.d.ts +26 -0
- package/dist/knowledge/payment-confirm.js +1 -0
- package/dist/knowledge/payment-risk.js +1 -1
- package/dist/knowledge/payment-translation.d.ts +37 -0
- package/dist/knowledge/payment-translation.js +1 -0
- package/dist/knowledge/permission-context.d.ts +11 -0
- package/dist/knowledge/permission-context.js +1 -1
- package/dist/knowledge/permission-ledger.d.ts +11 -0
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/personal-confirm.d.ts +29 -0
- package/dist/knowledge/personal-confirm.js +1 -0
- package/dist/knowledge/personal-risk.js +1 -1
- package/dist/knowledge/personal-translation.d.ts +37 -0
- package/dist/knowledge/personal-translation.js +1 -0
- package/dist/knowledge/process-model.d.ts +1 -11
- package/dist/knowledge/process-model.js +1 -1
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/progress-templates.js +1 -1
- package/dist/knowledge/progress-translation.js +1 -1
- package/dist/knowledge/proof-context.d.ts +17 -0
- package/dist/knowledge/proof-context.js +1 -0
- package/dist/knowledge/proof-ledger.d.ts +34 -0
- package/dist/knowledge/proof-ledger.js +1 -0
- package/dist/knowledge/proof-puzzle.d.ts +35 -0
- package/dist/knowledge/proof-puzzle.js +1 -0
- package/dist/knowledge/proof-templates.d.ts +22 -0
- package/dist/knowledge/proof-templates.js +1 -0
- package/dist/knowledge/registrar-confirm.d.ts +26 -0
- package/dist/knowledge/registrar-confirm.js +1 -0
- package/dist/knowledge/registrar-risk.js +1 -1
- package/dist/knowledge/registrar-translation.d.ts +37 -0
- package/dist/knowledge/registrar-translation.js +1 -0
- package/dist/knowledge/repository-context.d.ts +12 -0
- package/dist/knowledge/repository-context.js +1 -0
- package/dist/knowledge/repository-ledger.d.ts +25 -0
- package/dist/knowledge/repository-ledger.js +1 -0
- package/dist/knowledge/repository-puzzle.d.ts +30 -0
- package/dist/knowledge/repository-puzzle.js +1 -0
- package/dist/knowledge/repository-templates.d.ts +14 -0
- package/dist/knowledge/repository-templates.js +1 -0
- package/dist/knowledge/resource-confirm.d.ts +25 -0
- package/dist/knowledge/resource-confirm.js +1 -0
- package/dist/knowledge/resource-translation.d.ts +37 -0
- package/dist/knowledge/resource-translation.js +1 -0
- package/dist/knowledge/reward-context.d.ts +2 -2
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-translation.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +1 -0
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/service-risk.d.ts +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/treasury-context.d.ts +1 -1
- package/dist/knowledge/treasury-context.js +1 -1
- package/dist/knowledge/treasury-ledger.js +1 -1
- package/dist/knowledge/treasury-risk.js +1 -1
- package/dist/knowledge/universal-template.d.ts +22 -0
- package/dist/knowledge/universal-template.js +1 -0
- package/dist/knowledge/util-confirm.d.ts +24 -0
- package/dist/knowledge/util-confirm.js +1 -0
- package/dist/knowledge/util-risk.js +1 -1
- package/dist/knowledge/util-translation.d.ts +39 -0
- package/dist/knowledge/util-translation.js +1 -0
- package/dist/knowledge/workflow-guidance.d.ts +180 -0
- package/dist/knowledge/workflow-guidance.js +1 -0
- package/dist/participation/employee-kpi.d.ts +25 -0
- package/dist/participation/employee-kpi.js +1 -0
- package/dist/participation/employee-store.d.ts +16 -0
- package/dist/participation/employee-store.js +1 -0
- package/dist/participation/index.d.ts +2 -0
- package/dist/participation/index.js +1 -0
- package/dist/persona/defaults.js +1 -1
- package/dist/persona/index.d.ts +9 -2
- package/dist/persona/index.js +1 -1
- package/dist/persona/local-region.d.ts +20 -0
- package/dist/persona/local-region.js +1 -0
- package/dist/persona/model.js +1 -1
- package/dist/persona/overrides.d.ts +10 -0
- package/dist/persona/overrides.js +1 -0
- package/dist/persona/pack-personae.d.ts +11 -0
- package/dist/persona/pack-personae.js +1 -0
- package/dist/persona/strategy-intent.d.ts +20 -0
- package/dist/persona/strategy-intent.js +1 -0
- package/dist/persona/types.d.ts +3 -1
- package/dist/project/business-puzzle.d.ts +1 -1
- package/dist/project/business-puzzle.js +1 -1
- package/dist/project/deployment-doc.js +1 -1
- package/dist/project/edit-planner.js +1 -1
- package/dist/project/evaluation.d.ts +37 -1
- package/dist/project/evaluation.js +1 -1
- package/dist/project/graph-builder.d.ts +2 -2
- package/dist/project/graph-builder.js +1 -1
- package/dist/project/graph.d.ts +3 -6
- package/dist/project/handlers.d.ts +33 -2
- package/dist/project/handlers.js +1 -1
- package/dist/project/index.d.ts +1 -0
- package/dist/project/index.js +1 -1
- package/dist/project/merchant-guide.d.ts +19 -0
- package/dist/project/merchant-guide.js +1 -1
- package/dist/project/mode-actions.js +1 -1
- package/dist/project/rollback-policy.js +1 -1
- package/dist/project/semantic-assembler.d.ts +2 -2
- package/dist/project/semantic-assembler.js +1 -1
- package/dist/project/semantic-graph.d.ts +3 -5
- package/dist/project/workflow-design-assessment.d.ts +24 -0
- package/dist/project/workflow-design-assessment.js +1 -0
- package/dist/safety/confirm-gate.d.ts +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/call/allocation.d.ts +186 -1385
- package/dist/schema/call/arbitration.d.ts +272 -1871
- package/dist/schema/call/base.d.ts +1831 -9076
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +911 -3171
- package/dist/schema/call/contact.d.ts +135 -931
- package/dist/schema/call/demand.d.ts +164 -1194
- package/dist/schema/call/guard.d.ts +298 -1140
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/machine.d.ts +459 -5403
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +137 -844
- package/dist/schema/call/payment.d.ts +74 -561
- package/dist/schema/call/permission.d.ts +335 -2791
- package/dist/schema/call/personal.d.ts +227 -1814
- package/dist/schema/call/progress.d.ts +140 -843
- package/dist/schema/call/proof.d.ts +42 -258
- package/dist/schema/call/repository.d.ts +324 -2222
- package/dist/schema/call/reward.d.ts +153 -1183
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +376 -3431
- package/dist/schema/call/treasury.d.ts +252 -2158
- package/dist/schema/common/index.d.ts +222 -697
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +18 -161
- package/dist/schema/employee/index.d.ts +99 -0
- package/dist/schema/employee/index.js +1 -0
- package/dist/schema/evaluation/index.d.ts +1035 -3918
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +132 -0
- package/dist/schema/industry-pack/index.js +1 -0
- package/dist/schema/intent-radar/index.d.ts +92 -245
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +2045 -18080
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.d.ts +61 -651
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +949 -5557
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +3168 -26468
- package/dist/schema/operations.js +1 -1
- package/dist/schema/permission/index.d.ts +121 -0
- package/dist/schema/permission/index.js +1 -0
- package/dist/schema/persona/index.d.ts +469 -1820
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/project/index.d.ts +1023 -8450
- package/dist/schema/project/index.js +1 -1
- package/dist/schema/query/index.d.ts +12121 -75556
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +35 -98
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/task-status.d.ts +26 -132
- package/dist/schema/trust/index.d.ts +194 -1290
- package/dist/schema/utils/guard-parser.js +1 -1
- package/dist/schema/utils/node-parser.js +1 -1
- package/dist/schema/utils/skills-recommendation.d.ts +1 -0
- package/dist/schema/utils/skills-recommendation.js +1 -1
- package/dist/schema/workflow/index.d.ts +161 -0
- package/dist/schema/workflow/index.js +1 -0
- package/dist/schema/workspace/index.d.ts +69 -0
- package/dist/schema/workspace/index.js +1 -0
- package/dist/{schema-query → schema-query-impl}/index.js +1 -1
- package/dist/schemas/account_operation.output.json +3147 -1655
- package/dist/schemas/account_operation.schema.json +225 -218
- package/dist/schemas/bridge_operation.output.json +1168 -653
- package/dist/schemas/bridge_operation.schema.json +736 -504
- package/dist/schemas/config_operation.output.json +185 -179
- package/dist/schemas/config_operation.schema.json +21 -26
- package/dist/schemas/employee_operation.output.json +207 -0
- package/dist/schemas/employee_operation.schema.json +176 -0
- package/dist/schemas/evaluation_operation.output.json +2268 -601
- package/dist/schemas/evaluation_operation.schema.json +2919 -787
- package/dist/schemas/guard2file.output.json +58 -64
- package/dist/schemas/guard2file.schema.json +79 -81
- package/dist/schemas/index.json +41 -11
- package/dist/schemas/industry_pack_operation.output.json +594 -0
- package/dist/schemas/industry_pack_operation.schema.json +55 -0
- package/dist/schemas/intent_radar.output.json +275 -203
- package/dist/schemas/intent_radar.schema.json +124 -126
- package/dist/schemas/local_info_operation.output.json +1174 -660
- package/dist/schemas/local_info_operation.schema.json +119 -125
- package/dist/schemas/local_mark_operation.output.json +1239 -692
- package/dist/schemas/local_mark_operation.schema.json +91 -96
- package/dist/schemas/machineNode2file.output.json +63 -69
- package/dist/schemas/machineNode2file.schema.json +79 -81
- package/dist/schemas/messenger_operation.output.json +2722 -1531
- package/dist/schemas/messenger_operation.schema.json +1482 -1264
- package/dist/schemas/onchain_events.output.json +2590 -978
- package/dist/schemas/onchain_events.schema.json +117 -99
- package/dist/schemas/onchain_operations.output.json +3957 -2312
- package/dist/schemas/onchain_operations.schema.json +20799 -9285
- package/dist/schemas/onchain_operations_allocation.schema.json +171 -107
- package/dist/schemas/onchain_operations_arbitration.schema.json +233 -146
- package/dist/schemas/onchain_operations_contact.schema.json +129 -90
- package/dist/schemas/onchain_operations_demand.schema.json +170 -112
- package/dist/schemas/onchain_operations_gen_passport.schema.json +61 -646
- package/dist/schemas/onchain_operations_gen_proof.schema.json +40 -172
- package/dist/schemas/onchain_operations_guard.schema.json +3765 -294
- package/dist/schemas/onchain_operations_machine.schema.json +536 -163
- package/dist/schemas/onchain_operations_order.schema.json +126 -96
- package/dist/schemas/onchain_operations_payment.schema.json +82 -67
- package/dist/schemas/onchain_operations_permission.schema.json +331 -93
- package/dist/schemas/onchain_operations_personal.schema.json +636 -96
- package/dist/schemas/onchain_operations_progress.schema.json +125 -92
- package/dist/schemas/onchain_operations_proof.schema.json +76 -69
- package/dist/schemas/onchain_operations_repository.schema.json +636 -249
- package/dist/schemas/onchain_operations_reward.schema.json +218 -108
- package/dist/schemas/onchain_operations_service.schema.json +678 -220
- package/dist/schemas/onchain_operations_treasury.schema.json +401 -135
- package/dist/schemas/onchain_table_data.output.json +6833 -2432
- package/dist/schemas/onchain_table_data.schema.json +684 -417
- package/dist/schemas/permission_operation.output.json +173 -0
- package/dist/schemas/permission_operation.schema.json +39 -0
- package/dist/schemas/persona_operation.output.json +1568 -268
- package/dist/schemas/persona_operation.schema.json +346 -205
- package/dist/schemas/project_operation.output.json +6922 -5132
- package/dist/schemas/project_operation.schema.json +1050 -1020
- package/dist/schemas/query_task_status.output.json +195 -99
- package/dist/schemas/query_task_status.schema.json +12 -18
- package/dist/schemas/query_toolkit.output.json +18862 -14561
- package/dist/schemas/query_toolkit.schema.json +614 -522
- package/dist/schemas/schema_query.output.json +127 -129
- package/dist/schemas/schema_query.schema.json +64 -69
- package/dist/schemas/trust_score.output.json +678 -587
- package/dist/schemas/trust_score.schema.json +289 -277
- package/dist/schemas/wip_file.output.json +116 -124
- package/dist/schemas/wip_file.schema.json +142 -143
- package/dist/schemas/workflow_operation.output.json +164 -0
- package/dist/schemas/workflow_operation.schema.json +116 -0
- package/dist/schemas/workspace_operation.output.json +277 -0
- package/dist/schemas/workspace_operation.schema.json +45 -0
- package/dist/schemas/wowok_buildin_info.output.json +1682 -844
- package/dist/schemas/wowok_buildin_info.schema.json +576 -526
- package/dist/tools/handlers/bridge.d.ts +8 -1
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/employee.d.ts +2 -0
- package/dist/tools/handlers/employee.js +1 -0
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/industry-pack.d.ts +2 -0
- package/dist/tools/handlers/industry-pack.js +1 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/permission.d.ts +2 -0
- package/dist/tools/handlers/permission.js +1 -0
- package/dist/tools/handlers/persona.js +1 -1
- package/dist/tools/handlers/project.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/trust.js +1 -1
- package/dist/tools/handlers/wip.js +1 -1
- package/dist/tools/handlers/workflow.d.ts +2 -0
- package/dist/tools/handlers/workflow.js +1 -0
- package/dist/tools/handlers/workspace.d.ts +4 -0
- package/dist/tools/handlers/workspace.js +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/rules-hook.d.ts +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/shared.d.ts +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/types.d.ts +2 -1
- package/package.json +4 -5
- package/dist/knowledge/arbitration-trust.d.ts +0 -24
- package/dist/knowledge/arbitration-trust.js +0 -1
- package/dist/schema/call/bridge-handler.d.ts +0 -8
- package/dist/schema/call/bridge-handler.js +0 -1
- package/dist/schema/sync-layer4.d.ts +0 -21
- package/dist/schema/sync-layer4.js +0 -1
- /package/dist/{schema-query → schema-query-impl}/index.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
export const REPOSITORY_PERMISSIONS=[{'index':0x64,'name':'REPOSITORY_NEW','description':'Create\x20new\x20Repository\x20policy','governed_operation':'repository::new'},{'index':0x65,'name':'REPOSITORY_DESCRIPTION','description':'Modify\x20Repository\x20description','governed_operation':'repository::description_set'},{'index':0x66,'name':'REPOSITORY_POLICY','description':'Modify\x20Repository\x20policy','governed_operation':'repository::policy_set'},{'index':0x67,'name':'REPOSITORY_REWARD','description':'Set\x20Repository\x20reward','governed_operation':'repository::reward_set'},{'index':0x68,'name':'REPOSITORY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'repository::owner_receive'},{'index':0x69,'name':'REPOSITORY_UM','description':'Set\x20UM\x20(User\x20Manager)','governed_operation':'repository::um_set'}];export const REWARD_PERMISSIONS=[{'index':0x96,'name':'REWARD_NEW','description':'Create\x20new\x20Reward','governed_operation':'reward::new'},{'index':0x97,'name':'REWARD_DESCRIPTION','description':'Modify\x20Reward\x20description','governed_operation':'reward::description_set'},{'index':0x98,'name':'REWARD_GUARD','description':'Set\x20Reward\x20guard','governed_operation':'reward::guard_set'},{'index':0x99,'name':'REWARD_COIN_ADD','description':'Add\x20coins\x20to\x20Reward','governed_operation':'reward::coin_add'},{'index':0x9a,'name':'REWARD_RECEIVE','description':'Receive\x20reward','governed_operation':'reward::receive'},{'index':0x9b,'name':'REWARD_GUARD_EXPIRATION_TIME_ADD','description':'Extend\x20guard\x20expiration','governed_operation':'reward::guard_expiration_time_add'},{'index':0x9c,'name':'REWARD_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'reward::owner_receive'},{'index':0x9d,'name':'REWARD_UM','description':'Set\x20UM','governed_operation':'reward::um_set'}];export const MACHINE_PERMISSIONS=[{'index':0xc8,'name':'MACHINE_NEW','description':'Create\x20new\x20Machine','governed_operation':'machine::new'},{'index':0xc9,'name':'MACHINE_DESCRIPTION','description':'Modify\x20Machine\x20description','governed_operation':'machine::description_set'},{'index':0xcb,'name':'MACHINE_CONSENSUS_REPOSITORIES','description':'Set\x20consensus\x20Repositories','governed_operation':'machine::consensus_repositories_set'},{'index':0xcc,'name':'MACHINE_PAUSE','description':'Pause/resume\x20Machine','governed_operation':'machine::pause'},{'index':0xcd,'name':'MACHINE_PUBLISH','description':'Publish\x20Machine\x20(irreversible)','governed_operation':'machine::publish'},{'index':0xce,'name':'MACHINE_NODE','description':'Modify\x20Machine\x20nodes','governed_operation':'machine::node_*'},{'index':0xcf,'name':'MACHINE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'machine::owner_receive'},{'index':0xd0,'name':'MACHINE_UM','description':'Set\x20UM','governed_operation':'machine::um_set'}];export const PROGRESS_PERMISSIONS=[{'index':0xdc,'name':'PROGRESS_NEW','description':'Create\x20new\x20Progress','governed_operation':'progress::new'},{'index':0xdd,'name':'PROGRESS_NAMED_OPERATOR','description':'Manage\x20named\x20operators','governed_operation':'progress::named_operator_*'},{'index':0xde,'name':'PROGRESS_TASK','description':'Submit\x20task','governed_operation':'progress::task'},{'index':0xdf,'name':'PROGRESS_CONTEXT_REPOSITORY','description':'Set\x20context\x20Repository','governed_operation':'progress::context_repository_set'},{'index':0xe0,'name':'PROGRESS_UNHOLD','description':'Unhold\x20Progress','governed_operation':'progress::unhold'},{'index':0xe1,'name':'PROGRESS_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'progress::owner_receive'}];export const TREASURY_PERMISSIONS=[{'index':0xfa,'name':'TREASURY_NEW','description':'Create\x20new\x20Treasury','governed_operation':'treasury::new'},{'index':0xfb,'name':'TREASURY_DESCRIPTION','description':'Modify\x20Treasury\x20description','governed_operation':'treasury::description_set'},{'index':0xfc,'name':'TREASURY_DEPOSIT','description':'Deposit\x20funds','governed_operation':'treasury::deposit'},{'index':0xfd,'name':'TREASURY_RECEIVE','description':'Receive\x20funds','governed_operation':'treasury::receive'},{'index':0xfe,'name':'TREASURY_WITHDRAW','description':'Withdraw\x20funds','governed_operation':'treasury::withdraw'},{'index':0xff,'name':'TREASURY_EXTERNAL_DEPOSIT_GUARD','description':'Manage\x20external\x20deposit\x20Guard\x20list','governed_operation':'treasury::external_deposit_guard_add/remove/clear'},{'index':0x100,'name':'TREASURY_EXTERNAL_WITHDRAW_GUARD','description':'Manage\x20external\x20withdraw\x20Guard\x20list','governed_operation':'treasury::external_withdraw_guard_add/remove/clear'},{'index':0x101,'name':'TREASURY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'treasury::owner_receive'},{'index':0x102,'name':'TREASURY_UM','description':'Set\x20UM','governed_operation':'treasury::um_set'}];export const SERVICE_PERMISSIONS=[{'index':0x12c,'name':'SERVICE_NEW','description':'Create\x20new\x20Service','governed_operation':'service::new'},{'index':0x12d,'name':'SERVICE_DESCRIPTION','description':'Modify\x20Service\x20description','governed_operation':'service::description_set'},{'index':0x12f,'name':'SERVICE_LOCATION','description':'Set\x20Service\x20location','governed_operation':'service::location_set'},{'index':0x130,'name':'SERVICE_REPOSITORY','description':'Set\x20Service\x20repository','governed_operation':'service::repository_set'},{'index':0x131,'name':'SERVICE_SALES','description':'Modify\x20sales','governed_operation':'service::sales_*'},{'index':0x132,'name':'SERVICE_MACHINE','description':'Bind/modify\x20Machine','governed_operation':'service::machine_set'},{'index':0x133,'name':'SERVICE_BUY_GUARD','description':'Set\x20buy\x20guard','governed_operation':'service::buy_guard_set'},{'index':0x134,'name':'SERVICE_ARBITRATION','description':'Set\x20Arbitration','governed_operation':'service::arbitration_set'},{'index':0x135,'name':'SERVICE_CUSTOMER_INFO_REQUIRED','description':'Set\x20customer\x20info\x20required','governed_operation':'service::customer_info_required_set'},{'index':0x136,'name':'SERVICE_PAUSE','description':'Pause/resume\x20Service','governed_operation':'service::pause'},{'index':0x137,'name':'SERVICE_PUBLISH','description':'Publish\x20Service','governed_operation':'service::publish'},{'index':0x138,'name':'SERVICE_DISCOUNT','description':'Set\x20discount','governed_operation':'service::discount_set'},{'index':0x139,'name':'SERVICE_ORDER_ALLOCATOR','description':'Set\x20order\x20allocator','governed_operation':'service::order_allocator_set'},{'index':0x13a,'name':'SERVICE_COMPENSATION_FUND_DEPOSIT','description':'Deposit\x20to\x20compensation\x20fund','governed_operation':'service::compensation_fund_deposit'},{'index':0x13b,'name':'SERVICE_COMPENSATION_FUND_WITHDRAW','description':'Withdraw\x20from\x20compensation\x20fund','governed_operation':'service::compensation_fund_withdraw'},{'index':0x13c,'name':'SERVICE_COMPENSATION_FUND_FREEZE','description':'Freeze\x20compensation\x20fund','governed_operation':'service::compensation_fund_freeze'},{'index':0x13d,'name':'SERVICE_COMPENSATION_FUND_UNFREEZE','description':'Unfreeze\x20compensation\x20fund','governed_operation':'service::compensation_fund_unfreeze'},{'index':0x13e,'name':'SERVICE_REWARD','description':'Set\x20reward','governed_operation':'service::reward_set'},{'index':0x13f,'name':'SERVICE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'service::owner_receive'},{'index':0x140,'name':'SERVICE_UM','description':'Set\x20UM','governed_operation':'service::um_set'}];export const ARBITRATION_PERMISSIONS=[{'index':0x15e,'name':'ARBITRATION_NEW','description':'Create\x20new\x20Arbitration','governed_operation':'arbitration::new'},{'index':0x15f,'name':'ARBITRATION_DESCRIPTION','description':'Modify\x20description','governed_operation':'arbitration::description_set'},{'index':0x161,'name':'ARBITRATION_LOCATION','description':'Set\x20location','governed_operation':'arbitration::location_set'},{'index':0x162,'name':'ARBITRATION_VOTING_GUARD','description':'Set\x20voting\x20guard','governed_operation':'arbitration::voting_guard_set'},{'index':0x163,'name':'ARBITRATION_USAGE_GUARD','description':'Set\x20usage\x20guard','governed_operation':'arbitration::usage_guard_set'},{'index':0x164,'name':'ARBITRATION_PAUSE','description':'Pause/resume','governed_operation':'arbitration::pause'},{'index':0x165,'name':'ARBITRATION_FEE','description':'Set\x20fee','governed_operation':'arbitration::fee_set'},{'index':0x166,'name':'ARBITRATION_VOTE','description':'Vote','governed_operation':'arbitration::vote'},{'index':0x167,'name':'ARBITRATION_ARBITRATION','description':'Arbitrate\x20dispute','governed_operation':'arbitration::arbitration'},{'index':0x168,'name':'ARBITRATION_FEEDBACK','description':'Provide\x20feedback','governed_operation':'arbitration::feedback'},{'index':0x169,'name':'ARBITRATION_CONFIRM','description':'Confirm\x20resolution','governed_operation':'arbitration::confirm'},{'index':0x16a,'name':'ARBITRATION_VOTING_DEADLINE_CHANGE','description':'Change\x20voting\x20deadline','governed_operation':'arbitration::voting_deadline_change'},{'index':0x16b,'name':'ARBITRATION_RESET','description':'Reset\x20arbitration','governed_operation':'arbitration::reset'},{'index':0x16c,'name':'ARBITRATION_ARB_WITHDRAW','description':'Arb\x20withdraw','governed_operation':'arbitration::arb_withdraw'},{'index':0x16d,'name':'ARBITRATION_FEES_ALLOC','description':'Allocate\x20fees','governed_operation':'arbitration::fees_alloc'},{'index':0x16e,'name':'ARBITRATION_FEES_TRANSFER','description':'Transfer\x20fees','governed_operation':'arbitration::fees_transfer'},{'index':0x16f,'name':'ARBITRATION_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'arbitration::owner_receive'},{'index':0x170,'name':'ARBITRATION_UM','description':'Set\x20UM','governed_operation':'arbitration::um_set'}];export const DEMAND_PERMISSIONS=[{'index':0x190,'name':'DEMAND_NEW','description':'Create\x20new\x20Demand','governed_operation':'demand::new'},{'index':0x191,'name':'DEMAND_DESCRIPTION','description':'Modify\x20description','governed_operation':'demand::description_set'},{'index':0x192,'name':'DEMAND_LOCATION','description':'Set\x20location','governed_operation':'demand::location_set'},{'index':0x194,'name':'DEMAND_GUARD','description':'Set\x20guard','governed_operation':'demand::guard_set'},{'index':0x195,'name':'DEMAND_REWARD','description':'Set\x20reward','governed_operation':'demand::reward_set'},{'index':0x196,'name':'DEMAND_FEEDBACK','description':'Provide\x20feedback','governed_operation':'demand::feedback'},{'index':0x197,'name':'DEMAND_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'demand::owner_receive'},{'index':0x198,'name':'DEMAND_UM','description':'Set\x20UM','governed_operation':'demand::um_set'}];export const CONTACT_PERMISSIONS=[{'index':0x1c2,'name':'CONTACT_NEW','description':'Create\x20new\x20Contact','governed_operation':'contact::new'},{'index':0x1c3,'name':'CONTACT_DESCRIPTION','description':'Modify\x20description','governed_operation':'contact::description_set'},{'index':0x1c4,'name':'CONTACT_LOCATION','description':'Set\x20location','governed_operation':'contact::location_set'},{'index':0x1c5,'name':'CONTACT_IM','description':'Set\x20IM','governed_operation':'contact::im_set'},{'index':0x1c6,'name':'CONTACT_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'contact::owner_receive'}];export const PERMISSION_SCENES=[{'id':'service_permission','name':'Service\x20publish\x20&\x20operation\x20permission','host_object':'Service','permission_index_range':'300-320','builtin_indexes':SERVICE_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['service::publish\x20(311)','service::pause\x20(310)','service::machine_set\x20(306)','service::buy_guard_set\x20(307)','service::order_allocator_set\x20(313)','service::reward_set\x20(318)','service::compensation_fund_*\x20(314-317)'],'mutable_after_publish':!![],'common_patterns':['Owner-only\x20publish:\x20only\x20owner/admin\x20has\x20SERVICE_PUBLISH\x20(311)','Separate\x20pause\x20role:\x20delegate\x20SERVICE_PAUSE\x20(310)\x20to\x20operator','Allocator\x20guard:\x20SERVICE_ORDER_ALLOCATOR\x20(313)\x20guarded\x20by\x20Guard'],'recommended_templates':['T-P-03','T-P-02']},{'id':'machine_permission','name':'Machine\x20workflow\x20permission','host_object':'Machine','permission_index_range':'200-208','builtin_indexes':MACHINE_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['machine::publish\x20(205)','machine::node_*\x20(206)','machine::pause\x20(204)','machine::consensus_repositories_set\x20(203)'],'mutable_after_publish':!![],'common_patterns':['Pre-publish\x20node\x20editing:\x20MACHINE_NODE\x20(206)\x20before\x20publish\x20only','Post-publish:\x20only\x20Forward.guard\x20can\x20be\x20modified;\x20node\x20structure\x20frozen','Consensus\x20repositories:\x20MACHINE_CONSENSUS_REPOSITORIES\x20(203)\x20for\x20multi-repo\x20consensus'],'recommended_templates':['T-P-04','T-P-01']},{'id':'treasury_permission','name':'Treasury\x20fund\x20management\x20permission','host_object':'Treasury','permission_index_range':'250-258','builtin_indexes':TREASURY_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['treasury::deposit\x20(252)','treasury::withdraw\x20(254)','treasury::external_deposit_guard_*\x20(255)','treasury::external_withdraw_guard_*\x20(256)','treasury::owner_receive\x20(257)','treasury::um_set\x20(258)'],'mutable_after_publish':!![],'common_patterns':['Guard-protected\x20external\x20ops:\x20TREASURY_EXTERNAL_*_GUARD\x20(255/256)\x20for\x20cross-treasury\x20safety;\x20external_deposit/external_withdraw\x20use\x20Guard\x20+\x20Passport,\x20no\x20Permission\x20index','Withdraw\x20restricted\x20to\x20owner+admin:\x20TREASURY_WITHDRAW\x20(254)\x20tightly\x20held','UM\x20delegation:\x20TREASURY_UM\x20(258)\x20for\x20contact\x20management'],'recommended_templates':['T-P-05','T-P-02']},{'id':'allocation_permission','name':'Allocation\x20strategy\x20permission\x20(custom)','host_object':'Allocation','permission_index_range':'>=1000\x20(custom)','builtin_indexes':[],'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['allocation::alloc\x20(custom\x20index)','allocation::receive\x20(custom\x20index)'],'mutable_after_publish':!![],'common_patterns':['Custom\x20index\x20>=\x201000\x20for\x20business-specific\x20allocation\x20rules','Guard-bound\x20alloc:\x20alloc\x20operation\x20requires\x20Guard\x20verification','Multi-entity:\x20multiple\x20allocators\x20share\x20same\x20permission_index'],'recommended_templates':['T-P-01','T-P-02']},{'id':'arbitration_permission','name':'Arbitration\x20case\x20management\x20permission','host_object':'Arbitration','permission_index_range':'350-368','builtin_indexes':ARBITRATION_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['arbitration::vote\x20(358)','arbitration::arbitration\x20(359)','arbitration::feedback\x20(360)','arbitration::confirm\x20(361)','arbitration::voting_deadline_change\x20(362)','arbitration::reset\x20(363)','arbitration::fees_alloc\x20(365)'],'mutable_after_publish':!![],'common_patterns':['Arb\x20committee:\x20ARBITRATION_VOTE\x20(358)\x20granted\x20to\x20multiple\x20arbiters','Open\x20voting\x20guard:\x20voting_guard\x20allows\x20public\x20to\x20vote\x20(weight=1)','Guard-based\x20usage:\x20usage_guard\x20filters\x20which\x20disputes\x20can\x20be\x20filed'],'recommended_templates':['T-P-06','T-P-02']},{'id':'repository_permission','name':'Repository\x20policy\x20management\x20permission','host_object':'Repository','permission_index_range':'100-105','builtin_indexes':REPOSITORY_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['repository::policy_set\x20(102)','repository::reward_set\x20(103)'],'mutable_after_publish':!![],'common_patterns':['Public\x20read:\x20anyone\x20can\x20read\x20Repository\x20data','Owner-write:\x20REPOSITORY_POLICY\x20(102)\x20restricted\x20to\x20owner/admin','Reward\x20binding:\x20REPOSITORY_REWARD\x20(103)\x20for\x20incentive\x20distribution'],'recommended_templates':['T-P-01']},{'id':'reward_permission','name':'Reward\x20distribution\x20permission','host_object':'Reward','permission_index_range':'150-157','builtin_indexes':REWARD_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['reward::guard_set\x20(152)','reward::coin_add\x20(153)','reward::receive\x20(154)','reward::guard_expiration_time_add\x20(155)'],'mutable_after_publish':!![],'common_patterns':['Guard-bound\x20claim:\x20REWARD_RECEIVE\x20(154)\x20protected\x20by\x20Guard','Coin\x20refill:\x20REWARD_COIN_ADD\x20(153)\x20for\x20owner-only\x20top-up','Expiration\x20extension:\x20REWARD_GUARD_EXPIRATION_TIME_ADD\x20(155)\x20for\x20deadline\x20mgmt'],'recommended_templates':['T-P-01']},{'id':'progress_permission','name':'Progress\x20workflow\x20advancement\x20permission','host_object':'Progress','permission_index_range':'220-225','builtin_indexes':PROGRESS_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['progress::task\x20(222)','progress::named_operator_*\x20(221)','progress::context_repository_set\x20(223)','progress::unhold\x20(224)'],'mutable_after_publish':![],'common_patterns':['Named\x20operator:\x20PROGRESS_NAMED_OPERATOR\x20(221)\x20for\x20assigned\x20operators','Task\x20submission:\x20PROGRESS_TASK\x20(222)\x20for\x20any\x20authorized\x20submitter','Machine-bound:\x20Progress\x20permission\x20effective\x20only\x20after\x20Machine\x20publish'],'recommended_templates':['T-P-01']},{'id':'demand_permission','name':'Demand\x20publication\x20permission','host_object':'Demand','permission_index_range':'400-408','builtin_indexes':DEMAND_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['demand::guard_set\x20(404)','demand::reward_set\x20(405)','demand::feedback\x20(406)'],'mutable_after_publish':!![],'common_patterns':['Public\x20demand:\x20anyone\x20can\x20view;\x20only\x20owner\x20can\x20publish','Feedback\x20channel:\x20DEMAND_FEEDBACK\x20(406)\x20for\x20community\x20input','Guard\x20filtering:\x20DEMAND_GUARD\x20(404)\x20for\x20service\x20eligibility'],'recommended_templates':['T-P-01']},{'id':'contact_permission','name':'Contact/Messenger\x20management\x20permission','host_object':'Contact','permission_index_range':'450-454','builtin_indexes':CONTACT_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['contact::im_set\x20(453)'],'mutable_after_publish':!![],'common_patterns':['Personal\x20contact:\x20usually\x20single-owner','IM\x20binding:\x20CONTACT_IM\x20(453)\x20for\x20chat\x20platform\x20binding'],'recommended_templates':['T-P-01']},{'id':'ownership_transfer','name':'Permission\x20ownership\x20transfer\x20(cross-scene)','host_object':'Standalone','permission_index_range':'N/A','builtin_indexes':[],'owner_operations':['builder\x20(transfer)'],'admin_operations':[],'permission_index_operations':[],'mutable_after_publish':!![],'common_patterns':['Owner-only:\x20assert_owner\x20required\x20for\x20transfer','Irreversible:\x20once\x20transferred,\x20original\x20owner\x20loses\x20all\x20control','New\x20owner\x20auto-admin:\x20new\x20owner\x20becomes\x20admin\x20automatically','Pre-transfer\x20backup:\x20export\x20Permission\x20JSON\x20before\x20transfer'],'recommended_templates':['T-P-08']}];export const PERMISSION_LEDGER_VERSION='1.0.0';export function getScenesByHostObject(a){return PERMISSION_SCENES['filter'](b=>b['host_object']===a);}export function findSceneById(a){return PERMISSION_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){for(const b of PERMISSION_SCENES){if(b['builtin_indexes']['some'](c=>c['index']===a))return b;}return undefined;}export function getBuiltinPermissionByIndex(a){for(const b of PERMISSION_SCENES){const c=b['builtin_indexes']['find'](d=>d['index']===a);if(c)return c;}return undefined;}export function isBuiltinPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function inferSceneFromIntent(a){const b=a['toLowerCase']();if(b['includes']('transfer')||b['includes']('handover'))return findSceneById('ownership_transfer');const c=[['service','Service'],['machine','Machine'],['treasury','Treasury'],['arbitration','Arbitration'],['repository','Repository'],['reward','Reward'],['progress','Progress'],['demand','Demand'],['contact','Contact'],['messenger','Contact'],['allocation','Allocation']];for(const [d,e]of c){if(b['includes'](d)){const f=getScenesByHostObject(e);if(f['length']>0x0)return f[0x0];}}return undefined;}export function getAllBuiltinPermissions(){return PERMISSION_SCENES['flatMap'](a=>a['builtin_indexes']);}export function getPermissionScenesCount(){return PERMISSION_SCENES['length'];}
|
|
1
|
+
export const PERMISSION_TYPES=[{'name':'Permission','scope':'organization','definedOn':'Permission\x20Object\x20(standalone\x20on-chain\x20object,\x20referenced\x20by\x20service/machine/etc.)','controls':'Who\x20can\x20modify\x20the\x20bound\x20object\x27s\x20settings,\x20publish\x20it,\x20manage\x20its\x20funds,\x20etc.','grantedBy':'The\x20object\x27s\x20creator\x20(owner)\x20or\x20anyone\x20the\x20creator\x20delegates\x20to','example':'A\x20shop\x20owner\x20creates\x20a\x20Permission\x20allowing\x20only\x20their\x20staff\x20to\x20modify\x20the\x20Service\x27s\x20price.'},{'name':'NamedOperator','scope':'order','definedOn':'Per-order\x20(specified\x20in\x20the\x20order\x20creation/modification\x20by\x20the\x20service)','controls':'Who\x20can\x20operate\x20on\x20a\x20specific\x20order:\x20advance\x20progress,\x20settle,\x20refund,\x20etc.','grantedBy':'The\x20service\x20(via\x20its\x20order_allocators\x20or\x20explicit\x20named\x20operators)','example':'A\x20delivery\x20service\x20assigns\x20Alice\x20as\x20the\x20NamedOperator\x20for\x20order\x20#123\x20—\x20only\x20Alice\x20can\x20mark\x20it\x20delivered.'},{'name':'OrderHolder','scope':'order_holder','definedOn':'Per-order\x20(the\x20\x27\x27\x20empty\x20string\x20address\x20=\x20the\x20order\x27s\x20current\x20holder)','controls':'Who\x20currently\x20holds\x20the\x20order\x20and\x20can\x20perform\x20holder-specific\x20actions\x20(accept,\x20reject,\x20pay)','grantedBy':'Implicitly\x20assigned\x20when\x20an\x20order\x20is\x20created\x20or\x20transferred','example':'Bob\x20places\x20an\x20order\x20—\x20he\x20becomes\x20the\x20OrderHolder.\x20He\x20can\x20accept\x20delivery\x20or\x20request\x20arbitration.'}];const PERMISSION_TYPE_INDEX=new Map(PERMISSION_TYPES['map'](a=>[a['name'],a]));export function getPermissionType(a){return PERMISSION_TYPE_INDEX['get'](a);}export const REPOSITORY_PERMISSIONS=[{'index':0x64,'name':'REPOSITORY_NEW','description':'Create\x20new\x20Repository\x20policy','governed_operation':'repository::new'},{'index':0x65,'name':'REPOSITORY_DESCRIPTION','description':'Modify\x20Repository\x20description','governed_operation':'repository::description_set'},{'index':0x66,'name':'REPOSITORY_POLICY','description':'Modify\x20Repository\x20policy','governed_operation':'repository::policy_set'},{'index':0x67,'name':'REPOSITORY_REWARD','description':'Set\x20Repository\x20reward','governed_operation':'repository::reward_set'},{'index':0x68,'name':'REPOSITORY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'repository::owner_receive'},{'index':0x69,'name':'REPOSITORY_UM','description':'Set\x20UM\x20(User\x20Manager)','governed_operation':'repository::um_set'}];export const REWARD_PERMISSIONS=[{'index':0x96,'name':'REWARD_NEW','description':'Create\x20new\x20Reward','governed_operation':'reward::new'},{'index':0x97,'name':'REWARD_DESCRIPTION','description':'Modify\x20Reward\x20description','governed_operation':'reward::description_set'},{'index':0x98,'name':'REWARD_GUARD','description':'Set\x20Reward\x20guard','governed_operation':'reward::guard_set'},{'index':0x99,'name':'REWARD_COIN_ADD','description':'Add\x20coins\x20to\x20Reward','governed_operation':'reward::coin_add'},{'index':0x9a,'name':'REWARD_RECEIVE','description':'Receive\x20reward','governed_operation':'reward::receive'},{'index':0x9b,'name':'REWARD_GUARD_EXPIRATION_TIME_ADD','description':'Extend\x20guard\x20expiration','governed_operation':'reward::guard_expiration_time_add'},{'index':0x9c,'name':'REWARD_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'reward::owner_receive'},{'index':0x9d,'name':'REWARD_UM','description':'Set\x20UM','governed_operation':'reward::um_set'}];export const MACHINE_PERMISSIONS=[{'index':0xc8,'name':'MACHINE_NEW','description':'Create\x20new\x20Machine','governed_operation':'machine::new'},{'index':0xc9,'name':'MACHINE_DESCRIPTION','description':'Modify\x20Machine\x20description','governed_operation':'machine::description_set'},{'index':0xcb,'name':'MACHINE_CONSENSUS_REPOSITORIES','description':'Set\x20consensus\x20Repositories','governed_operation':'machine::consensus_repositories_set'},{'index':0xcc,'name':'MACHINE_PAUSE','description':'Pause/resume\x20Machine','governed_operation':'machine::pause'},{'index':0xcd,'name':'MACHINE_PUBLISH','description':'Publish\x20Machine\x20(irreversible)','governed_operation':'machine::publish'},{'index':0xce,'name':'MACHINE_NODE','description':'Modify\x20Machine\x20nodes','governed_operation':'machine::node_*'},{'index':0xcf,'name':'MACHINE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'machine::owner_receive'},{'index':0xd0,'name':'MACHINE_UM','description':'Set\x20UM','governed_operation':'machine::um_set'}];export const PROGRESS_PERMISSIONS=[{'index':0xdc,'name':'PROGRESS_NEW','description':'Create\x20new\x20Progress','governed_operation':'progress::new'},{'index':0xdd,'name':'PROGRESS_NAMED_OPERATOR','description':'Manage\x20named\x20operators','governed_operation':'progress::named_operator_*'},{'index':0xde,'name':'PROGRESS_TASK','description':'Submit\x20task','governed_operation':'progress::task'},{'index':0xdf,'name':'PROGRESS_CONTEXT_REPOSITORY','description':'Set\x20context\x20Repository','governed_operation':'progress::context_repository_set'},{'index':0xe0,'name':'PROGRESS_UNHOLD','description':'Unhold\x20Progress','governed_operation':'progress::unhold'},{'index':0xe1,'name':'PROGRESS_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'progress::owner_receive'}];export const TREASURY_PERMISSIONS=[{'index':0xfa,'name':'TREASURY_NEW','description':'Create\x20new\x20Treasury','governed_operation':'treasury::new'},{'index':0xfb,'name':'TREASURY_DESCRIPTION','description':'Modify\x20Treasury\x20description','governed_operation':'treasury::description_set'},{'index':0xfc,'name':'TREASURY_DEPOSIT','description':'Deposit\x20funds','governed_operation':'treasury::deposit'},{'index':0xfd,'name':'TREASURY_RECEIVE','description':'Receive\x20funds','governed_operation':'treasury::receive'},{'index':0xfe,'name':'TREASURY_WITHDRAW','description':'Withdraw\x20funds','governed_operation':'treasury::withdraw'},{'index':0xff,'name':'TREASURY_EXTERNAL_DEPOSIT_GUARD','description':'Manage\x20external\x20deposit\x20Guard\x20list','governed_operation':'treasury::external_deposit_guard_add/remove/clear'},{'index':0x100,'name':'TREASURY_EXTERNAL_WITHDRAW_GUARD','description':'Manage\x20external\x20withdraw\x20Guard\x20list','governed_operation':'treasury::external_withdraw_guard_add/remove/clear'},{'index':0x101,'name':'TREASURY_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'treasury::owner_receive'},{'index':0x102,'name':'TREASURY_UM','description':'Set\x20UM','governed_operation':'treasury::um_set'}];export const SERVICE_PERMISSIONS=[{'index':0x12c,'name':'SERVICE_NEW','description':'Create\x20new\x20Service','governed_operation':'service::new'},{'index':0x12d,'name':'SERVICE_DESCRIPTION','description':'Modify\x20Service\x20description','governed_operation':'service::description_set'},{'index':0x12f,'name':'SERVICE_LOCATION','description':'Set\x20Service\x20location','governed_operation':'service::location_set'},{'index':0x130,'name':'SERVICE_REPOSITORY','description':'Set\x20Service\x20repository','governed_operation':'service::repository_set'},{'index':0x131,'name':'SERVICE_SALES','description':'Modify\x20sales','governed_operation':'service::sales_*'},{'index':0x132,'name':'SERVICE_MACHINE','description':'Bind/modify\x20Machine','governed_operation':'service::machine_set'},{'index':0x133,'name':'SERVICE_BUY_GUARD','description':'Set\x20buy\x20guard','governed_operation':'service::buy_guard_set'},{'index':0x134,'name':'SERVICE_ARBITRATION','description':'Set\x20Arbitration','governed_operation':'service::arbitration_set'},{'index':0x135,'name':'SERVICE_CUSTOMER_INFO_REQUIRED','description':'Set\x20customer\x20info\x20required','governed_operation':'service::customer_info_required_set'},{'index':0x136,'name':'SERVICE_PAUSE','description':'Pause/resume\x20Service','governed_operation':'service::pause'},{'index':0x137,'name':'SERVICE_PUBLISH','description':'Publish\x20Service','governed_operation':'service::publish'},{'index':0x138,'name':'SERVICE_DISCOUNT','description':'Set\x20discount','governed_operation':'service::discount_set'},{'index':0x139,'name':'SERVICE_ORDER_ALLOCATOR','description':'Set\x20order\x20allocator','governed_operation':'service::order_allocator_set'},{'index':0x13a,'name':'SERVICE_COMPENSATION_FUND_DEPOSIT','description':'Deposit\x20to\x20compensation\x20fund','governed_operation':'service::compensation_fund_deposit'},{'index':0x13b,'name':'SERVICE_COMPENSATION_FUND_WITHDRAW','description':'Withdraw\x20from\x20compensation\x20fund','governed_operation':'service::compensation_fund_withdraw'},{'index':0x13c,'name':'SERVICE_COMPENSATION_FUND_FREEZE','description':'Freeze\x20compensation\x20fund','governed_operation':'service::compensation_fund_freeze'},{'index':0x13d,'name':'SERVICE_COMPENSATION_FUND_UNFREEZE','description':'Unfreeze\x20compensation\x20fund','governed_operation':'service::compensation_fund_unfreeze'},{'index':0x13e,'name':'SERVICE_REWARD','description':'Set\x20reward','governed_operation':'service::reward_set'},{'index':0x13f,'name':'SERVICE_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'service::owner_receive'},{'index':0x140,'name':'SERVICE_UM','description':'Set\x20UM','governed_operation':'service::um_set'}];export const ARBITRATION_PERMISSIONS=[{'index':0x15e,'name':'ARBITRATION_NEW','description':'Create\x20new\x20Arbitration','governed_operation':'arbitration::new'},{'index':0x15f,'name':'ARBITRATION_DESCRIPTION','description':'Modify\x20description','governed_operation':'arbitration::description_set'},{'index':0x161,'name':'ARBITRATION_LOCATION','description':'Set\x20location','governed_operation':'arbitration::location_set'},{'index':0x162,'name':'ARBITRATION_VOTING_GUARD','description':'Set\x20voting\x20guard','governed_operation':'arbitration::voting_guard_set'},{'index':0x163,'name':'ARBITRATION_USAGE_GUARD','description':'Set\x20usage\x20guard','governed_operation':'arbitration::usage_guard_set'},{'index':0x164,'name':'ARBITRATION_PAUSE','description':'Pause/resume','governed_operation':'arbitration::pause'},{'index':0x165,'name':'ARBITRATION_FEE','description':'Set\x20fee','governed_operation':'arbitration::fee_set'},{'index':0x166,'name':'ARBITRATION_VOTE','description':'Vote','governed_operation':'arbitration::vote'},{'index':0x167,'name':'ARBITRATION_ARBITRATION','description':'Arbitrate\x20dispute','governed_operation':'arbitration::arbitration'},{'index':0x168,'name':'ARBITRATION_FEEDBACK','description':'Provide\x20feedback','governed_operation':'arbitration::feedback'},{'index':0x169,'name':'ARBITRATION_CONFIRM','description':'Confirm\x20resolution','governed_operation':'arbitration::confirm'},{'index':0x16a,'name':'ARBITRATION_VOTING_DEADLINE_CHANGE','description':'Change\x20voting\x20deadline','governed_operation':'arbitration::voting_deadline_change'},{'index':0x16b,'name':'ARBITRATION_RESET','description':'Reset\x20arbitration','governed_operation':'arbitration::reset'},{'index':0x16c,'name':'ARBITRATION_ARB_WITHDRAW','description':'Arb\x20withdraw','governed_operation':'arbitration::arb_withdraw'},{'index':0x16d,'name':'ARBITRATION_FEES_ALLOC','description':'Allocate\x20fees','governed_operation':'arbitration::fees_alloc'},{'index':0x16e,'name':'ARBITRATION_FEES_TRANSFER','description':'Transfer\x20fees','governed_operation':'arbitration::fees_transfer'},{'index':0x16f,'name':'ARBITRATION_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'arbitration::owner_receive'},{'index':0x170,'name':'ARBITRATION_UM','description':'Set\x20UM','governed_operation':'arbitration::um_set'}];export const DEMAND_PERMISSIONS=[{'index':0x190,'name':'DEMAND_NEW','description':'Create\x20new\x20Demand','governed_operation':'demand::new'},{'index':0x191,'name':'DEMAND_DESCRIPTION','description':'Modify\x20description','governed_operation':'demand::description_set'},{'index':0x192,'name':'DEMAND_LOCATION','description':'Set\x20location','governed_operation':'demand::location_set'},{'index':0x194,'name':'DEMAND_GUARD','description':'Set\x20guard','governed_operation':'demand::guard_set'},{'index':0x195,'name':'DEMAND_REWARD','description':'Set\x20reward','governed_operation':'demand::reward_set'},{'index':0x196,'name':'DEMAND_FEEDBACK','description':'Provide\x20feedback','governed_operation':'demand::feedback'},{'index':0x197,'name':'DEMAND_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'demand::owner_receive'},{'index':0x198,'name':'DEMAND_UM','description':'Set\x20UM','governed_operation':'demand::um_set'}];export const CONTACT_PERMISSIONS=[{'index':0x1c2,'name':'CONTACT_NEW','description':'Create\x20new\x20Contact','governed_operation':'contact::new'},{'index':0x1c3,'name':'CONTACT_DESCRIPTION','description':'Modify\x20description','governed_operation':'contact::description_set'},{'index':0x1c4,'name':'CONTACT_LOCATION','description':'Set\x20location','governed_operation':'contact::location_set'},{'index':0x1c5,'name':'CONTACT_IM','description':'Set\x20IM','governed_operation':'contact::im_set'},{'index':0x1c6,'name':'CONTACT_OWNER_RECEIVE','description':'Owner\x20receive','governed_operation':'contact::owner_receive'}];export const PERMISSION_SCENES=[{'id':'service_permission','name':'Service\x20publish\x20&\x20operation\x20permission','host_object':'Service','permission_index_range':'300-320','builtin_indexes':SERVICE_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['service::publish\x20(311)','service::pause\x20(310)','service::machine_set\x20(306)','service::buy_guard_set\x20(307)','service::order_allocator_set\x20(313)','service::reward_set\x20(318)','service::compensation_fund_*\x20(314-317)'],'mutable_after_publish':!![],'common_patterns':['Owner-only\x20publish:\x20only\x20owner/admin\x20has\x20SERVICE_PUBLISH\x20(311)','Separate\x20pause\x20role:\x20delegate\x20SERVICE_PAUSE\x20(310)\x20to\x20operator','Allocator\x20guard:\x20SERVICE_ORDER_ALLOCATOR\x20(313)\x20guarded\x20by\x20Guard'],'recommended_templates':['T-P-03','T-P-02']},{'id':'machine_permission','name':'Machine\x20workflow\x20permission','host_object':'Machine','permission_index_range':'200-208','builtin_indexes':MACHINE_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['machine::publish\x20(205)','machine::node_*\x20(206)','machine::pause\x20(204)','machine::consensus_repositories_set\x20(203)'],'mutable_after_publish':!![],'common_patterns':['Pre-publish\x20node\x20editing:\x20MACHINE_NODE\x20(206)\x20before\x20publish\x20only','Post-publish:\x20only\x20Forward.guard\x20can\x20be\x20modified;\x20node\x20structure\x20frozen','Consensus\x20repositories:\x20MACHINE_CONSENSUS_REPOSITORIES\x20(203)\x20for\x20multi-repo\x20consensus'],'recommended_templates':['T-P-04','T-P-01']},{'id':'treasury_permission','name':'Treasury\x20fund\x20management\x20permission','host_object':'Treasury','permission_index_range':'250-258','builtin_indexes':TREASURY_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['treasury::deposit\x20(252)','treasury::withdraw\x20(254)','treasury::external_deposit_guard_*\x20(255)','treasury::external_withdraw_guard_*\x20(256)','treasury::owner_receive\x20(257)','treasury::um_set\x20(258)'],'mutable_after_publish':!![],'common_patterns':['Guard-protected\x20external\x20ops:\x20TREASURY_EXTERNAL_*_GUARD\x20(255/256)\x20for\x20cross-treasury\x20safety;\x20external_deposit/external_withdraw\x20use\x20Guard\x20+\x20Passport,\x20no\x20Permission\x20index','Withdraw\x20restricted\x20to\x20owner+admin:\x20TREASURY_WITHDRAW\x20(254)\x20tightly\x20held','UM\x20delegation:\x20TREASURY_UM\x20(258)\x20for\x20contact\x20management'],'recommended_templates':['T-P-05','T-P-02']},{'id':'allocation_permission','name':'Allocation\x20strategy\x20permission\x20(custom)','host_object':'Allocation','permission_index_range':'>=1000\x20(custom)','builtin_indexes':[],'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['allocation::alloc\x20(custom\x20index)','allocation::receive\x20(custom\x20index)'],'mutable_after_publish':!![],'common_patterns':['Custom\x20index\x20>=\x201000\x20for\x20business-specific\x20allocation\x20rules','Guard-bound\x20alloc:\x20alloc\x20operation\x20requires\x20Guard\x20verification','Multi-entity:\x20multiple\x20allocators\x20share\x20same\x20permission_index'],'recommended_templates':['T-P-01','T-P-02']},{'id':'arbitration_permission','name':'Arbitration\x20case\x20management\x20permission','host_object':'Arbitration','permission_index_range':'350-368','builtin_indexes':ARBITRATION_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['arbitration::vote\x20(358)','arbitration::arbitration\x20(359)','arbitration::feedback\x20(360)','arbitration::confirm\x20(361)','arbitration::voting_deadline_change\x20(362)','arbitration::reset\x20(363)','arbitration::fees_alloc\x20(365)'],'mutable_after_publish':!![],'common_patterns':['Arb\x20committee:\x20ARBITRATION_VOTE\x20(358)\x20granted\x20to\x20multiple\x20arbiters','Open\x20voting\x20guard:\x20voting_guard\x20allows\x20public\x20to\x20vote\x20(weight=1)','Guard-based\x20usage:\x20usage_guard\x20filters\x20which\x20disputes\x20can\x20be\x20filed'],'recommended_templates':['T-P-06','T-P-02']},{'id':'repository_permission','name':'Repository\x20policy\x20management\x20permission','host_object':'Repository','permission_index_range':'100-105','builtin_indexes':REPOSITORY_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['repository::policy_set\x20(102)','repository::reward_set\x20(103)'],'mutable_after_publish':!![],'common_patterns':['Public\x20read:\x20anyone\x20can\x20read\x20Repository\x20data','Owner-write:\x20REPOSITORY_POLICY\x20(102)\x20restricted\x20to\x20owner/admin','Reward\x20binding:\x20REPOSITORY_REWARD\x20(103)\x20for\x20incentive\x20distribution'],'recommended_templates':['T-P-01']},{'id':'reward_permission','name':'Reward\x20distribution\x20permission','host_object':'Reward','permission_index_range':'150-157','builtin_indexes':REWARD_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['reward::guard_set\x20(152)','reward::coin_add\x20(153)','reward::receive\x20(154)','reward::guard_expiration_time_add\x20(155)'],'mutable_after_publish':!![],'common_patterns':['Guard-bound\x20claim:\x20REWARD_RECEIVE\x20(154)\x20protected\x20by\x20Guard','Coin\x20refill:\x20REWARD_COIN_ADD\x20(153)\x20for\x20owner-only\x20top-up','Expiration\x20extension:\x20REWARD_GUARD_EXPIRATION_TIME_ADD\x20(155)\x20for\x20deadline\x20mgmt'],'recommended_templates':['T-P-01']},{'id':'progress_permission','name':'Progress\x20workflow\x20advancement\x20permission','host_object':'Progress','permission_index_range':'220-225','builtin_indexes':PROGRESS_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['progress::task\x20(222)','progress::named_operator_*\x20(221)','progress::context_repository_set\x20(223)','progress::unhold\x20(224)'],'mutable_after_publish':![],'common_patterns':['Named\x20operator:\x20PROGRESS_NAMED_OPERATOR\x20(221)\x20for\x20assigned\x20operators','Task\x20submission:\x20PROGRESS_TASK\x20(222)\x20for\x20any\x20authorized\x20submitter','Machine-bound:\x20Progress\x20permission\x20effective\x20only\x20after\x20Machine\x20publish'],'recommended_templates':['T-P-01']},{'id':'demand_permission','name':'Demand\x20publication\x20permission','host_object':'Demand','permission_index_range':'400-408','builtin_indexes':DEMAND_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['demand::guard_set\x20(404)','demand::reward_set\x20(405)','demand::feedback\x20(406)'],'mutable_after_publish':!![],'common_patterns':['Public\x20demand:\x20anyone\x20can\x20view;\x20only\x20owner\x20can\x20publish','Feedback\x20channel:\x20DEMAND_FEEDBACK\x20(406)\x20for\x20community\x20input','Guard\x20filtering:\x20DEMAND_GUARD\x20(404)\x20for\x20service\x20eligibility'],'recommended_templates':['T-P-01']},{'id':'contact_permission','name':'Contact/Messenger\x20management\x20permission','host_object':'Contact','permission_index_range':'450-454','builtin_indexes':CONTACT_PERMISSIONS,'owner_operations':['um_set','builder\x20(transfer)'],'admin_operations':['description_set','remark_*','perm_*','entity_*','admin_*'],'permission_index_operations':['contact::im_set\x20(453)'],'mutable_after_publish':!![],'common_patterns':['Personal\x20contact:\x20usually\x20single-owner','IM\x20binding:\x20CONTACT_IM\x20(453)\x20for\x20chat\x20platform\x20binding'],'recommended_templates':['T-P-01']},{'id':'ownership_transfer','name':'Permission\x20ownership\x20transfer\x20(cross-scene)','host_object':'Standalone','permission_index_range':'N/A','builtin_indexes':[],'owner_operations':['builder\x20(transfer)'],'admin_operations':[],'permission_index_operations':[],'mutable_after_publish':!![],'common_patterns':['Owner-only:\x20assert_owner\x20required\x20for\x20transfer','Irreversible:\x20once\x20transferred,\x20original\x20owner\x20loses\x20all\x20control','New\x20owner\x20auto-admin:\x20new\x20owner\x20becomes\x20admin\x20automatically','Pre-transfer\x20backup:\x20export\x20Permission\x20JSON\x20before\x20transfer'],'recommended_templates':['T-P-08']}];export const PERMISSION_LEDGER_VERSION='1.0.0';export function getScenesByHostObject(a){return PERMISSION_SCENES['filter'](b=>b['host_object']===a);}export function findSceneById(a){return PERMISSION_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){for(const b of PERMISSION_SCENES){if(b['builtin_indexes']['some'](c=>c['index']===a))return b;}return undefined;}export function getBuiltinPermissionByIndex(a){for(const b of PERMISSION_SCENES){const c=b['builtin_indexes']['find'](d=>d['index']===a);if(c)return c;}return undefined;}export function isBuiltinPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function inferSceneFromIntent(a){const b=a['toLowerCase']();if(b['includes']('transfer')||b['includes']('handover'))return findSceneById('ownership_transfer');const c=[['service','Service'],['machine','Machine'],['treasury','Treasury'],['arbitration','Arbitration'],['repository','Repository'],['reward','Reward'],['progress','Progress'],['demand','Demand'],['contact','Contact'],['messenger','Contact'],['allocation','Allocation']];for(const [d,e]of c){if(b['includes'](d)){const f=getScenesByHostObject(e);if(f['length']>0x0)return f[0x0];}}return undefined;}export function getAllBuiltinPermissions(){return PERMISSION_SCENES['flatMap'](a=>a['builtin_indexes']);}export function getPermissionScenesCount(){return PERMISSION_SCENES['length'];}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const PERSONAL_CONFIRM_VERSION = "1.0.0";
|
|
2
|
+
export type ConfirmSeverity = "block" | "warn" | "info";
|
|
3
|
+
export interface PersonalConfirmItem {
|
|
4
|
+
id: string;
|
|
5
|
+
severity: ConfirmSeverity;
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
passed: boolean;
|
|
9
|
+
evidence?: string;
|
|
10
|
+
fix_hint?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PersonalOpCheckInput {
|
|
13
|
+
information_entries?: Array<{
|
|
14
|
+
name: string;
|
|
15
|
+
value: unknown;
|
|
16
|
+
}>;
|
|
17
|
+
is_mark_destroy?: boolean;
|
|
18
|
+
is_mark_transfer?: boolean;
|
|
19
|
+
information_count?: number;
|
|
20
|
+
singleton_enforced?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function preCheckPersonalOp(input: PersonalOpCheckInput): PersonalConfirmItem[];
|
|
23
|
+
export declare function canProceedPersonalOp(input: PersonalOpCheckInput): {
|
|
24
|
+
canProceed: boolean;
|
|
25
|
+
blockers: PersonalConfirmItem[];
|
|
26
|
+
warnings: PersonalConfirmItem[];
|
|
27
|
+
info: PersonalConfirmItem[];
|
|
28
|
+
};
|
|
29
|
+
export declare function formatPersonalOpSummary(input: PersonalOpCheckInput): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{MAX_RECORD_COUNT_REGISTRAR}from'@wowok/wowok';export const PERSONAL_CONFIRM_VERSION='1.0.0';function detectSensitive(a){const b=[];for(const c of a){const d=typeof c['value']==='string'?c['value']:String(c['value']??'');if(/^\+?\d{10,15}$/['test'](d))b['push'](c['name']+'=phone-like');if(/[^\s@]+@[^\s@]+\.[^\s@]+/['test'](d))b['push'](c['name']+'=email-like');if(/^(0x)?[0-9a-fA-F]{64}$/['test'](d))b['push'](c['name']+'=private-key-like');if(/^([a-z]{3,8}\s){11,23}[a-z]{3,8}$/['test'](d['trim']()))b['push'](c['name']+'=mnemonic-like');if(/private[_-]?key|secret|mnemonic|seed/i['test'](c['name']))b['push'](c['name']+'=secret-named');}return b;}function checkSensitive(a){if(!a['information_entries']||a['information_entries']['length']===0x0)return{'id':'C-PERSONAL-01','severity':'info','title':'No\x20sensitive\x20information\x20written\x20on-chain','description':'On-chain\x20records\x20are\x20permanent\x20and\x20public.\x20Phone/email/private-key/mnemonic\x20must\x20never\x20be\x20stored.','passed':!![],'evidence':'no\x20information\x20entries'};const b=detectSensitive(a['information_entries']),c=b['length']===0x0;return{'id':'C-PERSONAL-01','severity':c?'info':'block','title':'Sensitive\x20information\x20detected\x20—\x20on-chain\x20data\x20is\x20permanent','description':'information\x20is\x20stored\x20as\x20on-chain\x20Records\x20with\x20no\x20delete.\x20Once\x20written,\x20phone/email/private-key/mnemonic\x20is\x20public\x20forever.','passed':c,'evidence':c?'no\x20sensitive\x20patterns':'sensitive\x20patterns:\x20'+b['join'](';\x20'),'fix_hint':'Use\x20the\x20\x27local\x27\x20tool\x20for\x20private\x20data;\x20re-confirm\x20before\x20writing\x20on-chain.'};}function checkSingleton(a){if(a['singleton_enforced']!==![])return{'id':'C-PERSONAL-02','severity':'info','title':'Singleton\x20invariant\x20enforced','description':'Each\x20user\x20has\x20exactly\x20one\x20Entity\x20record\x20+\x20one\x20Resource\x20mark\x20via\x20entity_register\x20idempotency.','passed':!![],'evidence':'singleton\x20enforced'};return{'id':'C-PERSONAL-02','severity':'warn','title':'Singleton\x20invariant\x20not\x20enforced\x20—\x20duplicate\x20identity\x20risk','description':'entity_register_with_resource_forced\x20can\x20create\x20a\x20second\x20Resource\x20mark,\x20invalidating\x20the\x20old\x20address.','passed':![],'evidence':'singleton_enforced=false','fix_hint':'Refuse\x20entity_register_with_resource_forced\x20unless\x20the\x20user\x20explicitly\x20opts\x20in.'};}function checkDestroy(a){if(!a['is_mark_destroy'])return{'id':'C-PERSONAL-03','severity':'info','title':'mark\x20destroy\x20is\x20irreversible','description':'Destroying\x20the\x20mark\x20Resource\x20permanently\x20removes\x20the\x20user\x27s\x20on-chain\x20identity\x20mark.','passed':!![],'evidence':'not\x20destroying'};return{'id':'C-PERSONAL-03','severity':'warn','title':'mark\x20destroy\x20is\x20irreversible\x20—\x20identity\x20mark\x20permanently\x20lost','description':'After\x20destroy,\x20the\x20user\x20has\x20no\x20on-chain\x20identity\x20mark\x20until\x20re-created,\x20breaking\x20downstream\x20services\x20keyed\x20on\x20the\x20old\x20Resource.','passed':![],'evidence':'is_mark_destroy=true','fix_hint':'Prefer\x20a\x20\x27replace\x27\x20alternative\x20that\x20swaps\x20the\x20Resource\x20without\x20losing\x20continuity.'};}function checkTransfer(a){if(!a['is_mark_transfer'])return{'id':'C-PERSONAL-04','severity':'info','title':'mark\x20transfer\x20detaches\x20source\x20address','description':'Transferring\x20the\x20mark\x20moves\x20the\x20Resource\x20to\x20a\x20new\x20address;\x20the\x20source\x20loses\x20the\x20binding.','passed':!![],'evidence':'not\x20transferring'};return{'id':'C-PERSONAL-04','severity':'warn','title':'mark\x20transfer\x20will\x20detach\x20the\x20mark\x20from\x20this\x20address','description':'Services\x20keyed\x20on\x20the\x20source\x20address\x20lose\x20the\x20binding;\x20no\x20forwarding\x20stub\x20is\x20left\x20behind.','passed':![],'evidence':'is_mark_transfer=true','fix_hint':'Warn\x20the\x20user\x20that\x20old-address\x20logins\x20will\x20break;\x20track\x20marks\x20by\x20Resource\x20address.'};}function checkRecordCount(a){if(a['information_count']===undefined)return{'id':'C-PERSONAL-05','severity':'info','title':'information_count\x20below\x20MAX_RECORD_COUNT_REGISTRAR\x20('+MAX_RECORD_COUNT_REGISTRAR+')','description':'Personal\x20inherits\x20Entity\x27s\x20record\x20cap.','passed':!![],'evidence':'not\x20provided'};const b=a['information_count']<MAX_RECORD_COUNT_REGISTRAR;return{'id':'C-PERSONAL-05','severity':b?'info':'warn','title':'information_count\x20below\x20MAX_RECORD_COUNT_REGISTRAR\x20('+MAX_RECORD_COUNT_REGISTRAR+')','description':'Entity\x27s\x20record\x20cap\x20is\x20MAX_RECORD_COUNT_REGISTRAR='+MAX_RECORD_COUNT_REGISTRAR+'.','passed':b,'evidence':'information_count='+a['information_count']+',\x20limit='+MAX_RECORD_COUNT_REGISTRAR,'fix_hint':'Self-limit\x20profile\x20data;\x20store\x20bulk\x20data\x20off-chain\x20via\x20Repository/Proof.'};}export function preCheckPersonalOp(a){return[checkSensitive(a),checkSingleton(a),checkDestroy(a),checkTransfer(a),checkRecordCount(a)];}export function canProceedPersonalOp(a){const b=preCheckPersonalOp(a);return{'canProceed':b['every'](c=>c['severity']!=='block'||c['passed']),'blockers':b['filter'](c=>c['severity']==='block'&&!c['passed']),'warnings':b['filter'](c=>c['severity']==='warn'&&!c['passed']),'info':b['filter'](c=>c['severity']==='info')};}export function formatPersonalOpSummary(a){const {canProceed:b,blockers:c,warnings:d}=canProceedPersonalOp(a),e=[b?'✓\x20Personal\x20operation\x20pre-check\x20PASSED':'✗\x20Personal\x20operation\x20pre-check\x20FAILED',''];return c['length']>0x0&&(e['push']('BLOCKERS:'),c['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??''))),e['push']('')),d['length']>0x0&&(e['push']('WARNINGS:'),d['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??'')))),e['join']('\x0a');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MAX_ADDRESS_COUNT,MAX_RECORD_COUNT_REGISTRAR,MAX_RECORD_LENGTH,MAX_TAGS_COUNT}from'@wowok/wowok';function detectSensitiveInformation(a){const b=[];for(const c of a){const d=typeof c['value']==='string'?c['value']:String(c['value']??''),f=d['toLowerCase']();if(/^\+?\d{10,15}$/['test'](d))b['push'](c['name']+'=phone-like');if(/[^\s@]+@[^\s@]+\.[^\s@]+/['test'](d))b['push'](c['name']+'=email-like');if(/^(0x)?[0-9a-fA-F]{64}$/['test'](d))b['push'](c['name']+'=private-key-like');if(/^([a-z]{3,8}\s){11,23}[a-z]{3,8}$/['test'](d['trim']()))b['push'](c['name']+'=mnemonic-like');if(/private[_-]?key|secret|mnemonic|seed/i['test'](c['name']))b['push'](c['name']+'=secret-named');void f;}return b;}const R_PE_01={'rule':{'id':'R-PERSONAL-01','level':'HIGH','category':'semantic','title':'Sensitive\x20information\x20leakage\x20—\x20on-chain\x20data\x20is\x20permanent','description':'information\x20is\x20stored\x20via\x20Entity.info_add\x20as\x20on-chain\x20Records.\x20The\x20schema\x20description\x20'+'warns\x20\x27NEVER:\x20phone,\x20address,\x20private\x20keys\x27\x20but\x20the\x20Move\x20layer\x20does\x20not\x20validate\x20'+'content.\x20Once\x20a\x20phone\x20number,\x20physical\x20address,\x20email,\x20or\x20private\x20key\x20is\x20written\x20'+'on-chain,\x20it\x20is\x20permanent\x20and\x20publicly\x20readable\x20—\x20there\x20is\x20no\x20delete\x20(info_remove\x20'+'only\x20removes\x20the\x20named\x20entry\x20from\x20the\x20user\x27s\x20record;\x20the\x20data\x20remains\x20in\x20the\x20'+'transaction\x20history).','affected_stakeholders':['user'],'scenario':'User\x20adds\x20information\x20{name:\x20\x27phone\x27,\x20value:\x20\x27+8613800000000\x27};\x20number\x20is\x20public\x20forever','mitigation':'MCP\x20schema\x20description\x20MUST\x20warn.\x20AI\x20agents\x20MUST\x20re-confirm\x20before\x20adding\x20any\x20'+'information\x20entry.\x20Business\x20layer\x20should\x20run\x20a\x20sensitive-data\x20regex\x20(phone/email/'+'private-key/mnemonic)\x20and\x20reject\x20matches.\x20Use\x20the\x20\x27local\x27\x20tool\x20for\x20private\x20data.','auto_fixable':![]},'check':a=>{if(!a['information_entries']||a['information_entries']['length']===0x0)return null;const b=detectSensitiveInformation(a['information_entries']);if(b['length']===0x0)return null;return{...R_PE_01['rule'],'evidence':'sensitive\x20patterns:\x20'+b['join'](';\x20')};}},R_PE_02={'rule':{'id':'R-PERSONAL-02','level':'MEDIUM','category':'lifecycle','title':'mark\x20destroy\x20is\x20irreversible\x20—\x20identity\x20mark\x20permanently\x20lost','description':'The\x20\x27destroy\x27\x20mark\x20op\x20permanently\x20deletes\x20the\x20Resource\x20object\x20backing\x20the\x20user\x27s\x20'+'identity\x20mark.\x20There\x20is\x20no\x20archive,\x20no\x20event,\x20and\x20no\x20rollback.\x20After\x20destroy,\x20the\x20'+'user\x20has\x20no\x20on-chain\x20identity\x20mark\x20until\x20they\x20create\x20a\x20new\x20one,\x20and\x20any\x20external\x20'+'system\x20keyed\x20on\x20the\x20old\x20Resource\x20address\x20breaks.','affected_stakeholders':['user','consumer'],'scenario':'User\x20destroys\x20their\x20mark;\x20downstream\x20services\x20keyed\x20on\x20the\x20old\x20Resource\x20address\x20fail','mitigation':'Require\x20explicit\x20confirmation\x20before\x20destroy.\x20SDK\x20should\x20refuse\x20destroy\x20if\x20any\x20'+'live\x20consumer\x20still\x20references\x20the\x20mark.\x20Provide\x20a\x20\x27replace\x27\x20alternative\x20that\x20'+'swaps\x20the\x20underlying\x20Resource\x20without\x20losing\x20continuity.','auto_fixable':![]},'check':a=>{if(!a['is_mark_destroy'])return null;return{...R_PE_02['rule'],'evidence':'is_mark_destroy=true\x20(irreversible)'};}},R_PE_03={'rule':{'id':'R-PERSONAL-03','level':'MEDIUM','category':'semantic','title':'referrer\x20chain\x20can\x20be\x20abused\x20to\x20fabricate\x20trust\x20signals','description':'When\x20registering,\x20a\x20user\x20may\x20specify\x20any\x20referrer\x20address.\x20There\x20is\x20no\x20on-chain\x20'+'verification\x20that\x20the\x20referrer\x20actually\x20invited\x20the\x20user.\x20A\x20sybil\x20attacker\x20can\x20'+'register\x20many\x20accounts\x20chained\x20to\x20a\x20reputable\x20address,\x20fabricating\x20an\x20affiliation\x20'+'to\x20borrow\x20trust.\x20The\x20Registrar\x20records\x20referrer\x20but\x20does\x20not\x20validate\x20consent.','affected_stakeholders':['user','consumer'],'scenario':'Attacker\x20registers\x20100\x20accounts\x20all\x20citing\x20a\x20reputable\x20merchant\x20as\x20referrer','mitigation':'Business\x20layer\x20should\x20treat\x20referrer\x20as\x20a\x20self-attested\x20hint,\x20not\x20a\x20verified\x20trust\x20'+'signal.\x20Audit\x20referrer\x20chains\x20off-chain;\x20require\x20the\x20referrer\x20to\x20co-sign\x20if\x20used\x20for\x20'+'trust\x20scoring.','auto_fixable':![]},'check':a=>{if(!a['has_referrer'])return null;return{...R_PE_03['rule'],'evidence':'has_referrer=true\x20(self-attested,\x20unverified)'};}},R_PE_04={'rule':{'id':'R-PERSONAL-04','level':'LOW','category':'structural','title':'information\x20inherits\x20MAX_RECORD_COUNT_REGISTRAR='+MAX_RECORD_COUNT_REGISTRAR+'\x20—\x20permissive','description':'Personal\x20does\x20not\x20define\x20its\x20own\x20record\x20cap;\x20it\x20inherits\x20Entity\x27s\x20'+('MAX_RECORD_COUNT_REGISTRAR='+MAX_RECORD_COUNT_REGISTRAR+'\x20(registrar.move)\x20and\x20')+('MAX_RECORD_LENGTH='+MAX_RECORD_LENGTH+'\x20per\x20record.\x20'+MAX_RECORD_COUNT_REGISTRAR+'\x20records\x20')+'per\x20user\x20is\x20generous\x20and\x20can\x20bloat\x20on-chain\x20storage\x20if\x20users\x20add\x20many\x20entries.\x20'+('MAX_ADDRESS_COUNT='+MAX_ADDRESS_COUNT+'\x20and\x20MAX_TAGS_COUNT='+MAX_TAGS_COUNT+'\x20also\x20apply\x20via\x20Entity/Resource.'),'affected_stakeholders':['user','system'],'scenario':'User\x20adds\x201000\x20information\x20entries;\x20Entity\x20record\x20storage\x20is\x20heavy\x20and\x20slow\x20to\x20read','mitigation':'Business\x20layer\x20should\x20self-limit\x20information\x20count\x20(e.g.\x20≤50).\x20For\x20bulk\x20profile\x20data,\x20'+'store\x20off-chain\x20and\x20reference\x20via\x20a\x20Repository\x20or\x20Proof.','auto_fixable':![]},'check':a=>{if(a['information_count']===undefined)return null;if(a['information_count']<MAX_RECORD_COUNT_REGISTRAR)return null;return{...R_PE_04['rule'],'evidence':'information_count='+a['information_count']+',\x20limit='+MAX_RECORD_COUNT_REGISTRAR};}},R_PE_05={'rule':{'id':'R-PERSONAL-05','level':'MEDIUM','category':'lifecycle','title':'mark\x20transfer\x20loses\x20identity\x20mark\x20at\x20the\x20source\x20address','description':'The\x20\x27transfer\x27\x20mark\x20op\x20moves\x20the\x20Resource\x20backing\x20the\x20identity\x20mark\x20to\x20a\x20new\x20address.\x20'+'After\x20transfer,\x20the\x20source\x20address\x20has\x20no\x20mark\x20—\x20any\x20service\x20that\x20keyed\x20identity\x20on\x20'+'the\x20source\x20address\x20loses\x20the\x20binding.\x20There\x20is\x20no\x20automatic\x20forwarding\x20stub\x20left\x20behind.','affected_stakeholders':['user','consumer'],'scenario':'User\x20transfers\x20mark\x20to\x20a\x20new\x20wallet;\x20old-wallet-based\x20logins\x20all\x20break','mitigation':'Surface\x20a\x20\x27transfer\x20will\x20detach\x20the\x20mark\x20from\x20this\x20address\x27\x20warning.\x20Consumers\x20should\x20'+'track\x20marks\x20by\x20Resource\x20address,\x20not\x20by\x20user\x20address.\x20Provide\x20a\x20migration\x20window\x20'+'where\x20both\x20addresses\x20are\x20valid.','auto_fixable':![]},'check':a=>{if(!a['is_mark_transfer'])return null;return{...R_PE_05['rule'],'evidence':'is_mark_transfer=true\x20(source\x20loses\x20mark)'};}},R_PE_06={'rule':{'id':'R-PERSONAL-06','level':'LOW','category':'cross_object','title':'Personal\x20has\x20no\x20dedicated\x20Move\x20struct\x20—\x20depends\x20entirely\x20on\x20Entity\x20+\x20Resource','description':'Personal\x20is\x20an\x20SDK-layer\x20construct:\x20there\x20is\x20no\x20personal.move.\x20The\x20SDK\x20composes\x20'+'Entity\x20(information/description)\x20and\x20Resource\x20(mark)\x20on\x20behalf\x20of\x20the\x20user.\x20Any\x20'+'breaking\x20change\x20in\x20Entity\x20or\x20Resource\x20directly\x20affects\x20Personal.\x20The\x20MCP\x20layer\x20'+'cannot\x20fix\x20Personal\x20bugs\x20without\x20touching\x20Entity/Resource.','affected_stakeholders':['system'],'scenario':'Entity\x20schema\x20changes;\x20Personal.information\x20silently\x20breaks','mitigation':'Track\x20Entity\x20and\x20Resource\x20changelogs\x20as\x20first-order\x20dependencies\x20of\x20Personal.\x20Add\x20'+'integration\x20tests\x20that\x20exercise\x20Personal\x20flows\x20whenever\x20Entity/Resource\x20change.','auto_fixable':![]},'check':a=>{if(!a['expects_dedicated_move_struct'])return null;return{...R_PE_06['rule'],'evidence':'expects_dedicated_move_struct=true\x20(none\x20exists)'};}},R_PE_07={'rule':{'id':'R-PERSONAL-07','level':'MEDIUM','category':'lifecycle','title':'Singleton\x20assumption\x20—\x20if\x20violated,\x20multiple\x20Personal\x20instances\x20conflict','description':'Personal\x20assumes\x20each\x20account\x20has\x20exactly\x20one\x20Entity\x20record\x20(and\x20one\x20Resource\x20mark).\x20'+'The\x20Move\x20layer\x20enforces\x20this\x20via\x20entity_register\x27s\x20idempotency\x20(returns\x20the\x20existing\x20'+'Resource\x20for\x20already-registered\x20users).\x20But\x20if\x20the\x20SDK\x20ever\x20bypasses\x20entity_register\x20'+'and\x20creates\x20duplicates\x20(e.g.\x20via\x20entity_register_with_resource_forced),\x20downstream\x20'+'code\x20that\x20assumes\x20a\x20singleton\x20would\x20see\x20inconsistent\x20state.','affected_stakeholders':['user','consumer'],'scenario':'SDK\x20calls\x20entity_register_with_resource_forced;\x20user\x20now\x20has\x20two\x20Resource\x20marks','mitigation':'SDK\x20MUST\x20enforce\x20the\x20singleton\x20invariant:\x20refuse\x20to\x20call\x20entity_register_with_resource_forced\x20'+'unless\x20the\x20user\x20explicitly\x20opts\x20in.\x20Document\x20that\x20forced\x20re-registration\x20invalidates\x20'+'the\x20old\x20Resource\x20address.','auto_fixable':![]},'check':a=>{if(a['singleton_enforced'])return null;return{...R_PE_07['rule'],'evidence':'singleton_enforced=false\x20(needs\x20SDK\x20guard)'};}};export const PERSONAL_RISK_RULES=[R_PE_01,R_PE_02,R_PE_03,R_PE_04,R_PE_05,R_PE_06,R_PE_07];export const PERSONAL_RISK_VERSION='1.0.0';export function checkPersonalRisks(a){const b=[];for(const c of PERSONAL_RISK_RULES){const d=c['check'](a);if(d)b['push'](d);}return b;}export function getPersonalRiskById(a){return PERSONAL_RISK_RULES['find'](b=>b['rule']['id']===a)?.['rule'];}
|
|
1
|
+
import{MAX_ADDRESS_COUNT,MAX_RECORD_COUNT_REGISTRAR,MAX_RECORD_LENGTH,MAX_TAGS_COUNT}from'@wowok/wowok';function detectSensitiveInformation(a){const b=[];for(const c of a){const d=typeof c['value']==='string'?c['value']:String(c['value']??''),f=d['toLowerCase']();if(/^\+?\d{10,15}$/['test'](d))b['push'](c['name']+'=phone-like');if(/[^\s@]+@[^\s@]+\.[^\s@]+/['test'](d))b['push'](c['name']+'=email-like');if(/^(0x)?[0-9a-fA-F]{64}$/['test'](d))b['push'](c['name']+'=private-key-like');if(/^([a-z]{3,8}\s){11,23}[a-z]{3,8}$/['test'](d['trim']()))b['push'](c['name']+'=mnemonic-like');if(/private[_-]?key|secret|mnemonic|seed/i['test'](c['name']))b['push'](c['name']+'=secret-named');void f;}return b;}const R_PE_01={'rule':{'id':'R-PERSONAL-01','level':'HIGH','category':'semantic','title':'Sensitive\x20information\x20leakage\x20—\x20on-chain\x20data\x20is\x20permanent','description':'information\x20is\x20stored\x20via\x20Entity.info_add\x20as\x20on-chain\x20Records.\x20The\x20schema\x20description\x20'+'warns\x20\x27NEVER:\x20phone,\x20address,\x20private\x20keys\x27\x20but\x20the\x20Move\x20layer\x20does\x20not\x20validate\x20'+'content.\x20Once\x20a\x20phone\x20number,\x20physical\x20address,\x20email,\x20or\x20private\x20key\x20is\x20written\x20'+'on-chain,\x20it\x20is\x20permanent\x20and\x20publicly\x20readable\x20—\x20there\x20is\x20no\x20delete\x20(info_remove\x20'+'only\x20removes\x20the\x20named\x20entry\x20from\x20the\x20user\x27s\x20record;\x20the\x20data\x20remains\x20in\x20the\x20'+'transaction\x20history).','affected_stakeholders':['user'],'scenario':'User\x20adds\x20information\x20{name:\x20\x27phone\x27,\x20value:\x20\x27+8613800000000\x27};\x20number\x20is\x20public\x20forever','mitigation':'MCP\x20schema\x20description\x20MUST\x20warn.\x20AI\x20agents\x20MUST\x20re-confirm\x20before\x20adding\x20any\x20'+'information\x20entry.\x20Business\x20layer\x20should\x20run\x20a\x20sensitive-data\x20regex\x20(phone/email/'+'private-key/mnemonic)\x20and\x20reject\x20matches.\x20Use\x20the\x20\x27local\x27\x20tool\x20for\x20private\x20data.','auto_fixable':![]},'check':a=>{if(!a['information_entries']||a['information_entries']['length']===0x0)return null;const b=detectSensitiveInformation(a['information_entries']);if(b['length']===0x0)return null;return{...R_PE_01['rule'],'evidence':'sensitive\x20patterns:\x20'+b['join'](';\x20')};}},R_PE_02={'rule':{'id':'R-PERSONAL-02','level':'MEDIUM','category':'lifecycle','title':'mark\x20destroy\x20is\x20irreversible\x20—\x20identity\x20mark\x20permanently\x20lost','description':'The\x20\x27destroy\x27\x20mark\x20op\x20permanently\x20deletes\x20the\x20Resource\x20object\x20backing\x20the\x20user\x27s\x20'+'identity\x20mark.\x20There\x20is\x20no\x20archive,\x20no\x20event,\x20and\x20no\x20rollback.\x20After\x20destroy,\x20the\x20'+'user\x20has\x20no\x20on-chain\x20identity\x20mark\x20until\x20they\x20create\x20a\x20new\x20one,\x20and\x20any\x20external\x20'+'system\x20keyed\x20on\x20the\x20old\x20Resource\x20address\x20breaks.','affected_stakeholders':['user','consumer'],'scenario':'User\x20destroys\x20their\x20mark;\x20downstream\x20services\x20keyed\x20on\x20the\x20old\x20Resource\x20address\x20fail','mitigation':'Require\x20explicit\x20confirmation\x20before\x20destroy.\x20SDK\x20should\x20refuse\x20destroy\x20if\x20any\x20'+'live\x20consumer\x20still\x20references\x20the\x20mark.\x20Provide\x20a\x20\x27replace\x27\x20alternative\x20that\x20'+'swaps\x20the\x20underlying\x20Resource\x20without\x20losing\x20continuity.','auto_fixable':![]},'check':a=>{if(!a['is_mark_destroy'])return null;return{...R_PE_02['rule'],'evidence':'is_mark_destroy=true\x20(irreversible)'};}},R_PE_03={'rule':{'id':'R-PERSONAL-03','level':'MEDIUM','category':'semantic','title':'referrer\x20chain\x20can\x20be\x20abused\x20to\x20fabricate\x20trust\x20signals','description':'When\x20registering,\x20a\x20user\x20may\x20specify\x20any\x20referrer\x20address.\x20There\x20is\x20no\x20on-chain\x20'+'verification\x20that\x20the\x20referrer\x20actually\x20invited\x20the\x20user.\x20A\x20sybil\x20attacker\x20can\x20'+'register\x20many\x20accounts\x20chained\x20to\x20a\x20reputable\x20address,\x20fabricating\x20an\x20association\x20'+'to\x20borrow\x20trust.\x20The\x20Registrar\x20records\x20referrer\x20but\x20does\x20not\x20validate\x20consent.','affected_stakeholders':['user','consumer'],'scenario':'Attacker\x20registers\x20100\x20accounts\x20all\x20citing\x20a\x20reputable\x20merchant\x20as\x20referrer','mitigation':'Business\x20layer\x20should\x20treat\x20referrer\x20as\x20a\x20self-attested\x20hint,\x20not\x20a\x20verified\x20trust\x20'+'signal.\x20Audit\x20referrer\x20chains\x20off-chain;\x20require\x20the\x20referrer\x20to\x20co-sign\x20if\x20used\x20for\x20'+'trust\x20scoring.','auto_fixable':![]},'check':a=>{if(!a['has_referrer'])return null;return{...R_PE_03['rule'],'evidence':'has_referrer=true\x20(self-attested,\x20unverified)'};}},R_PE_04={'rule':{'id':'R-PERSONAL-04','level':'LOW','category':'structural','title':'information\x20inherits\x20MAX_RECORD_COUNT_REGISTRAR='+MAX_RECORD_COUNT_REGISTRAR+'\x20—\x20permissive','description':'Personal\x20does\x20not\x20define\x20its\x20own\x20record\x20cap;\x20it\x20inherits\x20Entity\x27s\x20'+('MAX_RECORD_COUNT_REGISTRAR='+MAX_RECORD_COUNT_REGISTRAR+'\x20(registrar.move)\x20and\x20')+('MAX_RECORD_LENGTH='+MAX_RECORD_LENGTH+'\x20per\x20record.\x20'+MAX_RECORD_COUNT_REGISTRAR+'\x20records\x20')+'per\x20user\x20is\x20generous\x20and\x20can\x20bloat\x20on-chain\x20storage\x20if\x20users\x20add\x20many\x20entries.\x20'+('MAX_ADDRESS_COUNT='+MAX_ADDRESS_COUNT+'\x20and\x20MAX_TAGS_COUNT='+MAX_TAGS_COUNT+'\x20also\x20apply\x20via\x20Entity/Resource.'),'affected_stakeholders':['user','system'],'scenario':'User\x20adds\x201000\x20information\x20entries;\x20Entity\x20record\x20storage\x20is\x20heavy\x20and\x20slow\x20to\x20read','mitigation':'Business\x20layer\x20should\x20self-limit\x20information\x20count\x20(e.g.\x20≤50).\x20For\x20bulk\x20profile\x20data,\x20'+'store\x20off-chain\x20and\x20reference\x20via\x20a\x20Repository\x20or\x20Proof.','auto_fixable':![]},'check':a=>{if(a['information_count']===undefined)return null;if(a['information_count']<MAX_RECORD_COUNT_REGISTRAR)return null;return{...R_PE_04['rule'],'evidence':'information_count='+a['information_count']+',\x20limit='+MAX_RECORD_COUNT_REGISTRAR};}},R_PE_05={'rule':{'id':'R-PERSONAL-05','level':'MEDIUM','category':'lifecycle','title':'mark\x20transfer\x20loses\x20identity\x20mark\x20at\x20the\x20source\x20address','description':'The\x20\x27transfer\x27\x20mark\x20op\x20moves\x20the\x20Resource\x20backing\x20the\x20identity\x20mark\x20to\x20a\x20new\x20address.\x20'+'After\x20transfer,\x20the\x20source\x20address\x20has\x20no\x20mark\x20—\x20any\x20service\x20that\x20keyed\x20identity\x20on\x20'+'the\x20source\x20address\x20loses\x20the\x20binding.\x20There\x20is\x20no\x20automatic\x20forwarding\x20stub\x20left\x20behind.','affected_stakeholders':['user','consumer'],'scenario':'User\x20transfers\x20mark\x20to\x20a\x20new\x20wallet;\x20old-wallet-based\x20logins\x20all\x20break','mitigation':'Surface\x20a\x20\x27transfer\x20will\x20detach\x20the\x20mark\x20from\x20this\x20address\x27\x20warning.\x20Consumers\x20should\x20'+'track\x20marks\x20by\x20Resource\x20address,\x20not\x20by\x20user\x20address.\x20Provide\x20a\x20migration\x20window\x20'+'where\x20both\x20addresses\x20are\x20valid.','auto_fixable':![]},'check':a=>{if(!a['is_mark_transfer'])return null;return{...R_PE_05['rule'],'evidence':'is_mark_transfer=true\x20(source\x20loses\x20mark)'};}},R_PE_06={'rule':{'id':'R-PERSONAL-06','level':'LOW','category':'cross_object','title':'Personal\x20has\x20no\x20dedicated\x20Move\x20struct\x20—\x20depends\x20entirely\x20on\x20Entity\x20+\x20Resource','description':'Personal\x20is\x20an\x20SDK-layer\x20construct:\x20there\x20is\x20no\x20personal.move.\x20The\x20SDK\x20composes\x20'+'Entity\x20(information/description)\x20and\x20Resource\x20(mark)\x20on\x20behalf\x20of\x20the\x20user.\x20Any\x20'+'breaking\x20change\x20in\x20Entity\x20or\x20Resource\x20directly\x20affects\x20Personal.\x20The\x20MCP\x20layer\x20'+'cannot\x20fix\x20Personal\x20bugs\x20without\x20touching\x20Entity/Resource.','affected_stakeholders':['system'],'scenario':'Entity\x20schema\x20changes;\x20Personal.information\x20silently\x20breaks','mitigation':'Track\x20Entity\x20and\x20Resource\x20changelogs\x20as\x20first-order\x20dependencies\x20of\x20Personal.\x20Add\x20'+'integration\x20tests\x20that\x20exercise\x20Personal\x20flows\x20whenever\x20Entity/Resource\x20change.','auto_fixable':![]},'check':a=>{if(!a['expects_dedicated_move_struct'])return null;return{...R_PE_06['rule'],'evidence':'expects_dedicated_move_struct=true\x20(none\x20exists)'};}},R_PE_07={'rule':{'id':'R-PERSONAL-07','level':'MEDIUM','category':'lifecycle','title':'Singleton\x20assumption\x20—\x20if\x20violated,\x20multiple\x20Personal\x20instances\x20conflict','description':'Personal\x20assumes\x20each\x20account\x20has\x20exactly\x20one\x20Entity\x20record\x20(and\x20one\x20Resource\x20mark).\x20'+'The\x20Move\x20layer\x20enforces\x20this\x20via\x20entity_register\x27s\x20idempotency\x20(returns\x20the\x20existing\x20'+'Resource\x20for\x20already-registered\x20users).\x20But\x20if\x20the\x20SDK\x20ever\x20bypasses\x20entity_register\x20'+'and\x20creates\x20duplicates\x20(e.g.\x20via\x20entity_register_with_resource_forced),\x20downstream\x20'+'code\x20that\x20assumes\x20a\x20singleton\x20would\x20see\x20inconsistent\x20state.','affected_stakeholders':['user','consumer'],'scenario':'SDK\x20calls\x20entity_register_with_resource_forced;\x20user\x20now\x20has\x20two\x20Resource\x20marks','mitigation':'SDK\x20MUST\x20enforce\x20the\x20singleton\x20invariant:\x20refuse\x20to\x20call\x20entity_register_with_resource_forced\x20'+'unless\x20the\x20user\x20explicitly\x20opts\x20in.\x20Document\x20that\x20forced\x20re-registration\x20invalidates\x20'+'the\x20old\x20Resource\x20address.','auto_fixable':![]},'check':a=>{if(a['singleton_enforced'])return null;return{...R_PE_07['rule'],'evidence':'singleton_enforced=false\x20(needs\x20SDK\x20guard)'};}};export const PERSONAL_RISK_RULES=[R_PE_01,R_PE_02,R_PE_03,R_PE_04,R_PE_05,R_PE_06,R_PE_07];export const PERSONAL_RISK_VERSION='1.0.0';export function checkPersonalRisks(a){const b=[];for(const c of PERSONAL_RISK_RULES){const d=c['check'](a);if(d)b['push'](d);}return b;}export function getPersonalRiskById(a){return PERSONAL_RISK_RULES['find'](b=>b['rule']['id']===a)?.['rule'];}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const PERSONAL_TRANSLATION_VERSION = "1.0.0";
|
|
2
|
+
export interface SemanticToPersonalSchemaRule {
|
|
3
|
+
id: string;
|
|
4
|
+
pattern_name: string;
|
|
5
|
+
semantic_intent: string;
|
|
6
|
+
match_keywords: string[];
|
|
7
|
+
required_fields: string[];
|
|
8
|
+
optional_fields: string[];
|
|
9
|
+
example: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare const SEMANTIC_TO_PERSONAL_SCHEMA_RULES: SemanticToPersonalSchemaRule[];
|
|
12
|
+
export interface PersonalFieldTranslation {
|
|
13
|
+
field_name: string;
|
|
14
|
+
value_type: string;
|
|
15
|
+
semantic: string;
|
|
16
|
+
format_example: string;
|
|
17
|
+
validation_rules: string[];
|
|
18
|
+
}
|
|
19
|
+
export declare const PERSONAL_FIELD_TRANSLATIONS: PersonalFieldTranslation[];
|
|
20
|
+
export interface PersonalConstraintRule {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
related_field: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const PERSONAL_CONSTRAINT_RULES: PersonalConstraintRule[];
|
|
27
|
+
export interface PersonalExplainInput {
|
|
28
|
+
description?: string;
|
|
29
|
+
information_count?: number;
|
|
30
|
+
has_mark?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface PersonalExplanation {
|
|
33
|
+
summary: string;
|
|
34
|
+
mark_status: string;
|
|
35
|
+
warnings: string[];
|
|
36
|
+
}
|
|
37
|
+
export declare function explainPersonal(input: PersonalExplainInput): PersonalExplanation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const PERSONAL_TRANSLATION_VERSION='1.0.0';export const SEMANTIC_TO_PERSONAL_SCHEMA_RULES=[{'id':'P-PERSONAL-01','pattern_name':'Register\x20identity','semantic_intent':'Create\x20a\x20user\x20identity\x20(Entity\x20record\x20+\x20Resource\x20mark)\x20via\x20entity_register.','match_keywords':['register','create\x20identity','open\x20account'],'required_fields':[],'optional_fields':['referrer'],'example':{'referrer':'0x...'}},{'id':'P-PERSONAL-02','pattern_name':'Add\x20information','semantic_intent':'Add\x20a\x20named\x20record\x20to\x20the\x20user\x27s\x20Entity\x20(never\x20store\x20sensitive\x20data).','match_keywords':['add\x20info','set\x20profile','add\x20record'],'required_fields':['name','typed_value'],'optional_fields':[],'example':{'name':'preferences','typed_value':'0x...'}}];export const PERSONAL_FIELD_TRANSLATIONS=[{'field_name':'information','value_type':'vector<Record>\x20(via\x20Entity)','semantic':'User\x20profile\x20records;\x20Record{name,\x20typed_value}.','format_example':'[{name,\x20typed_value}]','validation_rules':['never\x20store\x20phone/email/private-key','record\x20cap\x20via\x20Entity']},{'field_name':'mark','value_type':'address\x20(Resource)','semantic':'Identity\x20mark\x20—\x20a\x20Resource\x20holding\x20tags.','format_example':'0x...resource...','validation_rules':['singleton\x20per\x20user','transfer\x20detaches\x20source']},{'field_name':'referrer','value_type':'Option<address>','semantic':'Self-attested\x20referrer\x20(not\x20a\x20verified\x20trust\x20signal).','format_example':'0x...referrer...','validation_rules':['unverified\x20—\x20treat\x20as\x20hint']},{'field_name':'description','value_type':'string','semantic':'User\x20description\x20(Entity).','format_example':'merchant\x20in\x20Shenzhen','validation_rules':['common::DESCRIPTION']}];export const PERSONAL_CONSTRAINT_RULES=[{'id':'PERSONAL_C_01','name':'sensitive\x20data','description':'no\x20phone/email/private-key/mnemonic\x20on-chain.','related_field':'information'},{'id':'PERSONAL_C_02','name':'singleton','description':'one\x20Entity\x20record\x20+\x20one\x20Resource\x20mark\x20per\x20user.','related_field':'mark'},{'id':'PERSONAL_C_03','name':'referrer\x20unverified','description':'referrer\x20is\x20self-attested,\x20not\x20consent-verified.','related_field':'referrer'}];export function explainPersonal(a){const b=[],c=a['has_mark']?'has\x20identity\x20mark':'no\x20identity\x20mark';if(!a['has_mark'])b['push']('user\x20has\x20no\x20Resource\x20mark;\x20register\x20before\x20on-chain\x20identity\x20ops');return{'summary':'Personal\x20('+(a['description']??'no\x20description')+').\x20'+c+'.\x20'+(a['information_count']??'?')+'\x20information\x20records.','mark_status':c,'warnings':b};}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
export type PermissionScope
|
|
2
|
-
export interface PermissionTypeDef {
|
|
3
|
-
name: "Permission" | "NamedOperator" | "OrderHolder";
|
|
4
|
-
scope: PermissionScope;
|
|
5
|
-
definedOn: string;
|
|
6
|
-
controls: string;
|
|
7
|
-
grantedBy: string;
|
|
8
|
-
example: string;
|
|
9
|
-
}
|
|
10
|
-
export declare const PERMISSION_TYPES: PermissionTypeDef[];
|
|
1
|
+
export { PERMISSION_TYPES, getPermissionType, type PermissionScope, type PermissionTypeDef, } from "./permission-ledger.js";
|
|
11
2
|
export type GameElementType = "player" | "strategy" | "payoff" | "utility" | "equilibrium" | "information" | "sequence" | "repetition" | "commitment" | "punishment" | "reward" | "reputation" | "signaling" | "screening" | "bargaining" | "auction" | "mechanism" | "constraint" | "uncertainty" | "cooperation";
|
|
12
3
|
export interface GameElementDef {
|
|
13
4
|
id: number;
|
|
@@ -18,7 +9,6 @@ export interface GameElementDef {
|
|
|
18
9
|
onChainMechanism: string;
|
|
19
10
|
}
|
|
20
11
|
export declare const GAME_ELEMENTS: GameElementDef[];
|
|
21
|
-
export declare function getPermissionType(name: string): PermissionTypeDef | undefined;
|
|
22
12
|
export declare function getGameElement(id: number): GameElementDef | undefined;
|
|
23
13
|
export declare function getGameElementsByType(type: GameElementType): GameElementDef[];
|
|
24
14
|
export declare const PROCESS_MODEL_VERSION = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PERMISSION_TYPES=[{'name':'Permission','scope':'organization','definedOn':'Permission\x20Object\x20(standalone\x20on-chain\x20object,\x20referenced\x20by\x20service/machine/etc.)','controls':'Who\x20can\x20modify\x20the\x20bound\x20object\x27s\x20settings,\x20publish\x20it,\x20manage\x20its\x20funds,\x20etc.','grantedBy':'The\x20object\x27s\x20creator\x20(owner)\x20or\x20anyone\x20the\x20creator\x20delegates\x20to','example':'A\x20shop\x20owner\x20creates\x20a\x20Permission\x20allowing\x20only\x20their\x20staff\x20to\x20modify\x20the\x20Service\x27s\x20price.'},{'name':'NamedOperator','scope':'order','definedOn':'Per-order\x20(specified\x20in\x20the\x20order\x20creation/modification\x20by\x20the\x20service)','controls':'Who\x20can\x20operate\x20on\x20a\x20specific\x20order:\x20advance\x20progress,\x20settle,\x20refund,\x20etc.','grantedBy':'The\x20service\x20(via\x20its\x20order_allocators\x20or\x20explicit\x20named\x20operators)','example':'A\x20delivery\x20service\x20assigns\x20Alice\x20as\x20the\x20NamedOperator\x20for\x20order\x20#123\x20—\x20only\x20Alice\x20can\x20mark\x20it\x20delivered.'},{'name':'OrderHolder','scope':'order_holder','definedOn':'Per-order\x20(the\x20\x27\x27\x20empty\x20string\x20address\x20=\x20the\x20order\x27s\x20current\x20holder)','controls':'Who\x20currently\x20holds\x20the\x20order\x20and\x20can\x20perform\x20holder-specific\x20actions\x20(accept,\x20reject,\x20pay)','grantedBy':'Implicitly\x20assigned\x20when\x20an\x20order\x20is\x20created\x20or\x20transferred','example':'Bob\x20places\x20an\x20order\x20—\x20he\x20becomes\x20the\x20OrderHolder.\x20He\x20can\x20accept\x20delivery\x20or\x20request\x20arbitration.'}];export const GAME_ELEMENTS=[{'id':0x1,'type':'player','name':'Merchant\x20vs\x20Customer','description':'The\x20basic\x20participants\x20of\x20the\x20game:\x20the\x20merchant\x20providing\x20the\x20service\x20and\x20the\x20customer\x20purchasing\x20the\x20service.','wowokApplication':'Service\x20creator\x20(merchant)\x20and\x20Order\x20creator\x20(customer).','onChainMechanism':'Service\x20+\x20Order\x20objects,\x20each\x20with\x20an\x20independent\x20on-chain\x20address.'},{'id':0x2,'type':'player','name':'Arbitrator','description':'Third-party\x20arbitrators\x20participate\x20in\x20the\x20dispute\x20resolution\x20game.','wowokApplication':'NamedOperator\x20of\x20the\x20Arb\x20object,\x20designated\x20by\x20the\x20Service.','onChainMechanism':'Arbitration\x20object\x20+\x20NamedOperator\x20permission.'},{'id':0x3,'type':'strategy','name':'Cooperation\x20vs\x20Deception','description':'The\x20merchant\x20can\x20choose\x20honest\x20fulfillment\x20(cooperation)\x20or\x20fraud\x20(deception).\x20The\x20customer\x20can\x20choose\x20to\x20trust\x20or\x20refuse.','wowokApplication':'Merchant\x20ships\x20vs\x20doesn\x27t\x20ship;\x20customer\x20pays\x20vs\x20refuses\x20to\x20pay.','onChainMechanism':'Progress\x20node\x20advancement\x20+\x20immutable\x20on-chain\x20state.'},{'id':0x4,'type':'payoff','name':'Fulfillment\x20payoff\x20vs\x20Fraud\x20payoff','description':'Honest\x20fulfillment\x20yields\x20sustained\x20income\x20+\x20reputation;\x20fraud\x20yields\x20one-time\x20income\x20but\x20loses\x20reputation\x20and\x20compensation\x20fund.','wowokApplication':'compensation_fund\x20as\x20economic\x20penalty\x20for\x20fraud;\x20repeat\x20business\x20as\x20long-term\x20payoff\x20for\x20cooperation.','onChainMechanism':'Service.compensation_fund\x20+\x20Treasury\x20locked\x20funds.'},{'id':0x5,'type':'utility','name':'Reputation\x20utility','description':'Merchant\x27s\x20total\x20utility\x20=\x20immediate\x20income\x20+\x20reputation-discounted\x20future\x20income\x20-\x20expected\x20penalty.','wowokApplication':'Merchants\x20with\x20high\x20reputation\x20scores\x20get\x20more\x20orders\x20(Demand\x20matching\x20priority).','onChainMechanism':'ReviewRepository\x20(on-chain\x20public\x20reviews)\x20+\x20Demand\x20matching\x20engine.'},{'id':0x6,'type':'equilibrium','name':'Nash\x20equilibrium:\x20mutual\x20cooperation','description':'When\x20penalties\x20are\x20large\x20enough\x20and\x20reputation\x20is\x20important\x20enough,\x20the\x20strategy\x20profile\x20of\x20mutual\x20cooperation\x20becomes\x20a\x20Nash\x20equilibrium.','wowokApplication':'compensation_fund\x20large\x20enough\x20+\x20immutable\x20on-chain\x20reputation\x20->\x20cooperation\x20becomes\x20the\x20optimal\x20strategy.','onChainMechanism':'Guard\x20verifies\x20compensation_fund\x20amount\x20+\x20ReviewRepository\x20public.'},{'id':0x7,'type':'information','name':'Incomplete\x20information','description':'Customers\x20don\x27t\x20fully\x20understand\x20the\x20merchant\x27s\x20service\x20quality;\x20merchants\x20don\x27t\x20fully\x20understand\x20the\x20customer\x27s\x20payment\x20capacity.','wowokApplication':'Service.description\x20+\x20Guard\x20verification\x20as\x20signals;\x20customer\x20wallet\x20balance\x20is\x20queryable\x20on-chain.','onChainMechanism':'Guard\x20+\x20Personal\x20object\x20+\x20on-chain\x20transaction\x20history.'},{'id':0x8,'type':'sequence','name':'Sequential\x20game','description':'Customer\x20places\x20order\x20and\x20pays\x20first,\x20merchant\x20fulfills\x20later\x20—\x20this\x20is\x20a\x20typical\x20sequential\x20game.','wowokApplication':'Order\x20creation\x20->\x20Progress\x20advancement\x20->\x20Acceptance/Arbitration.','onChainMechanism':'Machine\x20node\x20sequence\x20+\x20Progress\x20state\x20machine.'},{'id':0x9,'type':'repetition','name':'Repeated\x20game','description':'Merchants\x20and\x20customers\x20may\x20transact\x20multiple\x20times;\x20repeated\x20games\x20make\x20cooperation\x20strategies\x20superior.','wowokApplication':'Customer\x20repeat\x20purchases\x20+\x20Demand\x20matching\x20prioritizes\x20high-reputation\x20merchants.','onChainMechanism':'ReviewRepository\x20accumulates\x20reviews\x20+\x20Demand\x20matching\x20engine.'},{'id':0xa,'type':'commitment','name':'Compensation\x20fund\x20commitment','description':'Merchants\x20make\x20a\x20credible\x20commitment\x20by\x20locking\x20compensation_fund,\x20reducing\x20customers\x27\x20risk\x20perception.','wowokApplication':'Service.compensation_fund\x20locks\x20funds;\x20customers\x20can\x20claim\x20compensation\x20in\x20case\x20of\x20fraud.','onChainMechanism':'Treasury\x20object\x20+\x20Guard\x20verifies\x20amount\x20+\x20withdrawal\x20rules.'},{'id':0xb,'type':'punishment','name':'Compensation\x20fund\x20penalty','description':'When\x20a\x20merchant\x20commits\x20fraud,\x20the\x20compensation\x20fund\x20is\x20transferred\x20to\x20the\x20customer,\x20constituting\x20economic\x20punishment.','wowokApplication':'Arbitration\x20verdict\x20->\x20compensation_fund\x20withdrawal\x20->\x20customer\x20receives\x20compensation.','onChainMechanism':'Arbitration\x20verdict\x20+\x20Treasury\x20withdrawal\x20rules.'},{'id':0xc,'type':'reward','name':'Reward\x20marketing\x20incentive','description':'Merchants\x20issue\x20rewards\x20via\x20Reward\x20objects,\x20incentivizing\x20customer\x20behavior\x20(first\x20order,\x20referral,\x20loyalty).','wowokApplication':'Reward\x20object\x20+\x20Guard\x20verifies\x20claim\x20conditions\x20(e.g.,\x20completed\x20first\x20order).','onChainMechanism':'Reward\x20object\x20+\x20Guard\x20claim\x20conditions\x20+\x20Allocation\x20distribution.'},{'id':0xd,'type':'reputation','name':'On-chain\x20public\x20reputation','description':'All\x20transactions\x20and\x20reviews\x20are\x20recorded\x20on-chain,\x20forming\x20an\x20immutable\x20reputation\x20system.','wowokApplication':'ReviewRepository\x20stores\x20like/dislike/review\x20tags,\x20queryable\x20on-chain.','onChainMechanism':'Repository\x20object\x20+\x20Guard\x20anti-spam\x20+\x20address-keyed\x20review\x20records.'},{'id':0xe,'type':'signaling','name':'Quality\x20signal','description':'Merchants\x20send\x20quality\x20signals\x20via\x20Guard\x20verification,\x20compensation_fund\x20amount,\x20and\x20Machine\x20transparency.','wowokApplication':'buy_guard\x20verification\x20->\x20signal;\x20compensation_fund\x20amount\x20->\x20signal;\x20Machine\x20public\x20->\x20signal.','onChainMechanism':'Guard\x20+\x20Treasury\x20+\x20Machine\x20object\x27s\x20on-chain\x20public\x20data.'},{'id':0xf,'type':'screening','name':'Customer\x20screening','description':'Merchants\x20screen\x20customers\x20via\x20Guard\x20(e.g.,\x20verify\x20identity,\x20credit\x20score,\x20wallet\x20balance).','wowokApplication':'Service.buy_guard\x20verifies\x20customer\x20eligibility.','onChainMechanism':'Guard\x20object\x20+\x20gen_passport\x20verifies\x20credentials.'},{'id':0x10,'type':'bargaining','name':'Price\x20bargaining','description':'Customers\x20and\x20merchants\x20can\x20bargain\x20via\x20Messenger;\x20the\x20final\x20price\x20is\x20submitted\x20via\x20Demand.','wowokApplication':'Messenger\x20encrypted\x20communication\x20->\x20Demand\x20submits\x20demand\x20with\x20reward.','onChainMechanism':'Contact\x20+\x20Messenger\x20+\x20Demand\x20objects.'},{'id':0x11,'type':'auction','name':'Demand\x20bidding','description':'Multiple\x20service\x20providers\x20can\x20compete\x20for\x20the\x20same\x20Demand,\x20forming\x20a\x20bidding\x20mechanism.','wowokApplication':'Demand\x20publishes\x20demand\x20->\x20multiple\x20Services\x20submit\x20proposals\x20->\x20customer\x20chooses.','onChainMechanism':'Demand\x20object\x20+\x20order\x20creation\x20+\x20Progress\x20advancement.'},{'id':0x12,'type':'mechanism','name':'Mechanism\x20design','description':'WoWok\x27s\x20overall\x20architecture\x20is\x20mechanism\x20design:\x20incentivizing\x20cooperation\x20and\x20punishing\x20fraud\x20via\x20on-chain\x20rules.','wowokApplication':'compensation_fund\x20+\x20Arbitration\x20+\x20ReviewRepository\x20combine\x20to\x20form\x20a\x20trust\x20mechanism.','onChainMechanism':'Move\x20contract-level\x20object\x20composition\x20+\x20Guard\x20verification\x20+\x20immutability.'},{'id':0x13,'type':'constraint','name':'Fund\x20constraint','description':'compensation_fund\x20and\x20Reward\x20fund\x20locks\x20constitute\x20economic\x20constraints,\x20limiting\x20the\x20merchant\x27s\x20incentive\x20to\x20commit\x20fraud.','wowokApplication':'Fund\x20lock\x20>\x20fraud\x20payoff\x20->\x20cooperation\x20is\x20the\x20rational\x20choice.','onChainMechanism':'Treasury\x20+\x20Allocation\x20fund\x20lock.'},{'id':0x14,'type':'cooperation','name':'Supply\x20chain\x20collaboration','description':'Multiple\x20merchants\x20combine\x20via\x20Machine\x20to\x20form\x20a\x20supply\x20chain,\x20cooperating\x20to\x20fulfill\x20complex\x20orders\x20(sub-orders).','wowokApplication':'Service\x27s\x20order_allocators\x20supports\x20multi-supplier\x20allocation;\x20Machine\x20node\x20forwards\x20combine.','onChainMechanism':'Allocation\x20+\x20Machine\x20Forward\x20+\x20Progress\x20cross-object\x20composition.'}];const PERMISSION_INDEX=new Map(PERMISSION_TYPES['map'](a=>[a['name'],a])),GAME_ELEMENT_INDEX=new Map(GAME_ELEMENTS['map'](a=>[a['id'],a]));export function getPermissionType(a){return PERMISSION_INDEX['get'](a);}export function getGameElement(a){return GAME_ELEMENT_INDEX['get'](a);}export function getGameElementsByType(a){return GAME_ELEMENTS['filter'](b=>b['type']===a);}export const PROCESS_MODEL_VERSION=0x1;
|
|
1
|
+
export{PERMISSION_TYPES,getPermissionType}from'./permission-ledger.js';export const GAME_ELEMENTS=[{'id':0x1,'type':'player','name':'Merchant\x20vs\x20Customer','description':'The\x20basic\x20participants\x20of\x20the\x20game:\x20the\x20merchant\x20providing\x20the\x20service\x20and\x20the\x20customer\x20purchasing\x20the\x20service.','wowokApplication':'Service\x20creator\x20(merchant)\x20and\x20Order\x20creator\x20(customer).','onChainMechanism':'Service\x20+\x20Order\x20objects,\x20each\x20with\x20an\x20independent\x20on-chain\x20address.'},{'id':0x2,'type':'player','name':'Arbitrator','description':'Third-party\x20arbitrators\x20participate\x20in\x20the\x20dispute\x20resolution\x20game.','wowokApplication':'NamedOperator\x20of\x20the\x20Arb\x20object,\x20designated\x20by\x20the\x20Service.','onChainMechanism':'Arbitration\x20object\x20+\x20NamedOperator\x20permission.'},{'id':0x3,'type':'strategy','name':'Cooperation\x20vs\x20Deception','description':'The\x20merchant\x20can\x20choose\x20honest\x20fulfillment\x20(cooperation)\x20or\x20fraud\x20(deception).\x20The\x20customer\x20can\x20choose\x20to\x20trust\x20or\x20refuse.','wowokApplication':'Merchant\x20ships\x20vs\x20doesn\x27t\x20ship;\x20customer\x20pays\x20vs\x20refuses\x20to\x20pay.','onChainMechanism':'Progress\x20node\x20advancement\x20+\x20immutable\x20on-chain\x20state.'},{'id':0x4,'type':'payoff','name':'Fulfillment\x20payoff\x20vs\x20Fraud\x20payoff','description':'Honest\x20fulfillment\x20yields\x20sustained\x20income\x20+\x20reputation;\x20fraud\x20yields\x20one-time\x20income\x20but\x20loses\x20reputation\x20and\x20compensation\x20fund.','wowokApplication':'compensation_fund\x20as\x20economic\x20penalty\x20for\x20fraud;\x20repeat\x20business\x20as\x20long-term\x20payoff\x20for\x20cooperation.','onChainMechanism':'Service.compensation_fund\x20+\x20Treasury\x20locked\x20funds.'},{'id':0x5,'type':'utility','name':'Reputation\x20utility','description':'Merchant\x27s\x20total\x20utility\x20=\x20immediate\x20income\x20+\x20reputation-discounted\x20future\x20income\x20-\x20expected\x20penalty.','wowokApplication':'Merchants\x20with\x20high\x20reputation\x20scores\x20get\x20more\x20orders\x20(Demand\x20matching\x20priority).','onChainMechanism':'ReviewRepository\x20(on-chain\x20public\x20reviews)\x20+\x20Demand\x20matching\x20engine.'},{'id':0x6,'type':'equilibrium','name':'Nash\x20equilibrium:\x20mutual\x20cooperation','description':'When\x20penalties\x20are\x20large\x20enough\x20and\x20reputation\x20is\x20important\x20enough,\x20the\x20strategy\x20profile\x20of\x20mutual\x20cooperation\x20becomes\x20a\x20Nash\x20equilibrium.','wowokApplication':'compensation_fund\x20large\x20enough\x20+\x20immutable\x20on-chain\x20reputation\x20->\x20cooperation\x20becomes\x20the\x20optimal\x20strategy.','onChainMechanism':'Guard\x20verifies\x20compensation_fund\x20amount\x20+\x20ReviewRepository\x20public.'},{'id':0x7,'type':'information','name':'Incomplete\x20information','description':'Customers\x20don\x27t\x20fully\x20understand\x20the\x20merchant\x27s\x20service\x20quality;\x20merchants\x20don\x27t\x20fully\x20understand\x20the\x20customer\x27s\x20payment\x20capacity.','wowokApplication':'Service.description\x20+\x20Guard\x20verification\x20as\x20signals;\x20customer\x20wallet\x20balance\x20is\x20queryable\x20on-chain.','onChainMechanism':'Guard\x20+\x20Personal\x20object\x20+\x20on-chain\x20transaction\x20history.'},{'id':0x8,'type':'sequence','name':'Sequential\x20game','description':'Customer\x20places\x20order\x20and\x20pays\x20first,\x20merchant\x20fulfills\x20later\x20—\x20this\x20is\x20a\x20typical\x20sequential\x20game.','wowokApplication':'Order\x20creation\x20->\x20Progress\x20advancement\x20->\x20Acceptance/Arbitration.','onChainMechanism':'Machine\x20node\x20sequence\x20+\x20Progress\x20state\x20machine.'},{'id':0x9,'type':'repetition','name':'Repeated\x20game','description':'Merchants\x20and\x20customers\x20may\x20transact\x20multiple\x20times;\x20repeated\x20games\x20make\x20cooperation\x20strategies\x20superior.','wowokApplication':'Customer\x20repeat\x20purchases\x20+\x20Demand\x20matching\x20prioritizes\x20high-reputation\x20merchants.','onChainMechanism':'ReviewRepository\x20accumulates\x20reviews\x20+\x20Demand\x20matching\x20engine.'},{'id':0xa,'type':'commitment','name':'Compensation\x20fund\x20commitment','description':'Merchants\x20make\x20a\x20credible\x20commitment\x20by\x20locking\x20compensation_fund,\x20reducing\x20customers\x27\x20risk\x20perception.','wowokApplication':'Service.compensation_fund\x20locks\x20funds;\x20customers\x20can\x20claim\x20compensation\x20in\x20case\x20of\x20fraud.','onChainMechanism':'Treasury\x20object\x20+\x20Guard\x20verifies\x20amount\x20+\x20withdrawal\x20rules.'},{'id':0xb,'type':'punishment','name':'Compensation\x20fund\x20penalty','description':'When\x20a\x20merchant\x20commits\x20fraud,\x20the\x20compensation\x20fund\x20is\x20transferred\x20to\x20the\x20customer,\x20constituting\x20economic\x20punishment.','wowokApplication':'Arbitration\x20verdict\x20->\x20compensation_fund\x20withdrawal\x20->\x20customer\x20receives\x20compensation.','onChainMechanism':'Arbitration\x20verdict\x20+\x20Treasury\x20withdrawal\x20rules.'},{'id':0xc,'type':'reward','name':'Reward\x20marketing\x20incentive','description':'Merchants\x20issue\x20rewards\x20via\x20Reward\x20objects,\x20incentivizing\x20customer\x20behavior\x20(first\x20order,\x20referral,\x20loyalty).','wowokApplication':'Reward\x20object\x20+\x20Guard\x20verifies\x20claim\x20conditions\x20(e.g.,\x20completed\x20first\x20order).','onChainMechanism':'Reward\x20object\x20+\x20Guard\x20claim\x20conditions\x20+\x20Allocation\x20distribution.'},{'id':0xd,'type':'reputation','name':'On-chain\x20public\x20reputation','description':'All\x20transactions\x20and\x20reviews\x20are\x20recorded\x20on-chain,\x20forming\x20an\x20immutable\x20reputation\x20system.','wowokApplication':'ReviewRepository\x20stores\x20like/dislike/review\x20tags,\x20queryable\x20on-chain.','onChainMechanism':'Repository\x20object\x20+\x20Guard\x20anti-spam\x20+\x20address-keyed\x20review\x20records.'},{'id':0xe,'type':'signaling','name':'Quality\x20signal','description':'Merchants\x20send\x20quality\x20signals\x20via\x20Guard\x20verification,\x20compensation_fund\x20amount,\x20and\x20Machine\x20transparency.','wowokApplication':'buy_guard\x20verification\x20->\x20signal;\x20compensation_fund\x20amount\x20->\x20signal;\x20Machine\x20public\x20->\x20signal.','onChainMechanism':'Guard\x20+\x20Treasury\x20+\x20Machine\x20object\x27s\x20on-chain\x20public\x20data.'},{'id':0xf,'type':'screening','name':'Customer\x20screening','description':'Merchants\x20screen\x20customers\x20via\x20Guard\x20(e.g.,\x20verify\x20identity,\x20credit\x20score,\x20wallet\x20balance).','wowokApplication':'Service.buy_guard\x20verifies\x20customer\x20eligibility.','onChainMechanism':'Guard\x20object\x20+\x20gen_passport\x20verifies\x20credentials.'},{'id':0x10,'type':'bargaining','name':'Price\x20bargaining','description':'Customers\x20and\x20merchants\x20can\x20bargain\x20via\x20Messenger;\x20the\x20final\x20price\x20is\x20submitted\x20via\x20Demand.','wowokApplication':'Messenger\x20encrypted\x20communication\x20->\x20Demand\x20submits\x20demand\x20with\x20reward.','onChainMechanism':'Contact\x20+\x20Messenger\x20+\x20Demand\x20objects.'},{'id':0x11,'type':'auction','name':'Demand\x20bidding','description':'Multiple\x20service\x20providers\x20can\x20compete\x20for\x20the\x20same\x20Demand,\x20forming\x20a\x20bidding\x20mechanism.','wowokApplication':'Demand\x20publishes\x20demand\x20->\x20multiple\x20Services\x20submit\x20proposals\x20->\x20customer\x20chooses.','onChainMechanism':'Demand\x20object\x20+\x20order\x20creation\x20+\x20Progress\x20advancement.'},{'id':0x12,'type':'mechanism','name':'Mechanism\x20design','description':'WoWok\x27s\x20overall\x20architecture\x20is\x20mechanism\x20design:\x20incentivizing\x20cooperation\x20and\x20punishing\x20fraud\x20via\x20on-chain\x20rules.','wowokApplication':'compensation_fund\x20+\x20Arbitration\x20+\x20ReviewRepository\x20combine\x20to\x20form\x20a\x20trust\x20mechanism.','onChainMechanism':'Move\x20contract-level\x20object\x20composition\x20+\x20Guard\x20verification\x20+\x20immutability.'},{'id':0x13,'type':'constraint','name':'Fund\x20constraint','description':'compensation_fund\x20and\x20Reward\x20fund\x20locks\x20constitute\x20economic\x20constraints,\x20limiting\x20the\x20merchant\x27s\x20incentive\x20to\x20commit\x20fraud.','wowokApplication':'Fund\x20lock\x20>\x20fraud\x20payoff\x20->\x20cooperation\x20is\x20the\x20rational\x20choice.','onChainMechanism':'Treasury\x20+\x20Allocation\x20fund\x20lock.'},{'id':0x14,'type':'cooperation','name':'Supply\x20chain\x20collaboration','description':'Multiple\x20merchants\x20combine\x20via\x20Machine\x20to\x20form\x20a\x20supply\x20chain,\x20cooperating\x20to\x20fulfill\x20complex\x20orders\x20(sub-orders).','wowokApplication':'Service\x27s\x20order_allocators\x20supports\x20multi-supplier\x20allocation;\x20Machine\x20node\x20forwards\x20combine.','onChainMechanism':'Allocation\x20+\x20Machine\x20Forward\x20+\x20Progress\x20cross-object\x20composition.'}];const GAME_ELEMENT_INDEX=new Map(GAME_ELEMENTS['map'](a=>[a['id'],a]));export function getGameElement(a){return GAME_ELEMENT_INDEX['get'](a);}export function getGameElementsByType(a){return GAME_ELEMENTS['filter'](b=>b['type']===a);}export const PROCESS_MODEL_VERSION=0x1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_CONTEXT_REPOSITORY_COUNT}from'@wowok/wowok';export{MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_CONTEXT_REPOSITORY_COUNT};export const PROGRESS_NEW={'index':0xdc,'name':'PROGRESS_NEW','description':'Create\x20new\x20Progress\x20(asserted\x20by\x20progress::new\x20/\x20new_with_passport)','governed_operations':['progress::new','progress::new_with_passport'],'sdk_exposed':![]};export const PROGRESS_NAMED_OPERATOR={'index':0xdd,'name':'PROGRESS_NAMED_OPERATOR','description':'Manage\x20named\x20operators\x20(add/set/remove)\x20for\x20the\x20namedOperator\x20namespace','governed_operations':['progress::namedOperator_add','progress::namedOperator_set','progress::namedOperator_remove','progress::namedOperator_add_with_passport','progress::namedOperator_set_with_passport','progress::namedOperator_remove_with_passport'],'sdk_exposed':!![]};export const PROGRESS_TASK={'index':0xde,'name':'PROGRESS_TASK','description':'Submit\x20task\x20(one-time,\x20immutable\x20once\x20set\x20—\x20E_TASK_ALREADY_SET)','governed_operations':['progress::task_set','progress::task_set_with_passport'],'sdk_exposed':!![]};export const PROGRESS_CONTEXT_REPOSITORY={'index':0xdf,'name':'PROGRESS_CONTEXT_REPOSITORY','description':'Bind/unbind\x20context\x20Repository\x20(≤\x20MAX_CONTEXT_REPOSITORY_COUNT=30)','governed_operations':['progress::context_repository_add','progress::context_repository_remove','progress::context_repository_clear','progress::context_repository_add_with_passport','progress::context_repository_remove_with_passport','progress::context_repository_clear_with_passport'],'sdk_exposed':!![]};export const PROGRESS_UNHOLD={'index':0xe0,'name':'PROGRESS_UNHOLD','description':'Force\x20unhold\x20(adminUnhold)\x20—\x20bypasses\x20holder\x20check,\x20releases\x20blocked\x20forward','governed_operations':['progress::unhold','progress::unhold_with_passport'],'sdk_exposed':!![]};export const PROGRESS_OWNER_RECEIVE={'index':0xe1,'name':'PROGRESS_OWNER_RECEIVE','description':'Owner\x20receives\x20objects/coins\x20(unwrap\x20Receiving<K>\x20→\x20owner)','governed_operations':['progress::owner_receive','progress::owner_receive_object','progress::owner_receive_with_passport','progress::owner_receive_object_with_passport'],'sdk_exposed':![]};export const PROGRESS_PERMISSIONS=[PROGRESS_NEW,PROGRESS_NAMED_OPERATOR,PROGRESS_TASK,PROGRESS_CONTEXT_REPOSITORY,PROGRESS_UNHOLD,PROGRESS_OWNER_RECEIVE];export const PROGRESS_SCENES=[{'id':'progress_task_submit','name':'Task\x20submission\x20&\x20binding\x20workflow','industry':['universal','ecommerce','logistics','education'],'scenario':'Submit\x20a\x20task\x20(Order/Reward/etc.)\x20to\x20Progress\x20via\x20task_set.\x20'+'Task\x20is\x20one-time,\x20immutable\x20—\x20once\x20set,\x20E_TASK_ALREADY_SET\x20blocks\x20any\x20re-assignment.\x20'+'Binds\x20Progress\x201:1\x20to\x20the\x20task\x20object\x20for\x20the\x20rest\x20of\x20its\x20lifecycle.','phases':['task_binding','forward_advance'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[],'builtin_indexes_consumed':[PROGRESS_TASK],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['task_set\x20is\x20one-time:\x20verify\x20task\x20address\x20before\x20submission\x20(E_TASK_ALREADY_SET\x20blocks\x20reset)','task\x20is\x20usually\x20an\x20Order\x20created\x20by\x20service::buy\x20→\x20Progress.task\x20=\x20Order\x20address','Without\x20task,\x20Forward\x20advancement\x20falls\x20back\x20to\x20non-order\x20next()/hold()\x20paths'],'recommended_templates':['T-PR-01']},{'id':'progress_named_operator','name':'Named\x20operator\x20namespace\x20management','industry':['universal','logistics','arbitration','freelance'],'scenario':'Manage\x20named_operator\x20namespace\x20for\x20a\x20Progress.\x20Each\x20named\x20operator\x20is\x20a\x20(name\x20→\x20address\x20list)\x20'+'binding\x20used\x20by\x20Machine.forward.namedOperator\x20to\x20gate\x20next()/hold()\x20advancement.\x20'+'Up\x20to\x2060\x20named\x20operators\x20per\x20Progress,\x20up\x20to\x2080\x20addresses\x20per\x20operator.','phases':['named_operator_mgmt'],'requires_published_machine':!![],'requires_order_bound':![],'named_operator_roles':[{'role':'seller','typical_count':0x1},{'role':'logistics','typical_count':0x1},{'role':'reviewer','typical_count':0x3},{'role':'arbitrator','typical_count':0x5}],'builtin_indexes_consumed':[PROGRESS_NAMED_OPERATOR],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['namedOperator\x20name=\x27\x27:\x20special\x20case\x20—\x20means\x20OrderHolder\x20(order.owner/agent),\x20NOT\x20a\x20real\x20named\x20operator','add/set/remove\x20are\x20idempotent\x20on\x20duplicate\x20addresses\x20(vector::contains\x20check\x20before\x20push)','Use\x20\x27set\x27\x20to\x20REPLACE\x20an\x20operator\x27s\x20address\x20list;\x20use\x20\x27add\x27\x20to\x20extend;\x20\x27remove\x27\x20to\x20subtract','Names\x20must\x20satisfy\x20common::NAME\x20(isValidName)\x20—\x20non-empty,\x20length-bounded'],'recommended_templates':['T-PR-01','T-PR-02']},{'id':'progress_unhold','name':'Hold\x20release\x20(unhold\x20/\x20adminUnhold)\x20workflow','industry':['content','rental','arbitration','subscription'],'scenario':'Release\x20a\x20forward\x20that\x20was\x20previously\x20held.\x20Two\x20paths:\x20'+'(a)\x20unhold\x20by\x20original\x20holder\x20(named_operator\x20match);\x20'+'(b)\x20adminUnhold\x20(224)\x20by\x20permission-table\x20holder\x20—\x20bypasses\x20holder\x20check.\x20'+'adminUnhold\x20is\x20the\x20deadlock-resolution\x20escape\x20hatch\x20when\x20a\x20holder\x20is\x20unresponsive.','phases':['hold_state','unhold_state'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[{'role':'holder','typical_count':0x1},{'role':'admin','typical_count':0x1}],'builtin_indexes_consumed':[PROGRESS_UNHOLD],'typical_context_repository_count':0x0,'uses_hold_mechanism':!![],'uses_admin_unhold':!![],'common_patterns':['unhold\x20checks\x20sender_has_permission_idcheck(224):\x20if\x20yes,\x20force\x20release;\x20if\x20no,\x20require\x20holder\x20match','adminUnhold\x20has\x20wider\x20blast\x20radius\x20—\x20only\x20grant\x20224\x20to\x20trusted\x20recovery\x20operators','If\x20forward\x20already\x20accomplished,\x20E_FORWARD_ALREADY_ACCOMPLISHED\x20blocks\x20re-hold','Repeated\x20hold/unhold\x20cycles\x20indicate\x20a\x20stuck\x20workflow\x20—\x20surface\x20to\x20order-monitor'],'recommended_templates':['T-PR-05']},{'id':'progress_context_repository','name':'Context\x20Repository\x20binding\x20workflow','industry':['education','content','rental','cross_chain'],'scenario':'Bind/unbind\x20Repository\x20objects\x20as\x20Progress\x20context_repositories.\x20'+'Used\x20to\x20provide\x20query-time\x20context\x20(learning\x20progress,\x20inspection\x20records,\x20bridge\x20state).\x20'+'Up\x20to\x20MAX_CONTEXT_REPOSITORY_COUNT=30\x20repositories\x20per\x20Progress.','phases':['context_binding'],'requires_published_machine':!![],'requires_order_bound':![],'named_operator_roles':[],'builtin_indexes_consumed':[PROGRESS_CONTEXT_REPOSITORY],'typical_context_repository_count':0x3,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['context_repository_add\x20registers\x20affiliation\x20via\x20Registrar\x20(enables\x20cross-object\x20queries)','context_repository_remove\x20disaffiliates\x20—\x20Repository\x20may\x20be\x20garbage-collected\x20if\x20no\x20other\x20refs','context_repository_clear\x20empties\x20the\x20entire\x20list\x20in\x20one\x20transaction','add\x20is\x20idempotent:\x20if\x20Repository\x20already\x20in\x20list,\x20no-op\x20(vector::contains\x20check)','Bind\x20before\x20forward\x20advance\x20so\x20on-chain\x20guards\x20can\x20read\x20context\x20data'],'recommended_templates':['T-PR-03']},{'id':'progress_owner_receive','name':'Owner\x20receive\x20(unwrap)\x20workflow','industry':['finance','treasury','rental','freelance'],'scenario':'Owner\x20receives\x20Receiving<K>\x20objects\x20or\x20CoinWrapper<T>\x20coins\x20sent\x20to\x20the\x20Progress\x20object.\x20'+'unwrap\x20→\x20permission::owner_receive_inner\x20forwards\x20to\x20Permission\x20owner.\x20'+'Used\x20at\x20terminal\x20nodes\x20(return_approved,\x20completed,\x20enforced)\x20to\x20disburse\x20funds.','phases':['owner_receive'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[],'builtin_indexes_consumed':[PROGRESS_OWNER_RECEIVE],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['owner_receive\x20unwraps\x20CoinWrapper<T>\x20via\x20Payment.unwrap_with_check\x20(amount\x20validation)','owner_receive_object\x20receives\x20a\x20generic\x20K:key+store\x20object\x20and\x20forwards\x20to\x20Permission\x20owner','Triggered\x20at\x20terminal\x20nodes\x20(e.g.\x20\x27return_approved\x27\x20in\x20rental,\x20\x27enforced\x27\x20in\x20arbitration)','Permission\x20owner\x20≠\x20Progress\x20creator:\x20receives\x20flow\x20to\x20whoever\x20owns\x20the\x20bound\x20Machine\x27s\x20Permission'],'recommended_templates':['T-PR-06']},{'id':'progress_completed','name':'Forward\x20advancement\x20&\x20session\x20completion','industry':['universal'],'scenario':'Advance\x20Progress\x20via\x20next()/order_next()\x20—\x20accumulates\x20weights\x20in\x20session.forwards,\x20'+'and\x20when\x20weights\x20≥\x20threshold,\x20moves\x20session\x20into\x20history\x20and\x20updates\x20Progress.current.\x20'+'This\x20is\x20the\x20canonical\x20Forward\x20advancement\x20path\x20for\x20ALL\x20non-hold\x20operations.','phases':['forward_advance','completed'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[{'role':'OrderHolder','typical_count':0x1},{'role':'next_node_operator','typical_count':0x1}],'builtin_indexes_consumed':[],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['Forward\x20guard\x20(Some):\x20requires\x20Passport;\x20uses\x20passport::result_for_guard\x20for\x20verification','Forward\x20guard\x20(None):\x20requires\x20permissionIndex\x20(Some)\x20or\x20namedOperator\x20match\x20(ASSERT_PERMISSION)','session.weights\x20+=\x20forward.weight;\x20when\x20≥\x20threshold,\x20push\x20session\x20into\x20ParentTableVec<History>','Progress.current\x20=\x20next_node\x20only\x20after\x20session\x20completes\x20(atomic\x20update)','E_NOT_THE_HOLDER:\x20if\x20forward\x20was\x20held\x20by\x20another\x20address,\x20next()\x20aborts','E_FORWARD_ALREADY_ACCOMPLISHED:\x20re-hold\x20on\x20completed\x20forward\x20is\x20blocked','⚠\x20ROUTING\x20RULE:\x20Forward.namedOperator=\x22\x22\x20(empty)\x20→\x20MUST\x20call\x20order.progress\x20(order_next);\x20'+'non-empty\x20namedOperator\x20or\x20permissionIndex-only\x20→\x20MUST\x20call\x20progress.operate\x20(next).\x20'+'Wrong\x20path\x20→\x20Permission\x20denied\x20(abort\x20code\x205).\x20See\x20file\x20header\x20CRITICAL\x20ROUTING\x20RULE.'],'recommended_templates':['T-PR-04']}];export const PROGRESS_LEDGER_VERSION='1.0.0';export function getScenesByPhase(a){return PROGRESS_SCENES['filter'](b=>b['phases']['includes'](a));}export function findSceneById(a){return PROGRESS_SCENES['find'](b=>b['id']===a);}export function getScenesByIndustry(a){return PROGRESS_SCENES['filter'](b=>b['industry']['includes'](a)||b['industry']['includes']('universal'));}export function getBuiltinPermissionByIndex(a){return PROGRESS_PERMISSIONS['find'](b=>b['index']===a);}export function isProgressBuiltinPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['adminunhold','progress_unhold'],['admin\x20unhold','progress_unhold'],['force\x20unhold','progress_unhold'],['unhold','progress_unhold'],['release\x20hold','progress_unhold'],['owner_receive','progress_owner_receive'],['owner\x20receive','progress_owner_receive'],['unwrap','progress_owner_receive'],['context_repository','progress_context_repository'],['context\x20repository','progress_context_repository'],['repository\x20binding','progress_context_repository'],['named_operator','progress_named_operator'],['named\x20operator','progress_named_operator'],['namedoperator','progress_named_operator'],['task_set','progress_task_submit'],['task\x20set','progress_task_submit'],['submit\x20task','progress_task_submit'],['next','progress_completed'],['order_next','progress_completed'],['advance','progress_completed'],['complete','progress_completed']];for(const [d,e]of c){if(b['includes'](d)){const f=findSceneById(e);if(f)return f;}}return undefined;}export function getAllBuiltinPermissions(){return[...PROGRESS_PERMISSIONS];}export function getProgressScenesCount(){return PROGRESS_SCENES['length'];}export function validateNamedOperatorAddressList(b){const c=[];b['length']>MAX_NAMED_OPERATOR_ADDRESS_COUNT&&c['push']('Named\x20operator\x20address\x20count\x20'+b['length']+'\x20exceeds\x20MAX_NAMED_OPERATOR_ADDRESS_COUNT\x20'+MAX_NAMED_OPERATOR_ADDRESS_COUNT);const d=new Set();for(const e of b){if(d['has'](e)){c['push']('Duplicate\x20address\x20in\x20list:\x20'+e+'\x20(Move\x20will\x20dedupe\x20silently)');break;}d['add'](e);}return{'ok':c['length']===0x0,'violations':c};}export function validateNamedOperatorCount(a){if(a>=MAX_NAMED_OPERATOR_COUNT)return{'ok':![],'violation':'Named\x20operator\x20count\x20'+a+'\x20would\x20exceed\x20MAX_NAMED_OPERATOR_COUNT\x20'+MAX_NAMED_OPERATOR_COUNT};return{'ok':!![]};}export function validateContextRepositoryCount(a,b){const c=a+b;if(c>MAX_CONTEXT_REPOSITORY_COUNT)return{'ok':![],'violation':'Context\x20repository\x20count\x20'+c+'\x20would\x20exceed\x20MAX_CONTEXT_REPOSITORY_COUNT\x20'+MAX_CONTEXT_REPOSITORY_COUNT};return{'ok':!![]};}export const PROGRESS_CROSS_OBJECT_REFS=[{'object':'Machine','phase':'universal','relationship':'Progress.machine\x20(immutable\x20bind,\x20E_MACHINE_NOT_MATCH\x20on\x20every\x20op)'},{'object':'Order','phase':'forward_advance','relationship':'Progress.task\x20=\x20Order.address\x20(1:1,\x20set\x20via\x20task_set\x20or\x20service::buy)'},{'object':'Order','phase':'forward_advance','relationship':'order_next\x20/\x20order_hold:\x20order.has_op_permission(order,\x20ctx)\x20gates\x20Forward\x20advance'},{'object':'Permission','phase':'universal','relationship':'Machine.permission\x20is\x20borrowed\x20for\x20ALL\x20220-225\x20assertions'},{'object':'Repository','phase':'context_binding','relationship':'context_repositories:\x20vector<address>\x20(≤\x2030),\x20affiliated\x20via\x20Registrar'},{'object':'Service','phase':'creation','relationship':'service::buy\x20→\x20new_imp\x20(bypasses\x20220\x20assertion\x20—\x20package-internal\x20entry)'},{'object':'Passport','phase':'forward_advance','relationship':'Forward.guard\x20(Some)\x20requires\x20Passport\x20+\x20passport::result_for_guard'},{'object':'Passport','phase':'unhold_state','relationship':'unhold_with_passport:\x20224\x20check\x20via\x20passport\x20(fallback\x20when\x20sender_has_permission_idcheck\x20fails)'},{'object':'Payment','phase':'owner_receive','relationship':'owner_receive\x20unwraps\x20CoinWrapper<T>\x20via\x20Payment.unwrap_with_check'},{'object':'Allocation','phase':'completed','relationship':'Terminal\x20node\x20triggers\x20Allocation\x20alloc\x20(e.g.\x20\x27completed\x27,\x20\x27enforced\x27,\x20\x27return_approved\x27)'}];
|
|
1
|
+
import{MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_CONTEXT_REPOSITORY_COUNT}from'@wowok/wowok';export{MAX_NAMED_OPERATOR_COUNT,MAX_NAMED_OPERATOR_ADDRESS_COUNT,MAX_CONTEXT_REPOSITORY_COUNT};export const PROGRESS_NEW={'index':0xdc,'name':'PROGRESS_NEW','description':'Create\x20new\x20Progress\x20(asserted\x20by\x20progress::new\x20/\x20new_with_passport)','governed_operations':['progress::new','progress::new_with_passport'],'sdk_exposed':![]};export const PROGRESS_NAMED_OPERATOR={'index':0xdd,'name':'PROGRESS_NAMED_OPERATOR','description':'Manage\x20named\x20operators\x20(add/set/remove)\x20for\x20the\x20namedOperator\x20namespace','governed_operations':['progress::namedOperator_add','progress::namedOperator_set','progress::namedOperator_remove','progress::namedOperator_add_with_passport','progress::namedOperator_set_with_passport','progress::namedOperator_remove_with_passport'],'sdk_exposed':!![]};export const PROGRESS_TASK={'index':0xde,'name':'PROGRESS_TASK','description':'Submit\x20task\x20(one-time,\x20immutable\x20once\x20set\x20—\x20E_TASK_ALREADY_SET)','governed_operations':['progress::task_set','progress::task_set_with_passport'],'sdk_exposed':!![]};export const PROGRESS_CONTEXT_REPOSITORY={'index':0xdf,'name':'PROGRESS_CONTEXT_REPOSITORY','description':'Bind/unbind\x20context\x20Repository\x20(≤\x20MAX_CONTEXT_REPOSITORY_COUNT=30)','governed_operations':['progress::context_repository_add','progress::context_repository_remove','progress::context_repository_clear','progress::context_repository_add_with_passport','progress::context_repository_remove_with_passport','progress::context_repository_clear_with_passport'],'sdk_exposed':!![]};export const PROGRESS_UNHOLD={'index':0xe0,'name':'PROGRESS_UNHOLD','description':'Force\x20unhold\x20(adminUnhold)\x20—\x20bypasses\x20holder\x20check,\x20releases\x20blocked\x20forward','governed_operations':['progress::unhold','progress::unhold_with_passport'],'sdk_exposed':!![]};export const PROGRESS_OWNER_RECEIVE={'index':0xe1,'name':'PROGRESS_OWNER_RECEIVE','description':'Owner\x20receives\x20objects/coins\x20(unwrap\x20Receiving<K>\x20→\x20owner)','governed_operations':['progress::owner_receive','progress::owner_receive_object','progress::owner_receive_with_passport','progress::owner_receive_object_with_passport'],'sdk_exposed':![]};export const PROGRESS_PERMISSIONS=[PROGRESS_NEW,PROGRESS_NAMED_OPERATOR,PROGRESS_TASK,PROGRESS_CONTEXT_REPOSITORY,PROGRESS_UNHOLD,PROGRESS_OWNER_RECEIVE];export const PROGRESS_SCENES=[{'id':'progress_task_submit','name':'Task\x20submission\x20&\x20binding\x20workflow','industry':['universal','ecommerce','logistics','education'],'scenario':'Submit\x20a\x20task\x20(Order/Reward/etc.)\x20to\x20Progress\x20via\x20task_set.\x20'+'Task\x20is\x20one-time,\x20immutable\x20—\x20once\x20set,\x20E_TASK_ALREADY_SET\x20blocks\x20any\x20re-assignment.\x20'+'Binds\x20Progress\x201:1\x20to\x20the\x20task\x20object\x20for\x20the\x20rest\x20of\x20its\x20lifecycle.','phases':['task_binding','forward_advance'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[],'builtin_indexes_consumed':[PROGRESS_TASK],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['task_set\x20is\x20one-time:\x20verify\x20task\x20address\x20before\x20submission\x20(E_TASK_ALREADY_SET\x20blocks\x20reset)','task\x20is\x20usually\x20an\x20Order\x20created\x20by\x20service::buy\x20→\x20Progress.task\x20=\x20Order\x20address','Without\x20task,\x20Forward\x20advancement\x20falls\x20back\x20to\x20non-order\x20next()/hold()\x20paths'],'recommended_templates':['T-PR-01']},{'id':'progress_named_operator','name':'Named\x20operator\x20namespace\x20management','industry':['universal','logistics','arbitration','freelance'],'scenario':'Manage\x20named_operator\x20namespace\x20for\x20a\x20Progress.\x20Each\x20named\x20operator\x20is\x20a\x20(name\x20→\x20address\x20list)\x20'+'binding\x20used\x20by\x20Machine.forward.namedOperator\x20to\x20gate\x20next()/hold()\x20advancement.\x20'+'Up\x20to\x2060\x20named\x20operators\x20per\x20Progress,\x20up\x20to\x2080\x20addresses\x20per\x20operator.','phases':['named_operator_mgmt'],'requires_published_machine':!![],'requires_order_bound':![],'named_operator_roles':[{'role':'seller','typical_count':0x1},{'role':'logistics','typical_count':0x1},{'role':'reviewer','typical_count':0x3},{'role':'arbitrator','typical_count':0x5}],'builtin_indexes_consumed':[PROGRESS_NAMED_OPERATOR],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['namedOperator\x20name=\x27\x27:\x20special\x20case\x20—\x20means\x20OrderHolder\x20(order.owner/agent),\x20NOT\x20a\x20real\x20named\x20operator','add/set/remove\x20are\x20idempotent\x20on\x20duplicate\x20addresses\x20(vector::contains\x20check\x20before\x20push)','Use\x20\x27set\x27\x20to\x20REPLACE\x20an\x20operator\x27s\x20address\x20list;\x20use\x20\x27add\x27\x20to\x20extend;\x20\x27remove\x27\x20to\x20subtract','Names\x20must\x20satisfy\x20common::NAME\x20(isValidName)\x20—\x20non-empty,\x20length-bounded'],'recommended_templates':['T-PR-01','T-PR-02']},{'id':'progress_unhold','name':'Hold\x20release\x20(unhold\x20/\x20adminUnhold)\x20workflow','industry':['content','rental','arbitration','subscription'],'scenario':'Release\x20a\x20forward\x20that\x20was\x20previously\x20held.\x20Two\x20paths:\x20'+'(a)\x20unhold\x20by\x20original\x20holder\x20(named_operator\x20match);\x20'+'(b)\x20adminUnhold\x20(224)\x20by\x20permission-table\x20holder\x20—\x20bypasses\x20holder\x20check.\x20'+'adminUnhold\x20is\x20the\x20deadlock-resolution\x20escape\x20hatch\x20when\x20a\x20holder\x20is\x20unresponsive.','phases':['hold_state','unhold_state'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[{'role':'holder','typical_count':0x1},{'role':'admin','typical_count':0x1}],'builtin_indexes_consumed':[PROGRESS_UNHOLD],'typical_context_repository_count':0x0,'uses_hold_mechanism':!![],'uses_admin_unhold':!![],'common_patterns':['unhold\x20checks\x20sender_has_permission_idcheck(224):\x20if\x20yes,\x20force\x20release;\x20if\x20no,\x20require\x20holder\x20match','adminUnhold\x20has\x20wider\x20blast\x20radius\x20—\x20only\x20grant\x20224\x20to\x20trusted\x20recovery\x20operators','If\x20forward\x20already\x20accomplished,\x20E_FORWARD_ALREADY_ACCOMPLISHED\x20blocks\x20re-hold','Repeated\x20hold/unhold\x20cycles\x20indicate\x20a\x20stuck\x20workflow\x20—\x20surface\x20to\x20order-monitor'],'recommended_templates':['T-PR-05']},{'id':'progress_context_repository','name':'Context\x20Repository\x20binding\x20workflow','industry':['education','content','rental','cross_chain'],'scenario':'Bind/unbind\x20Repository\x20objects\x20as\x20Progress\x20context_repositories.\x20'+'Used\x20to\x20provide\x20query-time\x20context\x20(learning\x20progress,\x20inspection\x20records,\x20bridge\x20state).\x20'+'Up\x20to\x20MAX_CONTEXT_REPOSITORY_COUNT=30\x20repositories\x20per\x20Progress.','phases':['context_binding'],'requires_published_machine':!![],'requires_order_bound':![],'named_operator_roles':[],'builtin_indexes_consumed':[PROGRESS_CONTEXT_REPOSITORY],'typical_context_repository_count':0x3,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['context_repository_add\x20registers\x20binding\x20via\x20object_linker::affiliation_tx\x20(enables\x20cross-object\x20queries)','context_repository_remove\x20disaffiliates\x20via\x20object_linker::disaffiliation_tx\x20—\x20Repository\x20may\x20be\x20garbage-collected\x20if\x20no\x20other\x20refs','context_repository_clear\x20empties\x20the\x20entire\x20list\x20in\x20one\x20transaction','add\x20is\x20idempotent:\x20if\x20Repository\x20already\x20in\x20list,\x20no-op\x20(vector::contains\x20check)','Bind\x20before\x20forward\x20advance\x20so\x20on-chain\x20guards\x20can\x20read\x20context\x20data'],'recommended_templates':['T-PR-03']},{'id':'progress_owner_receive','name':'Owner\x20receive\x20(unwrap)\x20workflow','industry':['finance','treasury','rental','freelance'],'scenario':'Owner\x20receives\x20Receiving<K>\x20objects\x20or\x20CoinWrapper<T>\x20coins\x20sent\x20to\x20the\x20Progress\x20object.\x20'+'unwrap\x20→\x20permission::owner_receive_inner\x20forwards\x20to\x20Permission\x20owner.\x20'+'Used\x20at\x20terminal\x20nodes\x20(return_approved,\x20completed,\x20enforced)\x20to\x20disburse\x20funds.','phases':['owner_receive'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[],'builtin_indexes_consumed':[PROGRESS_OWNER_RECEIVE],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['owner_receive\x20unwraps\x20CoinWrapper<T>\x20via\x20Payment.unwrap_with_check\x20(amount\x20validation)','owner_receive_object\x20receives\x20a\x20generic\x20K:key+store\x20object\x20and\x20forwards\x20to\x20Permission\x20owner','Triggered\x20at\x20terminal\x20nodes\x20(e.g.\x20\x27return_approved\x27\x20in\x20rental,\x20\x27enforced\x27\x20in\x20arbitration)','Permission\x20owner\x20≠\x20Progress\x20creator:\x20receives\x20flow\x20to\x20whoever\x20owns\x20the\x20bound\x20Machine\x27s\x20Permission'],'recommended_templates':['T-PR-06']},{'id':'progress_completed','name':'Forward\x20advancement\x20&\x20session\x20completion','industry':['universal'],'scenario':'Advance\x20Progress\x20via\x20next()/order_next()\x20—\x20accumulates\x20weights\x20in\x20session.forwards,\x20'+'and\x20when\x20weights\x20≥\x20threshold,\x20moves\x20session\x20into\x20history\x20and\x20updates\x20Progress.current.\x20'+'This\x20is\x20the\x20canonical\x20Forward\x20advancement\x20path\x20for\x20ALL\x20non-hold\x20operations.','phases':['forward_advance','completed'],'requires_published_machine':!![],'requires_order_bound':!![],'named_operator_roles':[{'role':'OrderHolder','typical_count':0x1},{'role':'next_node_operator','typical_count':0x1}],'builtin_indexes_consumed':[],'typical_context_repository_count':0x0,'uses_hold_mechanism':![],'uses_admin_unhold':![],'common_patterns':['Forward\x20guard\x20(Some):\x20requires\x20Passport;\x20uses\x20passport::result_for_guard\x20for\x20verification','Forward\x20guard\x20(None):\x20requires\x20permissionIndex\x20(Some)\x20or\x20namedOperator\x20match\x20(ASSERT_PERMISSION)','session.weights\x20+=\x20forward.weight;\x20when\x20≥\x20threshold,\x20push\x20session\x20into\x20ParentTableVec<History>','Progress.current\x20=\x20next_node\x20only\x20after\x20session\x20completes\x20(atomic\x20update)','E_NOT_THE_HOLDER:\x20if\x20forward\x20was\x20held\x20by\x20another\x20address,\x20next()\x20aborts','E_FORWARD_ALREADY_ACCOMPLISHED:\x20re-hold\x20on\x20completed\x20forward\x20is\x20blocked','⚠\x20ROUTING\x20RULE:\x20Forward.namedOperator=\x22\x22\x20(empty)\x20→\x20MUST\x20call\x20order.progress\x20(order_next);\x20'+'non-empty\x20namedOperator\x20or\x20permissionIndex-only\x20→\x20MUST\x20call\x20progress.operate\x20(next).\x20'+'Wrong\x20path\x20→\x20Permission\x20denied\x20(abort\x20code\x205).\x20See\x20file\x20header\x20CRITICAL\x20ROUTING\x20RULE.'],'recommended_templates':['T-PR-04']}];export const PROGRESS_LEDGER_VERSION='1.0.0';export function getScenesByPhase(a){return PROGRESS_SCENES['filter'](b=>b['phases']['includes'](a));}export function findSceneById(a){return PROGRESS_SCENES['find'](b=>b['id']===a);}export function getScenesByIndustry(a){return PROGRESS_SCENES['filter'](b=>b['industry']['includes'](a)||b['industry']['includes']('universal'));}export function getBuiltinPermissionByIndex(a){return PROGRESS_PERMISSIONS['find'](b=>b['index']===a);}export function isProgressBuiltinPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['adminunhold','progress_unhold'],['admin\x20unhold','progress_unhold'],['force\x20unhold','progress_unhold'],['unhold','progress_unhold'],['release\x20hold','progress_unhold'],['owner_receive','progress_owner_receive'],['owner\x20receive','progress_owner_receive'],['unwrap','progress_owner_receive'],['context_repository','progress_context_repository'],['context\x20repository','progress_context_repository'],['repository\x20binding','progress_context_repository'],['named_operator','progress_named_operator'],['named\x20operator','progress_named_operator'],['namedoperator','progress_named_operator'],['task_set','progress_task_submit'],['task\x20set','progress_task_submit'],['submit\x20task','progress_task_submit'],['next','progress_completed'],['order_next','progress_completed'],['advance','progress_completed'],['complete','progress_completed']];for(const [d,e]of c){if(b['includes'](d)){const f=findSceneById(e);if(f)return f;}}return undefined;}export function getAllBuiltinPermissions(){return[...PROGRESS_PERMISSIONS];}export function getProgressScenesCount(){return PROGRESS_SCENES['length'];}export function validateNamedOperatorAddressList(b){const c=[];b['length']>MAX_NAMED_OPERATOR_ADDRESS_COUNT&&c['push']('Named\x20operator\x20address\x20count\x20'+b['length']+'\x20exceeds\x20MAX_NAMED_OPERATOR_ADDRESS_COUNT\x20'+MAX_NAMED_OPERATOR_ADDRESS_COUNT);const d=new Set();for(const e of b){if(d['has'](e)){c['push']('Duplicate\x20address\x20in\x20list:\x20'+e+'\x20(Move\x20will\x20dedupe\x20silently)');break;}d['add'](e);}return{'ok':c['length']===0x0,'violations':c};}export function validateNamedOperatorCount(a){if(a>=MAX_NAMED_OPERATOR_COUNT)return{'ok':![],'violation':'Named\x20operator\x20count\x20'+a+'\x20would\x20exceed\x20MAX_NAMED_OPERATOR_COUNT\x20'+MAX_NAMED_OPERATOR_COUNT};return{'ok':!![]};}export function validateContextRepositoryCount(a,b){const c=a+b;if(c>MAX_CONTEXT_REPOSITORY_COUNT)return{'ok':![],'violation':'Context\x20repository\x20count\x20'+c+'\x20would\x20exceed\x20MAX_CONTEXT_REPOSITORY_COUNT\x20'+MAX_CONTEXT_REPOSITORY_COUNT};return{'ok':!![]};}export const PROGRESS_CROSS_OBJECT_REFS=[{'object':'Machine','phase':'universal','relationship':'Progress.machine\x20(immutable\x20bind,\x20E_MACHINE_NOT_MATCH\x20on\x20every\x20op)'},{'object':'Order','phase':'forward_advance','relationship':'Progress.task\x20=\x20Order.address\x20(1:1,\x20set\x20via\x20task_set\x20or\x20service::buy)'},{'object':'Order','phase':'forward_advance','relationship':'order_next\x20/\x20order_hold:\x20order.has_op_permission(order,\x20ctx)\x20gates\x20Forward\x20advance'},{'object':'Permission','phase':'universal','relationship':'Machine.permission\x20is\x20borrowed\x20for\x20ALL\x20220-225\x20assertions'},{'object':'Repository','phase':'context_binding','relationship':'context_repositories:\x20vector<address>\x20(≤\x2030),\x20bound\x20via\x20object_linker::affiliation_tx'},{'object':'Service','phase':'creation','relationship':'service::buy\x20→\x20new_imp\x20(bypasses\x20220\x20assertion\x20—\x20package-internal\x20entry)'},{'object':'Passport','phase':'forward_advance','relationship':'Forward.guard\x20(Some)\x20requires\x20Passport\x20+\x20passport::result_for_guard'},{'object':'Passport','phase':'unhold_state','relationship':'unhold_with_passport:\x20224\x20check\x20via\x20passport\x20(fallback\x20when\x20sender_has_permission_idcheck\x20fails)'},{'object':'Payment','phase':'owner_receive','relationship':'owner_receive\x20unwraps\x20CoinWrapper<T>\x20via\x20Payment.unwrap_with_check'},{'object':'Allocation','phase':'completed','relationship':'Terminal\x20node\x20triggers\x20Allocation\x20alloc\x20(e.g.\x20\x27completed\x27,\x20\x27enforced\x27,\x20\x27return_approved\x27)'}];
|