@wowok/agent-mcp 3.1.2 → 3.1.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/config-audit.spec.d.ts +1 -0
- package/dist/config/config-audit.spec.js +1 -0
- package/dist/config/exposure.d.ts +108 -0
- package/dist/config/exposure.js +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +1 -1
- package/dist/config/judgment.d.ts +1228 -0
- package/dist/config/judgment.js +1 -0
- package/dist/config/judgment.spec.d.ts +1 -0
- package/dist/config/judgment.spec.js +1 -0
- package/dist/config/rule-engine.d.ts +299 -0
- package/dist/config/rule-engine.js +1 -0
- package/dist/config/rule-engine.spec.d.ts +1 -0
- package/dist/config/rule-engine.spec.js +1 -0
- package/dist/config/runtime.js +1 -1
- package/dist/config/severity.d.ts +7 -0
- package/dist/config/severity.js +1 -0
- package/dist/customer/index.d.ts +3 -9
- package/dist/customer/index.js +1 -1
- package/dist/customer/industry-risks.d.ts +3 -17
- package/dist/customer/industry-risks.js +1 -1
- package/dist/customer/order-monitor.d.ts +3 -1
- package/dist/customer/order-monitor.js +1 -1
- package/dist/customer/types.d.ts +1 -165
- package/dist/customer/types.js +1 -1
- package/dist/customer/user-preferences.d.ts +0 -49
- package/dist/customer/user-preferences.js +1 -1
- package/dist/evaluation/acceptance.d.ts +1 -0
- package/dist/evaluation/acceptance.js +1 -1
- package/dist/evaluation/arbitration-game.js +1 -1
- package/dist/evaluation/architecture.spec.d.ts +1 -0
- package/dist/evaluation/architecture.spec.js +1 -0
- package/dist/evaluation/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.d.ts +16 -0
- package/dist/evaluation/builtins/graph-service.js +1 -0
- package/dist/evaluation/builtins/graph-service.spec.d.ts +1 -0
- package/dist/evaluation/builtins/graph-service.spec.js +1 -0
- package/dist/evaluation/builtins/index.d.ts +1 -1
- package/dist/evaluation/builtins/index.js +1 -1
- package/dist/evaluation/builtins/purity.spec.d.ts +1 -0
- package/dist/evaluation/builtins/purity.spec.js +1 -0
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/facets/catalog.d.ts +19 -0
- package/dist/evaluation/facets/catalog.js +1 -0
- package/dist/evaluation/game-strategy.d.ts +2 -2
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/guard-scan.d.ts +10 -0
- package/dist/evaluation/guard-scan.js +1 -0
- package/dist/evaluation/match-operation.d.ts +2 -2
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/standards.d.ts +9 -0
- package/dist/evaluation/standards.js +1 -0
- package/dist/evaluation/standards.spec.d.ts +1 -0
- package/dist/evaluation/standards.spec.js +1 -0
- package/dist/evaluation/types.d.ts +11 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/custom-registry-file.js +1 -1
- package/dist/extensions/index.d.ts +1 -1
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-audit.spec.d.ts +1 -0
- package/dist/extensions/industry-audit.spec.js +1 -0
- package/dist/extensions/industry-layers.d.ts +14 -5
- package/dist/extensions/industry-layers.js +1 -1
- package/dist/extensions/industry-pack.d.ts +2 -0
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/mode-evaluator.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.d.ts +16 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/dataplane.d.ts +1 -1
- package/dist/graph/onchain/dataplane.js +1 -1
- package/dist/graph/onchain/edge-batch.spec.d.ts +1 -0
- package/dist/graph/onchain/edge-batch.spec.js +1 -0
- package/dist/graph/onchain/edge-schema.d.ts +11 -2
- package/dist/graph/onchain/edge-schema.js +1 -1
- package/dist/graph/onchain/entity-profile.spec.d.ts +1 -0
- package/dist/graph/onchain/entity-profile.spec.js +1 -0
- package/dist/graph/onchain/event-history.spec.d.ts +1 -0
- package/dist/graph/onchain/event-history.spec.js +1 -0
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exploration.d.ts +28 -0
- package/dist/graph/onchain/exploration.js +1 -0
- package/dist/graph/onchain/exploration.spec.d.ts +1 -0
- package/dist/graph/onchain/exploration.spec.js +1 -0
- package/dist/graph/onchain/exposure.d.ts +18 -0
- package/dist/graph/onchain/exposure.js +1 -0
- package/dist/graph/onchain/exposure.spec.d.ts +1 -0
- package/dist/graph/onchain/exposure.spec.js +1 -0
- package/dist/graph/onchain/extract-deep.spec.d.ts +1 -0
- package/dist/graph/onchain/extract-deep.spec.js +1 -0
- package/dist/graph/onchain/extract.d.ts +11 -3
- package/dist/graph/onchain/extract.js +1 -1
- package/dist/graph/onchain/facet-projection.d.ts +99 -0
- package/dist/graph/onchain/facet-projection.js +1 -0
- package/dist/graph/onchain/facet-projection.spec.d.ts +1 -0
- package/dist/graph/onchain/facet-projection.spec.js +1 -0
- package/dist/graph/onchain/facts.d.ts +103 -0
- package/dist/graph/onchain/facts.js +1 -0
- package/dist/graph/onchain/facts.spec.d.ts +1 -0
- package/dist/graph/onchain/facts.spec.js +1 -0
- package/dist/graph/onchain/field-manifest.d.ts +29 -0
- package/dist/graph/onchain/field-manifest.js +1 -0
- package/dist/graph/onchain/field-manifest.spec.d.ts +1 -0
- package/dist/graph/onchain/field-manifest.spec.js +1 -0
- package/dist/graph/onchain/fixtures.d.ts +80 -0
- package/dist/graph/onchain/fixtures.js +1 -0
- package/dist/graph/onchain/fixtures.spec.d.ts +1 -0
- package/dist/graph/onchain/fixtures.spec.js +1 -0
- package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
- package/dist/graph/onchain/graph-policy.spec.js +1 -0
- package/dist/graph/onchain/index.d.ts +14 -2
- package/dist/graph/onchain/index.js +1 -1
- package/dist/graph/onchain/interest.js +1 -1
- package/dist/graph/onchain/interest.spec.js +1 -1
- package/dist/graph/onchain/label-lint.spec.d.ts +1 -0
- package/dist/graph/onchain/label-lint.spec.js +1 -0
- package/dist/graph/onchain/names.d.ts +23 -0
- package/dist/graph/onchain/names.js +1 -0
- package/dist/graph/onchain/names.spec.d.ts +1 -0
- package/dist/graph/onchain/names.spec.js +1 -0
- package/dist/graph/onchain/onchain.spec.js +1 -1
- package/dist/graph/onchain/policy.d.ts +8 -0
- package/dist/graph/onchain/policy.js +1 -0
- package/dist/graph/onchain/proposal-graph.d.ts +11 -0
- package/dist/graph/onchain/proposal-graph.js +1 -0
- package/dist/graph/onchain/proposal-graph.spec.d.ts +1 -0
- package/dist/graph/onchain/proposal-graph.spec.js +1 -0
- package/dist/graph/onchain/sdk-batch.d.ts +5 -1
- package/dist/graph/onchain/sdk-batch.js +1 -1
- package/dist/graph/onchain/strategy.d.ts +16 -0
- package/dist/graph/onchain/strategy.js +1 -1
- package/dist/graph/onchain/strategy.spec.js +1 -1
- package/dist/graph/onchain/synthesis.d.ts +20 -0
- package/dist/graph/onchain/synthesis.js +1 -0
- package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
- package/dist/graph/onchain/synthesis.spec.js +1 -0
- package/dist/graph/onchain/table-ledger.spec.d.ts +1 -0
- package/dist/graph/onchain/table-ledger.spec.js +1 -0
- package/dist/graph/onchain/types.d.ts +57 -7
- package/dist/graph/onchain/viewport.d.ts +1 -0
- package/dist/graph/onchain/viewport.js +1 -1
- package/dist/harness/index.d.ts +1 -5
- package/dist/harness/index.js +1 -1
- package/dist/harness/verify.d.ts +6 -1
- package/dist/harness/verify.js +1 -1
- package/dist/index.js +1 -1
- package/dist/keeper/keeper.spec.js +1 -1
- package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
- package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocation-puzzle.d.ts +1 -1
- package/dist/knowledge/allocation-puzzle.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +4 -3
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/allocation-templates.js +1 -1
- package/dist/knowledge/arb-risk.d.ts +6 -6
- package/dist/knowledge/arb-risk.js +1 -1
- package/dist/knowledge/arbitration-ledger.d.ts +4 -4
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
- package/dist/knowledge/arbitration-puzzle.js +1 -1
- package/dist/knowledge/arbitration-risk.d.ts +4 -3
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +1 -0
- package/dist/knowledge/baselines/guard-lint-baseline.spec.js +1 -0
- package/dist/knowledge/baselines/judgment-baselines.json +289 -0
- package/dist/knowledge/baselines/risk-baselines.spec.d.ts +1 -0
- package/dist/knowledge/baselines/risk-baselines.spec.js +1 -0
- package/dist/knowledge/baselines/risk-cases.d.ts +8 -0
- package/dist/knowledge/baselines/risk-cases.js +1 -0
- package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
- package/dist/knowledge/baselines/rules/allocation.json +492 -0
- package/dist/knowledge/baselines/rules/arb.json +155 -0
- package/dist/knowledge/baselines/rules/arbitration.json +366 -0
- package/dist/knowledge/baselines/rules/bridge.json +197 -0
- package/dist/knowledge/baselines/rules/contact.json +152 -0
- package/dist/knowledge/baselines/rules/demand.json +158 -0
- package/dist/knowledge/baselines/rules/graph.json +453 -0
- package/dist/knowledge/baselines/rules/guard.json +981 -0
- package/dist/knowledge/baselines/rules/machine.json +706 -0
- package/dist/knowledge/baselines/rules/order.json +549 -0
- package/dist/knowledge/baselines/rules/payment.json +205 -0
- package/dist/knowledge/baselines/rules/permission.json +330 -0
- package/dist/knowledge/baselines/rules/personal.json +139 -0
- package/dist/knowledge/baselines/rules/progress.json +346 -0
- package/dist/knowledge/baselines/rules/proof.json +158 -0
- package/dist/knowledge/baselines/rules/registrar.json +159 -0
- package/dist/knowledge/baselines/rules/repository.json +244 -0
- package/dist/knowledge/baselines/rules/resource.json +117 -0
- package/dist/knowledge/baselines/rules/reward.json +471 -0
- package/dist/knowledge/baselines/rules/service.json +595 -0
- package/dist/knowledge/baselines/rules/treasury.json +440 -0
- package/dist/knowledge/baselines/rules/util.json +101 -0
- package/dist/knowledge/bridge-risk.d.ts +6 -6
- package/dist/knowledge/bridge-risk.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +26 -0
- package/dist/knowledge/builtin-templates.js +1 -0
- package/dist/knowledge/contact-risk.d.ts +6 -6
- package/dist/knowledge/contact-risk.js +1 -1
- package/dist/knowledge/contract-invariants.d.ts +1 -0
- package/dist/knowledge/contract-invariants.js +1 -1
- package/dist/knowledge/demand-risk.d.ts +6 -6
- package/dist/knowledge/demand-risk.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/facts-sync.spec.d.ts +1 -0
- package/dist/knowledge/facts-sync.spec.js +1 -0
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-eval.d.ts +15 -0
- package/dist/knowledge/guard-eval.js +1 -0
- package/dist/knowledge/guard-eval.spec.d.ts +1 -0
- package/dist/knowledge/guard-eval.spec.js +1 -0
- package/dist/knowledge/guard-field-cognition.d.ts +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-ledger.js +1 -1
- package/dist/knowledge/guard-lint.d.ts +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-risk.d.ts +7 -19
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +51 -45
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-rule-node.d.ts +7 -0
- package/dist/knowledge/industry-rule-node.js +1 -0
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-risk.d.ts +4 -7
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/migration-preflight.js +1 -1
- package/dist/knowledge/operation-dictionary.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/order-puzzle.d.ts +3 -3
- package/dist/knowledge/order-puzzle.js +1 -1
- package/dist/knowledge/order-risk.d.ts +7 -12
- package/dist/knowledge/order-risk.js +1 -1
- package/dist/knowledge/order-templates.js +1 -1
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/passport-templates.js +1 -1
- package/dist/knowledge/payment-risk.d.ts +8 -7
- package/dist/knowledge/payment-risk.js +1 -1
- package/dist/knowledge/payment-tracker.js +1 -1
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/permission-puzzle.d.ts +12 -12
- package/dist/knowledge/permission-puzzle.js +1 -1
- package/dist/knowledge/permission-risk.d.ts +4 -10
- package/dist/knowledge/permission-risk.js +1 -1
- package/dist/knowledge/permission-templates.js +1 -1
- package/dist/knowledge/personal-risk.d.ts +6 -6
- package/dist/knowledge/personal-risk.js +1 -1
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/progress-puzzle.d.ts +2 -2
- package/dist/knowledge/progress-puzzle.js +1 -1
- package/dist/knowledge/progress-risk.d.ts +4 -3
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/progress-templates.js +1 -1
- package/dist/knowledge/proof-risk.d.ts +6 -6
- package/dist/knowledge/proof-risk.js +1 -1
- package/dist/knowledge/puzzle-projections.d.ts +11 -0
- package/dist/knowledge/puzzle-projections.js +1 -0
- package/dist/knowledge/recipient-constraint.d.ts +20 -1
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/registrar-risk.d.ts +6 -6
- package/dist/knowledge/registrar-risk.js +1 -1
- package/dist/knowledge/repository-risk.d.ts +7 -7
- package/dist/knowledge/repository-risk.js +1 -1
- package/dist/knowledge/resource-risk.d.ts +6 -6
- package/dist/knowledge/resource-risk.js +1 -1
- package/dist/knowledge/reward-ledger.d.ts +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-puzzle.d.ts +2 -2
- package/dist/knowledge/reward-puzzle.js +1 -1
- package/dist/knowledge/reward-risk.d.ts +5 -6
- package/dist/knowledge/reward-risk.js +1 -1
- package/dist/knowledge/rule-node-analyzers.d.ts +43 -0
- package/dist/knowledge/rule-node-analyzers.js +1 -0
- package/dist/knowledge/rule-node-analyzers.spec.d.ts +1 -0
- package/dist/knowledge/rule-node-analyzers.spec.js +1 -0
- package/dist/knowledge/rule-outcome.d.ts +5 -0
- package/dist/knowledge/rule-outcome.js +1 -0
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +2 -2
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/service-allocator-audit-node.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-puzzle.d.ts +2 -2
- package/dist/knowledge/service-puzzle.js +1 -1
- package/dist/knowledge/service-risk-node.js +1 -1
- package/dist/knowledge/service-risk.d.ts +4 -4
- package/dist/knowledge/service-risk.js +1 -1
- package/dist/knowledge/service-templates.js +1 -1
- package/dist/knowledge/strategy-manuals.d.ts +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +84 -0
- package/dist/knowledge/template-loader.js +1 -0
- package/dist/knowledge/template-loader.spec.d.ts +1 -0
- package/dist/knowledge/template-loader.spec.js +1 -0
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +17 -0
- package/dist/knowledge/template-scanner.js +1 -0
- package/dist/knowledge/template-scanner.spec.d.ts +1 -0
- package/dist/knowledge/template-scanner.spec.js +1 -0
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/treasury-ledger.d.ts +1 -1
- package/dist/knowledge/treasury-ledger.js +1 -1
- package/dist/knowledge/treasury-puzzle.d.ts +3 -3
- package/dist/knowledge/treasury-puzzle.js +1 -1
- package/dist/knowledge/treasury-risk.d.ts +6 -4
- package/dist/knowledge/treasury-risk.js +1 -1
- package/dist/knowledge/treasury-templates.js +1 -1
- package/dist/knowledge/util-risk.d.ts +6 -6
- package/dist/knowledge/util-risk.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +4 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/knowledge/workspace-lists.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/arbitrator-interest.js +1 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/persona/analyzer.js +1 -1
- package/dist/persona/bridge.js +1 -1
- package/dist/persona/facet-profile.d.ts +33 -0
- package/dist/persona/facet-profile.js +1 -0
- package/dist/persona/index.js +1 -1
- package/dist/persona/model.d.ts +2 -1
- package/dist/persona/model.js +1 -1
- package/dist/persona/persona-audit.spec.d.ts +1 -0
- package/dist/persona/persona-audit.spec.js +1 -0
- package/dist/persona/topology-focus.d.ts +2 -2
- package/dist/persona/topology-focus.js +1 -1
- package/dist/persona/types.d.ts +14 -0
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/facet-money.d.ts +33 -0
- package/dist/playbooks/service-build/facet-money.js +1 -0
- package/dist/playbooks/service-build/facet-money.spec.d.ts +1 -0
- package/dist/playbooks/service-build/facet-money.spec.js +1 -0
- package/dist/playbooks/service-build/machine-panorama.d.ts +20 -0
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
- package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
- package/dist/playbooks/service-build/migration-planner.js +1 -0
- package/dist/playbooks/service-build/object-panorama.d.ts +65 -24
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +3 -3
- package/dist/playbooks/service-build/pipeline-actions.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
- package/dist/playbooks/service-build/reverse-mapping.js +1 -1
- package/dist/playbooks/service-build/risk-aggregator.d.ts +4 -2
- package/dist/playbooks/service-build/risk-aggregator.js +1 -1
- package/dist/playbooks/service-build/semantic-graph.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +56 -9
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +1 -0
- package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -0
- package/dist/playbooks/service-build/topology-query.d.ts +13 -2
- package/dist/playbooks/service-build/topology-query.js +1 -1
- package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
- package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
- package/dist/relationship/registry.js +1 -1
- package/dist/review/arb.d.ts +0 -2
- package/dist/review/arb.js +1 -1
- package/dist/review/machine.js +1 -1
- package/dist/review/order.d.ts +0 -1
- package/dist/review/order.js +1 -1
- package/dist/review/service.js +1 -1
- package/dist/review/types.d.ts +7 -0
- package/dist/role/profiles.js +1 -1
- package/dist/rules.d.ts +1 -2
- package/dist/rules.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +207 -0
- package/dist/schema/benchmark-migration/index.js +1 -0
- package/dist/schema/call/allocation.d.ts +1 -1
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.d.ts +1 -1
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +3374 -670
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/contact.d.ts +1 -1
- package/dist/schema/call/demand.d.ts +1 -1
- package/dist/schema/call/guard.d.ts +3 -3
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +5 -5
- package/dist/schema/call/order.d.ts +3 -3
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/permission-handler.d.ts +1 -1
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.d.ts +16 -16
- package/dist/schema/call/permission.js +1 -1
- package/dist/schema/call/personal.d.ts +8 -8
- package/dist/schema/call/personal.js +1 -1
- package/dist/schema/call/progress.d.ts +3 -3
- package/dist/schema/call/receipt.d.ts +28 -0
- package/dist/schema/call/receipt.js +1 -0
- package/dist/schema/call/repository.d.ts +11 -11
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +1 -1
- package/dist/schema/call/semantic-customer-advice.spec.d.ts +1 -0
- package/dist/schema/call/semantic-customer-advice.spec.js +1 -0
- package/dist/schema/call/semantic.d.ts +5 -2
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +7 -7
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +1 -1
- package/dist/schema/call/treasury.js +1 -1
- package/dist/schema/common/index.d.ts +6 -6
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +50 -1
- package/dist/schema/config/index.js +1 -1
- package/dist/schema/evaluation/index.d.ts +307 -213
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +6 -6
- package/dist/schema/goal/planning.d.ts +17 -17
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +1 -1
- package/dist/schema/interaction/index.d.ts +1 -1
- package/dist/schema/keeper/index.d.ts +1 -1
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +26 -26
- package/dist/schema/operations.d.ts +59 -43
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +4732 -24
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +830 -10
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +44 -44
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workflow/index.d.ts +1 -1
- package/dist/schema/workspace/index.d.ts +2 -2
- package/dist/schema-query-impl/index.d.ts +9 -0
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +1 -1
- package/dist/schemas/benchmark_migration_operation.output.json +793 -0
- package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
- package/dist/schemas/bridge_operation.output.json +1 -1
- package/dist/schemas/bridge_operation.schema.json +5 -5
- package/dist/schemas/config_operation.output.json +252 -0
- package/dist/schemas/config_operation.schema.json +21 -1
- package/dist/schemas/evaluation_operation.output.json +702 -162
- package/dist/schemas/evaluation_operation.schema.json +0 -429
- package/dist/schemas/goal_operation.schema.json +8 -8
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +7 -7
- package/dist/schemas/keeper_operation.output.json +1 -1
- package/dist/schemas/local_history_operation.output.json +1 -1
- package/dist/schemas/local_info_operation.output.json +1 -1
- package/dist/schemas/local_mark_operation.output.json +1 -1
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.output.json +1 -1
- package/dist/schemas/messenger_operation.schema.json +24 -12
- package/dist/schemas/monitor_events.output.json +1 -1
- package/dist/schemas/monitor_subscription.output.json +1 -1
- package/dist/schemas/onchain_events.output.json +2 -2
- package/dist/schemas/onchain_operations.output.json +6359 -3724
- package/dist/schemas/onchain_operations.schema.json +191 -141
- package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
- package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
- package/dist/schemas/onchain_operations_contact.schema.json +7 -5
- package/dist/schemas/onchain_operations_demand.schema.json +7 -5
- package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +5 -3
- package/dist/schemas/onchain_operations_machine.schema.json +22 -18
- package/dist/schemas/onchain_operations_order.schema.json +11 -7
- package/dist/schemas/onchain_operations_payment.schema.json +3 -3
- package/dist/schemas/onchain_operations_permission.schema.json +19 -11
- package/dist/schemas/onchain_operations_personal.schema.json +16 -10
- package/dist/schemas/onchain_operations_progress.schema.json +11 -7
- package/dist/schemas/onchain_operations_proof.schema.json +5 -3
- package/dist/schemas/onchain_operations_repository.schema.json +12 -8
- package/dist/schemas/onchain_operations_reward.schema.json +11 -9
- package/dist/schemas/onchain_operations_service.schema.json +28 -22
- package/dist/schemas/onchain_operations_treasury.schema.json +13 -11
- package/dist/schemas/onchain_table_data.output.json +88 -88
- package/dist/schemas/persona_operation.output.json +15875 -1
- package/dist/schemas/persona_operation.schema.json +3056 -478
- package/dist/schemas/query_toolkit.output.json +1325 -212
- package/dist/schemas/query_toolkit.schema.json +60 -2
- package/dist/schemas/workflow_operation.schema.json +4 -2
- package/dist/strategy/metrics.js +1 -1
- package/dist/strategy/scorecard.js +1 -1
- package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -0
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.d.ts +3 -0
- package/dist/tools/handlers/dispatch-expectations.js +1 -0
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.d.ts +3 -0
- package/dist/tools/move-fn-index.gen.js +1 -0
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/evaluation.d.ts +2 -0
- package/dist/tools/registry/evaluation.js +1 -0
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/sanitize-output.d.ts +3 -0
- package/dist/tools/sanitize-output.js +1 -0
- package/dist/tools/sanitize-output.spec.d.ts +1 -0
- package/dist/tools/sanitize-output.spec.js +1 -0
- package/dist/tools/shared.d.ts +0 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +9 -3
- package/dist/customer/customer-advice.d.ts +0 -32
- package/dist/customer/customer-advice.js +0 -1
- package/dist/customer/info-puzzle.d.ts +0 -146
- package/dist/customer/info-puzzle.js +0 -1
- package/dist/customer/order-strategy.d.ts +0 -17
- package/dist/customer/order-strategy.js +0 -1
- package/dist/customer/preorder-compare.d.ts +0 -24
- package/dist/customer/preorder-compare.js +0 -1
- package/dist/customer/reminder-system.d.ts +0 -42
- package/dist/customer/reminder-system.js +0 -1
- package/dist/customer/risk-assessment.d.ts +0 -13
- package/dist/customer/risk-assessment.js +0 -1
- package/dist/evaluation/builtins/service-risk.d.ts +0 -7
- package/dist/evaluation/builtins/service-risk.js +0 -1
- package/dist/knowledge/trust-metrics.d.ts +0 -66
- package/dist/knowledge/trust-metrics.js +0 -1
- package/dist/schema/trust/index.d.ts +0 -334
- package/dist/schema/trust/index.js +0 -1
- package/dist/schemas/trust_score.output.json +0 -847
- package/dist/schemas/trust_score.schema.json +0 -364
- package/dist/tools/handlers/trust.d.ts +0 -16
- package/dist/tools/handlers/trust.js +0 -1
- package/dist/tools/registry/trust.d.ts +0 -2
- package/dist/tools/registry/trust.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{fieldMutabilityOf}from'./contract-invariants.js';import{REPOSITORY_PERMISSIONS,REWARD_PERMISSIONS,MACHINE_PERMISSIONS,PROGRESS_PERMISSIONS,TREASURY_PERMISSIONS,SERVICE_PERMISSIONS,ARBITRATION_PERMISSIONS,DEMAND_PERMISSIONS,CONTACT_PERMISSIONS}from'./permission-ledger.js';const BUILTIN_PERMISSIONS_BY_TYPE={'Repository':REPOSITORY_PERMISSIONS,'Reward':REWARD_PERMISSIONS,'Machine':MACHINE_PERMISSIONS,'Progress':PROGRESS_PERMISSIONS,'Treasury':TREASURY_PERMISSIONS,'Service':SERVICE_PERMISSIONS,'Arbitration':ARBITRATION_PERMISSIONS,'Demand':DEMAND_PERMISSIONS,'Contact':CONTACT_PERMISSIONS},CATEGORY={'Service':'permission_index','Machine':'permission_index','Treasury':'permission_index','Reward':'permission_index','Repository':'permission_index','Arbitration':'permission_index','Demand':'permission_index','Contact':'permission_index','Progress':'permission_index','Order':'guard','Allocation':'guard','Permission':'special','Guard':'special','Payment':'special','Proof':'special','Personal':'special','GenPassport':'special','GenProof':'special'},COMPLEXITY={'Service':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Machine':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Treasury':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Reward':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Repository':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Arbitration':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Demand':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Contact':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Progress':{'level':'L3','reads':0x8,'note':'machine\x20nodes\x20+\x20order\x20+\x20machine\x20Permission\x20+\x20named\x20operators'},'Order':{'level':'L0','reads':0x1,'note':'order\x20builder/agent\x20fields\x20suffice'},'Allocation':{'level':'L2','reads':0x5,'note':'allocation\x20+\x20guard\x20+\x20payment\x20+\x20recipient'},'Permission':{'level':'L0','reads':0x1,'note':'owner/admin\x20fields\x20suffice'},'Guard':{'level':'L1','reads':0x2,'note':'guard\x20table\x20+\x20dependency\x20state'},'Payment':{'level':'L0','reads':0x1,'note':'payment\x20signer\x20field\x20suffices'},'Proof':{'level':'L0','reads':0x1,'note':'proof\x20creator\x20field\x20suffices'},'Personal':{'level':'L0','reads':0x1,'note':'signer-owned\x20local\x20data'},'GenPassport':{'level':'L0','reads':0x1,'note':'signer-generated\x20credential'},'GenProof':{'level':'L0','reads':0x1,'note':'signer-generated\x20proof'}};function isCreateEntry(a){return a['name']['endsWith']('_NEW');}function addrOf(a){return typeof a==='string'&&a['length']>0x0?a['toLowerCase']():undefined;}function listHas(a,b){if(!Array['isArray'](a))return![];return a['some'](c=>String(c)['toLowerCase']()===b);}function enumeratePermissionIndexOps(a,b,c){const d=BUILTIN_PERMISSIONS_BY_TYPE[a];if(!d)return[];const f=c?.['admin']['has'](b)??![],g=c?.['table']['get'](b),h=[];for(const i of d){if(isCreateEntry(i))continue;const j=g?.['has'](i['index'])??![],k=f||j,l=f?i['name']+'\x20—\x20admin\x20(full\x20rights)':k?i['name']+'\x20—\x20holds\x20permission\x20'+i['index']:i['name']+'\x20—\x20requires\x20permission\x20'+i['index']+'\x20(not\x20held)';h['push']({'operation':i['governed_operation'],'can_execute':k,'path':'permission_index','note':l});}return h;}function orderOperations(a,b){const c=addrOf(a['builder']??a['owner']),d=c===b||listHas(a['agent'],b),e='order_holder',f=d?'account\x20is\x20the\x20order\x20holder\x20(builder)\x20or\x20an\x20agent':'not\x20the\x20order\x20holder';return[{'operation':'
|
|
1
|
+
import{fieldMutabilityOf}from'./contract-invariants.js';import{REPOSITORY_PERMISSIONS,REWARD_PERMISSIONS,MACHINE_PERMISSIONS,PROGRESS_PERMISSIONS,TREASURY_PERMISSIONS,SERVICE_PERMISSIONS,ARBITRATION_PERMISSIONS,DEMAND_PERMISSIONS,CONTACT_PERMISSIONS}from'./permission-ledger.js';const BUILTIN_PERMISSIONS_BY_TYPE={'Repository':REPOSITORY_PERMISSIONS,'Reward':REWARD_PERMISSIONS,'Machine':MACHINE_PERMISSIONS,'Progress':PROGRESS_PERMISSIONS,'Treasury':TREASURY_PERMISSIONS,'Service':SERVICE_PERMISSIONS,'Arbitration':ARBITRATION_PERMISSIONS,'Demand':DEMAND_PERMISSIONS,'Contact':CONTACT_PERMISSIONS},CATEGORY={'Service':'permission_index','Machine':'permission_index','Treasury':'permission_index','Reward':'permission_index','Repository':'permission_index','Arbitration':'permission_index','Demand':'permission_index','Contact':'permission_index','Progress':'permission_index','Order':'guard','Allocation':'guard','Permission':'special','Guard':'special','Payment':'special','Proof':'special','Personal':'special','GenPassport':'special','GenProof':'special'},COMPLEXITY={'Service':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Machine':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Treasury':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Reward':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Repository':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Arbitration':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Demand':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Contact':{'level':'L1','reads':0x2,'note':'target\x20+\x20Permission\x20(admin/table)'},'Progress':{'level':'L3','reads':0x8,'note':'machine\x20nodes\x20+\x20order\x20+\x20machine\x20Permission\x20+\x20named\x20operators'},'Order':{'level':'L0','reads':0x1,'note':'order\x20builder/agent\x20fields\x20suffice'},'Allocation':{'level':'L2','reads':0x5,'note':'allocation\x20+\x20guard\x20+\x20payment\x20+\x20recipient'},'Permission':{'level':'L0','reads':0x1,'note':'owner/admin\x20fields\x20suffice'},'Guard':{'level':'L1','reads':0x2,'note':'guard\x20table\x20+\x20dependency\x20state'},'Payment':{'level':'L0','reads':0x1,'note':'payment\x20signer\x20field\x20suffices'},'Proof':{'level':'L0','reads':0x1,'note':'proof\x20creator\x20field\x20suffices'},'Personal':{'level':'L0','reads':0x1,'note':'signer-owned\x20local\x20data'},'GenPassport':{'level':'L0','reads':0x1,'note':'signer-generated\x20credential'},'GenProof':{'level':'L0','reads':0x1,'note':'signer-generated\x20proof'}};function isCreateEntry(a){return a['name']['endsWith']('_NEW');}function addrOf(a){return typeof a==='string'&&a['length']>0x0?a['toLowerCase']():undefined;}function listHas(a,b){if(!Array['isArray'](a))return![];return a['some'](c=>String(c)['toLowerCase']()===b);}function enumeratePermissionIndexOps(a,b,c){const d=BUILTIN_PERMISSIONS_BY_TYPE[a];if(!d)return[];const f=c?.['admin']['has'](b)??![],g=c?.['table']['get'](b),h=[];for(const i of d){if(isCreateEntry(i))continue;const j=g?.['has'](i['index'])??![],k=f||j,l=f?i['name']+'\x20—\x20admin\x20(full\x20rights)':k?i['name']+'\x20—\x20holds\x20permission\x20'+i['index']:i['name']+'\x20—\x20requires\x20permission\x20'+i['index']+'\x20(not\x20held)';h['push']({'operation':i['governed_operation'],'can_execute':k,'path':'permission_index','note':l});}return h;}function orderOperations(a,b){const c=addrOf(a['builder']??a['owner']),d=c===b||listHas(a['agent'],b),e='order_holder',f=d?'account\x20is\x20the\x20order\x20holder\x20(builder)\x20or\x20an\x20agent':'not\x20the\x20order\x20holder';return[{'operation':'update_required_info','can_execute':d,'path':e,'note':f},{'operation':'manage_agents','can_execute':c===b,'path':e,'note':c===b?'holder\x20may\x20manage\x20agents':'only\x20the\x20holder\x20(builder)\x20may\x20manage\x20agents'},{'operation':'transfer_order','can_execute':c===b,'path':e,'note':c===b?'holder\x20may\x20transfer\x20the\x20order':'only\x20the\x20holder\x20(builder)\x20may\x20transfer\x20the\x20order'},{'operation':'receive_order','can_execute':d,'path':e,'note':f}];}function permissionOperations(a,b){const c=addrOf(a['builder']??a['owner']),d=c===b,e=listHas(a['admin'],b),f=d?'permission\x20owner':'only\x20the\x20permission\x20owner',g=e?'permission\x20admin':d?'owner\x20(owner\x20may\x20not\x20admin-gate\x20without\x20admin)':'requires\x20admin';return[{'operation':'add_admin','can_execute':d,'path':'owner','note':f},{'operation':'remove_admin','can_execute':d,'path':'owner','note':f},{'operation':'set_admin','can_execute':d,'path':'owner','note':f},{'operation':'transfer_ownership','can_execute':d,'path':'owner','note':d?'irreversible\x20ownership\x20transfer':'only\x20the\x20owner'},{'operation':'set_user_manager','can_execute':d,'path':'owner','note':f},{'operation':'set_description','can_execute':e,'path':'admin','note':g},{'operation':'add_permission_holder','can_execute':e,'path':'admin','note':g},{'operation':'remove_permission_holder','can_execute':e,'path':'admin','note':g},{'operation':'set_permission_holder','can_execute':e,'path':'admin','note':g},{'operation':'set_entity','can_execute':e,'path':'admin','note':g},{'operation':'delete_entity','can_execute':e,'path':'admin','note':g},{'operation':'set_remark','can_execute':e,'path':'admin','note':g}];}function specialOperations(a,b,c){const d=addrOf(b['builder']??b['owner']??b['signer']),e=d===c;switch(a){case'Guard':return[{'operation':'add_guard_dependency','can_execute':![],'path':'signer','note':'guard\x20dependency\x20management\x20—\x20runtime-validated\x20against\x20guard\x20state'},{'operation':'set_guard_dependency_logic','can_execute':![],'path':'signer','note':'guard\x20dependency\x20logic\x20—\x20runtime-validated\x20against\x20guard\x20state'}];case'Payment':return[{'operation':'unwrap_payment','can_execute':e,'path':'signer','note':e?'recipient\x20may\x20unwrap\x20the\x20CoinWrapper':'only\x20the\x20payment\x20recipient\x20(signer)'}];case'Proof':return[{'operation':'create_proof','can_execute':e,'path':'signer','note':e?'creator\x20may\x20issue\x20the\x20proof\x20(registers\x20creator\x20in\x20ObjectLinkerTx)':'only\x20the\x20proof\x20creator'}];case'Allocation':return[{'operation':'execute_allocation','can_execute':![],'path':'guard_submission','note':'requires\x20Guard\x20+\x20Passport\x20verification\x20at\x20runtime'},{'operation':'receive_allocation','can_execute':e,'path':'signer','note':e?'recipient\x20may\x20receive\x20the\x20CoinWrapper':'only\x20the\x20allocation\x20recipient'}];default:return[{'operation':a['toLowerCase']()+'_operation','can_execute':e,'path':'signer','note':e?'signer-owned\x20object':'no\x20on-chain\x20mutative\x20operation\x20for\x20this\x20account'}];}}export function operationCategoryOf(a){return CATEGORY[a]??'special';}export function operationComplexityOf(a){return COMPLEXITY[a]??{'level':'L1','reads':0x2,'note':'unknown\x20type\x20—\x20assume\x20target\x20+\x20Permission'};}export function isPermissionIndexType(a){return BUILTIN_PERMISSIONS_BY_TYPE[a]!==undefined;}export function enumerateObjectOperations(a,b,c,d,e){const f=operationCategoryOf(a);if(f==='permission_index')return applyContractInvariants(a,b,enumeratePermissionIndexOps(a,c,d),e);if(a==='Order')return orderOperations(b,c);if(a==='Permission')return permissionOperations(b,c);return specialOperations(a,b,c);}function applyContractInvariants(a,b,c,d){const e=b['bPublished']===!![];if(!e)return c;return c['map'](f=>{const g=fieldFromGovernedOperation(f['operation']);if(!g)return f;const h=fieldMutabilityOf(a,g);if(!h||h['frozen_when']===null)return f;if(h['unfreeze']===null)return{...f,'can_execute':![],'note':((f['note']??'')+'\x20—\x20frozen:\x20forbidden\x20after\x20'+h['frozen_when'])['trim']()};if(d!=null){const i=toNumberOrNull(b['paused_time']),j=toNumberOrNull(b['setting_lock_duration']),k=i!==null&&j!==null&&i+j<=d;if(k)return{...f,'note':((f['note']??'')+'\x20—\x20lock\x20elapsed\x20(paused_time\x20+\x20setting_lock_duration\x20<=\x20clock)')['trim']()};return{...f,'can_execute':![],'note':((f['note']??'')+'\x20—\x20locked:\x20needs\x20pause\x20and\x20paused_time\x20+\x20setting_lock_duration\x20<=\x20clock\x20before\x20remove/clear')['trim']()};}return{...f,'note':((f['note']??'')+'\x20—\x20after\x20'+h['frozen_when']+'\x20remove/clear\x20needs\x20'+h['unfreeze']+'\x20(add\x20still\x20allowed)')['trim']()};});}function toNumberOrNull(a){if(a===null||a===undefined)return null;const b=Number(a);return Number['isFinite'](b)?b:null;}function fieldFromGovernedOperation(a){const b=a['toLowerCase']();if(b['includes']('arbitration'))return'arbitrations';if(b['includes']('reward'))return'rewards';if(b['includes']('repository'))return'repositories';if(b['includes']('buy_guard'))return'buy_guard';if(b['includes']('machine'))return'machine';if(b['includes']('sales'))return'sales';if(b['includes']('order_allocator'))return'order_allocators';return undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const ORDER_FIELDS=[{'move_name':'id','sdk_name':'id','move_type':'UID','mutability_layer':0x1,'description':'Order\x20unique\x20ID'},{'move_name':'items','sdk_name':'items','move_type':'vector<SaleItem>','mutability_layer':0x1,'description':'Purchased\x20items\x20(created-immutable)'},{'move_name':'discount','sdk_name':'discount','move_type':'Option<address>','mutability_layer':0x1,'description':'Discount\x20object\x20address\x20(created-immutable)'},{'move_name':'progress','sdk_name':'progress','move_type':'Option<address>','mutability_layer':0x2,'description':'Progress\x20object\x20address\x20(one-time-set\x20via\x20on_progress)'},{'move_name':'machine','sdk_name':'machine','move_type':'Option<address>','mutability_layer':0x1,'description':'Machine\x20snapshot\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'},{'move_name':'amount','sdk_name':'amount','move_type':'u64','mutability_layer':0x1,'description':'Order\x20amount\x20in\x20MIST\x20(created-immutable)'},{'move_name':'owner','sdk_name':'builder','move_type':'address','mutability_layer':0x4,'description':'Order\x20owner\x20/\x20buyer.\x20Mutable\x20at\x20ANY\x20time\x20via\x20owner_change\x20(L1,\x20E_NOT_THE_OWNER).\x20⚠️\x20SDK\x20field\x20name\x20is\x20\x27builder\x27\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)'},{'move_name':'service','sdk_name':'service','move_type':'address','mutability_layer':0x1,'description':'Service\x20object\x20address\x20(created-immutable,\x20reference\x20only)'},{'move_name':'dispute','sdk_name':'dispute','move_type':'vector<address>','mutability_layer':0x4,'description':'Arb\x20object\x20addresses\x20(append-only,\x20max\x2010,\x20frozen\x20when\x20claimed_by\x20set)'},{'move_name':'agent','sdk_name':'agent','move_type':'vector<address>','mutability_layer':0x4,'description':'Agent\x20addresses\x20(max\x2010\x20distinct\x20per\x20call\x20—\x20input\x20deduped\x20on-chain;\x20agent_set\x20REPLACES\x20the\x20whole\x20list\x20at\x20any\x20time,\x20no\x20progress\x20freeze)'},{'move_name':'allocation','sdk_name':'allocation','move_type':'Option<address>','mutability_layer':0x2,'description':'Allocation\x20object\x20address\x20(one-time-set\x20via\x20on_allocation)'},{'move_name':'claimed_by','sdk_name':'claimed_by','move_type':'Option<address>','mutability_layer':0x2,'description':'Claimed\x20Arb\x20object\x20address\x20(one-time,\x20irreversible;\x20blocks\x20new\x20disputes)'},{'move_name':'required_info','sdk_name':'required_info','move_type':'Option<address>','mutability_layer':0x4,'description':'Contact\x20(recipient)\x20or\x20WTS\x20Proof\x20(delivery\x20proof);\x20owner-only\x20(assert_owner)'},{'move_name':'time','sdk_name':'time','move_type':'u64','mutability_layer':0x1,'description':'Creation\x20timestamp\x20(clock::timestamp_ms)'}];export const ORDER_STATES=['CREATED','IN_PROGRESS','DISPUTED','CLAIMED','COMPLETED','CANCELLED'];export const ORDER_STATE_TRANSITIONS=[{'from':'CREATED','to':'IN_PROGRESS','trigger':'service::buy()\x20with\x20machine\x20→\x20on_progress\x20sets\x20progress'},{'from':'CREATED','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'CREATED','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20(no\x20machine\x20path)\x20or\x20manual'},{'from':'IN_PROGRESS','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'IN_PROGRESS','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20node'},{'from':'IN_PROGRESS','to':'CANCELLED','trigger':'Progress\x20reaches\x20cancel\x20node'},{'from':'DISPUTED','to':'CLAIMED','trigger':'arb_claim_compensation\x20→\x20compensate()\x20sets\x20claimed_by'},{'from':'DISPUTED','to':'COMPLETED','trigger':'Arb\x20resolution\x20+\x20Progress\x20terminal'},{'from':'DISPUTED','to':'CANCELLED','trigger':'Arb\x20resolution\x20=\x20cancel'}];export const ORDER_LIFECYCLE_EVENTS=[{'name':'NewOrderEvent','trigger':'service::buy()\x20phase\x205\x20(order::create)','emit_source':'order::create()','actually_emitted':!![],'fields':['object','service','progress','discount','allocation','amount']},{'name':'OrderCompletedEvent','trigger':'Progress\x20reaches\x20terminal','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','completion_time']},{'name':'OrderCancelledEvent','trigger':'Progress\x20reaches\x20cancel','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','cancel_reason']},{'name':'OrderAdvancedEvent','trigger':'order.progress\x20forward','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','from_node','to_node']},{'name':'OrderDisputeAppendedEvent','trigger':'arb_confirm\x20→\x20dispute()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb']},{'name':'OrderClaimedEvent','trigger':'arb_claim_compensation\x20→\x20compensate()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb','claimed_by']},{'name':'OwnerChangedEvent','trigger':'owner_change\x20/\x20transfer_to','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','old_owner','new_owner']},{'name':'AgentSetEvent','trigger':'agent_set','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','agent_list']},{'name':'RequiredInfoUpdatedEvent','trigger':'required_info_update','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','required_info']},{'name':'AllocationBoundEvent','trigger':'on_allocation','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','allocation']},{'name':'ProgressBoundEvent','trigger':'on_progress','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','progress']}];export const ORDER_PERMISSION_MATRIX=[{'operation':'owner_receive\x20/\x20receive','move_function':'owner_receive\x20/\x20owner_receive_object','layer':'L4_object_gated','aborts_with':'EPAYMENT_NOT_MATCH\x20(payment.move)','notes':'Gated\x20by\x20Receiving\x20existence,\x20NOT\x20by\x20an\x20owner\x20assert:\x20allocation::alloc\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address.\x20No\x20assert_owner\x20—\x20funds\x20ALWAYS\x20go\x20to\x20order.owner\x20regardless\x20of\x20caller.\x20Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH).'},{'operation':'transfer_to\x20(ownership\x20transfer)','move_function':'owner_change','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Irreversible.\x20New\x20owner\x20takes\x20over\x20ALL\x20permissions.\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'agent_set','move_function':'agent_set','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER,\x20E_MAX_AGENT_COUNT','notes':'REPLACES\x20the\x20whole\x20agent\x20list\x20(not\x20append).\x20Max\x2010\x20distinct\x20agents\x20(assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push).\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'required_info_update','move_function':'required_info_update','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Owner-only\x20(assert_owner).\x20Agent\x20CANNOT\x20update\x20required_info.'},{'operation':'progress\x20(advance)','move_function':'(progress::operate)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20advance\x20Progress.'},{'operation':'arb_confirm','move_function':'(arb::principal_confirm)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'Both\x20can\x20file\x20arbitration.\x20confirmed=true\x20additionally\x20asserts\x20claimed_by\x20is\x20none.\x20Irreversible.'},{'operation':'arb_objection','move_function':'(arb::objection)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_ORDER_ALREADY_CLAIMED,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH','notes':'Both\x20can\x20object\x20to\x20Arb\x20ruling.\x20Requires\x20Arb\x20status\x20==\x20Arbirated.\x20Irreversible.'},{'operation':'arb_claim_compensation','move_function':'(service::compensation_claim)','layer':'L4_object_gated','aborts_with':'E_ORDER_SERVICE_NOT_MATCH,\x20E_ARBITRATION_ARB_NOT_MATCH,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_COMPENSATION_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'No\x20op-permission\x20assert\x20—\x20gated\x20by\x20Arb\x20status\x20(must\x20be\x20Arbirated\x20via\x20arb::finish).\x20Compensation\x20is\x20paid\x20to\x20tx\x20sender.\x20Sets\x20claimed_by\x20—\x20one-time,\x20irreversible.'},{'operation':'on_progress\x20(package-only)','move_function':'on_progress','layer':'L3_package_only','aborts_with':'E_PROGRESS_ALREADY_SPECIFIED','notes':'Progress\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'on_allocation\x20(package-only)','move_function':'on_allocation','layer':'L3_package_only','aborts_with':'E_ALLOCATION_ALREADY_SPECIFIED','notes':'Allocation\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'dispute\x20(package-only)','move_function':'dispute','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED,\x20E_MAX_DISPUTE_COUNT','notes':'Arbitration\x20module\x20appends\x20Arb\x20address.'},{'operation':'compensate\x20(package-only)','move_function':'compensate','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED','notes':'Arbitration\x20module\x20sets\x20claimed_by.\x20Irreversible.'}];export const ORDER_SCENES=[{'id':'order_create','name':'Create\x20order\x20via\x20service::buy\x20(composite\x20creation)','operation_field':'object','move_entry':'service::buy\x20→\x20order::new\x20→\x20order::create','permission_layer':'L3_package_only','reversibility':'irreversible','governed_operations':['service::buy(items,\x20discount,\x20machine_forward?,\x20named_order?)','order::new\x20(package-only)','allocation::new\x20+\x20order::on_allocation\x20(if\x20order_allocators\x20configured)','progress::new\x20+\x20order::on_progress\x20(if\x20machine\x20configured)','order::create\x20+\x20emit\x20NewOrderEvent'],'common_patterns':['Composite\x20creation:\x20Order\x20+\x20Allocation\x20+\x20Progress\x20in\x20one\x20transaction','Service.machine\x20is\x20SNAPSHOTTED\x20to\x20order.machine\x20(not\x20a\x20reference)','owner\x20=\x20tx_context::sender\x20(buyer);\x20agent\x20=\x20[]\x20initially','Allotment\x206\x20phases\x20are\x20atomic\x20—\x20any\x20failure\x20rolls\x20back\x20fully'],'related_risks':['R-O-1-05','R-O-2-01','R-O-4-01','R-O-5-01'],'recommended_templates':['T-O-01','T-O-02','T-O-03']},{'id':'order_advance','name':'Advance\x20Progress\x20(forward/hold)','operation_field':'progress','move_entry':'progress::operate\x20(via\x20order.progress\x20delegation)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['progress.operation.next_node_name\x20+\x20forward','progress.op\x20(next/hold/unhold/adminUnhold)','progress.message\x20(optional)'],'common_patterns':['Both\x20owner\x20and\x20agent\x20can\x20advance\x20—\x20agent\x20enables\x20third-party\x20logistics','Node\x20transition\x20is\x20irreversible\x20(no\x20backward\x20movement)','Forward.guard\x20may\x20require\x20Guard\x20submission'],'related_risks':['R-O-3-02','R-O-4-03','R-O-5-03'],'recommended_templates':['T-O-02']},{'id':'order_set_agent','name':'Set\x20agent\x20list\x20(owner-only,\x20replaces\x20entire\x20list)','operation_field':'agent','move_entry':'order::agent_set','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['agent_set\x20(overwrites\x20entire\x20agent\x20list)'],'common_patterns':['agent_set\x20REPLACES\x20the\x20whole\x20list\x20—\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access\x20(old\x20agent\x20role\x20records\x20are\x20removed\x20from\x20EntityOrders)','Max\x2010\x20distinct\x20agents\x20per\x20call\x20(E_MAX_AGENT_COUNT,\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20operate\x20the\x20order\x20(L2\x20ops)\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)'],'related_risks':['R-O-1-04','R-O-3-01','R-O-4-02'],'recommended_templates':['T-O-03']},{'id':'order_required_info','name':'Update\x20required_info\x20(Contact\x20or\x20WTS\x20Proof)','operation_field':'required_info','move_entry':'order::required_info_update','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['required_info_update\x20(set\x20Contact\x20or\x20WTS\x20Proof\x20address)','required_info\x20=\x20null\x20(clear)'],'common_patterns':['Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(via\x20Wowok\x20Messenger)','Owner-only\x20(assert_owner)\x20—\x20agent\x20CANNOT\x20update\x20required_info'],'related_risks':['R-O-3-02'],'recommended_templates':['T-O-01']},{'id':'order_arb_confirm','name':'Apply\x20for\x20arbitration\x20compensation','operation_field':'arb_confirm','move_entry':'arb::principal_confirm\x20/\x20arb::description_change\x20/\x20arb::proposition_change','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_confirm.confirm\x20(true=confirm\x20materials,\x20false=deny)','arb_confirm.description\x20(compensation\x20application\x20description)','arb_confirm.proposition\x20(compensation\x20claims\x20list)'],'common_patterns':['Triggers\x20Arb\x20→\x20dispute()\x20appends\x20Arb\x20to\x20order.dispute','Both\x20owner\x20and\x20agent\x20can\x20file\x20—\x20agent\x20useful\x20for\x20representative\x20cases','Once\x20filed,\x20the\x20Arb\x20process\x20is\x20irreversible'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_objection','name':'Object\x20to\x20arbitration\x20result','operation_field':'arb_objection','move_entry':'arb::objection','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_objection.objection\x20(reason\x20for\x20re-arbitration)'],'common_patterns':['Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(after\x20ruling)','Triggers\x20re-arbitration\x20flow','Both\x20owner\x20and\x20agent\x20can\x20object'],'related_risks':['R-O-3-03','R-O-4-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_claim_compensation','name':'Claim\x20compensation\x20(sets\x20claimed_by,\x20irreversible)','operation_field':'arb_claim_compensation','move_entry':'service::compensation_claim\x20→\x20order::compensate','permission_layer':'L4_object_gated','reversibility':'irreversible','governed_operations':['arb_claim_compensation.arb\x20(the\x20ruled\x20Arb\x20object)','compensate()\x20sets\x20order.claimed_by\x20=\x20arb'],'common_patterns':['⚠️\x20ONE-TIME,\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim,\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED)','Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(arb::finish\x20gating\x20—\x20no\x20op-permission\x20assert)','Compensation\x20is\x20paid\x20to\x20the\x20tx\x20sender\x20(typically\x20the\x20principal\x20who\x20filed\x20the\x20dispute)'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-06']},{'id':'order_receive','name':'Receive\x20payment\x20(Receiving-gated,\x20funds\x20to\x20owner)','operation_field':'receive','move_entry':'order::owner_receive\x20/\x20order::owner_receive_object','permission_layer':'L4_object_gated','reversibility':'reversible','governed_operations':['receive\x20CoinWrapper\x20(unwrap\x20and\x20forward\x20to\x20owner)','receive\x20arbitrary\x20Receiving<K>\x20object'],'common_patterns':['⚠️\x20Gated\x20by\x20Receiving\x20existence:\x20allocation::alloc\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20—\x20without\x20it\x20the\x20call\x20cannot\x20even\x20be\x20constructed','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20funds\x20are\x20ALWAYS\x20forwarded\x20to\x20order.owner\x20regardless\x20of\x20caller','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Receives\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address'],'related_risks':['R-O-3-01','R-O-4-05'],'recommended_templates':['T-O-05']},{'id':'order_transfer','name':'Transfer\x20order\x20ownership\x20(irreversible)','operation_field':'transfer_to','move_entry':'order::owner_change','permission_layer':'L1_owner_only','reversibility':'irreversible','governed_operations':['transfer_to\x20(new\x20owner\x20address)'],'common_patterns':['⚠️\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','Only\x20owner\x20can\x20transfer\x20(assert_owner)','Can\x20be\x20called\x20even\x20after\x20Progress\x20binding\x20(unlike\x20agent_set)','New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20future\x20payments'],'related_risks':['R-O-3-01','R-O-4-06'],'recommended_templates':['T-O-05']},{'id':'order_dispute_append','name':'Append\x20Arb\x20to\x20dispute\x20list\x20(package-only)','operation_field':'lifecycle','move_entry':'order::dispute\x20(package-only)','permission_layer':'L3_package_only','reversibility':'append_only','governed_operations':['dispute(arb)\x20—\x20append\x20Arb\x20address\x20to\x20order.dispute'],'common_patterns':['Called\x20by\x20Arbitration\x20module\x20(arb::create),\x20NOT\x20by\x20external\x20users','Max\x2010\x20Arb\x20addresses\x20(MAX_DISPUTE_COUNT)','Frozen\x20when\x20claimed_by\x20is\x20set\x20(E_ORDER_ALREADY_CLAIMED)','Duplicate\x20Arb\x20addresses\x20are\x20silently\x20skipped'],'related_risks':['R-O-1-03','R-O-3-03','R-O-5-04'],'recommended_templates':['T-O-04']}];export const ORDER_AUDIT_FORMULAS={'status_inference':'if\x20claimed_by\x20!=\x20null:\x20CLAIMED;\x20'+'elif\x20progress\x20!=\x20null:\x20query\x20Progress\x20→\x20terminal?\x20COMPLETED\x20:\x20cancel?\x20CANCELLED\x20:\x20IN_PROGRESS;\x20'+'elif\x20dispute.length\x20>\x200:\x20DISPUTED;\x20'+'else:\x20CREATED','amount_check':'order.amount\x20=\x20sum(items[].price\x20*\x20items[].quantity)\x20-\x20discount_value','fund_balance':'order.amount\x20=\x20allocation_distributed\x20+\x20compensation_paid\x20+\x20refund_amount','dispute_constraint':'dispute.length\x20<=\x20MAX_DISPUTE_COUNT\x20(10);\x20frozen\x20when\x20claimed_by.is_some()','agent_constraint':'agent.length\x20<=\x20MAX_AGENT_COUNT\x20(doc=10,\x20⚠️\x20actual=11\x20due\x20to\x20<=\x20bug\x20in\x20agent_set_imp)'};export const ORDER_LEDGER_VERSION='1.0.0';export function getScenesByOperationField(a){return ORDER_SCENES['filter'](b=>b['operation_field']===a);}export function findSceneById(a){return ORDER_SCENES['find'](b=>b['id']===a);}export function findSceneByMoveEntry(a){return ORDER_SCENES['find'](b=>b['move_entry']['includes'](a));}export function getScenesByPermissionLayer(a){return ORDER_SCENES['filter'](b=>b['permission_layer']===a);}export function getScenesByReversibility(a){return ORDER_SCENES['filter'](b=>b['reversibility']===a);}export function getFieldDef(a){return ORDER_FIELDS['find'](b=>b['move_name']===a);}export function getMutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x4);}export function getImmutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x1);}export function getFrozenAfterProgressFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x3);}export function getOneTimeSetFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x2);}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['buy','order_create'],['purchase','order_create'],['advance','order_advance'],['forward','order_advance'],['progress','order_advance'],['set\x20agent','order_set_agent'],['agent','order_set_agent'],['required_info','order_required_info'],['recipient','order_required_info'],['arb\x20confirm','order_arb_confirm'],['apply\x20arbitration','order_arb_confirm'],['apply\x20compensation','order_arb_confirm'],['objection','order_arb_objection'],['object','order_arb_objection'],['claim\x20compensation','order_arb_claim_compensation'],['claim','order_arb_claim_compensation'],['receive','order_receive'],['collect','order_receive'],['withdraw','order_receive'],['transfer','order_transfer'],['transfer\x20ownership','order_transfer'],['handover','order_transfer']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return findSceneById(e);}return undefined;}export function getEmittedEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>a['actually_emitted']);}export function getInferredEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>!a['actually_emitted']);}export function getOrderScenesCount(){return ORDER_SCENES['length'];}export function sdkToMoveField(a){const b=ORDER_FIELDS['find'](c=>c['sdk_name']===a);return b?.['move_name'];}export function moveToSdkField(a){const b=ORDER_FIELDS['find'](c=>c['move_name']===a);return b?.['sdk_name'];}
|
|
1
|
+
export const ORDER_FIELDS=[{'move_name':'id','sdk_name':'id','move_type':'UID','mutability_layer':0x1,'description':'Order\x20unique\x20ID'},{'move_name':'items','sdk_name':'items','move_type':'vector<SaleItem>','mutability_layer':0x1,'description':'Purchased\x20items\x20(created-immutable)'},{'move_name':'discount','sdk_name':'discount','move_type':'Option<address>','mutability_layer':0x1,'description':'Discount\x20object\x20address\x20(created-immutable)'},{'move_name':'progress','sdk_name':'progress','move_type':'Option<address>','mutability_layer':0x2,'description':'Progress\x20object\x20address\x20(one-time-set\x20when\x20the\x20Progress\x20binds)'},{'move_name':'machine','sdk_name':'machine','move_type':'Option<address>','mutability_layer':0x1,'description':'Machine\x20snapshot\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'},{'move_name':'amount','sdk_name':'amount','move_type':'u64','mutability_layer':0x1,'description':'Order\x20amount\x20in\x20MIST\x20(created-immutable)'},{'move_name':'owner','sdk_name':'builder','move_type':'address','mutability_layer':0x4,'description':'Order\x20owner\x20/\x20buyer.\x20Mutable\x20at\x20ANY\x20time\x20via\x20an\x20ownership\x20transfer\x20(L1,\x20E_NOT_THE_OWNER).\x20⚠️\x20SDK\x20field\x20name\x20is\x20\x27builder\x27\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)'},{'move_name':'service','sdk_name':'service','move_type':'address','mutability_layer':0x1,'description':'Service\x20object\x20address\x20(created-immutable,\x20reference\x20only)'},{'move_name':'dispute','sdk_name':'dispute','move_type':'vector<address>','mutability_layer':0x4,'description':'Arb\x20object\x20addresses\x20(append-only,\x20max\x2010,\x20frozen\x20when\x20claimed_by\x20set)'},{'move_name':'agent','sdk_name':'agent','move_type':'vector<address>','mutability_layer':0x4,'description':'Agent\x20addresses\x20(max\x2010\x20distinct\x20per\x20call\x20—\x20input\x20deduped\x20on-chain;\x20setting\x20the\x20list\x20REPLACES\x20it\x20at\x20any\x20time,\x20no\x20progress\x20freeze)'},{'move_name':'allocation','sdk_name':'allocation','move_type':'Option<address>','mutability_layer':0x2,'description':'Allocation\x20object\x20address\x20(one-time-set\x20when\x20the\x20Allocation\x20binds)'},{'move_name':'claimed_by','sdk_name':'claimed_by','move_type':'Option<address>','mutability_layer':0x2,'description':'Claimed\x20Arb\x20object\x20address\x20(one-time,\x20irreversible;\x20blocks\x20new\x20disputes)'},{'move_name':'required_info','sdk_name':'required_info','move_type':'Option<address>','mutability_layer':0x4,'description':'Contact\x20(recipient)\x20or\x20WTS\x20Proof\x20(delivery\x20proof);\x20owner-only'},{'move_name':'time','sdk_name':'time','move_type':'u64','mutability_layer':0x1,'description':'Creation\x20timestamp\x20(clock::timestamp_ms)'}];export const ORDER_STATES=['CREATED','IN_PROGRESS','DISPUTED','CLAIMED','COMPLETED','CANCELLED'];export const ORDER_STATE_TRANSITIONS=[{'from':'CREATED','to':'IN_PROGRESS','trigger':'buy\x20(with\x20machine)\x20→\x20the\x20Progress\x20object\x20is\x20set\x20at\x20creation'},{'from':'CREATED','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'CREATED','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20(no\x20machine\x20path)\x20or\x20manual'},{'from':'IN_PROGRESS','to':'DISPUTED','trigger':'arb_confirm\x20→\x20dispute()\x20appends\x20Arb\x20address'},{'from':'IN_PROGRESS','to':'COMPLETED','trigger':'Progress\x20reaches\x20terminal\x20node'},{'from':'IN_PROGRESS','to':'CANCELLED','trigger':'Progress\x20reaches\x20cancel\x20node'},{'from':'DISPUTED','to':'CLAIMED','trigger':'arb_claim_compensation\x20→\x20compensate()\x20sets\x20claimed_by'},{'from':'DISPUTED','to':'COMPLETED','trigger':'Arb\x20resolution\x20+\x20Progress\x20terminal'},{'from':'DISPUTED','to':'CANCELLED','trigger':'Arb\x20resolution\x20=\x20cancel'}];export const ORDER_LIFECYCLE_EVENTS=[{'name':'NewOrderEvent','trigger':'buy\x20flow\x20phase\x205\x20(the\x20order\x20record\x20is\x20created)','emit_source':'order\x20creation\x20inside\x20the\x20buy\x20transaction','actually_emitted':!![],'fields':['object','service','progress','discount','allocation','amount']},{'name':'OrderCompletedEvent','trigger':'Progress\x20reaches\x20terminal','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','completion_time']},{'name':'OrderCancelledEvent','trigger':'Progress\x20reaches\x20cancel','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','cancel_reason']},{'name':'OrderAdvancedEvent','trigger':'order.progress\x20forward','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','from_node','to_node']},{'name':'OrderDisputeAppendedEvent','trigger':'arb_confirm\x20→\x20dispute()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb']},{'name':'OrderClaimedEvent','trigger':'arb_claim_compensation\x20→\x20compensate()','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','arb','claimed_by']},{'name':'OwnerChangedEvent','trigger':'ownership\x20transfer\x20/\x20transfer_to','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','old_owner','new_owner']},{'name':'AgentSetEvent','trigger':'setting\x20the\x20agent\x20list','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','agent_list']},{'name':'RequiredInfoUpdatedEvent','trigger':'updating\x20required_info','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','required_info']},{'name':'AllocationBoundEvent','trigger':'allocation\x20binding','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','allocation']},{'name':'ProgressBoundEvent','trigger':'progress\x20binding','emit_source':'(not\x20implemented)','actually_emitted':![],'fields':['order','progress']}];export const ORDER_PERMISSION_MATRIX=[{'operation':'owner_receive\x20/\x20receive','move_function':'receive\x20CoinWrapper\x20/\x20receive\x20Receiving\x20object','layer':'L4_object_gated','aborts_with':'EPAYMENT_NOT_MATCH','notes':'Gated\x20by\x20Receiving\x20existence,\x20NOT\x20by\x20an\x20owner\x20assert:\x20the\x20allocation\x20payout\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address.\x20No\x20owner\x20assert\x20—\x20funds\x20ALWAYS\x20go\x20to\x20order.owner\x20regardless\x20of\x20caller.\x20Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH).'},{'operation':'transfer_to\x20(ownership\x20transfer)','move_function':'transfer\x20the\x20order\x20to\x20a\x20new\x20owner','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Irreversible.\x20New\x20owner\x20takes\x20over\x20ALL\x20permissions.\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'agent\x20(set\x20agent\x20list)','move_function':'set\x20the\x20agent\x20list\x20(replaces\x20all)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER,\x20E_MAX_AGENT_COUNT','notes':'REPLACES\x20the\x20whole\x20agent\x20list\x20(not\x20append).\x20Max\x2010\x20distinct\x20agents\x20(assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push).\x20NOT\x20frozen\x20after\x20progress\x20binding.'},{'operation':'update\x20required_info','move_function':'set\x20or\x20clear\x20required_info\x20(Contact\x20/\x20WTS\x20Proof)','layer':'L1_owner_only','aborts_with':'E_NOT_THE_OWNER','notes':'Owner-only.\x20Agent\x20CANNOT\x20update\x20required_info.'},{'operation':'progress\x20(advance)','move_function':'(progress::operate)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION','notes':'Both\x20owner\x20and\x20agent\x20can\x20advance\x20Progress.'},{'operation':'arb_confirm','move_function':'(file\x20for\x20arbitration)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'Both\x20can\x20file\x20arbitration.\x20confirmed=true\x20additionally\x20asserts\x20claimed_by\x20is\x20none.\x20Irreversible.'},{'operation':'arb_objection','move_function':'(object\x20to\x20the\x20arbitration\x20ruling)','layer':'L2_owner_or_agent','aborts_with':'E_NOT_OP_PERMISSION,\x20E_ORDER_ALREADY_CLAIMED,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH','notes':'Both\x20can\x20object\x20to\x20Arb\x20ruling.\x20Requires\x20Arb\x20status\x20==\x20Arbirated.\x20Irreversible.'},{'operation':'arb_claim_compensation','move_function':'(claim\x20the\x20compensation)','layer':'L4_object_gated','aborts_with':'E_ORDER_SERVICE_NOT_MATCH,\x20E_ARBITRATION_ARB_NOT_MATCH,\x20E_STATUS_NOT_MATCH,\x20E_ARB_ORDER_NOT_MATCH,\x20E_COMPENSATION_NOT_MATCH,\x20E_ORDER_ALREADY_CLAIMED','notes':'No\x20op-permission\x20assert\x20—\x20gated\x20by\x20Arb\x20status\x20(must\x20be\x20Arbirated,\x20ruling\x20final).\x20Compensation\x20is\x20paid\x20to\x20tx\x20sender.\x20Sets\x20claimed_by\x20—\x20one-time,\x20irreversible.'},{'operation':'progress\x20binding\x20(package-only)','move_function':'bind\x20the\x20Progress\x20object\x20(package\x20write-back)','layer':'L3_package_only','aborts_with':'E_PROGRESS_ALREADY_SPECIFIED','notes':'Progress\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'allocation\x20binding\x20(package-only)','move_function':'bind\x20the\x20Allocation\x20object\x20(package\x20write-back)','layer':'L3_package_only','aborts_with':'E_ALLOCATION_ALREADY_SPECIFIED','notes':'Allocation\x20module\x20writes\x20back.\x20No\x20external\x20access.'},{'operation':'dispute\x20(package-only)','move_function':'dispute','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED,\x20E_MAX_DISPUTE_COUNT','notes':'Arbitration\x20module\x20appends\x20Arb\x20address.'},{'operation':'compensate\x20(package-only)','move_function':'compensate','layer':'L3_package_only','aborts_with':'E_ORDER_ALREADY_CLAIMED','notes':'Arbitration\x20module\x20sets\x20claimed_by.\x20Irreversible.'}];export const ORDER_SCENES=[{'id':'order_create','name':'Create\x20order\x20via\x20a\x20service\x20purchase\x20(composite\x20creation)','operation_field':'object','move_entry':'buy\x20flow:\x20order\x20record\x20created\x20inside\x20the\x20service\x20purchase\x20transaction','permission_layer':'L3_package_only','reversibility':'irreversible','governed_operations':['buy\x20(items,\x20discount,\x20machine_forward?,\x20named_order?)','order\x20record\x20creation\x20(package-only)','allocation\x20creation\x20+\x20binding\x20(if\x20order_allocators\x20configured)','progress\x20creation\x20+\x20binding\x20(if\x20machine\x20configured)','order\x20record\x20created\x20+\x20NewOrderEvent\x20emitted'],'common_patterns':['Composite\x20creation:\x20Order\x20+\x20Allocation\x20+\x20Progress\x20in\x20one\x20transaction','Service.machine\x20is\x20SNAPSHOTTED\x20to\x20order.machine\x20(not\x20a\x20reference)','owner\x20=\x20tx_context::sender\x20(buyer);\x20agent\x20=\x20[]\x20initially','Allotment\x206\x20phases\x20are\x20atomic\x20—\x20any\x20failure\x20rolls\x20back\x20fully'],'related_risks':['R-O-1-05','R-O-2-01','R-O-4-01','R-O-5-01'],'recommended_templates':['T-O-01','T-O-02','T-O-03']},{'id':'order_advance','name':'Advance\x20Progress\x20(forward/hold)','operation_field':'progress','move_entry':'progress::operate\x20(via\x20order.progress\x20delegation)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['progress.operation.next_node_name\x20+\x20forward','progress.op\x20(next/hold/unhold/adminUnhold)','progress.message\x20(optional)'],'common_patterns':['Both\x20owner\x20and\x20agent\x20can\x20advance\x20—\x20agent\x20enables\x20third-party\x20logistics','Node\x20transition\x20is\x20irreversible\x20(no\x20backward\x20movement)','Forward.guard\x20may\x20require\x20Guard\x20submission'],'related_risks':['R-O-3-02','R-O-4-03','R-O-5-03'],'recommended_templates':['T-O-02']},{'id':'order_set_agent','name':'Set\x20agent\x20list\x20(owner-only,\x20replaces\x20entire\x20list)','operation_field':'agent','move_entry':'set\x20the\x20agent\x20list\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['set\x20the\x20agent\x20list\x20(overwrites\x20entire\x20agent\x20list)'],'common_patterns':['Setting\x20the\x20agent\x20list\x20REPLACES\x20the\x20whole\x20list\x20—\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access\x20(old\x20agent\x20role\x20records\x20are\x20removed\x20from\x20EntityOrders)','Max\x2010\x20distinct\x20agents\x20per\x20call\x20(E_MAX_AGENT_COUNT,\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20operate\x20the\x20order\x20(L2\x20ops)\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)'],'related_risks':['R-O-1-04','R-O-3-01','R-O-4-02'],'recommended_templates':['T-O-03']},{'id':'order_required_info','name':'Update\x20required_info\x20(Contact\x20or\x20WTS\x20Proof)','operation_field':'required_info','move_entry':'update\x20required_info\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'reversible','governed_operations':['update\x20required_info\x20(set\x20Contact\x20or\x20WTS\x20Proof\x20address)','required_info\x20=\x20null\x20(clear)'],'common_patterns':['Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(via\x20Wowok\x20Messenger)','Owner-only\x20—\x20agent\x20CANNOT\x20update\x20required_info'],'related_risks':['R-O-3-02'],'recommended_templates':['T-O-01']},{'id':'order_arb_confirm','name':'Apply\x20for\x20arbitration\x20compensation','operation_field':'arb_confirm','move_entry':'arb_confirm\x20flow\x20(confirm\x20/\x20description\x20/\x20proposition)','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_confirm.confirm\x20(true=confirm\x20materials,\x20false=deny)','arb_confirm.description\x20(compensation\x20application\x20description)','arb_confirm.proposition\x20(compensation\x20claims\x20list)'],'common_patterns':['Triggers\x20Arb\x20→\x20dispute()\x20appends\x20Arb\x20to\x20order.dispute','Both\x20owner\x20and\x20agent\x20can\x20file\x20—\x20agent\x20useful\x20for\x20representative\x20cases','Once\x20filed,\x20the\x20Arb\x20process\x20is\x20irreversible'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_objection','name':'Object\x20to\x20arbitration\x20result','operation_field':'arb_objection','move_entry':'objection\x20to\x20the\x20arbitration\x20ruling','permission_layer':'L2_owner_or_agent','reversibility':'irreversible','governed_operations':['arb_objection.objection\x20(reason\x20for\x20re-arbitration)'],'common_patterns':['Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(after\x20ruling)','Triggers\x20re-arbitration\x20flow','Both\x20owner\x20and\x20agent\x20can\x20object'],'related_risks':['R-O-3-03','R-O-4-04'],'recommended_templates':['T-O-04']},{'id':'order_arb_claim_compensation','name':'Claim\x20compensation\x20(sets\x20claimed_by,\x20irreversible)','operation_field':'arb_claim_compensation','move_entry':'claim\x20compensation\x20→\x20the\x20order\x20is\x20claimed\x20and\x20compensation\x20paid','permission_layer':'L4_object_gated','reversibility':'irreversible','governed_operations':['arb_claim_compensation.arb\x20(the\x20ruled\x20Arb\x20object)','compensate()\x20sets\x20order.claimed_by\x20=\x20arb'],'common_patterns':['⚠️\x20ONE-TIME,\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim,\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED)','Requires\x20Arb\x20status\x20=\x20Arbitrated\x20(ruling\x20final\x20—\x20no\x20op-permission\x20assert)','Compensation\x20is\x20paid\x20to\x20the\x20tx\x20sender\x20(typically\x20the\x20principal\x20who\x20filed\x20the\x20dispute)'],'related_risks':['R-O-3-03','R-O-4-04','R-O-5-04'],'recommended_templates':['T-O-06']},{'id':'order_receive','name':'Receive\x20payment\x20(Receiving-gated,\x20funds\x20to\x20owner)','operation_field':'receive','move_entry':'receive\x20payment\x20(coin\x20or\x20Receiving\x20object)','permission_layer':'L4_object_gated','reversibility':'reversible','governed_operations':['receive\x20CoinWrapper\x20(unwrap\x20and\x20forward\x20to\x20owner)','receive\x20arbitrary\x20Receiving<K>\x20object'],'common_patterns':['⚠️\x20Gated\x20by\x20Receiving\x20existence:\x20the\x20allocation\x20payout\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20—\x20without\x20it\x20the\x20call\x20cannot\x20even\x20be\x20constructed','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20funds\x20are\x20ALWAYS\x20forwarded\x20to\x20order.owner\x20regardless\x20of\x20caller','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Receives\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address'],'related_risks':['R-O-3-01','R-O-4-05'],'recommended_templates':['T-O-05']},{'id':'order_transfer','name':'Transfer\x20order\x20ownership\x20(irreversible)','operation_field':'transfer_to','move_entry':'transfer\x20the\x20order\x20to\x20a\x20new\x20owner\x20(owner-only)','permission_layer':'L1_owner_only','reversibility':'irreversible','governed_operations':['transfer_to\x20(new\x20owner\x20address)'],'common_patterns':['⚠️\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','Only\x20owner\x20can\x20transfer','Can\x20be\x20called\x20even\x20after\x20Progress\x20binding\x20(unlike\x20setting\x20the\x20agent\x20list)','New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20future\x20payments'],'related_risks':['R-O-3-01','R-O-4-06'],'recommended_templates':['T-O-05']},{'id':'order_dispute_append','name':'Append\x20Arb\x20to\x20dispute\x20list\x20(package-only)','operation_field':'lifecycle','move_entry':'append\x20Arb\x20to\x20the\x20dispute\x20list\x20(package-only)','permission_layer':'L3_package_only','reversibility':'append_only','governed_operations':['dispute(arb)\x20—\x20append\x20Arb\x20address\x20to\x20order.dispute'],'common_patterns':['Called\x20by\x20the\x20Arbitration\x20module\x20when\x20a\x20dispute\x20is\x20filed,\x20NOT\x20by\x20external\x20users','Max\x2010\x20Arb\x20addresses\x20(MAX_DISPUTE_COUNT)','Frozen\x20when\x20claimed_by\x20is\x20set\x20(E_ORDER_ALREADY_CLAIMED)','Duplicate\x20Arb\x20addresses\x20are\x20silently\x20skipped'],'related_risks':['R-O-1-03','R-O-3-03','R-O-5-04'],'recommended_templates':['T-O-04']}];export const ORDER_AUDIT_FORMULAS={'status_inference':'if\x20claimed_by\x20!=\x20null:\x20CLAIMED;\x20'+'elif\x20progress\x20!=\x20null:\x20query\x20Progress\x20→\x20terminal?\x20COMPLETED\x20:\x20cancel?\x20CANCELLED\x20:\x20IN_PROGRESS;\x20'+'elif\x20dispute.length\x20>\x200:\x20DISPUTED;\x20'+'else:\x20CREATED','amount_check':'order.amount\x20=\x20sum(items[].price\x20*\x20items[].quantity)\x20-\x20discount_value','fund_balance':'order.amount\x20=\x20allocation_distributed\x20+\x20compensation_paid\x20+\x20refund_amount','dispute_constraint':'dispute.length\x20<=\x20MAX_DISPUTE_COUNT\x20(10);\x20frozen\x20when\x20claimed_by.is_some()','agent_constraint':'agent.length\x20<=\x20MAX_AGENT_COUNT\x20(doc=10,\x20⚠️\x20actual=11\x20due\x20to\x20<=\x20bug\x20in\x20the\x20agent-set\x20implementation)'};export const ORDER_LEDGER_VERSION='1.0.0';export function getScenesByOperationField(a){return ORDER_SCENES['filter'](b=>b['operation_field']===a);}export function findSceneById(a){return ORDER_SCENES['find'](b=>b['id']===a);}export function findSceneByMoveEntry(a){return ORDER_SCENES['find'](b=>b['move_entry']['includes'](a));}export function getScenesByPermissionLayer(a){return ORDER_SCENES['filter'](b=>b['permission_layer']===a);}export function getScenesByReversibility(a){return ORDER_SCENES['filter'](b=>b['reversibility']===a);}export function getFieldDef(a){return ORDER_FIELDS['find'](b=>b['move_name']===a);}export function getMutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x4);}export function getImmutableFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x1);}export function getFrozenAfterProgressFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x3);}export function getOneTimeSetFields(){return ORDER_FIELDS['filter'](a=>a['mutability_layer']===0x2);}export function inferSceneFromIntent(a){const b=a['toLowerCase'](),c=[['buy','order_create'],['purchase','order_create'],['advance','order_advance'],['forward','order_advance'],['progress','order_advance'],['set\x20agent','order_set_agent'],['agent','order_set_agent'],['required_info','order_required_info'],['recipient','order_required_info'],['arb\x20confirm','order_arb_confirm'],['apply\x20arbitration','order_arb_confirm'],['apply\x20compensation','order_arb_confirm'],['objection','order_arb_objection'],['object','order_arb_objection'],['claim\x20compensation','order_arb_claim_compensation'],['claim','order_arb_claim_compensation'],['receive','order_receive'],['collect','order_receive'],['withdraw','order_receive'],['transfer','order_transfer'],['transfer\x20ownership','order_transfer'],['handover','order_transfer']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return findSceneById(e);}return undefined;}export function getEmittedEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>a['actually_emitted']);}export function getInferredEvents(){return ORDER_LIFECYCLE_EVENTS['filter'](a=>!a['actually_emitted']);}export function getOrderScenesCount(){return ORDER_SCENES['length'];}export function sdkToMoveField(a){const b=ORDER_FIELDS['find'](c=>c['sdk_name']===a);return b?.['move_name'];}export function moveToSdkField(a){const b=ORDER_FIELDS['find'](c=>c['move_name']===a);return b?.['sdk_name'];}
|
|
@@ -36,10 +36,10 @@ export interface OrderDataSourcePuzzle {
|
|
|
36
36
|
claimed_by_source: "arbitration_module_compensate" | "none";
|
|
37
37
|
}
|
|
38
38
|
export type OrderOperation = {
|
|
39
|
-
type: "
|
|
39
|
+
type: "set_agent_list";
|
|
40
40
|
agents: string[];
|
|
41
41
|
} | {
|
|
42
|
-
type: "
|
|
42
|
+
type: "update_required_info";
|
|
43
43
|
required_info: string | null;
|
|
44
44
|
} | {
|
|
45
45
|
type: "progress_advance";
|
|
@@ -136,7 +136,7 @@ export declare function initPuzzleFromIntent(intent: Partial<OrderIntentPuzzle>)
|
|
|
136
136
|
export declare function checkPuzzleCompleteness(puzzle: OrderPuzzle): OrderPuzzleCompleteness;
|
|
137
137
|
export interface OrderConstraintViolation {
|
|
138
138
|
constraint_id: string;
|
|
139
|
-
severity: "
|
|
139
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
140
140
|
message: string;
|
|
141
141
|
current_value?: string | number;
|
|
142
142
|
limit?: string | number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MAX_AGENT_COUNT}from'@wowok/wowok';import{ORDER_SCENES,findSceneById,inferSceneFromIntent}from'./order-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'buy','lifecycle_phase':a['lifecycle_phase']??'P-O-01_Created','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_O_01_no_permission_uses_owner_agent':!![],'F_O_02_machine_is_snapshot':!![],'F_O_03_compound_creation_via_service_buy':!![],'F_O_04_progress_binding_does_not_freeze_owner_agent':!![],'F_O_05_claimed_by_irreversible_blocks_dispute':!![],'F_O_06_only_new_order_event_emitted':!![],'F_O_07_dispute_max_10':!![],'F_O_08_agent_max_10_actual_11':!![],'F_O_09_no_store_cannot_be_nested':!![],'F_O_10_sdk_builder_equals_move_owner':!![],'F_O_11_receive_gated_by_receiving_existence':!![],'F_O_12_receive_funds_always_to_owner':!![],'F_O_13_e_progress_not_specified_creation_check':!![],'F_O_14_buy_is_atomic':!![],'F_O_15_package_only_callbacks':!![],'F_O_16_order_allocation_1_to_1':!![],'F_O_17_order_progress_1_to_1':!![],'F_O_18_wip_hash_no_empty_string':!![],'F_O_19_saleitem_item_to_purchaseditem_name':!![],'F_O_20_time_auto_set':!![],'F_O_21_new_order_event_fields':!![],'F_O_22_required_info_contact_or_wts':!![],'F_O_23_transfer_to_irreversible':!![],'F_O_24_sdk_no_client_side_count_check':!![],'F_O_25_service_decoupled_after_publish':!![]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else!a['intent']['rule_sentence']&&(b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'}));if(!a['binding'])a['intent']?.['action']==='buy'&&(b['push']('B'),c['push']({'dimension':'B','reason':'Binding\x20not\x20specified\x20(service\x20+\x20items\x20+\x20owner)'}));else a['intent']?.['action']==='buy'&&!a['binding']['service']&&(b['push']('B'),c['push']({'dimension':'B','reason':'service\x20address\x20missing'}));return!a['data_source']&&a['intent']?.['action']==='buy'&&(b['push']('C'),c['push']({'dimension':'C','reason':'Data\x20source\x20not\x20specified\x20(where\x20fields\x20come\x20from)'})),!a['operations']&&(a['intent']&&a['intent']['action']!=='buy'&&(b['push']('D'),c['push']({'dimension':'D','reason':'Operations\x20not\x20enumerated'}))),!a['logic']&&(b['push']('E'),c['push']({'dimension':'E','reason':'Logic\x20flow\x20not\x20defined\x20(state\x20transitions\x20+\x20mutex)'})),!a['constraints']&&(b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'})),{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export function validateConstraints(a){const c=[];if(a['binding']){const d=a['binding'];d['agents']['length']>MAX_AGENT_COUNT&&c['push']({'constraint_id':'F-O-08','severity':'
|
|
1
|
+
import{MAX_AGENT_COUNT}from'@wowok/wowok';import{ORDER_SCENES,findSceneById,inferSceneFromIntent}from'./order-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'buy','lifecycle_phase':a['lifecycle_phase']??'P-O-01_Created','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_O_01_no_permission_uses_owner_agent':!![],'F_O_02_machine_is_snapshot':!![],'F_O_03_compound_creation_via_service_buy':!![],'F_O_04_progress_binding_does_not_freeze_owner_agent':!![],'F_O_05_claimed_by_irreversible_blocks_dispute':!![],'F_O_06_only_new_order_event_emitted':!![],'F_O_07_dispute_max_10':!![],'F_O_08_agent_max_10_actual_11':!![],'F_O_09_no_store_cannot_be_nested':!![],'F_O_10_sdk_builder_equals_move_owner':!![],'F_O_11_receive_gated_by_receiving_existence':!![],'F_O_12_receive_funds_always_to_owner':!![],'F_O_13_e_progress_not_specified_creation_check':!![],'F_O_14_buy_is_atomic':!![],'F_O_15_package_only_callbacks':!![],'F_O_16_order_allocation_1_to_1':!![],'F_O_17_order_progress_1_to_1':!![],'F_O_18_wip_hash_no_empty_string':!![],'F_O_19_saleitem_item_to_purchaseditem_name':!![],'F_O_20_time_auto_set':!![],'F_O_21_new_order_event_fields':!![],'F_O_22_required_info_contact_or_wts':!![],'F_O_23_transfer_to_irreversible':!![],'F_O_24_sdk_no_client_side_count_check':!![],'F_O_25_service_decoupled_after_publish':!![]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else!a['intent']['rule_sentence']&&(b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'}));if(!a['binding'])a['intent']?.['action']==='buy'&&(b['push']('B'),c['push']({'dimension':'B','reason':'Binding\x20not\x20specified\x20(service\x20+\x20items\x20+\x20owner)'}));else a['intent']?.['action']==='buy'&&!a['binding']['service']&&(b['push']('B'),c['push']({'dimension':'B','reason':'service\x20address\x20missing'}));return!a['data_source']&&a['intent']?.['action']==='buy'&&(b['push']('C'),c['push']({'dimension':'C','reason':'Data\x20source\x20not\x20specified\x20(where\x20fields\x20come\x20from)'})),!a['operations']&&(a['intent']&&a['intent']['action']!=='buy'&&(b['push']('D'),c['push']({'dimension':'D','reason':'Operations\x20not\x20enumerated'}))),!a['logic']&&(b['push']('E'),c['push']({'dimension':'E','reason':'Logic\x20flow\x20not\x20defined\x20(state\x20transitions\x20+\x20mutex)'})),!a['constraints']&&(b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'})),{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export function validateConstraints(a){const c=[];if(a['binding']){const d=a['binding'];d['agents']['length']>MAX_AGENT_COUNT&&c['push']({'constraint_id':'F-O-08','severity':'high','message':'Agent\x20count\x20'+d['agents']['length']+'\x20exceeds\x20MAX_AGENT_COUNT\x20'+MAX_AGENT_COUNT+'\x20(distinct\x20count\x20after\x20on-chain\x20dedup\x20is\x20the\x20limit\x20—\x20E_MAX_AGENT_COUNT)','current_value':d['agents']['length'],'limit':MAX_AGENT_COUNT});for(const e of d['items']){(!e['wip_hash']||e['wip_hash']==='')&&c['push']({'constraint_id':'F-O-18','severity':'high','message':'Item\x20\x22'+e['name']+'\x22\x20has\x20empty\x20wip_hash\x20(Move\x20rejects\x20empty\x20string)'});}}if(a['operations'])for(const f of a['operations']['operations']){f['type']==='set_agent_list'&&a['binding']?.['progress']&&c['push']({'constraint_id':'F-O-04','severity':'medium','message':'Setting\x20the\x20agent\x20list\x20mid-fulfillment:\x20Progress\x20is\x20bound\x20—\x20allowed\x20on-chain\x20(no\x20freeze),\x20but\x20the\x20call\x20REPLACES\x20the\x20entire\x20agent\x20list;\x20agents\x20omitted\x20from\x20the\x20new\x20list\x20silently\x20lose\x20access'}),f['type']==='transfer_to'&&c['push']({'constraint_id':'F-O-23','severity':'critical','message':'transfer_to\x20is\x20IRREVERSIBLE\x20—\x20new\x20owner\x20'+f['new_owner']+'\x20will\x20take\x20over\x20ALL\x20permissions'}),f['type']==='set_agent_list'&&f['agents']['length']>MAX_AGENT_COUNT&&c['push']({'constraint_id':'F-O-08','severity':'high','message':'Setting\x20'+f['agents']['length']+'\x20agents\x20exceeds\x20MAX_AGENT_COUNT\x20'+MAX_AGENT_COUNT,'current_value':f['agents']['length'],'limit':MAX_AGENT_COUNT});}return c;}export function generateConfirmationText(a){const c=[];c['push']('═══\x20Order\x20Confirmation\x20═══'),c['push']('');if(a['intent']){c['push']('Action:\x20'+a['intent']['action']),c['push']('Lifecycle\x20phase:\x20'+a['intent']['lifecycle_phase']),c['push']('Intent:\x20'+a['intent']['rule_sentence']);if(a['intent']['failure_conditions']['length']>0x0){c['push']('Failure\x20conditions:');for(const f of a['intent']['failure_conditions'])c['push']('\x20\x20-\x20'+f);}c['push']('');}if(a['binding']){const g=a['binding'];c['push']('─\x20Binding\x20(Service\x20snapshot)\x20──────────────'),c['push']('Service:\x20'+g['service']),c['push']('Machine\x20snapshot:\x20'+(g['machine_snapshot']??'(none\x20—\x20no\x20workflow)')),c['push']('Discount:\x20'+(g['discount']??'(none)')),c['push']('Items:\x20'+g['items']['length']);for(const h of g['items']){c['push']('\x20\x20-\x20'+h['name']+'\x20x'+h['quantity']+'\x20@\x20'+h['price']+'\x20(wip:\x20'+h['wip_hash']['slice'](0x0,0xa)+'...)');}c['push']('Amount:\x20'+g['amount']+'\x20MIST'),c['push']('Owner\x20(Move)\x20/\x20Builder\x20(SDK):\x20'+g['owner']),c['push']('Agents:\x20'+(g['agents']['length']>0x0?g['agents']['join'](',\x20'):'(none)')),c['push']('Progress:\x20'+(g['progress']??'(not\x20bound)')),c['push']('Allocation:\x20'+(g['allocation']??'(not\x20bound)')),c['push']('');}if(a['data_source']){c['push']('─\x20Data\x20Source\x20──────────────');const j=a['data_source'];c['push']('Service:\x20'+j['service_source']),c['push']('Machine:\x20'+j['machine_source']),c['push']('Amount:\x20'+j['amount_source']),c['push']('Owner:\x20'+j['owner_source']);if(j['progress_source']!=='none')c['push']('Progress:\x20'+j['progress_source']);if(j['allocation_source']!=='none')c['push']('Allocation:\x20'+j['allocation_source']);c['push']('');}if(a['operations']&&a['operations']['operations']['length']>0x0){c['push']('─\x20Operations\x20──────────────');for(const k of a['operations']['operations'])c['push']('\x20\x20-\x20'+JSON['stringify'](k));c['push']('');}a['logic']&&(c['push']('─\x20Logic\x20──────────────'),c['push']('State\x20transitions:\x20'+a['logic']['state_transitions']['length']),c['push']('Field\x20mutex\x20rules:\x20'+a['logic']['field_mutex']['length']),c['push']('Cross-object\x20flows:\x20'+a['logic']['cross_object_flows']['length']),c['push'](''));const e=validateConstraints(a);if(e['length']>0x0){c['push']('─\x20Constraint\x20Violations\x20──────────────');for(const l of e)c['push']('\x20\x20['+l['severity']+']\x20'+l['constraint_id']+':\x20'+l['message']);c['push']('');}return c['join']('\x0a');}export function verifySnapshotMechanism(a){if(!a['binding'])return{'snapshot_understood':![],'message':'Binding\x20not\x20specified\x20—\x20cannot\x20verify\x20snapshot'};if(a['binding']['machine_snapshot']&&!a['data_source'])return{'snapshot_understood':![],'message':'machine_snapshot\x20set\x20but\x20data_source\x20missing\x20—\x20cannot\x20confirm\x20snapshot\x20semantics'};if(a['binding']['machine_snapshot']&&a['data_source']?.['machine_source']!=='service_machine_snapshot')return{'snapshot_understood':![],'message':'machine_source\x20is\x20'+a['data_source']?.['machine_source']+',\x20expected\x20\x22service_machine_snapshot\x22'};return{'snapshot_understood':!![],'message':'Snapshot\x20mechanism\x20correctly\x20captured:\x20machine\x20is\x20copied\x20from\x20service.machine\x20at\x20buy\x20time'};}export function inferLifecyclePhase(a){if(a['claimed_by'])return'P-O-04_Claimed';if(a['progress']){if(a['progress_at_terminal'])return'P-O-05_Completed';if(a['progress_at_cancel'])return'P-O-06_Cancelled';return'P-O-02_Progressing';}if(a['dispute']&&a['dispute']['length']>0x0)return'P-O-03_Disputed';return'P-O-01_Created';}export function matchSceneFromPuzzle(a){if(!a['intent'])return undefined;return inferSceneFromIntent(a['intent']['rule_sentence'])??inferSceneFromIntent(a['intent']['action']);}export function listAllScenes(){return ORDER_SCENES;}export function lookupScene(a){return findSceneById(a);}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
1
|
+
import { type Facts, type FindingExposure } from "../config/rule-engine.js";
|
|
2
|
+
import { type OrderScene } from "./order-ledger.js";
|
|
3
|
+
export type OrderRiskLevel = "critical" | "high" | "medium" | "low";
|
|
3
4
|
export type OrderRiskCategory = "structural" | "semantic" | "authority" | "lifecycle" | "cross_object";
|
|
4
5
|
export interface OrderRisk {
|
|
5
6
|
id: string;
|
|
@@ -11,6 +12,7 @@ export interface OrderRisk {
|
|
|
11
12
|
scenario: string;
|
|
12
13
|
mitigation: string;
|
|
13
14
|
evidence?: string;
|
|
15
|
+
exposure?: FindingExposure;
|
|
14
16
|
}
|
|
15
17
|
export type OrderStakeholder = "owner" | "agent" | "arbitrator" | "service_provider" | "system";
|
|
16
18
|
export interface OrderRiskRule {
|
|
@@ -22,13 +24,13 @@ export interface OrderRiskRule {
|
|
|
22
24
|
export interface OrderRiskCheckContext {
|
|
23
25
|
object?: string;
|
|
24
26
|
is_buy_operation?: boolean;
|
|
25
|
-
|
|
27
|
+
agent_list?: {
|
|
26
28
|
agents: string[];
|
|
27
29
|
};
|
|
28
30
|
current_dispute_count?: number;
|
|
29
31
|
claimed_by_set?: boolean;
|
|
30
32
|
progress_bound?: boolean;
|
|
31
|
-
operation?: "
|
|
33
|
+
operation?: "set_agent_list" | "update_required_info" | "progress_advance" | "arb_confirm" | "arb_objection" | "arb_claim_compensation" | "receive" | "transfer_to" | "service_buy";
|
|
32
34
|
items?: {
|
|
33
35
|
name: string;
|
|
34
36
|
price: string;
|
|
@@ -45,11 +47,9 @@ export interface OrderRiskCheckContext {
|
|
|
45
47
|
caller_is_owner?: boolean;
|
|
46
48
|
caller_is_agent?: boolean;
|
|
47
49
|
}
|
|
50
|
+
export declare function orderRiskFacts(ctx: OrderRiskCheckContext): Facts;
|
|
48
51
|
export declare const ORDER_RISK_VERSION = "1.0.0";
|
|
49
52
|
export declare function getAllOrderRiskRules(): OrderRiskRule[];
|
|
50
|
-
export declare function getOrderRiskRulesCount(): number;
|
|
51
|
-
export declare function getOrderRiskRulesByCategory(category: OrderRiskCategory): OrderRiskRule[];
|
|
52
|
-
export declare function getOrderRiskRuleById(id: string): OrderRiskRule | undefined;
|
|
53
53
|
export interface OrderRiskAssessment {
|
|
54
54
|
summary: string;
|
|
55
55
|
scene?: OrderScene;
|
|
@@ -60,8 +60,3 @@ export interface OrderRiskAssessment {
|
|
|
60
60
|
needs_human_review: boolean;
|
|
61
61
|
}
|
|
62
62
|
export declare function assessOrderRisks(ctx: OrderRiskCheckContext): OrderRiskAssessment;
|
|
63
|
-
export declare function checkPermissionLayer(operation: string, caller_is_owner: boolean, caller_is_agent: boolean): {
|
|
64
|
-
allowed: boolean;
|
|
65
|
-
layer: OrderPermissionLayer;
|
|
66
|
-
reason?: string;
|
|
67
|
-
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MAX_AGENT_COUNT,MAX_DISPUTE_COUNT}from'@wowok/wowok';import{findSceneById}from'./order-ledger.js';const R_O_1_01={'id':'R-O-1-01','category':'structural','trigger':'Order\x20has\x2014\x20fields\x20but\x20no\x20Permission\x20field\x20(unique\x20among\x2022\x20objects)','check':a=>{if(a['is_buy_operation'])return{'id':'R-O-1-01','level':'LOW','category':'structural','title':'Order\x20uses\x20owner/agent\x20dual-layer\x20(no\x20Permission)','description':'Order\x20is\x20the\x20only\x20business\x20object\x20among\x2022\x20WoWok\x20objects\x20that\x20does\x20NOT\x20use\x20the\x20Permission\x20system.\x20All\x20access\x20control\x20flows\x20through\x20assert_owner\x20and\x20has_op_permission\x20inline\x20functions.','affected_stakeholders':['system','owner','agent'],'scenario':'Developer\x20assumes\x20Order\x20uses\x20Permission\x20and\x20writes\x20permission::check\x20logic','mitigation':'Use\x20owner/agent\x20checks\x20directly.\x20Do\x20NOT\x20attempt\x20to\x20apply\x20a\x20Permission\x20object\x20to\x20Order.','evidence':'no_permission_field'};return null;}},R_O_1_02={'id':'R-O-1-02','category':'structural','trigger':'Item\x20count\x20check\x20(informational;\x20no\x20Move-level\x20limit\x20on\x20items)','check':a=>{if(!a['items']||a['items']['length']===0x0)return null;if(a['items']['length']>0x32)return{'id':'R-O-1-02','level':'LOW','category':'structural','title':'Large\x20items\x20list\x20may\x20exceed\x20tx\x20size\x20limits','description':a['items']['length']+'\x20items\x20in\x20a\x20single\x20Order\x20—\x20no\x20protocol\x20limit,\x20but\x20large\x20lists\x20increase\x20transaction\x20size\x20and\x20may\x20hit\x20gas/size\x20limits','affected_stakeholders':['owner'],'scenario':'Bulk\x20purchase\x20with\x20many\x20line\x20items','mitigation':'Split\x20into\x20multiple\x20Orders\x20if\x20items\x20>\x2050','evidence':'items_count='+a['items']['length']};return null;}},R_O_1_03={'id':'R-O-1-03','category':'structural','trigger':'dispute\x20count\x20>=\x20MAX_DISPUTE_COUNT\x20(10)','check':a=>{const b=a['current_dispute_count']??0x0;if(b>=MAX_DISPUTE_COUNT)return{'id':'R-O-1-03','level':'HIGH','category':'structural','title':'Dispute\x20count\x20at\x20MAX_DISPUTE_COUNT\x20limit','description':'Order\x20already\x20has\x20'+b+'\x20disputes\x20(MAX_DISPUTE_COUNT='+MAX_DISPUTE_COUNT+').\x20Next\x20dispute()\x20call\x20will\x20abort\x20E_MAX_DISPUTE_COUNT.','affected_stakeholders':['owner','agent','arbitrator'],'scenario':'Filing\x2011th\x20dispute\x20on\x20an\x20Order\x20with\x2010\x20existing\x20disputes','mitigation':'Resolve\x20existing\x20disputes\x20(via\x20arb_claim_compensation)\x20before\x20filing\x20new\x20ones.\x20Note:\x20claimed_by\x20blocks\x20ALL\x20future\x20disputes.','evidence':'dispute_count='+b};return null;}},R_O_1_04={'id':'R-O-1-04','category':'structural','trigger':'agent_set\x20—\x20list\x20REPLACEMENT\x20semantics\x20(omitted\x20agents\x20lose\x20access)\x20and\x20distinct\x20count\x20limit','check':a=>{if(!a['agent_set'])return null;const b=new Set(a['agent_set']['agents'])['size'];if(b>MAX_AGENT_COUNT)return{'id':'R-O-1-04','level':'HIGH','category':'structural','title':'Distinct\x20agent\x20count\x20exceeds\x20MAX_AGENT_COUNT','description':'Attempting\x20to\x20set\x20'+b+'\x20distinct\x20agents\x20(input\x20'+a['agent_set']['agents']['length']+';\x20duplicates\x20are\x20deduped\x20on-chain).\x20Move\x20asserts\x20length\x20<\x20MAX_AGENT_COUNT\x20('+MAX_AGENT_COUNT+')\x20before\x20each\x20push\x20—\x20the\x20call\x20will\x20abort\x20E_MAX_AGENT_COUNT.','affected_stakeholders':['owner','system'],'scenario':'Setting\x2011\x20distinct\x20agents\x20in\x20one\x20call','mitigation':'Reduce\x20to\x20at\x20most\x20'+MAX_AGENT_COUNT+'\x20distinct\x20agents\x20per\x20call,\x20or\x20set\x20in\x20two\x20batches\x20(second\x20call\x20REPLACES\x20the\x20first\x20—\x20union\x20the\x20lists\x20manually).','evidence':'distinct_agents='+b+',\x20input_count='+a['agent_set']['agents']['length']+',\x20max='+MAX_AGENT_COUNT};return null;}},R_O_1_05={'id':'R-O-1-05','category':'structural','trigger':'wip_hash\x20is\x20empty\x20string\x20in\x20any\x20item','check':a=>{if(!a['items'])return null;const b=a['items']['find'](c=>!c['wip_hash']||c['wip_hash']==='');if(b)return{'id':'R-O-1-05','level':'HIGH','category':'structural','title':'Empty\x20wip_hash\x20in\x20item','description':'Item\x20\x22'+b['name']+'\x22\x20has\x20empty\x20wip_hash.\x20Move\x20rejects\x20empty\x20strings\x20(F-O-18).','affected_stakeholders':['owner'],'scenario':'User\x20submits\x20item\x20without\x20computing\x20WIP\x20hash','mitigation':'Compute\x20wip_hash\x20from\x20the\x20work-in-progress\x20file\x20content\x20before\x20service::buy().','evidence':'item_name='+b['name']};return null;}},R_O_2_01={'id':'R-O-2-01','category':'semantic','trigger':'Order.machine\x20snapshot\x20differs\x20from\x20current\x20Service.machine','check':a=>{if(!a['current_service_machine']||!a['order_machine_snapshot'])return null;if(a['current_service_machine']!==a['order_machine_snapshot'])return{'id':'R-O-2-01','level':'HIGH','category':'semantic','title':'Machine\x20snapshot\x20diverges\x20from\x20Service.machine','description':'Order.machine='+a['order_machine_snapshot']+'\x20was\x20snapshotted\x20at\x20buy\x20time.\x20Service.machine\x20is\x20now\x20'+a['current_service_machine']+'.\x20Same\x20Service\x20has\x20Orders\x20running\x20different\x20Machine\x20versions.','affected_stakeholders':['owner','service_provider','arbitrator'],'scenario':'Service\x20provider\x20upgrades\x20Machine\x20after\x20some\x20Orders\x20are\x20created','mitigation':'Audit\x20each\x20Order\x27s\x20machine\x20snapshot\x20separately.\x20Document\x20Machine\x20version\x20per\x20Order.\x20Plan\x20migration\x20paths\x20for\x20legacy\x20Orders.','evidence':'order_machine='+a['order_machine_snapshot']+',\x20service_machine='+a['current_service_machine']};return null;}},R_O_2_02={'id':'R-O-2-02','category':'semantic','trigger':'SDK\x20uses\x20\x27builder\x27\x20field\x20for\x20Move\x27s\x20\x27owner\x27\x20field\x20(naming\x20deviation)','check':a=>{if(a['object'])return{'id':'R-O-2-02','level':'MEDIUM','category':'semantic','title':'SDK\x20builder\x20≠\x20Move\x20owner\x20(only\x20naming\x20deviation\x20in\x2022\x20objects)','description':'SDK\x20ObjectOrder.builder\x20corresponds\x20to\x20Move\x20Order.owner.\x20This\x20is\x20the\x20only\x20field\x20name\x20deviation\x20across\x20all\x2022\x20WoWok\x20objects.\x20All\x20Order\x20knowledge\x20uses\x20Move\x27s\x20\x27owner\x27\x20as\x20canonical.','affected_stakeholders':['system'],'scenario':'Developer\x20reads\x20SDK\x20\x27builder\x27\x20and\x20assumes\x20it\x27s\x20a\x20different\x20concept\x20from\x20owner','mitigation':'Use\x20moveToSdkField()/sdkToMoveField()\x20helpers\x20from\x20order-ledger.ts.\x20Document\x20\x27builder\x20=\x20owner\x27\x20in\x20all\x20SDK\x20consumers.','evidence':'sdk_field=builder,\x20move_field=owner'};return null;}},R_O_2_03={'id':'R-O-2-03','category':'semantic','trigger':'E_PROGRESS_NOT_SPECIFIED\x20—\x20single\x20real\x20semantics\x20(order::create\x20without\x20Progress),\x20commonly\x20misdocumented\x20as\x20an\x20agent_set/owner_change\x20freeze','check':a=>{if(!a['operation'])return null;if(a['operation']==='service_buy'&&a['progress_bound']===![])return{'id':'R-O-2-03','level':'HIGH','category':'semantic','title':'order::create\x20will\x20abort\x20E_PROGRESS_NOT_SPECIFIED\x20—\x20machine\x20bound\x20but\x20Progress\x20missing','description':'order::create\x20asserts\x20progress.is_some()\x20whenever\x20machine.is_some()\x20(order.move:132).\x20A\x20buy\x20against\x20a\x20machine-driven\x20Service\x20MUST\x20bind\x20a\x20Progress\x20object\x20(service::order_progress)\x20before\x20order::create,\x20else\x20E_PROGRESS_NOT_SPECIFIED\x20(code\x203).','affected_stakeholders':['owner'],'scenario':'Machine-driven\x20Service\x20purchased\x20without\x20creating/binding\x20the\x20Progress\x20object\x20first','mitigation':'Bind\x20Progress\x20before\x20order::create:\x20call\x20service::order_progress(service,\x20order,\x20machine,\x20...)\x20which\x20invokes\x20order::on_progress.\x20Note:\x20agent_set/owner_change\x20are\x20NOT\x20affected\x20—\x20they\x20are\x20never\x20frozen\x20by\x20Progress\x20binding.','evidence':'operation='+a['operation']+',\x20progress_bound='+a['progress_bound']};return null;}},R_O_2_04={'id':'R-O-2-04','category':'semantic','trigger':'SaleItem.item\x20→\x20PurchasedItem.name\x20field\x20name\x20mapping','check':a=>{if(a['is_buy_operation'])return{'id':'R-O-2-04','level':'LOW','category':'semantic','title':'SaleItem.item\x20(Move)\x20maps\x20to\x20PurchasedItem.name\x20(SDK)','description':'Move\x20struct\x20SaleItem\x20uses\x20field\x20\x27item\x27,\x20but\x20SDK\x20ObjectOrder.items\x20uses\x20field\x20\x27name\x27.\x20This\x20is\x20the\x20second\x20naming\x20deviation\x20in\x20Order\x20system\x20(after\x20builder/owner).','affected_stakeholders':['system'],'scenario':'Cross-layer\x20data\x20mapping\x20between\x20Move\x20and\x20SDK','mitigation':'Use\x20consistent\x20SDK\x20field\x20names\x20in\x20user-facing\x20code;\x20document\x20Move\x20↔\x20SDK\x20mapping\x20in\x20audit\x20logs.','evidence':'move_field=SaleItem.item,\x20sdk_field=PurchasedItem.name'};return null;}},R_O_3_01={'id':'R-O-3-01','category':'authority','trigger':'Agent\x20attempts\x20receive\x20or\x20transfer_to\x20(L1\x20owner-only\x20operations)','check':a=>{if(!a['operation'])return null;if((a['operation']==='receive'||a['operation']==='transfer_to')&&a['caller_is_agent']&&!a['caller_is_owner'])return{'id':'R-O-3-01','level':'HIGH','category':'authority','title':'Agent\x20attempting\x20owner-only\x20operation','description':'Agent\x20cannot\x20call\x20'+a['operation']+'\x20—\x20these\x20are\x20L1\x20owner-only\x20operations\x20(assert_owner).\x20Agent\x20can\x20operate\x20progress/arb_*/required_info\x20but\x20CANNOT\x20receive\x20funds\x20or\x20transfer\x20ownership.','affected_stakeholders':['agent','owner'],'scenario':'Logistics\x20agent\x20tries\x20to\x20collect\x20payment\x20on\x20behalf\x20of\x20buyer','mitigation':'Owner\x20must\x20call\x20receive/transfer_to\x20directly.\x20If\x20delegation\x20is\x20needed,\x20owner\x20can\x20transfer_to\x20a\x20multi-sig\x20wallet\x20that\x20includes\x20the\x20agent.','evidence':'operation='+a['operation']+',\x20caller=agent'};return null;}},R_O_3_02={'id':'R-O-3-02','category':'authority','trigger':'Non-owner\x20non-agent\x20attempts\x20operation\x20(no\x20permission)','check':a=>{if(!a['operation'])return null;if(a['caller_is_owner']===![]&&a['caller_is_agent']===![])return{'id':'R-O-3-02','level':'HIGH','category':'authority','title':'Non-owner\x20non-agent\x20attempting\x20operation','description':'Caller\x20is\x20neither\x20owner\x20nor\x20agent.\x20L2\x20operations\x20(progress,\x20arb_confirm,\x20arb_objection)\x20require\x20has_op_permission\x20—\x20aborts\x20E_NOT_OP_PERMISSION.\x20L1\x20operations\x20(transfer_to,\x20agent_set,\x20required_info_update)\x20additionally\x20require\x20assert_owner\x20—\x20aborts\x20E_NOT_THE_OWNER.','affected_stakeholders':['system'],'scenario':'Random\x20address\x20attempts\x20to\x20advance\x20someone\x20else\x27s\x20Order','mitigation':'Verify\x20caller\x20is\x20owner\x20or\x20in\x20agent[]\x20before\x20submitting\x20transaction.','evidence':'operation='+a['operation']+',\x20caller=unauthorized'};return null;}},R_O_3_03={'id':'R-O-3-03','category':'authority','trigger':'arb_claim_compensation\x20called\x20(sets\x20claimed_by,\x20irreversible)','check':a=>{if(a['operation']!=='arb_claim_compensation')return null;return{'id':'R-O-3-03','level':'HIGH','category':'authority','title':'arb_claim_compensation\x20is\x20IRREVERSIBLE\x20(claimed_by\x20one-time\x20set)','description':'Setting\x20claimed_by\x20is\x20permanent.\x20After\x20this\x20call:\x20(1)\x20claimed_by\x20cannot\x20be\x20reset,\x20(2)\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED),\x20(3)\x20all\x20unresolved\x20disputes\x20become\x20unactionable.\x20If\x20first\x20compensation\x20is\x20insufficient,\x20buyer\x20has\x20no\x20recourse.','affected_stakeholders':['owner','agent','arbitrator'],'scenario':'Buyer\x20claims\x20partial\x20compensation,\x20then\x20discovers\x20additional\x20damages','mitigation':'BEFORE\x20claiming:\x20(1)\x20enumerate\x20ALL\x20disputes,\x20(2)\x20ensure\x20proposition\x20covers\x20all\x20damages,\x20(3)\x20confirm\x20Arb\x20ruling\x20is\x20final.\x20Add\x20explicit\x20user\x20confirmation\x20(C-O-08).','evidence':'operation=arb_claim_compensation,\x20current_claimed_by='+(a['claimed_by_set']??![])};}},R_O_3_04={'id':'R-O-3-04','category':'authority','trigger':'dispute\x20attempted\x20after\x20claimed_by\x20is\x20set','check':a=>{if(a['claimed_by_set']&&(a['operation']==='arb_confirm'||a['operation']==='arb_objection'))return{'id':'R-O-3-04','level':'HIGH','category':'authority','title':'Cannot\x20file\x20new\x20dispute\x20after\x20claimed_by\x20is\x20set','description':'Order.claimed_by\x20is\x20set\x20—\x20any\x20new\x20dispute()\x20call\x20aborts\x20E_ORDER_ALREADY_CLAIMED.\x20arb_confirm/arb_objection\x20trigger\x20dispute()\x20internally.','affected_stakeholders':['owner','agent'],'scenario':'Buyer\x20claims\x20compensation\x20then\x20tries\x20to\x20file\x20additional\x20dispute','mitigation':'Resolve\x20ALL\x20disputes\x20BEFORE\x20calling\x20arb_claim_compensation.\x20claimed_by\x20is\x20terminal\x20for\x20dispute\x20flow.','evidence':'operation='+a['operation']+',\x20claimed_by_set=true'};return null;}},R_O_4_01={'id':'R-O-4-01','category':'lifecycle','trigger':'Attempt\x20to\x20create\x20Order\x20independently\x20(not\x20via\x20service::buy)','check':a=>{if(a['is_buy_operation']===![]&&a['operation']==='service_buy'&&!a['object'])return{'id':'R-O-4-01','level':'CRITICAL','category':'lifecycle','title':'Order\x20cannot\x20be\x20created\x20independently\x20(compound\x20creation\x20only)','description':'order::new()\x20is\x20package-only\x20—\x20only\x20service::buy()\x20can\x20create\x20Orders.\x20Any\x20attempt\x20to\x20call\x20order::new\x20directly\x20will\x20fail\x20at\x20the\x20Move\x20module\x20boundary.\x20Order\x20+\x20Allocation\x20+\x20Progress\x20are\x20created\x20atomically\x20in\x20one\x20transaction.','affected_stakeholders':['system','owner'],'scenario':'Developer\x20tries\x20to\x20construct\x20Order\x20independently\x20for\x20testing','mitigation':'Always\x20use\x20service::buy()\x20to\x20create\x20Orders.\x20For\x20testing,\x20deploy\x20a\x20minimal\x20Service\x20with\x20machine/allocators\x20configured.','evidence':'independent_creation_attempted'};return null;}},R_O_4_02={'id':'R-O-4-02','category':'lifecycle','trigger':'agent_set\x20attempted\x20mid-fulfillment\x20(Progress\x20bound)\x20—\x20replacement\x20may\x20revoke\x20active\x20agents','check':a=>{if(!a['operation'])return null;if(a['operation']==='agent_set'&&a['progress_bound'])return{'id':'R-O-4-02','level':'MEDIUM','category':'lifecycle','title':'Mid-fulfillment\x20agent_set\x20—\x20replacement\x20may\x20silently\x20revoke\x20active\x20agents','description':'agent_set\x20is\x20allowed\x20at\x20ANY\x20time\x20(no\x20Progress\x20freeze\x20exists\x20on-chain),\x20but\x20it\x20REPLACES\x20the\x20entire\x20list:\x20an\x20active\x20agent\x20omitted\x20from\x20the\x20new\x20list\x20immediately\x20loses\x20L2\x20access\x20(Progress\x20advance,\x20arb\x20operations)\x20and\x20their\x20EntityOrders\x20role\x20record\x20is\x20removed.\x20A\x20workflow\x20waiting\x20on\x20that\x20agent\x20to\x20advance\x20Progress\x20would\x20stall.','affected_stakeholders':['owner','agent'],'scenario':'Owner\x20adjusts\x20the\x20agent\x20list\x20mid-fulfillment\x20and\x20accidentally\x20drops\x20the\x20agent\x20responsible\x20for\x20the\x20next\x20Progress\x20node','mitigation':'When\x20changing\x20agents\x20mid-fulfillment,\x20always\x20include\x20the\x20union\x20of\x20current\x20active\x20agents\x20plus\x20the\x20additions.\x20Query\x20the\x20current\x20agent\x20list\x20first\x20(order\x20query),\x20merge,\x20then\x20submit.','evidence':'operation=agent_set,\x20progress_bound='+a['progress_bound']};return null;}},R_O_4_03={'id':'R-O-4-03','category':'lifecycle','trigger':'Progress\x20advance\x20attempted\x20without\x20progress\x20bound','check':a=>{if(a['operation']==='progress_advance'&&a['progress_bound']===![])return{'id':'R-O-4-03','level':'HIGH','category':'lifecycle','title':'Cannot\x20advance\x20Progress\x20—\x20no\x20Progress\x20bound\x20to\x20Order','description':'Order\x20has\x20no\x20progress\x20field\x20set\x20(Service\x20had\x20no\x20machine\x20configured).\x20Cannot\x20advance\x20a\x20non-existent\x20Progress.\x20SDK\x20CallOrder\x20validates\x20this\x20pre-flight\x20(CallOrder_Data.progress\x20requires\x20order.machine\x20and\x20order.progress).','affected_stakeholders':['owner','agent'],'scenario':'Buyer\x20tries\x20to\x20advance\x20Progress\x20on\x20an\x20Order\x20created\x20from\x20a\x20Service\x20without\x20machine','mitigation':'Use\x20a\x20Service\x20with\x20machine\x20configured.\x20If\x20manual\x20lifecycle\x20is\x20needed,\x20track\x20state\x20off-chain.','evidence':'operation=progress_advance,\x20progress_bound=false'};return null;}},R_O_4_04={'id':'R-O-4-04','category':'lifecycle','trigger':'arb_confirm/arb_objection/arb_claim_compensation\x20(irreversible\x20Arb\x20operations)','check':a=>{if(!a['operation'])return null;if(a['operation']==='arb_confirm'||a['operation']==='arb_objection'||a['operation']==='arb_claim_compensation')return{'id':'R-O-4-04','level':'HIGH','category':'lifecycle','title':a['operation']+'\x20is\x20irreversible\x20(triggers\x20Arb\x20flow)','description':a['operation']+'\x20triggers\x20the\x20Arbitration\x20workflow\x20which\x20cannot\x20be\x20undone.\x20arb_confirm\x20files\x20a\x20new\x20dispute,\x20arb_objection\x20requests\x20re-arbitration,\x20arb_claim_compensation\x20sets\x20claimed_by\x20permanently.','affected_stakeholders':['owner','agent','arbitrator'],'scenario':'User\x20accidentally\x20files\x20arb_confirm\x20without\x20understanding\x20consequences','mitigation':'Add\x20explicit\x20user\x20confirmation\x20(C-O-08,\x20C-O-11,\x20C-O-12)\x20before\x20these\x20operations.\x20Show\x20warning\x20text\x20describing\x20irreversibility.','evidence':'operation='+a['operation']};return null;}},R_O_4_05={'id':'R-O-4-05','category':'lifecycle','trigger':'receive\x20attempted\x20but\x20no\x20Receiving\x20exists\x20at\x20the\x20caller\x27s\x20address\x20(allocation::alloc\x20has\x20not\x20distributed\x20a\x20payment)','check':a=>{if(a['operation']==='receive'&&a['receiving_exists']===![])return{'id':'R-O-4-05','level':'HIGH','category':'lifecycle','title':'receive\x20blocked\x20—\x20no\x20Receiving\x20object\x20(allocation::alloc\x20has\x20not\x20run)','description':'owner_receive\x20is\x20gated\x20by\x20Receiving\x20existence:\x20allocation::alloc\x20must\x20have\x20run\x20on\x20the\x20Order\x27s\x20Allocation\x20object\x20and\x20included\x20the\x20caller\x27s\x20address\x20in\x20the\x20payment\x20recipients.\x20Without\x20a\x20Receiving,\x20the\x20transaction\x20cannot\x20be\x20constructed\x20(no\x20E_ORDER_DELIVERING\x20abort\x20exists\x20on-chain\x20—\x20Progress\x20terminal\x20state\x20is\x20NOT\x20a\x20receive\x20gate).','affected_stakeholders':['owner'],'scenario':'Buyer\x20tries\x20to\x20collect\x20a\x20payment\x20before\x20the\x20allocation\x20flow\x20has\x20distributed\x20it','mitigation':'1)\x20Confirm\x20allocation::alloc\x20has\x20run\x20on\x20the\x20Order\x27s\x20Allocation\x20(query\x20its\x20payment\x20vector)\x202)\x20Confirm\x20the\x20caller\x27s\x20address\x20is\x20in\x20the\x20allocator\x27s\x20sharing\x20recipients\x203)\x20Retry\x20receive\x20with\x20the\x20correct\x20Receiving\x20object\x20ID.\x20If\x20the\x20merchant\x20withholds\x20allocation,\x20file\x20arb_confirm\x20to\x20dispute.','evidence':'operation=receive,\x20receiving_exists='+a['receiving_exists']};return null;}},R_O_4_06={'id':'R-O-4-06','category':'lifecycle','trigger':'transfer_to\x20attempted\x20(irreversible\x20ownership\x20transfer)','check':a=>{if(a['operation']!=='transfer_to')return null;return{'id':'R-O-4-06','level':'CRITICAL','category':'lifecycle','title':'transfer_to\x20is\x20IRREVERSIBLE\x20—\x20new\x20owner\x20takes\x20over\x20ALL\x20permissions','description':'Ownership\x20transfer\x20to\x20'+(a['transfer_to_new_owner']??'(unknown)')+'\x20is\x20permanent.\x20New\x20owner\x20becomes\x20the\x20sole\x20receiver\x20of\x20payments\x20and\x20gains\x20full\x20L1\x20control.\x20Original\x20owner\x20loses\x20ALL\x20access.','affected_stakeholders':['owner'],'scenario':'Buyer\x20transfers\x20Order\x20to\x20wrong\x20address\x20by\x20mistake','mitigation':'1)\x20Verify\x20new\x20owner\x20address\x20twice.\x202)\x20Coordinate\x20with\x20new\x20owner\x20before\x20transfer.\x203)\x20Add\x20explicit\x20user\x20confirmation\x20(C-O-10).\x20Note:\x20transfer_to\x20is\x20allowed\x20at\x20any\x20time\x20(no\x20Progress\x20freeze\x20exists).','evidence':'new_owner='+a['transfer_to_new_owner']};}},R_O_5_01={'id':'R-O-5-01','category':'cross_object','trigger':'Service.machine\x20upgraded\x20after\x20Order\x20creation\x20(snapshot\x20divergence)','check':a=>{if(a['is_buy_operation'])return{'id':'R-O-5-01','level':'LOW','category':'cross_object','title':'Service\x20snapshot\x20mechanism\x20—\x20order.machine\x20is\x20a\x20copy,\x20not\x20a\x20reference','description':'When\x20service::buy()\x20creates\x20an\x20Order,\x20order.machine\x20is\x20COPIED\x20from\x20service.machine.\x20Future\x20Service.machine\x20upgrades\x20do\x20NOT\x20affect\x20this\x20Order.\x20Same\x20Service\x20may\x20have\x20Orders\x20running\x20different\x20Machine\x20versions.','affected_stakeholders':['owner','service_provider','arbitrator'],'scenario':'Service\x20provider\x20upgrades\x20Machine\x20workflow\x20—\x20old\x20Orders\x20keep\x20old\x20workflow','mitigation':'Track\x20Machine\x20version\x20per\x20Order\x20(via\x20order.machine\x20address).\x20Plan\x20migration\x20paths\x20for\x20legacy\x20Orders.\x20Document\x20that\x20old\x20Orders\x20are\x20decoupled.','evidence':'snapshot_mechanism'};return null;}},R_O_5_02={'id':'R-O-5-02','category':'cross_object','trigger':'Order\x20references\x20Progress\x20that\x20no\x20longer\x20exists\x20or\x20is\x20corrupted','check':a=>{if(a['progress_bound']&&a['object'])return{'id':'R-O-5-02','level':'MEDIUM','category':'cross_object','title':'Order-Progress\x201:1\x20binding\x20(E_PROGRESS_ALREADY_SPECIFIED)','description':'Order.progress\x20is\x20one-time-set\x20via\x20on_progress\x20(package-only).\x20Cannot\x20be\x20rebound.\x20If\x20Progress\x20object\x20is\x20corrupted,\x20Order\x20becomes\x20stuck\x20—\x20cannot\x20advance,\x20cannot\x20rebind.','affected_stakeholders':['owner','agent'],'scenario':'Progress\x20object\x20becomes\x20unresponsive\x20or\x20corrupted','mitigation':'Ensure\x20Progress\x20integrity\x20via\x20Machine\x20audit\x20before\x20publishing\x20Service.\x20Use\x20arb_claim_compensation\x20as\x20escape\x20hatch\x20if\x20Progress\x20is\x20stuck.','evidence':'progress_bound='+a['progress_bound']};return null;}},R_O_5_03={'id':'R-O-5-03','category':'cross_object','trigger':'Order\x20references\x20Allocation\x20that\x20no\x20longer\x20exists\x20or\x20is\x20corrupted','check':a=>{if(a['object']&&a['progress_bound'])return{'id':'R-O-5-03','level':'MEDIUM','category':'cross_object','title':'Order-Allocation\x201:1\x20binding\x20(E_ALLOCATION_ALREADY_SPECIFIED)','description':'Order.allocation\x20is\x20one-time-set\x20via\x20on_allocation\x20(package-only).\x20Cannot\x20be\x20rebound.\x20If\x20Allocation\x20object\x20is\x20corrupted,\x20fund\x20distribution\x20is\x20blocked.','affected_stakeholders':['owner','service_provider'],'scenario':'Allocation\x20object\x20has\x20wrong\x20allocator\x20configuration','mitigation':'Audit\x20order_allocators\x20configuration\x20on\x20Service\x20BEFORE\x20publishing.\x20Use\x20compensation_fund\x20as\x20fallback\x20fund\x20source.','evidence':'allocation_binding'};return null;}},R_O_5_04={'id':'R-O-5-04','category':'cross_object','trigger':'Arbitration\x20dispute\x20appended\x20to\x20Order.dispute\x20list','check':a=>{if(a['operation']==='arb_confirm')return{'id':'R-O-5-04','level':'LOW','category':'cross_object','title':'Arb\x20object\x20will\x20be\x20appended\x20to\x20order.dispute\x20(package-only\x20dispute())','description':'arb_confirm\x20triggers\x20Arb\x20module\x20to\x20call\x20order::dispute(arb_address),\x20appending\x20the\x20Arb\x20object\x20to\x20order.dispute\x20list.\x20Max\x2010\x20disputes\x20(MAX_DISPUTE_COUNT).\x20Frozen\x20when\x20claimed_by\x20is\x20set.','affected_stakeholders':['arbitrator','owner','agent'],'scenario':'Multiple\x20arb_confirm\x20calls\x20create\x20multiple\x20Arb\x20objects\x20on\x20same\x20Order','mitigation':'Track\x20dispute\x20count.\x20Once\x20at\x2010,\x20no\x20more\x20disputes\x20can\x20be\x20filed.\x20Resolve\x20existing\x20disputes\x20before\x20filing\x20new\x20ones.','evidence':'operation=arb_confirm,\x20current_disputes='+(a['current_dispute_count']??0x0)};return null;}},R_O_5_05={'id':'R-O-5-05','category':'cross_object','trigger':'External\x20system\x20expects\x20OrderCompletedEvent\x20(does\x20not\x20exist)','check':a=>{if(a['is_buy_operation']||a['object'])return{'id':'R-O-5-05','level':'MEDIUM','category':'cross_object','title':'Only\x20NewOrderEvent\x20emitted\x20—\x20no\x20OrderCompletedEvent','description':'Move\x20contract\x20ONLY\x20emits\x20NewOrderEvent\x20at\x20creation.\x20Order\x20completion/cancellation/refund\x20are\x20IMPLICIT\x20—\x20must\x20be\x20inferred\x20by\x20querying\x20Progress.current_node\x20(terminal?\x20cancel?)\x20or\x20Order.claimed_by.\x20External\x20monitoring\x20requires\x20polling,\x20not\x20event-driven.','affected_stakeholders':['system'],'scenario':'Analytics\x20dashboard\x20expects\x20OrderCompletedEvent\x20to\x20track\x20completion\x20rate','mitigation':'Build\x20composite\x20query:\x20NewOrderEvent\x20+\x20Order.progress\x20query\x20→\x20infer\x20completion.\x20Document\x20this\x20limitation\x20in\x20monitoring\x20tools.\x20Long-term:\x20advocate\x20for\x20Move\x20upgrade\x20to\x20add\x20OrderCompletedEvent.','evidence':'no_order_completed_event'};return null;}},R_O_5_06={'id':'R-O-5-06','category':'cross_object','trigger':'service::buy\x20pre-flight:\x20Service\x20not\x20published\x20or\x20paused','check':a=>{if(!a['is_buy_operation'])return null;if(a['service_published']===![])return{'id':'R-O-5-06','level':'CRITICAL','category':'cross_object','title':'Service\x20not\x20published\x20—\x20service::buy\x20will\x20abort\x20E_NOT_PUBLISHED','description':'Cannot\x20create\x20Order\x20from\x20an\x20unpublished\x20Service.\x20Service\x20must\x20be\x20published\x20(bPublished=true)\x20before\x20service::buy()\x20can\x20be\x20called.','affected_stakeholders':['owner'],'scenario':'Buyer\x20attempts\x20to\x20purchase\x20from\x20a\x20draft\x20Service','mitigation':'Verify\x20Service.bPublished=true\x20before\x20service::buy().\x20Service\x20owner\x20must\x20call\x20service::publish()\x20first.','evidence':'service_published='+a['service_published']};if(a['service_paused']===!![])return{'id':'R-O-5-06','level':'CRITICAL','category':'cross_object','title':'Service\x20paused\x20—\x20service::buy\x20will\x20abort\x20E_PAUSED','description':'Cannot\x20create\x20Order\x20from\x20a\x20paused\x20Service.\x20Service\x20must\x20be\x20unpaused\x20before\x20service::buy()\x20can\x20be\x20called.','affected_stakeholders':['owner'],'scenario':'Buyer\x20attempts\x20to\x20purchase\x20from\x20a\x20paused\x20Service\x20(e.g.\x20during\x20maintenance)','mitigation':'Wait\x20for\x20Service\x20owner\x20to\x20call\x20service::pause(false).\x20Check\x20Service.paused\x20before\x20service::buy().','evidence':'service_paused='+a['service_paused']};return null;}},ALL_RULES=[R_O_1_01,R_O_1_02,R_O_1_03,R_O_1_04,R_O_1_05,R_O_2_01,R_O_2_02,R_O_2_03,R_O_2_04,R_O_3_01,R_O_3_02,R_O_3_03,R_O_3_04,R_O_4_01,R_O_4_02,R_O_4_03,R_O_4_04,R_O_4_05,R_O_4_06,R_O_5_01,R_O_5_02,R_O_5_03,R_O_5_04,R_O_5_05,R_O_5_06];export const ORDER_RISK_VERSION='1.0.0';export function getAllOrderRiskRules(){return[...ALL_RULES];}export function getOrderRiskRulesCount(){return ALL_RULES['length'];}export function getOrderRiskRulesByCategory(a){return ALL_RULES['filter'](b=>b['category']===a);}export function getOrderRiskRuleById(a){return ALL_RULES['find'](b=>b['id']===a);}export function assessOrderRisks(a){const b=[];for(const g of ALL_RULES){const h=g['check'](a);if(h)b['push'](h);}const c=b['length']===0x0?'LOW':b['some'](i=>i['level']==='CRITICAL')?'CRITICAL':b['some'](i=>i['level']==='HIGH')?'HIGH':b['some'](i=>i['level']==='MEDIUM')?'MEDIUM':'LOW',d={};for(const i of b){d[i['category']]=(d[i['category']]??0x0)+0x1;}const e={};for(const j of b){for(const k of j['affected_stakeholders']){if(!e[k])e[k]=[];e[k]['push'](j['id']+':\x20'+j['mitigation']);}}let f;if(a['operation']){const l={'agent_set':'order_set_agent','required_info_update':'order_required_info','progress_advance':'order_advance','arb_confirm':'order_arb_confirm','arb_objection':'order_arb_objection','arb_claim_compensation':'order_arb_claim_compensation','receive':'order_receive','transfer_to':'order_transfer','service_buy':'order_create'};f=findSceneById(l[a['operation']]??'');}return{'summary':'Assessed\x20'+b['length']+'\x20risk(s)\x20across\x20'+Object['keys'](d)['length']+'\x20categories','scene':f,'risks':b,'overall_risk':c,'risks_by_category':d,'stakeholder_advice':e,'needs_human_review':b['some'](m=>m['level']==='CRITICAL'||m['level']==='HIGH')};}export function checkPermissionLayer(a,b,c){const d=['transfer_to','owner_change','agent_set','required_info_update'],e=['progress_advance','arb_confirm','arb_objection'],f=['on_progress','on_allocation','dispute','compensate'],g=['receive','arb_claim_compensation'];if(f['includes'](a))return{'allowed':![],'layer':'L3_package_only','reason':'Package-only\x20—\x20not\x20callable\x20externally'};if(d['includes'](a)){if(!b)return{'allowed':![],'layer':'L1_owner_only','reason':'Owner-only\x20operation\x20('+a+')\x20—\x20agent\x20or\x20unauthorized\x20caller'};return{'allowed':!![],'layer':'L1_owner_only'};}if(e['includes'](a)){if(!b&&!c)return{'allowed':![],'layer':'L2_owner_or_agent','reason':'Requires\x20owner\x20or\x20agent\x20permission\x20('+a+')'};return{'allowed':!![],'layer':'L2_owner_or_agent'};}if(g['includes'](a)){if(a==='receive')return{'allowed':!![],'layer':'L4_object_gated','reason':'No\x20permission\x20assert\x20—\x20caller\x20must\x20hold\x20a\x20Receiving\x20created\x20by\x20allocation::alloc;\x20funds\x20always\x20go\x20to\x20order.owner'};return{'allowed':!![],'layer':'L4_object_gated','reason':'No\x20op-permission\x20assert\x20—\x20gated\x20by\x20Arb\x20status\x20(must\x20be\x20Arbirated);\x20compensation\x20paid\x20to\x20tx\x20sender'};}return{'allowed':![],'layer':'L3_package_only','reason':'Unknown\x20operation:\x20'+a};}
|
|
1
|
+
import{MAX_AGENT_COUNT,MAX_DISPUTE_COUNT}from'@wowok/wowok';import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook}from'../config/rule-engine.js';import{findSceneById}from'./order-ledger.js';export function orderRiskFacts(a){const b=a['items']?.['find'](f=>!f['wip_hash']||f['wip_hash']===''),c=a['agent_list']?new Set(a['agent_list']['agents'])['size']:undefined,d=a['current_dispute_count']??0x0,e=!!a['current_service_machine']&&!!a['order_machine_snapshot']&&a['current_service_machine']!==a['order_machine_snapshot'];return{'object':a['object'],'is_buy_operation':a['is_buy_operation'],'operation':a['operation'],'items_count':a['items']?.['length'],'items_empty_hash_present':b!==undefined,'items_empty_hash_name':b!==undefined?String(b['name']):undefined,'distinct_agents':c,'agents_input_count':a['agent_list']?.['agents']?.['length']??(a['agent_list']?0x0:undefined),'agents_over_max':c!==undefined&&c>MAX_AGENT_COUNT,'max_agent_count':MAX_AGENT_COUNT,'dispute_count':d,'disputes_at_max':d>=MAX_DISPUTE_COUNT,'max_dispute_count':MAX_DISPUTE_COUNT,'claimed_by_set':a['claimed_by_set'],'claimed_by_display':String(a['claimed_by_set']??![]),'current_service_machine':a['current_service_machine'],'order_machine_snapshot':a['order_machine_snapshot'],'machine_snapshot_diverges':e,'progress_bound':a['progress_bound'],'receiving_exists':a['receiving_exists'],'caller_is_owner':a['caller_is_owner'],'caller_is_agent':a['caller_is_agent'],'service_published':a['service_published'],'service_paused':a['service_paused'],'transfer_to_new_owner_display':a['transfer_to_new_owner']??'(unknown)','new_owner_str':String(a['transfer_to_new_owner'])};}function orderRuleBook(){const a=getJudgmentDoc()['rules']['domains']['order'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27order\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToOrderRisk(a){return{'id':a['rule_id'],'level':a['level'],'category':a['dimension']??'structural','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'','evidence':a['evidence'],...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export const ORDER_RISK_VERSION='1.0.0';export function getAllOrderRiskRules(){const a=factoryRulePack('order');if(!a)return[];return a['rules']['map'](b=>({'id':b['rule_id'],'category':b['dimension']??'structural','trigger':b['trigger']??'','check':c=>{const {findings:d}=evaluateRuleBook([b],orderRiskFacts(c));return d['length']>0x0?findingToOrderRisk(d[0x0]):null;}}));}export function assessOrderRisks(a){const {findings:b}=evaluateRuleBook(orderRuleBook(),orderRiskFacts(a)),c=b['map'](findingToOrderRisk),d=c['length']===0x0?'low':c['some'](h=>h['level']==='critical')?'critical':c['some'](h=>h['level']==='high')?'high':c['some'](h=>h['level']==='medium')?'medium':'low',e={};for(const h of c){e[h['category']]=(e[h['category']]??0x0)+0x1;}const f={};for(const i of c){for(const j of i['affected_stakeholders']){if(!f[j])f[j]=[];f[j]['push'](i['id']+':\x20'+i['mitigation']);}}let g;if(a['operation']){const k={'set_agent_list':'order_set_agent','update_required_info':'order_required_info','progress_advance':'order_advance','arb_confirm':'order_arb_confirm','arb_objection':'order_arb_objection','arb_claim_compensation':'order_arb_claim_compensation','receive':'order_receive','transfer_to':'order_transfer','service_buy':'order_create'};g=findSceneById(k[a['operation']]??'');}return{'summary':'Assessed\x20'+c['length']+'\x20risk(s)\x20across\x20'+Object['keys'](e)['length']+'\x20categories','scene':g,'risks':c,'overall_risk':d,'risks_by_category':e,'stakeholder_advice':f,'needs_human_review':c['some'](l=>l['level']==='critical'||l['level']==='high')};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const ORDER_TEMPLATES=[{'id':'T-O-01','name':'Standard\x20retail\x20order\x20(single\x20item,\x20no\x20machine)','description':'Template\x20for\x20buying\x20a\x20single\x20retail\x20item\x20from\x20a\x20Service\x20without\x20a\x20Machine\x20workflow.\x20Order\x20created\x20via\x20service::buy.','applicable_scenes':['order_create','order_required_info'],'industry_tags':['retail','universal'],'params':[{'name':'service_address','type':'address','description':'Service\x20object\x20address\x20(target\x20of\x20service::buy)','required':!![]},{'name':'item_name','type':'string','description':'Item\x20name\x20(must\x20match\x20Service\x27s\x20sale\x20item\x20name)','required':!![]},{'name':'item_price','type':'string','description':'Item\x20price\x20in\x20MIST\x20(string\x20for\x20u64\x20precision)','required':!![]},{'name':'item_quantity','type':'number','description':'Quantity\x20to\x20purchase','required':!![],'default':0x1},{'name':'wip_hash','type':'string','description':'WIP\x20hash\x20(NOT\x20empty\x20string\x20—\x20use\x20\x270x\x27\x20+\x20actual\x20hash)','required':!![]},{'name':'discount_address','type':'address','description':'Discount\x20object\x20address\x20(optional)','required':![]},{'name':'named_order','type':'string','description':'Order\x20alias\x20name\x20(optional,\x20for\x20SDK\x20lookup)','required':![]},{'name':'contact_address','type':'address','description':'Contact\x20object\x20address\x20for\x20required_info\x20(recipient)','required':![]}],'body':a=>{const b={'_note':'Order\x20creation\x20goes\x20via\x20service::buy,\x20not\x20CallOrder_Data.\x20Use\x20this\x20template\x20to\x20populate\x20CallService_Data.buy.','_call_target':'service','object':a['service_address'],'buy':{'items':[{'name':a['item_name'],'price':a['item_price'],'quantity':a['item_quantity'],'wip_hash':a['wip_hash']}],'discount':a['discount_address']??null,'named_order':a['named_order']??null,'machine_forward':null}};return a['contact_address']&&(b['_post_buy_required_info']=a['contact_address']),b;},'notes':['Order\x20is\x20NOT\x20created\x20directly\x20—\x20service::buy\x20atomically\x20builds\x20Order\x20+\x20Allocation\x20+\x20Progress','wip_hash\x20must\x20NOT\x20be\x20empty\x20string\x20—\x20use\x20actual\x20hash\x20to\x20avoid\x20\x27WIP\x20hash\x20not\x20match\x27\x20error','Item\x20name\x20+\x20price\x20must\x20match\x20a\x20sale\x20item\x20configured\x20on\x20the\x20Service'],'permission_layer':'via_service_buy','irreversible':!![]},{'id':'T-O-02','name':'Workflow\x20order\x20advance\x20(machine\x20+\x20progress\x20forward)','description':'Template\x20for\x20advancing\x20an\x20Order\x27s\x20Progress\x20via\x20named\x20forward.\x20Both\x20owner\x20and\x20agent\x20can\x20advance.','applicable_scenes':['order_advance'],'industry_tags':['workflow','logistics','service'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'next_node_name','type':'string','description':'Target\x20node\x20name\x20to\x20advance\x20to','required':!![]},{'name':'forward_name','type':'string','description':'Forward\x20name\x20(must\x20exist\x20on\x20current\x20node)','required':!![]},{'name':'operator','type':'address','description':'Named\x20operator\x20address\x20(optional,\x20null\x20for\x20anyone)','required':![]},{'name':'guard_submission','type':'object','description':'Guard\x20submission\x20object\x20(optional,\x20required\x20if\x20forward\x20has\x20guard)','required':![]},{'name':'message','type':'string','description':'Optional\x20message\x20attached\x20to\x20this\x20advance','required':![]}],'body':a=>{const b={'object':a['order_address'],'progress':{'next_node_name':a['next_node_name'],'forward':{'name':a['forward_name'],'operator':a['operator']??null,'guard':a['guard_submission']??null},'op':'next'}};if(a['message'])b['progress']['message']=a['message'];return b;},'notes':['L2\x20operation\x20—\x20both\x20owner\x20and\x20agent\x20can\x20advance','Node\x20transition\x20is\x20IRREVERSIBLE\x20(no\x20backward\x20movement)','If\x20forward\x20has\x20a\x20Guard,\x20guard_submission\x20is\x20required','Service.machine\x20is\x20snapshotted\x20at\x20buy\x20time\x20—\x20Order.machine\x20will\x20NOT\x20update\x20if\x20Service.machine\x20changes\x20later'],'permission_layer':'L2_owner_or_agent','irreversible':!![]},{'id':'T-O-03','name':'Set\x20agent\x20list\x20(multi-agent\x20logistics\x20delegation)','description':'Template\x20for\x20setting\x20up\x20multiple\x20agents\x20to\x20operate\x20the\x20Order\x20(advance\x20Progress,\x20file\x20arbitration).\x20agent_set\x20REPLACES\x20the\x20entire\x20list.','applicable_scenes':['order_set_agent'],'industry_tags':['logistics','team','service'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'agent_addresses','type':'string[]','description':'Agent\x20addresses\x20(overwrites\x20entire\x20list)','required':!![]}],'body':a=>({'object':a['order_address'],'agent':a['agent_addresses']}),'notes':['L1\x20operation\x20—\x20OWNER-ONLY\x20(assert_owner)','Max\x2010\x20DISTINCT\x20agents\x20(input\x20is\x20deduped\x20on-chain;\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20advance\x20Progress\x20and\x20file\x20arbitration\x20—\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)','Overwrites\x20entire\x20agent\x20list\x20(not\x20additive)\x20—\x20omitted\x20agents\x20silently\x20lose\x20access'],'permission_layer':'L1_owner_only','irreversible':![]},{'id':'T-O-04','name':'File\x20arbitration\x20(arb_confirm\x20with\x20proposition)','description':'Template\x20for\x20filing\x20an\x20arbitration\x20case\x20with\x20description\x20+\x20proposition\x20list.\x20Triggers\x20order::dispute(arb)\x20appending\x20Arb\x20to\x20dispute\x20vector.','applicable_scenes':['order_arb_confirm'],'industry_tags':['dispute','arbitration','universal'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'Arbitration\x20object\x20address\x20(must\x20exist)','required':!![]},{'name':'confirm','type':'string','description':'Confirm\x20materials\x20valid?\x20\x27true\x27\x20or\x20\x27false\x27','required':!![],'default':'true'},{'name':'description','type':'string','description':'Compensation\x20application\x20description\x20(required\x20for\x20arb::description_change)','required':!![]},{'name':'propositions','type':'string[]','description':'Compensation\x20claims\x20list\x20(e.g.\x20[\x27Refund\x20full\x20amount\x27,\x20\x27Compensation\x20for\x20delay\x27])','required':!![]}],'body':a=>({'object':a['order_address'],'arb_confirm':{'arb':a['arb_address'],'confirm':a['confirm']==='true','description':a['description'],'proposition':a['propositions']}}),'notes':['L2\x20operation\x20—\x20both\x20owner\x20and\x20agent\x20can\x20file','IRREVERSIBLE\x20—\x20once\x20filed,\x20Arb\x20process\x20cannot\x20be\x20cancelled','Triggers\x20order::dispute(arb)\x20—\x20appends\x20Arb\x20to\x20order.dispute\x20vector\x20(max\x2010)','If\x20claimed_by\x20is\x20already\x20set,\x20aborts\x20E_ORDER_ALREADY_CLAIMED','Use\x20T-O-08\x20(arb_objection)\x20to\x20object\x20to\x20Arb\x20ruling\x20after\x20this\x20step'],'permission_layer':'L2_owner_or_agent','irreversible':!![]},{'id':'T-O-05','name':'Receive\x20payment\x20(Receiving-gated\x20collect)','description':'Template\x20for\x20collecting\x20CoinWrapper\x20or\x20arbitrary\x20Receiving<K>\x20distributed\x20by\x20allocation::alloc.\x20Funds\x20forwarded\x20to\x20order.owner.\x20No\x20owner\x20assert\x20—\x20caller\x20must\x20hold\x20the\x20Receiving\x20object.','applicable_scenes':['order_receive'],'industry_tags':['finance','universal'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'received_object_id','type':'string','description':'Receiving\x20object\x20ID\x20(CoinWrapper\x20or\x20Receiving<K>)','required':!![]}],'body':a=>({'object':a['order_address'],'receive':{'received':a['received_object_id']}}),'notes':['Gated\x20by\x20Receiving\x20existence\x20—\x20allocation::alloc\x20must\x20have\x20run\x20and\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20(verify\x20the\x20object\x20ID\x20via\x20explorer)','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20ANY\x20caller\x20holding\x20the\x20Receiving\x20can\x20complete\x20the\x20receive;\x20funds\x20ALWAYS\x20go\x20to\x20order.owner','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Funds\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address','For\x20ownership\x20transfer,\x20use\x20T-O-06\x20variant\x20(transfer_to)\x20instead'],'permission_layer':'L4_object_gated','irreversible':![]},{'id':'T-O-06','name':'Claim\x20compensation\x20(arb_claim_compensation\x20—\x20IRREVERSIBLE)','description':'Template\x20for\x20claiming\x20compensation\x20from\x20a\x20ruled\x20Arb.\x20Sets\x20claimed_by\x20—\x20ONE-TIME,\x20IRREVERSIBLE,\x20blocks\x20all\x20future\x20disputes.','applicable_scenes':['order_arb_claim_compensation'],'industry_tags':['dispute','arbitration'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'RULED\x20Arb\x20object\x20address\x20(must\x20be\x20in\x20Arbitrated\x20state)','required':!![]}],'body':a=>({'object':a['order_address'],'arb_claim_compensation':{'arb':a['arb_address']}}),'notes':['⚠️⚠️\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim:\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED)','Arb\x20must\x20be\x20in\x20Arbitrated\x20state\x20(ruled,\x20not\x20pending)\x20—\x20arb::finish\x20gating','No\x20op-permission\x20assert\x20on\x20the\x20Order\x20—\x20gated\x20by\x20the\x20ruled\x20Arb\x20status;\x20compensation\x20is\x20paid\x20to\x20the\x20tx\x20sender','Triggers\x20service::compensation_claim\x20→\x20order::compensate(arb)','Verify\x20arb_address\x20TWICE\x20before\x20submitting\x20—\x20there\x20is\x20no\x20undo'],'permission_layer':'L4_object_gated','irreversible':!![]},{'id':'T-O-07','name':'Update\x20required_info\x20(Contact\x20recipient\x20or\x20WTS\x20Proof)','description':'Template\x20for\x20setting\x20required_info\x20—\x20either\x20a\x20Contact\x20object\x20(recipient\x20info)\x20or\x20WTS\x20Proof\x20object\x20(delivery\x20proof).\x20Owner-only.','applicable_scenes':['order_required_info'],'industry_tags':['logistics','universal'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'info_type','type':'string','description':'\x27contact\x27\x20(recipient)\x20or\x20\x27wts_proof\x27\x20(delivery\x20proof)\x20or\x20\x27clear\x27\x20(set\x20to\x20null)','required':!![]},{'name':'info_address','type':'address','description':'Contact\x20or\x20WTS\x20Proof\x20object\x20address\x20(not\x20needed\x20if\x20info_type=\x27clear\x27)','required':![]}],'body':a=>{if(a['info_type']==='clear')return{'object':a['order_address'],'required_info':null};if(!a['info_address'])throw new Error('info_address\x20required\x20when\x20info_type=\x27'+a['info_type']+'\x27');return{'object':a['order_address'],'required_info':a['info_address']};},'notes':['L1\x20operation\x20—\x20OWNER-ONLY\x20(assert_owner);\x20agent\x20CANNOT\x20update\x20required_info','REVERSIBLE\x20—\x20can\x20be\x20called\x20multiple\x20times','Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address,\x20contact\x20details)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(generated\x20via\x20Wowok\x20Messenger)','null\x20clears\x20the\x20field'],'permission_layer':'L1_owner_only','irreversible':![]},{'id':'T-O-08','name':'Object\x20to\x20Arb\x20ruling\x20(arb_objection\x20—\x20request\x20re-arbitration)','description':'Template\x20for\x20objecting\x20to\x20an\x20Arb\x20ruling\x20and\x20requesting\x20re-arbitration.\x20Requires\x20Arb\x20status\x20=\x20Arbitrated.','applicable_scenes':['order_arb_objection'],'industry_tags':['dispute','arbitration'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'RULED\x20Arb\x20object\x20address\x20(must\x20be\x20in\x20Arbitrated\x20state)','required':!![]},{'name':'objection_reason','type':'string','description':'Reason\x20for\x20objection\x20(required\x20by\x20arb::objection)','required':!![]}],'body':a=>({'object':a['order_address'],'arb_objection':{'arb':a['arb_address'],'objection':a['objection_reason']}}),'notes':['L2\x20operation\x20—\x20both\x20owner\x20and\x20agent\x20can\x20object','IRREVERSIBLE\x20—\x20triggers\x20re-arbitration\x20flow','Arb\x20must\x20be\x20in\x20Arbitrated\x20state\x20(after\x20initial\x20ruling)','Cannot\x20object\x20if\x20claimed_by\x20is\x20already\x20set\x20(E_ORDER_ALREADY_CLAIMED)'],'permission_layer':'L2_owner_or_agent','irreversible':!![]}];export const ORDER_TEMPLATES_VERSION='1.0.0';export const ORDER_TEMPLATES_COUNT=ORDER_TEMPLATES['length'];export function getAllOrderTemplates(){return[...ORDER_TEMPLATES];}export function getTemplateById(a){return ORDER_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByScene(a){return ORDER_TEMPLATES['filter'](b=>b['applicable_scenes']['includes'](a));}export function getTemplatesByIndustry(a){return ORDER_TEMPLATES['filter'](b=>b['industry_tags']['includes'](a)||b['industry_tags']['includes']('universal'));}export function getTemplatesByPermissionLayer(a){return ORDER_TEMPLATES['filter'](b=>b['permission_layer']===a);}export function getIrreversibleTemplates(){return ORDER_TEMPLATES['filter'](a=>a['irreversible']);}export function suggestTemplateForScene(a){const b=getTemplatesByScene(a);return b['length']>0x0?b[0x0]:undefined;}export function listOrderTemplates(){return ORDER_TEMPLATES['map'](a=>({'id':a['id'],'name':a['name'],'description':a['description'],'scenes':a['applicable_scenes'],'irreversible':a['irreversible']}));}export function fillTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20'+a+'\x20not\x20found'};for(const d of c['params']){if(d['required']&&!(d['name']in b))return{'ok':![],'error':'Missing\x20required\x20param:\x20'+d['name'],'template':c};}try{const f=c['body'](b);return{'ok':!![],'body':f,'template':c};}catch(g){return{'ok':![],'error':'Template\x20body\x20generation\x20failed:\x20'+g['message'],'template':c};}}export function suggestTemplateFromIntent(a){const b=a['toLowerCase'](),c=[['buy','T-O-01'],['purchase','T-O-01'],['advance','T-O-02'],['forward','T-O-02'],['set\x20agent','T-O-03'],['agent','T-O-03'],['arb_confirm','T-O-04'],['file\x20dispute','T-O-04'],['apply\x20arbitration','T-O-04'],['receive','T-O-05'],['collect','T-O-05'],['claim\x20compensation','T-O-06'],['required_info','T-O-07'],['contact','T-O-07'],['recipient','T-O-07'],['arb_objection','T-O-08'],['objection','T-O-08']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return getTemplateById(e);}return undefined;}export function getTemplateParameters(a){return getTemplateById(a)?.['params'];}export function validateTemplateParams(a,b){const c=getTemplateById(a);if(!c)return['Template\x20'+a+'\x20not\x20found'];const d=[];for(const e of c['params']){if(e['required']&&!(e['name']in b)){d['push']('Missing\x20required\x20param:\x20'+e['name']);continue;}if(!(e['name']in b))continue;const f=b[e['name']];if(e['type']==='address')(typeof f!=='string'||!f['startsWith']('0x')||f['length']<0x28)&&d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20valid\x20Wow\x20address\x20(got:\x20'+f+')');else{if(e['type']==='string'){if(typeof f!=='string')d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20string');}else{if(e['type']==='number'){if(typeof f!=='number'||!Number['isFinite'](f))d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20number');}else e['type']==='string[]'&&((!Array['isArray'](f)||!f['every'](g=>typeof g==='string'))&&d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20string[]'));}}}return d;}
|
|
1
|
+
export const ORDER_TEMPLATES=[{'id':'T-O-01','name':'Standard\x20retail\x20order\x20(single\x20item,\x20no\x20machine)','description':'Template\x20for\x20buying\x20a\x20single\x20retail\x20item\x20from\x20a\x20Service\x20without\x20a\x20Machine\x20workflow.\x20Order\x20created\x20through\x20the\x20Service\x27s\x20purchase\x20entry.','applicable_scenes':['order_create','order_required_info'],'industry_tags':['retail','universal'],'params':[{'name':'service_address','type':'address','description':'Service\x20object\x20address\x20(the\x20purchase\x20target)','required':!![]},{'name':'purchase_item_name','type':'string','description':'Item\x20name\x20(must\x20match\x20Service\x27s\x20sale\x20item\x20name)','required':!![]},{'name':'purchase_item_price','type':'string','description':'Item\x20price\x20in\x20MIST\x20(string\x20for\x20u64\x20precision)','required':!![]},{'name':'purchase_item_quantity','type':'number','description':'Quantity\x20to\x20purchase','required':!![],'default':0x1},{'name':'wip_hash','type':'string','description':'WIP\x20hash\x20(NOT\x20empty\x20string\x20—\x20use\x20\x270x\x27\x20+\x20actual\x20hash)','required':!![]},{'name':'discount_address','type':'address','description':'Discount\x20object\x20address\x20(optional)','required':![]},{'name':'named_order','type':'string','description':'Order\x20alias\x20name\x20(optional,\x20for\x20SDK\x20lookup)','required':![]},{'name':'contact_address','type':'address','description':'Contact\x20object\x20address\x20for\x20required_info\x20(recipient)','required':![]}],'body':a=>{const b={'_note':'Order\x20creation\x20goes\x20through\x20the\x20Service\x20purchase\x20operation,\x20not\x20CallOrder_Data.\x20Use\x20this\x20template\x20to\x20populate\x20CallService_Data.buy.','_call_target':'service','object':a['service_address'],'buy':{'items':[{'name':a['purchase_item_name'],'price':a['purchase_item_price'],'quantity':a['purchase_item_quantity'],'wip_hash':a['wip_hash']}],'discount':a['discount_address']??null,'named_order':a['named_order']??null,'machine_forward':null}};return a['contact_address']&&(b['_post_buy_required_info']=a['contact_address']),b;},'notes':['Order\x20is\x20NOT\x20created\x20directly\x20—\x20the\x20Service\x20purchase\x20atomically\x20builds\x20Order\x20+\x20Allocation\x20+\x20Progress','wip_hash\x20must\x20NOT\x20be\x20empty\x20string\x20—\x20use\x20actual\x20hash\x20to\x20avoid\x20\x27WIP\x20hash\x20not\x20match\x27\x20error','Item\x20name\x20+\x20price\x20must\x20match\x20a\x20sale\x20item\x20configured\x20on\x20the\x20Service'],'permission_layer':'via_service_buy','irreversible':!![]},{'id':'T-O-02','name':'Workflow\x20order\x20advance\x20(machine\x20+\x20progress\x20forward)','description':'Template\x20for\x20advancing\x20an\x20Order\x27s\x20Progress\x20via\x20named\x20forward.\x20Both\x20owner\x20and\x20agent\x20can\x20advance.','applicable_scenes':['order_advance'],'industry_tags':['workflow','logistics','service'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'next_node_name','type':'string','description':'Target\x20node\x20name\x20to\x20advance\x20to','required':!![]},{'name':'forward_name','type':'string','description':'Forward\x20name\x20(must\x20exist\x20on\x20current\x20node)','required':!![]},{'name':'operator','type':'address','description':'Named\x20operator\x20address\x20(optional,\x20null\x20for\x20anyone)','required':![]},{'name':'guard_submission','type':'object','description':'Guard\x20submission\x20object\x20(optional,\x20required\x20if\x20forward\x20has\x20guard)','required':![]},{'name':'message','type':'string','description':'Optional\x20message\x20attached\x20to\x20this\x20advance','required':![]}],'body':a=>{const b={'object':a['order_address'],'progress':{'next_node_name':a['next_node_name'],'forward':{'name':a['forward_name'],'operator':a['operator']??null,'guard':a['guard_submission']??null},'op':'next'}};if(a['message'])b['progress']['message']=a['message'];return b;},'notes':['L2\x20operation\x20—\x20both\x20owner\x20and\x20agent\x20can\x20advance','Node\x20transition\x20is\x20IRREVERSIBLE\x20(no\x20backward\x20movement)','If\x20forward\x20has\x20a\x20Guard,\x20guard_submission\x20is\x20required','Service.machine\x20is\x20snapshotted\x20at\x20buy\x20time\x20—\x20Order.machine\x20will\x20NOT\x20update\x20if\x20Service.machine\x20changes\x20later'],'permission_layer':'L2_owner_or_agent','irreversible':!![]},{'id':'T-O-03','name':'Set\x20agent\x20list\x20(multi-agent\x20logistics\x20delegation)','description':'Template\x20for\x20setting\x20up\x20multiple\x20agents\x20to\x20operate\x20the\x20Order\x20(advance\x20Progress,\x20file\x20arbitration).\x20Setting\x20the\x20agent\x20list\x20REPLACES\x20the\x20entire\x20list.','applicable_scenes':['order_set_agent'],'industry_tags':['logistics','team','service'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'agent_addresses','type':'string[]','description':'Agent\x20addresses\x20(overwrites\x20entire\x20list)','required':!![]}],'body':a=>({'object':a['order_address'],'agent':a['agent_addresses']}),'notes':['L1\x20operation\x20—\x20OWNER-ONLY\x20(owner-asserted)','Max\x2010\x20DISTINCT\x20agents\x20(input\x20is\x20deduped\x20on-chain;\x20assert\x20length\x20<\x20MAX_AGENT_COUNT\x20before\x20each\x20push)','Can\x20be\x20called\x20at\x20ANY\x20time\x20—\x20NOT\x20frozen\x20after\x20Progress\x20binding','Agents\x20can\x20advance\x20Progress\x20and\x20file\x20arbitration\x20—\x20but\x20CANNOT\x20change\x20owner\x20or\x20required_info\x20(L1\x20ops)','Overwrites\x20entire\x20agent\x20list\x20(not\x20additive)\x20—\x20omitted\x20agents\x20silently\x20lose\x20access'],'permission_layer':'L1_owner_only','irreversible':![]},{'id':'T-O-04','name':'File\x20arbitration\x20(arb_confirm\x20with\x20proposition)','description':'Template\x20for\x20filing\x20an\x20arbitration\x20case\x20with\x20description\x20+\x20proposition\x20list.\x20Triggers\x20the\x20order\x27s\x20dispute\x20filing,\x20appending\x20the\x20Arb\x20to\x20the\x20dispute\x20vector.','applicable_scenes':['order_arb_confirm'],'industry_tags':['dispute','arbitration','universal'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'Arbitration\x20object\x20address\x20(must\x20exist)','required':!![]},{'name':'confirm','type':'string','description':'Confirm\x20materials\x20valid?\x20\x27true\x27\x20or\x20\x27false\x27','required':!![],'default':'true'},{'name':'description','type':'string','description':'Compensation\x20application\x20description\x20(required\x20for\x20the\x20case\x20description\x20record)','required':!![]},{'name':'propositions','type':'string[]','description':'Compensation\x20claims\x20list\x20(e.g.\x20[\x27Refund\x20full\x20amount\x27,\x20\x27Compensation\x20for\x20delay\x27])','required':!![]}],'body':a=>({'object':a['order_address'],'arb_confirm':{'arb':a['arb_address'],'confirm':a['confirm']==='true','description':a['description'],'proposition':a['propositions']}}),'notes':['L2\x20operation\x20—\x20both\x20owner\x20and\x20agent\x20can\x20file','IRREVERSIBLE\x20—\x20once\x20filed,\x20Arb\x20process\x20cannot\x20be\x20cancelled','Triggers\x20the\x20dispute\x20filing\x20—\x20appends\x20the\x20Arb\x20to\x20the\x20order\x27s\x20dispute\x20vector\x20(max\x2010)','If\x20claimed_by\x20is\x20already\x20set,\x20aborts\x20E_ORDER_ALREADY_CLAIMED','Use\x20T-O-08\x20(arb_objection)\x20to\x20object\x20to\x20Arb\x20ruling\x20after\x20this\x20step'],'permission_layer':'L2_owner_or_agent','irreversible':!![]},{'id':'T-O-05','name':'Receive\x20payment\x20(Receiving-gated\x20collect)','description':'Template\x20for\x20collecting\x20CoinWrapper\x20or\x20arbitrary\x20Receiving<K>\x20distributed\x20by\x20an\x20allocation\x20run.\x20Funds\x20forwarded\x20to\x20order.owner.\x20No\x20owner\x20assert\x20—\x20caller\x20must\x20hold\x20the\x20Receiving\x20object.','applicable_scenes':['order_receive'],'industry_tags':['finance','universal'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'received_object_id','type':'string','description':'Receiving\x20object\x20ID\x20(CoinWrapper\x20or\x20Receiving<K>)','required':!![]}],'body':a=>({'object':a['order_address'],'receive':{'received':a['received_object_id']}}),'notes':['Gated\x20by\x20Receiving\x20existence\x20—\x20an\x20allocation\x20run\x20must\x20have\x20created\x20a\x20Receiving\x20at\x20the\x20caller\x27s\x20address\x20(verify\x20the\x20object\x20ID\x20via\x20explorer)','Receiving\x20must\x20match\x20the\x20Payment\x20object\x20(EPAYMENT_NOT_MATCH\x20on\x20mismatch)','No\x20owner\x20assert\x20—\x20ANY\x20caller\x20holding\x20the\x20Receiving\x20can\x20complete\x20the\x20receive;\x20funds\x20ALWAYS\x20go\x20to\x20order.owner','Can\x20be\x20called\x20multiple\x20times\x20(e.g.\x20partial\x20refunds)','Funds\x20are\x20unwrapped\x20(CoinWrapper\x20→\x20Coin)\x20and\x20transferred\x20to\x20owner\x20address','For\x20ownership\x20transfer,\x20use\x20T-O-06\x20variant\x20(transfer_to)\x20instead'],'permission_layer':'L4_object_gated','irreversible':![]},{'id':'T-O-06','name':'Claim\x20compensation\x20(arb_claim_compensation\x20—\x20IRREVERSIBLE)','description':'Template\x20for\x20claiming\x20compensation\x20from\x20a\x20ruled\x20Arb.\x20Sets\x20claimed_by\x20—\x20ONE-TIME,\x20IRREVERSIBLE,\x20blocks\x20all\x20future\x20disputes.','applicable_scenes':['order_arb_claim_compensation'],'industry_tags':['dispute','arbitration'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'RULED\x20Arb\x20object\x20address\x20(must\x20be\x20in\x20Arbitrated\x20state)','required':!![]}],'body':a=>({'object':a['order_address'],'arb_claim_compensation':{'arb':a['arb_address']}}),'notes':['⚠️⚠️\x20IRREVERSIBLE\x20—\x20claimed_by\x20cannot\x20be\x20reset','After\x20claim:\x20NO\x20new\x20disputes\x20can\x20be\x20filed\x20(E_ORDER_ALREADY_CLAIMED)','Arb\x20must\x20be\x20in\x20Arbitrated\x20state\x20(ruled,\x20not\x20pending)\x20—\x20gated\x20on\x20the\x20arbitration\x20being\x20finished','No\x20op-permission\x20assert\x20on\x20the\x20Order\x20—\x20gated\x20by\x20the\x20ruled\x20Arb\x20status;\x20compensation\x20is\x20paid\x20to\x20the\x20tx\x20sender','Triggers\x20the\x20compensation\x20flow\x20—\x20the\x20Service\x27s\x20compensation\x20fund\x20pays\x20out\x20and\x20the\x20order\x20records\x20the\x20compensation','Verify\x20arb_address\x20TWICE\x20before\x20submitting\x20—\x20there\x20is\x20no\x20undo'],'permission_layer':'L4_object_gated','irreversible':!![]},{'id':'T-O-07','name':'Update\x20required_info\x20(Contact\x20recipient\x20or\x20WTS\x20Proof)','description':'Template\x20for\x20setting\x20required_info\x20—\x20either\x20a\x20Contact\x20object\x20(recipient\x20info)\x20or\x20WTS\x20Proof\x20object\x20(delivery\x20proof).\x20Owner-only.','applicable_scenes':['order_required_info'],'industry_tags':['logistics','universal'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'info_type','type':'string','description':'\x27contact\x27\x20(recipient)\x20or\x20\x27wts_proof\x27\x20(delivery\x20proof)\x20or\x20\x27clear\x27\x20(set\x20to\x20null)','required':!![]},{'name':'info_address','type':'address','description':'Contact\x20or\x20WTS\x20Proof\x20object\x20address\x20(not\x20needed\x20if\x20info_type=\x27clear\x27)','required':![]}],'body':a=>{if(a['info_type']==='clear')return{'object':a['order_address'],'required_info':null};if(!a['info_address'])throw new Error('info_address\x20required\x20when\x20info_type=\x27'+a['info_type']+'\x27');return{'object':a['order_address'],'required_info':a['info_address']};},'notes':['L1\x20operation\x20—\x20OWNER-ONLY\x20(owner-asserted);\x20agent\x20CANNOT\x20update\x20required_info','REVERSIBLE\x20—\x20can\x20be\x20called\x20multiple\x20times','Contact\x20object\x20=\x20recipient\x20info\x20(shipping\x20address,\x20contact\x20details)','WTS\x20Proof\x20object\x20=\x20delivery\x20proof\x20(generated\x20via\x20Wowok\x20Messenger)','null\x20clears\x20the\x20field'],'permission_layer':'L1_owner_only','irreversible':![]},{'id':'T-O-08','name':'Object\x20to\x20Arb\x20ruling\x20(arb_objection\x20—\x20request\x20re-arbitration)','description':'Template\x20for\x20objecting\x20to\x20an\x20Arb\x20ruling\x20and\x20requesting\x20re-arbitration.\x20Requires\x20Arb\x20status\x20=\x20Arbitrated.','applicable_scenes':['order_arb_objection'],'industry_tags':['dispute','arbitration'],'params':[{'name':'order_address','type':'address','description':'Order\x20object\x20address','required':!![]},{'name':'arb_address','type':'address','description':'RULED\x20Arb\x20object\x20address\x20(must\x20be\x20in\x20Arbitrated\x20state)','required':!![]},{'name':'objection_reason','type':'string','description':'Reason\x20for\x20objection\x20(required\x20when\x20objecting)','required':!![]}],'body':a=>({'object':a['order_address'],'arb_objection':{'arb':a['arb_address'],'objection':a['objection_reason']}}),'notes':['L2\x20operation\x20—\x20both\x20owner\x20and\x20agent\x20can\x20object','IRREVERSIBLE\x20—\x20triggers\x20re-arbitration\x20flow','Arb\x20must\x20be\x20in\x20Arbitrated\x20state\x20(after\x20initial\x20ruling)','Cannot\x20object\x20if\x20claimed_by\x20is\x20already\x20set\x20(E_ORDER_ALREADY_CLAIMED)'],'permission_layer':'L2_owner_or_agent','irreversible':!![]}];export const ORDER_TEMPLATES_VERSION='1.0.0';export const ORDER_TEMPLATES_COUNT=ORDER_TEMPLATES['length'];export function getAllOrderTemplates(){return[...ORDER_TEMPLATES];}export function getTemplateById(a){return ORDER_TEMPLATES['find'](b=>b['id']===a);}export function getTemplatesByScene(a){return ORDER_TEMPLATES['filter'](b=>b['applicable_scenes']['includes'](a));}export function getTemplatesByIndustry(a){return ORDER_TEMPLATES['filter'](b=>b['industry_tags']['includes'](a)||b['industry_tags']['includes']('universal'));}export function getTemplatesByPermissionLayer(a){return ORDER_TEMPLATES['filter'](b=>b['permission_layer']===a);}export function getIrreversibleTemplates(){return ORDER_TEMPLATES['filter'](a=>a['irreversible']);}export function suggestTemplateForScene(a){const b=getTemplatesByScene(a);return b['length']>0x0?b[0x0]:undefined;}export function listOrderTemplates(){return ORDER_TEMPLATES['map'](a=>({'id':a['id'],'name':a['name'],'description':a['description'],'scenes':a['applicable_scenes'],'irreversible':a['irreversible']}));}export function fillTemplate(a,b){const c=getTemplateById(a);if(!c)return{'ok':![],'error':'Template\x20'+a+'\x20not\x20found'};for(const d of c['params']){if(d['required']&&!(d['name']in b))return{'ok':![],'error':'Missing\x20required\x20param:\x20'+d['name'],'template':c};}try{const f=c['body'](b);return{'ok':!![],'body':f,'template':c};}catch(g){return{'ok':![],'error':'Template\x20body\x20generation\x20failed:\x20'+g['message'],'template':c};}}export function suggestTemplateFromIntent(a){const b=a['toLowerCase'](),c=[['buy','T-O-01'],['purchase','T-O-01'],['advance','T-O-02'],['forward','T-O-02'],['set\x20agent','T-O-03'],['agent','T-O-03'],['arb_confirm','T-O-04'],['file\x20dispute','T-O-04'],['apply\x20arbitration','T-O-04'],['receive','T-O-05'],['collect','T-O-05'],['claim\x20compensation','T-O-06'],['required_info','T-O-07'],['contact','T-O-07'],['recipient','T-O-07'],['arb_objection','T-O-08'],['objection','T-O-08']];for(const [d,e]of c){if(b['includes'](d['toLowerCase']()))return getTemplateById(e);}return undefined;}export function getTemplateParameters(a){return getTemplateById(a)?.['params'];}export function validateTemplateParams(a,b){const c=getTemplateById(a);if(!c)return['Template\x20'+a+'\x20not\x20found'];const d=[];for(const e of c['params']){if(e['required']&&!(e['name']in b)){d['push']('Missing\x20required\x20param:\x20'+e['name']);continue;}if(!(e['name']in b))continue;const f=b[e['name']];if(e['type']==='address')(typeof f!=='string'||!f['startsWith']('0x')||f['length']<0x28)&&d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20valid\x20Wow\x20address\x20(got:\x20'+f+')');else{if(e['type']==='string'){if(typeof f!=='string')d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20string');}else{if(e['type']==='number'){if(typeof f!=='number'||!Number['isFinite'](f))d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20number');}else e['type']==='string[]'&&((!Array['isArray'](f)||!f['every'](g=>typeof g==='string'))&&d['push']('Param\x20'+e['name']+'\x20must\x20be\x20a\x20string[]'));}}}return d;}
|