@wowok/agent-mcp 3.4.3 → 3.4.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/.build-stamp.json +3 -3
- package/dist/build-stamp.js +1 -0
- package/dist/chain-semantics/composition-truth.js +1 -1
- package/dist/chain-semantics/eval-order.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.js +1 -1
- package/dist/composition/generate.js +1 -1
- package/dist/composition/guard-fill.js +1 -1
- package/dist/composition/input-normalize.js +1 -1
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.js +1 -1
- package/dist/composition/plan.js +1 -1
- package/dist/composition/product-card.js +1 -1
- package/dist/composition/shape-expand.js +1 -0
- package/dist/config/judgment.js +1 -1
- package/dist/config/template-params.js +1 -1
- package/dist/data/sync/cdc.js +1 -1
- package/dist/data/sync/graphql-source.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/sdk-batch.js +1 -1
- package/dist/harness/entry-ignite-selfheal.js +1 -0
- package/dist/harness/forward-leg-preflight.js +1 -0
- package/dist/harness/recover.js +1 -1
- package/dist/keeper/detectors.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arb-operation-face.js +1 -0
- package/dist/knowledge/arbitration-rail-verifier.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +15 -0
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/alloc_audit.json.good +310 -0
- package/dist/knowledge/baselines/rules/allocation.json.good +568 -0
- package/dist/knowledge/baselines/rules/arb.json.good +174 -0
- package/dist/knowledge/baselines/rules/arbitration.json.good +393 -0
- package/dist/knowledge/baselines/rules/bridge.json.good +197 -0
- package/dist/knowledge/baselines/rules/contact.json.good +152 -0
- package/dist/knowledge/baselines/rules/demand.json.good +158 -0
- package/dist/knowledge/baselines/rules/graph.json.good +534 -0
- package/dist/knowledge/baselines/rules/guard.json +18 -5
- package/dist/knowledge/baselines/rules/guard.json.good +1192 -0
- package/dist/knowledge/baselines/rules/machine.json.good +734 -0
- package/dist/knowledge/baselines/rules/oracle.json +1 -1
- package/dist/knowledge/baselines/rules/oracle.json.good +120 -0
- package/dist/knowledge/baselines/rules/order.json.good +549 -0
- package/dist/knowledge/baselines/rules/payment.json.good +205 -0
- package/dist/knowledge/baselines/rules/permission.json.good +330 -0
- package/dist/knowledge/baselines/rules/personal.json.good +139 -0
- package/dist/knowledge/baselines/rules/plan.json +343 -1
- package/dist/knowledge/baselines/rules/plan.json.good +1187 -0
- package/dist/knowledge/baselines/rules/progress.json.good +364 -0
- package/dist/knowledge/baselines/rules/proof.json.good +158 -0
- package/dist/knowledge/baselines/rules/registrar.json.good +159 -0
- package/dist/knowledge/baselines/rules/repository.json.good +244 -0
- package/dist/knowledge/baselines/rules/resource.json.good +117 -0
- package/dist/knowledge/baselines/rules/reward.json +10 -10
- package/dist/knowledge/baselines/rules/reward.json.good +586 -0
- package/dist/knowledge/baselines/rules/service.json.good +595 -0
- package/dist/knowledge/baselines/rules/treasury.json.good +440 -0
- package/dist/knowledge/baselines/rules/util.json.good +101 -0
- package/dist/knowledge/builtin-templates.d.ts +13 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/chain-query-registry.js +1 -1
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/fee-param-bindings.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +2 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-binding-table.js +1 -1
- package/dist/knowledge/guard-binding-verifier.js +1 -1
- package/dist/knowledge/guard-create-preflight.js +1 -0
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-host-context.js +1 -1
- package/dist/knowledge/guard-leg-eval.js +1 -0
- package/dist/knowledge/guard-node-gates.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-quality.js +1 -0
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-semantic-walk.js +1 -0
- package/dist/knowledge/guard-templates.d.ts +1 -0
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/path-oracle/coverage.js +1 -1
- package/dist/knowledge/path-oracle/index.js +1 -1
- package/dist/knowledge/path-oracle/products/airbnb.js +1 -0
- package/dist/knowledge/path-oracle/products/algora.js +1 -0
- package/dist/knowledge/path-oracle/products/alibaba-1688.js +1 -0
- package/dist/knowledge/path-oracle/products/amazon.js +1 -0
- package/dist/knowledge/path-oracle/products/beatstars.js +1 -0
- package/dist/knowledge/path-oracle/products/booking-com.js +1 -0
- package/dist/knowledge/path-oracle/products/contra.js +1 -0
- package/dist/knowledge/path-oracle/products/costco.js +1 -0
- package/dist/knowledge/path-oracle/products/coursera.js +1 -0
- package/dist/knowledge/path-oracle/products/duoduo-maicai.js +1 -0
- package/dist/knowledge/path-oracle/products/etsy.js +1 -0
- package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
- package/dist/knowledge/path-oracle/products/gamefound.js +1 -0
- package/dist/knowledge/path-oracle/products/gofundme.js +1 -0
- package/dist/knowledge/path-oracle/products/hackerone.js +1 -0
- package/dist/knowledge/path-oracle/products/kickstarter.js +1 -0
- package/dist/knowledge/path-oracle/products/klook.js +1 -0
- package/dist/knowledge/path-oracle/products/ninety-nine-designs.js +1 -0
- package/dist/knowledge/path-oracle/products/onlyfans.js +1 -0
- package/dist/knowledge/path-oracle/products/patreon.js +1 -0
- package/dist/knowledge/path-oracle/products/pinduoduo-kuaituantuan.js +1 -0
- package/dist/knowledge/path-oracle/products/royalty-exchange.js +1 -0
- package/dist/knowledge/path-oracle/products/shansong.js +1 -0
- package/dist/knowledge/path-oracle/products/taobao-presale.js +1 -0
- package/dist/knowledge/path-oracle/products/upwork-catalog.js +1 -0
- package/dist/knowledge/path-oracle/products/upwork.js +1 -0
- package/dist/knowledge/path-oracle/products/yuanfudao.js +1 -0
- package/dist/knowledge/path-oracle/products/ziroom.js +1 -0
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/product-detail-source.js +1 -1
- package/dist/knowledge/product-doc-b5.js +1 -1
- package/dist/knowledge/product-doc-facets.js +1 -0
- package/dist/knowledge/projection.js +1 -1
- package/dist/knowledge/publish-gate.js +1 -1
- package/dist/knowledge/publish-surface-contract.js +1 -1
- package/dist/knowledge/recipient-constraint.d.ts +20 -0
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/rule-declaration-types.d.ts +13 -0
- package/dist/knowledge/rule-declaration-types.js +1 -0
- package/dist/knowledge/rule-declarations.js +1 -0
- package/dist/knowledge/scenario-modes.d.ts +6 -0
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-prose.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- 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/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/service.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +9 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/arbitration.d.ts +8 -0
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +8 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +2 -0
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/handler.d.ts +2 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/order.d.ts +10 -0
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.js +1 -1
- package/dist/schema/call/progress.d.ts +15 -0
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/receipt.d.ts +1 -0
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +12 -0
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +1 -0
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +5 -3
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/envelope-unify.js +1 -1
- package/dist/schema/goal/index.d.ts +23 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +2 -2
- package/dist/schema/local/index.d.ts +20 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.d.ts +4 -0
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +5 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +944 -1
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +5 -5
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workspace/index.d.ts +2 -2
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.schema.json +1 -257
- package/dist/schemas/ask_user.schema.json +1 -78
- package/dist/schemas/benchmark_migration_operation.schema.json +1 -626
- package/dist/schemas/bridge_operation.schema.json +1 -1069
- package/dist/schemas/config_operation.schema.json +1 -82
- package/dist/schemas/employee_operation.schema.json +1 -319
- package/dist/schemas/evaluation_operation.schema.json +1 -3932
- package/dist/schemas/goal_operation.schema.json +1 -1650
- package/dist/schemas/guard2file.schema.json +1 -137
- package/dist/schemas/index.json +1 -285
- package/dist/schemas/industry_pack_operation.schema.json +1 -582
- package/dist/schemas/intent_radar.schema.json +1 -155
- package/dist/schemas/keeper_operation.schema.json +1 -364
- package/dist/schemas/local_cache_operation.schema.json +1 -116
- package/dist/schemas/local_history_operation.schema.json +1 -105
- package/dist/schemas/local_info_operation.schema.json +1 -140
- package/dist/schemas/local_mark_operation.schema.json +1 -124
- package/dist/schemas/machineNode2file.schema.json +1 -137
- package/dist/schemas/messenger_operation.schema.json +1 -2068
- package/dist/schemas/monitor_events.schema.json +1 -87
- package/dist/schemas/monitor_subscription.schema.json +1 -327
- package/dist/schemas/onchain_events.schema.json +1 -207
- package/dist/schemas/onchain_operations.schema.json +1 -28699
- package/dist/schemas/onchain_operations_allocation.schema.json +1 -1376
- package/dist/schemas/onchain_operations_arbitration.schema.json +1 -1355
- package/dist/schemas/onchain_operations_contact.schema.json +1 -988
- package/dist/schemas/onchain_operations_demand.schema.json +1 -1146
- package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -663
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -180
- package/dist/schemas/onchain_operations_guard.schema.json +1 -8518
- package/dist/schemas/onchain_operations_machine.schema.json +1 -1879
- package/dist/schemas/onchain_operations_order.schema.json +1 -1121
- package/dist/schemas/onchain_operations_payment.schema.json +1 -316
- package/dist/schemas/onchain_operations_permission.schema.json +1 -1036
- package/dist/schemas/onchain_operations_personal.schema.json +1 -1463
- package/dist/schemas/onchain_operations_progress.schema.json +1 -1041
- package/dist/schemas/onchain_operations_proof.schema.json +1 -750
- package/dist/schemas/onchain_operations_repository.schema.json +1 -2046
- package/dist/schemas/onchain_operations_reward.schema.json +1 -1286
- package/dist/schemas/onchain_operations_service.schema.json +1 -2602
- package/dist/schemas/onchain_operations_treasury.schema.json +1 -1527
- package/dist/schemas/onchain_table_data.schema.json +1 -1146
- package/dist/schemas/permission_operation.schema.json +1 -43
- package/dist/schemas/persona_operation.schema.json +1 -10424
- package/dist/schemas/query_toolkit.schema.json +1 -1867
- package/dist/schemas/schema_query.schema.json +1 -116
- package/dist/schemas/service_clone_operation.schema.json +1 -49
- package/dist/schemas/settle_sweep.schema.json +1 -0
- package/dist/schemas/strategy_review_operation.schema.json +1 -66
- package/dist/schemas/verify_guard_dry_run.schema.json +1 -0
- package/dist/schemas/watch_operation.schema.json +1 -145
- package/dist/schemas/wip_file.schema.json +1 -299
- package/dist/schemas/workflow_operation.schema.json +1 -722
- package/dist/schemas/workspace_operation.schema.json +1 -104
- package/dist/schemas/wowok_buildin_info.schema.json +1 -758
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/entry-edge-recipe.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/pending-settlement-recipe.js +1 -0
- package/dist/tools/handlers/plan-recovery.js +1 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/repository-row-id.js +1 -0
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/settle-sweep.js +1 -0
- package/dist/tools/handlers/stale-build-check.js +1 -1
- package/dist/tools/handlers/submission-assembly.js +1 -1
- package/dist/tools/handlers/verify-guard-dry-run.js +1 -0
- package/dist/tools/handlers/wip-upload.js +1 -1
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/publish-gate-state.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +11 -4
- package/dist/chain-semantics/composition-truth.d.ts +0 -102
- package/dist/chain-semantics/eval-order.d.ts +0 -17
- package/dist/chain-semantics/field-capability.d.ts +0 -11
- package/dist/chain-semantics/freeze-map.d.ts +0 -11
- package/dist/chain-semantics/fund-flow.d.ts +0 -10
- package/dist/chain-semantics/guard-verbs.d.ts +0 -22
- package/dist/chain-semantics/index.d.ts +0 -12
- package/dist/chain-semantics/object-graph.d.ts +0 -18
- package/dist/communication/evidence.d.ts +0 -6
- package/dist/communication/message-cursors.d.ts +0 -35
- package/dist/communication/proof-reuse.d.ts +0 -9
- package/dist/communication/wts-attestation.d.ts +0 -39
- package/dist/composition/audit.d.ts +0 -15
- package/dist/composition/blueprint-view.d.ts +0 -63
- package/dist/composition/compile.d.ts +0 -83
- package/dist/composition/emit-phases.d.ts +0 -234
- package/dist/composition/generate.d.ts +0 -40
- package/dist/composition/guard-fill.d.ts +0 -52
- package/dist/composition/inflight.d.ts +0 -86
- package/dist/composition/input-normalize.d.ts +0 -15
- package/dist/composition/materialize.d.ts +0 -78
- package/dist/composition/mode-gates.d.ts +0 -35
- package/dist/composition/param-disclosure.d.ts +0 -61
- package/dist/composition/plan-retry-ledger.d.ts +0 -37
- package/dist/composition/plan.d.ts +0 -121
- package/dist/composition/product-card.d.ts +0 -94
- package/dist/composition/reflux.d.ts +0 -28
- package/dist/composition/supply-chain-emit.d.ts +0 -46
- package/dist/config/config-audit.spec.d.ts +0 -1
- package/dist/config/config-audit.spec.js +0 -1
- package/dist/config/config-warnings.d.ts +0 -2
- package/dist/config/index.d.ts +0 -4
- package/dist/config/judgment.spec.d.ts +0 -1
- package/dist/config/judgment.spec.js +0 -1
- package/dist/config/match-policy-file.d.ts +0 -34
- package/dist/config/match-policy-file.spec.d.ts +0 -1
- package/dist/config/match-policy-file.spec.js +0 -1
- package/dist/config/rule-engine.spec.d.ts +0 -1
- package/dist/config/rule-engine.spec.js +0 -1
- package/dist/config/runtime.d.ts +0 -29
- package/dist/config/store-policy.d.ts +0 -14
- package/dist/config/store-policy.spec.d.ts +0 -1
- package/dist/config/store-policy.spec.js +0 -1
- package/dist/config/template-params.d.ts +0 -42
- package/dist/config/template-params.spec.d.ts +0 -1
- package/dist/config/template-params.spec.js +0 -1
- package/dist/customer/account-events.d.ts +0 -32
- package/dist/data/api/api.spec.d.ts +0 -1
- package/dist/data/api/api.spec.js +0 -1
- package/dist/data/api/cli.d.ts +0 -1
- package/dist/data/api/head.d.ts +0 -16
- package/dist/data/api/head.spec.d.ts +0 -1
- package/dist/data/api/head.spec.js +0 -1
- package/dist/data/api/index.d.ts +0 -2
- package/dist/data/api/match.d.ts +0 -69
- package/dist/data/api/match.spec.d.ts +0 -1
- package/dist/data/api/match.spec.js +0 -1
- package/dist/data/api/server.d.ts +0 -13
- package/dist/data/projection/cli.d.ts +0 -1
- package/dist/data/projection/edges.d.ts +0 -8
- package/dist/data/projection/edges.spec.d.ts +0 -1
- package/dist/data/projection/edges.spec.js +0 -1
- package/dist/data/projection/facets.d.ts +0 -18
- package/dist/data/projection/facets.spec.d.ts +0 -1
- package/dist/data/projection/facets.spec.js +0 -1
- package/dist/data/projection/facts.d.ts +0 -40
- package/dist/data/projection/index.d.ts +0 -6
- package/dist/data/projection/project.d.ts +0 -10
- package/dist/data/projection/projection.spec.d.ts +0 -1
- package/dist/data/projection/projection.spec.js +0 -1
- package/dist/data/projection/schema.d.ts +0 -1
- package/dist/data/projection/store.d.ts +0 -51
- package/dist/data/projection/types.d.ts +0 -169
- package/dist/data/sync/cdc.d.ts +0 -33
- package/dist/data/sync/cdc.spec.d.ts +0 -1
- package/dist/data/sync/cdc.spec.js +0 -1
- package/dist/data/sync/graphql-source.d.ts +0 -16
- package/dist/data/sync/index.d.ts +0 -5
- package/dist/data/sync/reconciler.d.ts +0 -14
- package/dist/data/sync/reconciler.spec.d.ts +0 -1
- package/dist/data/sync/reconciler.spec.js +0 -1
- package/dist/data/sync/schema.d.ts +0 -1
- package/dist/data/sync/store.d.ts +0 -24
- package/dist/data/sync/sync.spec.d.ts +0 -1
- package/dist/data/sync/sync.spec.js +0 -1
- package/dist/data/sync/synchronizer.d.ts +0 -10
- package/dist/data/sync/types.d.ts +0 -164
- package/dist/evaluation/acceptance.d.ts +0 -33
- package/dist/evaluation/architecture.spec.d.ts +0 -1
- package/dist/evaluation/architecture.spec.js +0 -1
- package/dist/evaluation/builtins/arbitration-score.d.ts +0 -42
- package/dist/evaluation/builtins/demand-match.d.ts +0 -16
- package/dist/evaluation/builtins/graph-service.spec.d.ts +0 -1
- package/dist/evaluation/builtins/graph-service.spec.js +0 -1
- package/dist/evaluation/builtins/index.d.ts +0 -4
- package/dist/evaluation/builtins/purity.spec.d.ts +0 -1
- package/dist/evaluation/builtins/purity.spec.js +0 -1
- package/dist/evaluation/composer.d.ts +0 -38
- package/dist/evaluation/facets/catalog.d.ts +0 -19
- package/dist/evaluation/gap.d.ts +0 -2
- package/dist/evaluation/guard-scan.d.ts +0 -10
- package/dist/evaluation/index.d.ts +0 -14
- package/dist/evaluation/injection.d.ts +0 -6
- package/dist/evaluation/location-match.d.ts +0 -42
- package/dist/evaluation/match-operation.d.ts +0 -23
- package/dist/evaluation/match-policy-resolver.d.ts +0 -9
- package/dist/evaluation/match-policy.spec.d.ts +0 -1
- package/dist/evaluation/match-policy.spec.js +0 -1
- package/dist/evaluation/path-reasoning.d.ts +0 -37
- package/dist/evaluation/standards.d.ts +0 -11
- package/dist/evaluation/standards.spec.d.ts +0 -1
- package/dist/evaluation/standards.spec.js +0 -1
- package/dist/evaluation/structured-lines.d.ts +0 -8
- package/dist/evaluation/user-injection.d.ts +0 -6
- package/dist/experience/experience-reuse.d.ts +0 -10
- package/dist/experience/index.d.ts +0 -7
- package/dist/experience/persistence-config.d.ts +0 -6
- package/dist/experience/persistence.d.ts +0 -21
- package/dist/experience/realtime-feedback.d.ts +0 -5
- package/dist/experience/user-profile.d.ts +0 -25
- package/dist/extensions/capability.d.ts +0 -91
- package/dist/extensions/industry-audit.spec.d.ts +0 -1
- package/dist/extensions/industry-audit.spec.js +0 -1
- package/dist/goal/GoalClassifier.d.ts +0 -17
- package/dist/goal/GoalEngine.d.ts +0 -175
- package/dist/goal/GoalStore.d.ts +0 -27
- package/dist/goal/next-steps.d.ts +0 -12
- package/dist/goal/plan-approval.d.ts +0 -5
- package/dist/goal/pursue.d.ts +0 -18
- package/dist/graph/base.d.ts +0 -8
- package/dist/graph/onchain/analyze.d.ts +0 -59
- package/dist/graph/onchain/analyze.spec.d.ts +0 -1
- package/dist/graph/onchain/analyze.spec.js +0 -1
- package/dist/graph/onchain/anti-cheat.d.ts +0 -69
- package/dist/graph/onchain/anti-cheat.spec.d.ts +0 -1
- package/dist/graph/onchain/anti-cheat.spec.js +0 -1
- package/dist/graph/onchain/dataplane.d.ts +0 -44
- package/dist/graph/onchain/edge-batch.spec.d.ts +0 -1
- package/dist/graph/onchain/edge-batch.spec.js +0 -1
- package/dist/graph/onchain/edge-schema.d.ts +0 -69
- package/dist/graph/onchain/entity-profile.spec.d.ts +0 -1
- package/dist/graph/onchain/entity-profile.spec.js +0 -1
- package/dist/graph/onchain/event-history.spec.d.ts +0 -1
- package/dist/graph/onchain/event-history.spec.js +0 -1
- package/dist/graph/onchain/expand.d.ts +0 -4
- package/dist/graph/onchain/exploration.d.ts +0 -28
- package/dist/graph/onchain/exploration.spec.d.ts +0 -1
- package/dist/graph/onchain/exploration.spec.js +0 -1
- package/dist/graph/onchain/exposure.d.ts +0 -18
- package/dist/graph/onchain/exposure.spec.d.ts +0 -1
- package/dist/graph/onchain/exposure.spec.js +0 -1
- package/dist/graph/onchain/extract-deep.spec.d.ts +0 -1
- package/dist/graph/onchain/extract-deep.spec.js +0 -1
- package/dist/graph/onchain/extract.d.ts +0 -29
- package/dist/graph/onchain/facet-projection.d.ts +0 -99
- package/dist/graph/onchain/facet-projection.spec.d.ts +0 -1
- package/dist/graph/onchain/facet-projection.spec.js +0 -1
- package/dist/graph/onchain/facts.spec.d.ts +0 -1
- package/dist/graph/onchain/facts.spec.js +0 -1
- package/dist/graph/onchain/field-manifest.d.ts +0 -29
- package/dist/graph/onchain/field-manifest.spec.d.ts +0 -1
- package/dist/graph/onchain/field-manifest.spec.js +0 -1
- package/dist/graph/onchain/fixtures.d.ts +0 -80
- package/dist/graph/onchain/fixtures.spec.d.ts +0 -1
- package/dist/graph/onchain/fixtures.spec.js +0 -1
- package/dist/graph/onchain/graph-policy.spec.d.ts +0 -1
- package/dist/graph/onchain/graph-policy.spec.js +0 -1
- package/dist/graph/onchain/index.d.ts +0 -29
- package/dist/graph/onchain/interest.d.ts +0 -10
- package/dist/graph/onchain/interest.spec.d.ts +0 -1
- package/dist/graph/onchain/interest.spec.js +0 -1
- package/dist/graph/onchain/label-lint.spec.d.ts +0 -1
- package/dist/graph/onchain/label-lint.spec.js +0 -1
- package/dist/graph/onchain/names.d.ts +0 -23
- package/dist/graph/onchain/names.spec.d.ts +0 -1
- package/dist/graph/onchain/names.spec.js +0 -1
- package/dist/graph/onchain/object-held-receipts.d.ts +0 -20
- package/dist/graph/onchain/object-held-receipts.spec.d.ts +0 -1
- package/dist/graph/onchain/object-held-receipts.spec.js +0 -1
- package/dist/graph/onchain/onchain.spec.d.ts +0 -1
- package/dist/graph/onchain/onchain.spec.js +0 -1
- package/dist/graph/onchain/policy.d.ts +0 -8
- package/dist/graph/onchain/project-relationship.d.ts +0 -3
- package/dist/graph/onchain/proposal-graph.d.ts +0 -11
- package/dist/graph/onchain/proposal-graph.spec.d.ts +0 -1
- package/dist/graph/onchain/proposal-graph.spec.js +0 -1
- package/dist/graph/onchain/sdk-batch.d.ts +0 -129
- package/dist/graph/onchain/sdk-dataplane.d.ts +0 -44
- package/dist/graph/onchain/strategy.spec.d.ts +0 -1
- package/dist/graph/onchain/strategy.spec.js +0 -1
- package/dist/graph/onchain/synthesis.d.ts +0 -20
- package/dist/graph/onchain/synthesis.spec.d.ts +0 -1
- package/dist/graph/onchain/synthesis.spec.js +0 -1
- package/dist/graph/onchain/table-ledger.spec.d.ts +0 -1
- package/dist/graph/onchain/table-ledger.spec.js +0 -1
- package/dist/graph/onchain/viewport.d.ts +0 -6
- package/dist/harness/auto-escalation.d.ts +0 -15
- package/dist/intent/enrich.d.ts +0 -1
- package/dist/intent/index.d.ts +0 -23
- package/dist/intent/matcher.d.ts +0 -2
- package/dist/intent/store.d.ts +0 -19
- package/dist/intent/types.d.ts +0 -32
- package/dist/keeper/KeeperScan.d.ts +0 -41
- package/dist/keeper/KeeperStore.d.ts +0 -43
- package/dist/keeper/detectors.d.ts +0 -42
- package/dist/keeper/keeper.spec.d.ts +0 -1
- package/dist/keeper/keeper.spec.js +0 -1
- package/dist/keeper/types.d.ts +0 -67
- package/dist/knowledge/account-marks.d.ts +0 -36
- package/dist/knowledge/allocation-ledger.d.ts +0 -75
- package/dist/knowledge/allocation-puzzle.d.ts +0 -138
- package/dist/knowledge/allocation-risk.d.ts +0 -82
- package/dist/knowledge/allocation-templates.d.ts +0 -38
- package/dist/knowledge/allocator-rail-verifier.d.ts +0 -59
- package/dist/knowledge/anti-cheat.d.ts +0 -2
- package/dist/knowledge/arb-fund-facts.d.ts +0 -51
- package/dist/knowledge/arb-risk.d.ts +0 -39
- package/dist/knowledge/arbitration-puzzle.d.ts +0 -84
- package/dist/knowledge/arbitration-rail-verifier.d.ts +0 -35
- package/dist/knowledge/arbitration-risk.d.ts +0 -114
- package/dist/knowledge/arbitration-templates.d.ts +0 -39
- package/dist/knowledge/arbitration-venue-order.d.ts +0 -25
- package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +0 -1
- package/dist/knowledge/baselines/guard-lint-baseline.spec.js +0 -1
- package/dist/knowledge/baselines/risk-baselines.spec.d.ts +0 -1
- package/dist/knowledge/baselines/risk-baselines.spec.js +0 -1
- package/dist/knowledge/baselines/risk-cases.d.ts +0 -8
- package/dist/knowledge/baselines/semantic-facts.d.ts +0 -12
- package/dist/knowledge/bridge-risk.d.ts +0 -36
- package/dist/knowledge/catalog-facts.d.ts +0 -4
- package/dist/knowledge/chain-query-registry.d.ts +0 -14
- package/dist/knowledge/commission-landing.d.ts +0 -26
- package/dist/knowledge/component-schema.d.ts +0 -64
- package/dist/knowledge/contact-risk.d.ts +0 -32
- package/dist/knowledge/contact-templates.d.ts +0 -26
- package/dist/knowledge/contract-invariants.d.ts +0 -54
- package/dist/knowledge/demand-risk.d.ts +0 -30
- package/dist/knowledge/discount-threshold.d.ts +0 -26
- package/dist/knowledge/dynamic-pricing.d.ts +0 -29
- package/dist/knowledge/entity-recipient-guard.d.ts +0 -21
- package/dist/knowledge/event-semantics.d.ts +0 -23
- package/dist/knowledge/evidence-review.d.ts +0 -35
- package/dist/knowledge/fee-param-bindings.d.ts +0 -28
- package/dist/knowledge/flywheel-loop.d.ts +0 -41
- package/dist/knowledge/game-scenarios.d.ts +0 -21
- package/dist/knowledge/getting-started.d.ts +0 -37
- package/dist/knowledge/goal-completion.d.ts +0 -31
- package/dist/knowledge/guard-anchor-reach.d.ts +0 -19
- package/dist/knowledge/guard-binding-table.d.ts +0 -52
- package/dist/knowledge/guard-binding-verifier.d.ts +0 -37
- package/dist/knowledge/guard-bindings.d.ts +0 -21
- package/dist/knowledge/guard-blueprint.d.ts +0 -68
- package/dist/knowledge/guard-design-patterns.d.ts +0 -38
- package/dist/knowledge/guard-eval.d.ts +0 -15
- package/dist/knowledge/guard-field-cognition.d.ts +0 -48
- package/dist/knowledge/guard-host-context.d.ts +0 -24
- package/dist/knowledge/guard-ledger.d.ts +0 -19
- package/dist/knowledge/guard-leg-map.d.ts +0 -5
- package/dist/knowledge/guard-lint.d.ts +0 -79
- package/dist/knowledge/guard-node-gates.d.ts +0 -9
- package/dist/knowledge/guard-puzzle.d.ts +0 -188
- package/dist/knowledge/guard-render.d.ts +0 -71
- package/dist/knowledge/guard-risk.d.ts +0 -71
- package/dist/knowledge/guard-submission-brief.d.ts +0 -94
- package/dist/knowledge/guard-submission-prompt.d.ts +0 -63
- package/dist/knowledge/guard-translation.d.ts +0 -58
- package/dist/knowledge/index.d.ts +0 -299
- package/dist/knowledge/industry-evolution.d.ts +0 -82
- package/dist/knowledge/industry-generalizer.d.ts +0 -63
- package/dist/knowledge/industry-rule-node.d.ts +0 -7
- package/dist/knowledge/industry-strategy.d.ts +0 -91
- package/dist/knowledge/intent-metrics.d.ts +0 -43
- package/dist/knowledge/jsonrpc-enum.d.ts +0 -102
- package/dist/knowledge/knob-docs.d.ts +0 -5
- package/dist/knowledge/machine-fork-watch.d.ts +0 -9
- package/dist/knowledge/machine-ledger.d.ts +0 -42
- package/dist/knowledge/machine-puzzle.d.ts +0 -206
- package/dist/knowledge/machine-risk.d.ts +0 -72
- package/dist/knowledge/machine-templates.d.ts +0 -92
- package/dist/knowledge/machine-topology.d.ts +0 -116
- package/dist/knowledge/machine-translation.d.ts +0 -96
- package/dist/knowledge/market-metrics.d.ts +0 -34
- package/dist/knowledge/market-operations.d.ts +0 -46
- package/dist/knowledge/migration-preflight.d.ts +0 -27
- package/dist/knowledge/object-dependency.d.ts +0 -31
- package/dist/knowledge/operation-dictionary.d.ts +0 -18
- package/dist/knowledge/order-ledger.d.ts +0 -69
- package/dist/knowledge/order-puzzle.d.ts +0 -162
- package/dist/knowledge/order-risk.d.ts +0 -62
- package/dist/knowledge/order-templates.d.ts +0 -50
- package/dist/knowledge/param-schema.d.ts +0 -93
- package/dist/knowledge/param-tiers.d.ts +0 -27
- package/dist/knowledge/passport-ledger.d.ts +0 -60
- package/dist/knowledge/passport-templates.d.ts +0 -40
- package/dist/knowledge/path-oracle/coverage.d.ts +0 -16
- package/dist/knowledge/path-oracle/index.d.ts +0 -5
- package/dist/knowledge/path-oracle/products/food-delivery.d.ts +0 -2
- package/dist/knowledge/path-oracle/schema.d.ts +0 -188
- package/dist/knowledge/pattern-resolutions.d.ts +0 -110
- package/dist/knowledge/payment-risk.d.ts +0 -38
- package/dist/knowledge/payment-tracker.d.ts +0 -63
- package/dist/knowledge/permission-ledger.d.ts +0 -49
- package/dist/knowledge/permission-puzzle.d.ts +0 -122
- package/dist/knowledge/permission-risk.d.ts +0 -70
- package/dist/knowledge/permission-templates.d.ts +0 -38
- package/dist/knowledge/personal-risk.d.ts +0 -36
- package/dist/knowledge/product-detail-source.d.ts +0 -37
- package/dist/knowledge/product-doc-b5.d.ts +0 -16
- package/dist/knowledge/progress-ledger.d.ts +0 -63
- package/dist/knowledge/progress-puzzle.d.ts +0 -82
- package/dist/knowledge/progress-risk.d.ts +0 -75
- package/dist/knowledge/progress-templates.d.ts +0 -38
- package/dist/knowledge/projection.d.ts +0 -54
- package/dist/knowledge/projection.spec.d.ts +0 -1
- package/dist/knowledge/projection.spec.js +0 -1
- package/dist/knowledge/proof-risk.d.ts +0 -33
- package/dist/knowledge/protocol-facts.d.ts +0 -17
- package/dist/knowledge/publish-gate.d.ts +0 -20
- package/dist/knowledge/publish-readiness.d.ts +0 -25
- package/dist/knowledge/publish-surface-contract.d.ts +0 -16
- package/dist/knowledge/puzzle-projections.d.ts +0 -11
- package/dist/knowledge/rail-exit-satisfiability.d.ts +0 -25
- package/dist/knowledge/registrar-risk.d.ts +0 -34
- package/dist/knowledge/release-sentinel.d.ts +0 -12
- package/dist/knowledge/repository-risk.d.ts +0 -46
- package/dist/knowledge/repository-write-semantics.d.ts +0 -27
- package/dist/knowledge/reputation-rules.d.ts +0 -36
- package/dist/knowledge/requirement-families.d.ts +0 -13
- package/dist/knowledge/resource-risk.d.ts +0 -32
- package/dist/knowledge/reward-ledger.d.ts +0 -97
- package/dist/knowledge/reward-puzzle.d.ts +0 -98
- package/dist/knowledge/reward-risk.d.ts +0 -86
- package/dist/knowledge/reward-templates.d.ts +0 -25
- package/dist/knowledge/rule-node-analyzers.d.ts +0 -49
- package/dist/knowledge/rule-outcome.d.ts +0 -5
- package/dist/knowledge/scenario-topology.d.ts +0 -48
- package/dist/knowledge/semantic-ir.d.ts +0 -136
- package/dist/knowledge/service-allocation-semantics.d.ts +0 -36
- package/dist/knowledge/service-allocator-audit-node.d.ts +0 -3
- package/dist/knowledge/service-ledger.d.ts +0 -87
- package/dist/knowledge/service-puzzle.d.ts +0 -158
- package/dist/knowledge/service-risk-node.d.ts +0 -3
- package/dist/knowledge/service-risk.d.ts +0 -110
- package/dist/knowledge/service-templates.d.ts +0 -41
- package/dist/knowledge/settlement-semantics.d.ts +0 -1
- package/dist/knowledge/strategy-manuals.d.ts +0 -15
- package/dist/knowledge/supply-chain.d.ts +0 -35
- package/dist/knowledge/template-index.d.ts +0 -19
- package/dist/knowledge/template-loader.d.ts +0 -425
- package/dist/knowledge/template-nav.d.ts +0 -9
- package/dist/knowledge/template-prose.d.ts +0 -50
- package/dist/knowledge/template-registry.d.ts +0 -48
- package/dist/knowledge/template-scanner.d.ts +0 -158
- package/dist/knowledge/template-test-profiles.d.ts +0 -17
- package/dist/knowledge/template-validation.d.ts +0 -3
- package/dist/knowledge/tools-reference.d.ts +0 -17
- package/dist/knowledge/treasury-ledger.d.ts +0 -42
- package/dist/knowledge/treasury-puzzle.d.ts +0 -163
- package/dist/knowledge/treasury-risk.d.ts +0 -88
- package/dist/knowledge/treasury-templates.d.ts +0 -38
- package/dist/knowledge/universal-template.d.ts +0 -22
- package/dist/knowledge/util-risk.d.ts +0 -30
- package/dist/knowledge/workflow-guidance.d.ts +0 -194
- package/dist/knowledge/workspace-lists.d.ts +0 -61
- package/dist/monitor/SuggestionBridge.spec.d.ts +0 -1
- package/dist/monitor/SuggestionBridge.spec.js +0 -1
- package/dist/participation/arbitrator-interest.d.ts +0 -22
- package/dist/participation/demander-interest.d.ts +0 -23
- package/dist/participation/employee-kpi.d.ts +0 -37
- package/dist/participation/employee-kpi.spec.d.ts +0 -1
- package/dist/participation/employee-kpi.spec.js +0 -1
- package/dist/participation/employee-store.d.ts +0 -16
- package/dist/participation/game-context.d.ts +0 -25
- package/dist/participation/index.d.ts +0 -2
- package/dist/participation/node-action-advisor.d.ts +0 -68
- package/dist/participation/time-window.d.ts +0 -48
- package/dist/persona/facet-profile.d.ts +0 -33
- package/dist/persona/persona-audit.spec.d.ts +0 -1
- package/dist/persona/persona-audit.spec.js +0 -1
- package/dist/playbooks/service-build/business-puzzle.d.ts +0 -48
- package/dist/playbooks/service-build/context-assembly.d.ts +0 -32
- package/dist/playbooks/service-build/facet-money.d.ts +0 -33
- package/dist/playbooks/service-build/facet-money.spec.d.ts +0 -1
- package/dist/playbooks/service-build/facet-money.spec.js +0 -1
- package/dist/playbooks/service-build/game-theory.d.ts +0 -47
- package/dist/playbooks/service-build/index.d.ts +0 -15
- package/dist/playbooks/service-build/intent-analyzer.d.ts +0 -72
- package/dist/playbooks/service-build/machine-nodes.d.ts +0 -27
- package/dist/playbooks/service-build/machine-panorama.d.ts +0 -71
- package/dist/playbooks/service-build/merchant-guide.d.ts +0 -382
- package/dist/playbooks/service-build/migration-planner.d.ts +0 -61
- package/dist/playbooks/service-build/mode-actions.d.ts +0 -260
- package/dist/playbooks/service-build/object-panorama.d.ts +0 -317
- package/dist/playbooks/service-build/object-type.d.ts +0 -1
- package/dist/playbooks/service-build/participation-radar.d.ts +0 -20
- package/dist/playbooks/service-build/pipeline-actions.d.ts +0 -108
- package/dist/playbooks/service-build/process.d.ts +0 -6
- package/dist/playbooks/service-build/relationship-profile.d.ts +0 -3
- package/dist/playbooks/service-build/reverse-mapping-nk4.spec.d.ts +0 -1
- package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +0 -1
- package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.d.ts +0 -1
- package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.js +0 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +0 -66
- package/dist/playbooks/service-build/risk-aggregator.d.ts +0 -59
- package/dist/playbooks/service-build/service-panorama.d.ts +0 -229
- package/dist/playbooks/service-build/service-quote.d.ts +0 -2
- package/dist/playbooks/service-build/service-quote.spec.d.ts +0 -1
- package/dist/playbooks/service-build/service-quote.spec.js +0 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +0 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.js +0 -1
- package/dist/playbooks/service-build/topology-query.d.ts +0 -25
- package/dist/playbooks/service-build/workflow-design-assessment.d.ts +0 -33
- package/dist/relationship/derivation.d.ts +0 -95
- package/dist/relationship/derivation.spec.d.ts +0 -1
- package/dist/relationship/derivation.spec.js +0 -1
- package/dist/relationship/incentive.d.ts +0 -38
- package/dist/relationship/index.d.ts +0 -4
- package/dist/relationship/registry.d.ts +0 -13
- package/dist/relationship/types.d.ts +0 -45
- package/dist/review/arb.d.ts +0 -4
- package/dist/review/demand.d.ts +0 -3
- package/dist/review/index.d.ts +0 -3
- package/dist/review/machine.d.ts +0 -3
- package/dist/review/order.d.ts +0 -8
- package/dist/review/progress.d.ts +0 -3
- package/dist/review/repository.d.ts +0 -3
- package/dist/review/service.d.ts +0 -5
- package/dist/review/types.d.ts +0 -163
- package/dist/role/derivation.d.ts +0 -35
- package/dist/role/index.d.ts +0 -6
- package/dist/role/intent.d.ts +0 -23
- package/dist/role/model.d.ts +0 -9
- package/dist/role/profiles.d.ts +0 -26
- package/dist/role/resolution.d.ts +0 -27
- package/dist/runtime/instance-registry.d.ts +0 -14
- package/dist/safety/index.d.ts +0 -3
- package/dist/schema/call/permission-handler.d.ts +0 -5
- package/dist/schema/call/semantic-customer-advice.spec.d.ts +0 -1
- package/dist/schema/call/semantic-customer-advice.spec.js +0 -1
- package/dist/schema/common/tokentype-short-probe.spec.d.ts +0 -1
- package/dist/schema/common/tokentype-short-probe.spec.js +0 -1
- package/dist/schema/envelope-unify.d.ts +0 -5
- package/dist/schema/goal/planning.d.ts +0 -742
- package/dist/schema/industry-pack/modes.d.ts +0 -447
- package/dist/schema/query/bi.d.ts +0 -3369
- package/dist/schema/utils/guard-query-utils.d.ts +0 -18
- package/dist/schema/utils/permission-index-utils.d.ts +0 -2
- package/dist/schema/utils/skills-recommendation.d.ts +0 -2
- package/dist/schema-query-impl/index.d.ts +0 -83
- package/dist/schemas/account_operation.output.json +0 -3869
- package/dist/schemas/ask_user.output.json +0 -54
- package/dist/schemas/benchmark_migration_operation.output.json +0 -1669
- package/dist/schemas/bridge_operation.output.json +0 -1548
- package/dist/schemas/config_operation.output.json +0 -896
- package/dist/schemas/employee_operation.output.json +0 -307
- package/dist/schemas/evaluation_operation.output.json +0 -4716
- package/dist/schemas/guard2file.output.json +0 -83
- package/dist/schemas/industry_pack_operation.output.json +0 -2985
- package/dist/schemas/intent_radar.output.json +0 -326
- package/dist/schemas/keeper_operation.output.json +0 -1441
- package/dist/schemas/local_cache_operation.output.json +0 -1718
- package/dist/schemas/local_history_operation.output.json +0 -1644
- package/dist/schemas/local_info_operation.output.json +0 -1530
- package/dist/schemas/local_mark_operation.output.json +0 -1622
- package/dist/schemas/machineNode2file.output.json +0 -88
- package/dist/schemas/messenger_operation.output.json +0 -4692
- package/dist/schemas/monitor_events.output.json +0 -1602
- package/dist/schemas/monitor_subscription.output.json +0 -1629
- package/dist/schemas/onchain_events.output.json +0 -4053
- package/dist/schemas/onchain_operations.output.json +0 -7788
- package/dist/schemas/onchain_table_data.output.json +0 -11868
- package/dist/schemas/permission_operation.output.json +0 -205
- package/dist/schemas/persona_operation.output.json +0 -64612
- package/dist/schemas/query_toolkit.output.json +0 -28302
- package/dist/schemas/schema_query.output.json +0 -81
- package/dist/schemas/service_clone_operation.output.json +0 -247
- package/dist/schemas/strategy_review_operation.output.json +0 -532
- package/dist/schemas/watch_operation.output.json +0 -930
- package/dist/schemas/wip_file.output.json +0 -360
- package/dist/schemas/workflow_operation.output.json +0 -422
- package/dist/schemas/workspace_operation.output.json +0 -477
- package/dist/schemas/wowok_buildin_info.output.json +0 -2477
- package/dist/strategy/collectors.d.ts +0 -66
- package/dist/strategy/collectors.spec.d.ts +0 -1
- package/dist/strategy/collectors.spec.js +0 -1
- package/dist/strategy/index.d.ts +0 -5
- package/dist/strategy/metrics.d.ts +0 -20
- package/dist/strategy/review.d.ts +0 -48
- package/dist/strategy/scorecard.d.ts +0 -32
- package/dist/strategy/store.d.ts +0 -26
- package/dist/task/ProcessStore.d.ts +0 -98
- package/dist/task/playbook.d.ts +0 -11
- package/dist/task/substep-trace.d.ts +0 -91
- package/dist/tools/build-fingerprint.d.ts +0 -28
- package/dist/tools/error-catalog.d.ts +0 -17
- package/dist/tools/handlers/ask-user.d.ts +0 -3
- package/dist/tools/handlers/benchmark-migration.d.ts +0 -121
- package/dist/tools/handlers/bridge.d.ts +0 -8
- package/dist/tools/handlers/config.d.ts +0 -2
- package/dist/tools/handlers/dispatch-expectations.d.ts +0 -2
- package/dist/tools/handlers/dispatch-expectations.spec.d.ts +0 -1
- package/dist/tools/handlers/dispatch-expectations.spec.js +0 -1
- package/dist/tools/handlers/employee.d.ts +0 -8
- package/dist/tools/handlers/employee.spec.d.ts +0 -1
- package/dist/tools/handlers/employee.spec.js +0 -1
- package/dist/tools/handlers/entry-edge-recipe.d.ts +0 -101
- package/dist/tools/handlers/escrow-deficit.d.ts +0 -10
- package/dist/tools/handlers/evaluation.d.ts +0 -2
- package/dist/tools/handlers/evaluation.spec.d.ts +0 -1
- package/dist/tools/handlers/evaluation.spec.js +0 -1
- package/dist/tools/handlers/file-export.d.ts +0 -3
- package/dist/tools/handlers/fund-rail-recipe.d.ts +0 -10
- package/dist/tools/handlers/goal.d.ts +0 -4
- package/dist/tools/handlers/industry-pack.d.ts +0 -3
- package/dist/tools/handlers/intent-radar.d.ts +0 -2
- package/dist/tools/handlers/keeper.d.ts +0 -12
- package/dist/tools/handlers/local.d.ts +0 -6
- package/dist/tools/handlers/mark-namespace.d.ts +0 -30
- package/dist/tools/handlers/messenger.d.ts +0 -24
- package/dist/tools/handlers/monitor.d.ts +0 -26
- package/dist/tools/handlers/name-resolution.d.ts +0 -4
- package/dist/tools/handlers/name-resolution.spec.d.ts +0 -1
- package/dist/tools/handlers/name-resolution.spec.js +0 -1
- package/dist/tools/handlers/network.d.ts +0 -1
- package/dist/tools/handlers/onchain-name-registration.d.ts +0 -49
- package/dist/tools/handlers/onchain-name-registration.spec.d.ts +0 -1
- package/dist/tools/handlers/onchain-name-registration.spec.js +0 -1
- package/dist/tools/handlers/onchain.d.ts +0 -132
- package/dist/tools/handlers/permission.d.ts +0 -2
- package/dist/tools/handlers/persona.d.ts +0 -4
- package/dist/tools/handlers/publish-binding-echo.d.ts +0 -22
- package/dist/tools/handlers/review-chain.d.ts +0 -19
- package/dist/tools/handlers/schema-query.d.ts +0 -2
- package/dist/tools/handlers/service-clone.d.ts +0 -20
- package/dist/tools/handlers/stale-build-check.d.ts +0 -9
- package/dist/tools/handlers/strategy-review.d.ts +0 -2
- package/dist/tools/handlers/submission-assembly.d.ts +0 -55
- package/dist/tools/handlers/watch.d.ts +0 -2
- package/dist/tools/handlers/winner-derivation.d.ts +0 -20
- package/dist/tools/handlers/wip-upload.d.ts +0 -22
- package/dist/tools/handlers/wip.d.ts +0 -2
- package/dist/tools/handlers/workflow.d.ts +0 -2
- package/dist/tools/handlers/workspace.d.ts +0 -4
- package/dist/tools/move-fn-index.gen.d.ts +0 -3
- package/dist/tools/publish-gate-state.d.ts +0 -5
- package/dist/tools/registry/agent.d.ts +0 -2
- package/dist/tools/registry/bridge.d.ts +0 -2
- package/dist/tools/registry/business.d.ts +0 -2
- package/dist/tools/registry/config.d.ts +0 -2
- package/dist/tools/registry/evaluation.d.ts +0 -2
- package/dist/tools/registry/files.d.ts +0 -2
- package/dist/tools/registry/identity.d.ts +0 -2
- package/dist/tools/registry/interaction.d.ts +0 -2
- package/dist/tools/registry/local.d.ts +0 -2
- package/dist/tools/registry/messenger.d.ts +0 -2
- package/dist/tools/registry/monitor.d.ts +0 -2
- package/dist/tools/registry/onchain.d.ts +0 -2
- package/dist/tools/registry/query.d.ts +0 -2
- package/dist/tools/retry.d.ts +0 -8
- package/dist/tools/rules-hook.d.ts +0 -5
- package/dist/tools/runtime-health.d.ts +0 -10
- package/dist/tools/sanitize-description-roundtrip.spec.d.ts +0 -1
- package/dist/tools/sanitize-description-roundtrip.spec.js +0 -1
- package/dist/tools/sanitize-output.d.ts +0 -4
- package/dist/tools/sanitize-output.spec.d.ts +0 -1
- package/dist/tools/sanitize-output.spec.js +0 -1
- package/dist/tools/shared.d.ts +0 -20
- package/dist/tools/transport-integrity.d.ts +0 -7
- package/dist/tools/upgrade-check.d.ts +0 -75
- package/dist/tools/wip-deploy-assist.d.ts +0 -34
- package/dist/tools/wip-verify-ledger.d.ts +0 -16
- package/dist/tools/wrap.d.ts +0 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
import{afterSalesRailRegex as a21a,afterSalesRailNodeMatches}from'../knowledge/template-scanner.js';import{TWO_TX_RENEW_RECIPE}from'../knowledge/protocol-facts.js';function emitAfterSalesGates(a,b){const c=[];if(a==='none')return c;const d=a21a(a),e=b['shape']['some'](f=>afterSalesRailNodeMatches(a,f['name']));return!e&&c['push']({'code':'AFTER_SALES_RAIL_MISSING','detail':'after_sales_mode\x20\x27'+a+'\x27\x20declares\x20a\x20buyer\x20after-sales\x20remedy,\x20but\x20machine_shape\x20has\x20no\x20'+('backing\x20rail\x20(no\x20node\x20matching\x20'+d+').\x20Add\x20the\x20'+a+'\x20node\x20family\x20')+'(e.g.\x20return_requested\x20->\x20returned\x20for\x20\x27return\x27)\x20as\x20a\x20node-gated\x20fund\x20rail\x20(decision\x2011:\x20NEVER\x20a\x20'+'claimed_by\x20leg\x20—\x20RAIL_CLAIMED_BY_LEG\x20critical)\x20anchored\x20on\x20the\x20delivered\x20ENTRY\x20time\x20'+'(INV-C2,\x20TIME-ANCHOR-01);\x20refund\x20and\x20award\x20are\x20independent\x20tracks\x20and\x20any\x20overlap\x20is\x20disclosed\x20'+'at\x20the\x20dual-payout\x20gate\x20(DUAL-RAIL-01).\x20Or\x20set\x20after_sales_mode\x20\x27none\x27\x20if\x20this\x20shop\x20ships\x20no\x20such\x20remedy.'}),c;}function emitAcceptanceGates(a,b){const c=[],d=[];if(a==='none')return{'blockers':c,'disclosures':d};const e=a==='contest'||a==='bounty'||a==='agent';e&&b['arbitrationMode']!=='third_party'&&c['push']({'code':'ACCEPTANCE_JUDGE_NOT_INDEPENDENT','detail':'acceptance_mode\x20\x27'+a+'\x27\x20is\x20a\x20judge-decided\x20acceptance\x20(a\x20third\x20party\x20rules\x20on\x20'+('release),\x20but\x20arbitration_mode\x20is\x20\x27'+(b['arbitrationMode']??'none')+'\x27,\x20not\x20\x27third_party\x27.\x20')+'The\x20party\x20owing\x20the\x20payout\x20must\x20not\x20also\x20decide\x20whether\x20it\x20is\x20owed\x20(merchant\x20self-adjudication,\x20'+'INV-A3).\x20Set\x20arbitration_mode\x20\x27third_party\x27\x20so\x20an\x20independent\x20venue/judge\x20Permission\x20rules\x20'+'(R2;\x20enforced\x20at\x20publish\x20by\x20controller-disjointness),\x20or\x20use\x20acceptance_mode\x20\x27milestone\x27\x20if\x20the\x20'+'buyer\x20genuinely\x20self-adjudicates.'});const f=b['feeParams']['revision_rounds_max'],g=typeof f==='number'||typeof f==='string'&&f['trim']()!==''&&/^\d+$/['test'](f['trim']());if(g){const h=b['guardSpecs']['some'](i=>i['host']==='repository'||/repository/i['test'](i['template_id']));!h&&c['push']({'code':'ACCEPTANCE_REVISION_UNBOUNDED','detail':'acceptance_mode\x20\x27'+a+'\x27\x20declares\x20a\x20bounded\x20revision\x20loop\x20'+('(fee_params.revision_rounds_max\x20=\x20'+String(f)+'),\x20but\x20no\x20counter-backed\x20Repository\x20')+'guard\x20exists.\x20The\x20chain\x20caps\x20EDGE\x20count\x20(MAX_FORWARD\x20/\x20MAX_NODE_PAIR),\x20never\x20VISIT\x20count,\x20'+'so\x20a\x20finite\x20cap\x20in\x20fee_params\x20alone\x20is\x20a\x20promise\x20the\x20chain\x20cannot\x20keep\x20(INV-A1).\x20Either\x20declare\x20'+'revision_rounds_max\x20\x27unlimited\x27\x20(the\x20honest\x20form\x20—\x20the\x20revision\x20loop\x20is\x20then\x20genuinely\x20'+'unbounded)\x20or\x20mount\x20a\x20counter-backed\x20Repository\x20guard\x20(pattern.repository_data_check\x20reading\x20a\x20'+'per-order\x20revision\x20tally\x20written\x20via\x20pattern.repository_write_authorization)\x20that\x20gates\x20the\x20'+'redelivery\x20forward\x20once\x20the\x20tally\x20reaches\x20the\x20cap.'});}if(a==='contest')d['push']('Winner\x20rule\x20(first-to-node):\x20the\x20winner\x20is\x20the\x20first\x20account\x20whose\x20forward\x20completes\x20entry\x20into\x20'+'the\x20adjudication\x20node\x20—\x20computable\x20from\x20the\x20order\x27s\x20Progress\x20history\x20(first\x20matching\x20entry,\x20earliest\x20'+'time);\x20ties\x20resolve\x20by\x20chain\x20timestamp.\x20This\x20rule\x20is\x20disclosed\x20for\x20judge/merchant\x20reference;\x20the\x20'+'chain\x20stores\x20no\x20winner\x20field\x20(F-RQD2-05).');else a==='bounty'&&d['push']('Winner\x20rule\x20(judge-accepted\x20triage):\x20winners\x20are\x20the\x20submitters\x20whose\x20reports\x20the\x20independent\x20judge\x20'+'accepts\x20(severity-ranked);\x20the\x20Progress\x20history\x20proves\x20who\x20delivered,\x20the\x20judge\x20permission\x20decides\x20'+'which\x20delivery\x20wins.');return{'blockers':c,'disclosures':d};}function emitInstallmentGates(a,b){const c=[];if(a==='none')return c;const d=/(due|owed|owing|unpaid|awaiting|pending)/i,f=/(paid|captured|funded|settled)/i,g=/(deposit|down_?pay|balance_due|balance_owed|awaiting|installment|milestone)/i,h=/(refund|cancel|exit|forfeit|kill|void|abandon|release|expire|lapse)/i,i=[];for(const s of b['shape']){const t=s['name'];for(const u of s['from']??[]){typeof u==='string'?i['push']({'prev':u,'target':t}):i['push']({'prev':u['prev'],'target':t,'guardKey':u['guard_key']});}}const j=i['filter'](w=>d['test'](w['prev'])&&f['test'](w['target'])&&(w['guardKey']===undefined||w['guardKey']['trim']()===''));j['length']>0x0&&c['push']({'code':'INSTALLMENT_FUNDING_UNGATED','detail':'installment_mode\x20\x27'+a+'\x27\x20captures\x20a\x20later\x20payment,\x20but\x20the\x20funding\x20forward(s)\x20'+j['map'](w=>'\x27'+w['prev']+'\x27\x20→\x20\x27'+w['target']+'\x27')['join'](',\x20')+'\x20carry\x20NO\x20guard_key.\x20A\x20bare\x20advance\x20records\x20the\x20balance\x20as\x20paid\x20WITHOUT\x20the\x20capture\x20landing\x20in\x20the\x20'+'Allocation\x20—\x20a\x20zero-value\x20advance\x20(INV-B1,\x20H4).\x20Bind\x20a\x20fund-gate\x20Guard\x20on\x20each\x20capture\x20forward\x20'+'(constant\x20=\x20order\x20address,\x20convert_witness\x20OrderAllocation(109),\x20allocation.balance\x20query\x201051\x20>=\x20the\x20'+'capture\x20amount).\x20PRE-STATE\x20CONSTRAINT\x20(esound-mn-261021\x20B-1,\x20mainnet-verified):\x20guards\x20read\x20the\x20'+'COMMITTED\x20pre-transaction\x20balance\x20—\x20funding\x20that\x20lands\x20in\x20the\x20SAME\x20PTB\x20(the\x20one-PTB\x20order_renew\x20'+'payment\x20half)\x20is\x20INVISIBLE\x20to\x20the\x20forward\x27s\x20guard,\x20so\x20a\x20balance-gated\x20capture\x20advanced\x20by\x20'+('order_renew\x20ALWAYS\x20aborts.\x20'+TWO_TX_RENEW_RECIPE+'\x20Pair\x20the\x20balance\x20gate\x20with\x20the\x20once\x20slot\x20')+'(H5\x20—\x20the\x20fund\x20gate\x20is\x20a\x20STATE\x20READ,\x20not\x20a\x20once)\x20so\x20a\x20replay\x20cannot\x20re-capture.'});const k=new Set(b['rows']['filter'](w=>w['track']==='refund'||w['track']==='settlement')['map'](w=>w['guard_key'])['filter'](w=>typeof w==='string'&&w['trim']()!=='')),l=new Set(b['shape']['map'](w=>w['name'])),m=new Map(b['shape']['map'](w=>[w['name'],w['semantic_role']])),o=new Set();for(const w of b['guardSpecs']){if(w['host']!=='machine'||!/allocator_node_gate|progress_state_check/['test'](w['template_id']))continue;if(!k['has'](w['key']))continue;for(const x of Object['values'](w['params']??{})){if(typeof x==='string'&&l['has'](x))o['add'](x);}}const p=new Map();for(const y of i){const z=p['get'](y['prev'])??[];z['push'](y['target']),p['set'](y['prev'],z);}const q=A=>{const B=new Set([A]),C=[...p['get'](A)??[]];while(C['length']>0x0){const D=C['pop']();if(o['has'](D))return!![];const E=m['get'](D);if(E==='final'||E==='cancelled')return!![];if(B['has'](D))continue;B['add'](D);for(const F of p['get'](D)??[])if(!B['has'](F))C['push'](F);}return![];},r=[];for(const A of b['shape']){if(!g['test'](A['name']))continue;const B=i['filter'](D=>D['prev']===A['name']),C=q(A['name']);if(!C){const D=B['filter'](E=>h['test'](E['target']))['map'](E=>'\x27'+E['target']+'\x27');r['push'](D['length']>0x0?A['name']+'\x20(keyword-named\x20target(s)\x20'+D['join'](',\x20')+'\x20reach\x20no\x20refund/settlement\x20rail\x20and\x20no\x20final/cancelled\x20state\x20—\x20the\x20NAME\x20alone\x20is\x20not\x20an\x20exit)':A['name']);}}return r['length']>0x0&&c['push']({'code':'INSTALLMENT_DEPOSIT_STRANDED','detail':'installment_mode\x20\x27'+a+'\x27\x20holds\x20a\x20buyer\x20payment\x20at\x20state(s)\x20'+r['map'](E=>'\x27'+E+'\x27')['join'](',\x20')+'\x20with\x20NO\x20deposit-exit\x20rail\x20(no\x20outgoing\x20refund\x20/\x20cancel\x20/\x20forfeit\x20/\x20expire\x20edge).\x20There\x20is\x20no\x20on-chain\x20'+'obligation\x20to\x20pay\x20the\x20balance\x20(INV-B2,\x20H1),\x20so\x20a\x20buyer\x20who\x20walks\x20away\x20strands\x20the\x20already-paid\x20portion\x20'+'at\x20that\x20node\x20permanently\x20(Machine\x20+\x20Allocator\x20immutable,\x20IMMUT-001).\x20Add\x20a\x20deposit-exit\x20rail\x20from\x20each\x20'+'held\x20state\x20—\x20a\x20refund/cancel\x20forward\x20into\x20an\x20exit\x20node\x20whose\x20allocator\x20returns\x20the\x20held\x20funds\x20to\x20the\x20'+'order\x20payer\x20(GuardIdentifier(0))\x20or\x20applies\x20the\x20declared\x20deposit_exit_policy\x20(full\x20refund\x20vs\x20a\x20kill\x20fee\x20'+'compensating\x20the\x20merchant\x20for\x20the\x20reserved\x20capacity).'}),c;}function emitAffiliateGates(a,b){const c=[];if(a==='none')return c;const d=/(commission|affiliate|referr|attribut|partner_?payout)/i,e=b['shape']['some'](i=>d['test'](i['name'])),f=b['rows']['some'](i=>d['test'](i['value_from']??'')||d['test'](i['recipient_key']??''));!e&&!f&&c['push']({'code':'AFFILIATE_RAIL_MISSING','detail':'affiliate_mode\x20\x27'+a+'\x27\x20declares\x20a\x20referral/affiliate\x20commission\x20overlay,\x20but\x20machine_shape\x20has\x20no\x20'+'commission-family\x20node\x20and\x20the\x20allocator\x20has\x20no\x20commission\x20row\x20—\x20a\x20declared\x20partner\x20payout\x20with\x20no\x20rail\x20to\x20'+'walk\x20it\x20is\x20a\x20false\x20promise\x20at\x20quote\x20time\x20(INV-D3).\x20Add\x20an\x20INDEPENDENT\x20commission\x20leg:\x20a\x20Rate\x20row\x20off\x20a\x20'+'dedicated\x20commission\x20pool\x20(never\x20a\x20Surplus/Rate\x20drain\x20of\x20the\x20buyer\x27s\x20goods\x20escrow\x20—\x20anti-grab-pool)\x20to\x20an\x20explicit\x20'+'non-empty\x20partner\x20Entity,\x20gated\x20by\x20a\x20window-anchored\x20claim\x20guard\x20(INV-D1\x20rides\x20TIME-ANCHOR-01)\x20so\x20the\x20'+'commission\x20is\x20claimable\x20only\x20after\x20the\x20attribution/refund\x20window\x20closes.'});const g=/(post-?lock|clawback|unrecoverable|irrevocab|no\s*(?:revers|recov|clawback)|cannot be reversed|once released|released commission)/i,h=b['buildNotes']['some'](i=>g['test'](i));return!h&&c['push']({'code':'AFFILIATE_CLAWBACK_UNDISCLOSED','detail':'affiliate_mode\x20\x27'+a+'\x27\x20declares\x20a\x20commission\x20but\x20no\x20build_note\x20discloses\x20the\x20post-lock\x20no-clawback\x20'+'truth\x20(INV-D2).\x20SOLE\x20TRUTH:\x20Allocation\x20distribute\x20is\x20a\x20ONE-WAY\x20outflow\x20(no\x20debit/clawback\x20primitive,\x20§11.0\x20G2),\x20'+'so\x20once\x20a\x20commission\x20is\x20RELEASED\x20it\x20CANNOT\x20be\x20reversed\x20on\x20chain\x20—\x20a\x20refund/chargeback\x20after\x20release\x20leaves\x20the\x20'+'affiliate\x20commission\x20unrecoverable.\x20Add\x20a\x20build_note\x20stating\x20this\x20honestly\x20(e.g.\x20\x22post-lock:\x20a\x20released\x20'+'affiliate\x20commission\x20is\x20unrecoverable\x20—\x20refunds\x20after\x20the\x20attribution\x20window\x20do\x20NOT\x20claw\x20back\x20the\x20'+'partner\x20payout\x22).\x20L-04/D-5:\x20never\x20imply\x20a\x20recovery\x20capability\x20the\x20chain\x20does\x20not\x20have.'}),c;}function emitCrowdfundingGates(a,b){const c=[];if(a==='none')return c;const d=/(releas|settle|funded|disburs|project)/i,e=/(refund|missed|unmet|return|reimburse)/i,f=b['shape']['some'](s=>d['test'](s['name'])),g=b['rows']['some'](s=>s['track']==='settlement'&&(d['test'](s['guard_key']??'')||d['test'](s['recipient_key']??''))),h=b['shape']['some'](s=>e['test'](s['name'])),i=b['rows']['some'](s=>s['track']==='refund'||e['test'](s['guard_key']??''));!f&&!g&&c['push']({'code':'CROWDFUNDING_THRESHOLD_GATE_MISSING','detail':'crowdfunding_mode\x20\x27'+a+'\x27\x20declares\x20a\x20campaign\x20but\x20machine_shape\x20has\x20no\x20release/settlement\x20'+'node\x20and\x20the\x20allocator\x20has\x20no\x20settlement\x20row\x20to\x20the\x20project\x20Entity\x20—\x20the\x20escrowed\x20contributions\x20would\x20'+'strand\x20at\x20the\x20deadline\x20with\x20no\x20exit\x20rail\x20(INV-E1).\x20Add\x20a\x20release\x20leg\x20(Rate\x2010000\x20to\x20a\x20NON-EMPTY\x20project\x20'+'Entity,\x20gated\x20at\x20the\x20campaign-deadline\x20settlement\x20terminal)\x20and,\x20for\x20a\x20threshold\x20campaign,\x20its\x20D-BUG-2\x20'+'refund\x20twin.'});a==='threshold'&&!h&&!i&&c['push']({'code':'CROWDFUNDING_THRESHOLD_GATE_MISSING','detail':'crowdfunding_mode\x20\x27threshold\x27\x20declares\x20an\x20all-or-nothing\x20campaign\x20but\x20there\x20is\x20NO\x20refund-family\x20node/row\x20—\x20'+'a\x20missed\x20goal\x20would\x20strand\x20every\x20contribution\x20instead\x20of\x20returning\x20it\x20(INV-E1\x20/\x20D-BUG-2).\x20Add\x20the\x20refund\x20'+'leg\x20(per-contributor,\x20order-anchored\x20user\x20slot\x200\x20—\x20the\x20submitted\x20Order,\x20never\x20slot\x20254;\x20node-gated\x20at\x20the\x20'+'refund\x20terminal,\x20decision\x2011\x20—\x20never\x20a\x20claimed_by\x20leg)\x20as\x20the\x20mutually-exclusive\x20twin\x20of\x20the\x20'+'release\x20leg:\x20aggregate\x20>=\x20goal\x20→\x20release;\x20aggregate\x20<\x20goal\x20→\x20refund.'});if(a==='threshold'){const s=b['guardSpecs']['filter'](x=>x['host']==='repository'||/repository_write/i['test'](x['template_id'])),t=s['length']>0x0,u=s['some'](x=>{const y=(x['policy']?.['id_from']??'')['toLowerCase']();return y==='signer'||y==='clock';});if(!t)c['push']({'code':'CROWDFUNDING_AGGREGATE_UNBOUND','detail':'crowdfunding_mode\x20\x27threshold\x27\x20gates\x20release\x20on\x20an\x20aggregate\x20funding\x20total,\x20but\x20no\x20host:\x22repository\x22\x20'+'write\x20policy\x20declares\x20the\x20contribution\x20rows\x20—\x20with\x20no\x20write-bound\x20policy\x20the\x20total\x20is\x20forgeable,\x20so\x20'+'anyone\x20could\x20inflate\x20the\x20aggregate\x20and\x20fake\x20a\x20\x27goal\x20met\x27\x20(INV-E2\x20/\x20R-X1-17:\x20existence-is-not-trust).\x20'+'Mount\x20pattern.repository_write_authorization\x20(identity\x20leaf\x20order.owner==Signer\x20/\x20order.agent\x20has\x20Signer)\x20'+'and\x20key\x20the\x20contribution\x20rows\x20by\x20the\x20funder\x27s\x20ORDER\x20(policy\x20id_from\x20unset;\x20row\x20id\x20=\x20the\x20Order\x20address).'});else{if(u){const x=s['filter'](y=>{const z=(y['policy']?.['id_from']??'')['toLowerCase']();return z==='signer'||z==='clock';})['map'](y=>'\x27'+y['key']+'\x27');c['push']({'code':'CROWDFUNDING_SIGNER_KEYED_ROWS','detail':'crowdfunding_mode\x20\x27threshold\x27\x20gates\x20release\x20on\x20an\x20aggregate\x20funding\x20total,\x20but\x20the\x20contribution\x20'+('policy\x20'+x['join'](',\x20')+'\x20keys\x20rows\x20by\x20the\x20WALLET\x20(id_from\x20signer/clock)\x20—\x20the\x20OLD\x20pre-migration\x20')+'shape\x20(ksc-tn-261024\x20F-01/F-05).\x20Wallet-keyed\x20rows\x20feed\x20the\x20escrow-bound\x20sum\x20(query\x201179,\x20per-row\x20'+'min(row,\x20order.amount,\x20LIVE\x20allocation.balance))\x20ZERO\x20—\x20the\x20goal\x20gate\x20silently\x20bricks\x20—\x20and\x20the\x20free-form\x20sum-where\x20(1174)\x20stays\x20'+'self-reported,\x20so\x20a\x20backer\x20can\x20still\x20record\x201.0\x20for\x20a\x200.1\x20pledge.\x20Key\x20the\x20rows\x20by\x20the\x20funder\x27s\x20ORDER\x20'+'instead\x20(policy\x20id_from\x20unset;\x20the\x20backer\x27s\x20tooling\x20submits\x20the\x20row\x20id\x20=\x20their\x20Order\x20address\x20through\x20'+'the\x20passport-bearing\x20data\x20write),\x20pass\x20those\x20ORDER\x20addresses\x20as\x20the\x20aggregate\x27s\x20candidate\x20ids,\x20and\x20pair\x20the\x20gate\x20'+'with\x20the\x20live-escrow\x20leg\x20(allocation.balance\x20query\x201051\x20via\x20convert_witness\x20OrderAllocation\x20109,\x20'+'>=\x20order.amount)\x20so\x20a\x20refunded/never-funded\x20order\x20can\x20neither\x20count\x20toward\x20the\x20goal\x20nor\x20be\x20settled.'});}}const v=b['inputs']['campaign_deadline_ms']??b['feeParams']?.['campaign_deadline_ms'],w=typeof v==='number'?v:Number(v);if(b['buildTimeMs']!==undefined){if(!Number['isFinite'](w)||w<=0x0)c['push']({'code':'CROWDFUNDING_DEADLINE_UNSET','detail':'crowdfunding_mode\x20\x27threshold\x27\x20gates\x20release/refund/withdrawal\x20on\x20the\x20ABSOLUTE\x20shared\x20deadline\x20'+('(campaign_deadline_ms),\x20but\x20it\x20resolved\x20to\x20'+String(v)+'\x20even\x20though\x20this\x20build\x20knows\x20its\x20')+'instant\x20—\x20an\x20unresolved\x20zero\x20opens\x20the\x20deadline\x20gate\x20at\x20genesis:\x20the\x20pre-deadline\x20withdrawal\x20exit\x20is\x20'+'dead\x20on\x20arrival\x20and\x20the\x20threshold/refund\x20polarity\x20is\x20resolvable\x20at\x20block\x20one\x20(ktt5\x20T-20).\x20Pass\x20a\x20real\x20'+'future\x20epoch-ms\x20timestamp\x20via\x20inputs.campaign_deadline_ms,\x20or\x20a\x20length\x20via\x20'+'inputs.campaign_duration_days\x20for\x20the\x20generation-time\x20conversion.'});else{if(w<=b['buildTimeMs'])c['push']({'code':'CROWDFUNDING_DEADLINE_PAST','detail':'campaign_deadline_ms\x20('+w+')\x20is\x20not\x20after\x20this\x20build\x27s\x20instant\x20('+b['buildTimeMs']+')\x20—\x20'+'the\x20shared\x20deadline\x20is\x20ALREADY\x20EXPIRED\x20at\x20publish:\x20the\x20pre-deadline\x20WithdrawPledge\x20exit\x20is\x20dead\x20on\x20'+'arrival\x20and\x20the\x20threshold/refund\x20polarity\x20is\x20resolvable\x20at\x20block\x20one\x20(the\x20live\x20ktt5\x20run\x20set\x20the\x20'+'deadline\x20before\x20the\x20first\x20order\x20and\x20could\x20never\x20test\x20a\x20mid-round\x20withdrawal,\x20T-20).\x20Pass\x20a\x20future\x20'+'epoch-ms\x20timestamp\x20(build\x20instant\x20+\x20campaign_duration_days\x20is\x20the\x20sanctioned\x20conversion).'});else b['buildTimeMs']+0xa*0xea60-w>0x0&&c['push']({'code':'CROWDFUNDING_DEADLINE_IMMINENT','detail':'campaign_deadline_ms\x20('+w+')\x20is\x20less\x20than\x2010\x20minutes\x20after\x20this\x20build\x27s\x20instant\x20'+('('+b['buildTimeMs']+')\x20—\x20the\x20round\x20is\x20effectively\x20expired\x20by\x20the\x20time\x20ANY\x20buyer\x20sees\x20the\x20')+'listing\x20(pdd\x20F-09\x20min-lead).\x20Give\x20the\x20campaign\x20a\x20real\x20lead\x20window:\x20build\x20instant\x20+\x20'+'campaign_duration_days\x20/\x20campaign_duration_hours\x20(hours\x20for\x20short\x20pop-up\x20rounds,\x20minimum\x20'+'sanctioned\x20length\x2010\x20minutes)\x20or\x20a\x20further-out\x20absolute\x20timestamp.'});}}}const j=b['buildNotes'],k=/(attest|keeper|aggregate trust|read-?only sum|not a chain-?verified|independent recomputation)/i,l=/(not investment|non-?investment|no (?:investment )?return|never promise)/i,m=/(kyc|aml|securities|money-?transmission|regulatory|cross-border|compliance)/i,n=/(no-?refund|non-?refundable|keep-?it-?all)/i,o=j['some'](y=>l['test'](y)),p=j['some'](y=>m['test'](y)),q=a==='threshold'?j['some'](y=>k['test'](y)):!![],r=a==='flexible'?j['some'](y=>n['test'](y)):!![];if(!q||!o||!p||!r){const y=[!q?'the\x20aggregate-trust\x20boundary\x20(the\x20funding\x20total\x20is\x20a\x20keeper-attested\x20Repository\x20sum,\x20NOT\x20a\x20chain-verified\x20money\x20oracle)':null,!o?'the\x20L-01\x20non-investment\x20statement\x20(never\x20promise\x20returns\x20/\x20promote\x20coin\x20price;\x20not\x20investment\x20advice\x20or\x20a\x20return\x20promise)':null,!p?'the\x20L-05\x20KYC/AML\x20+\x20cross-border\x20regulatory\x20caution\x20(HIGH\x20intensity)':null,!r?'the\x20flexible\x20keep-it-all\x20NO-REFUND\x20posture\x20(contributions\x20non-refundable\x20once\x20the\x20deadline\x20passes;\x20no\x20refunds)':null]['filter'](Boolean);c['push']({'code':'CROWDFUNDING_DISCLOSURE_MISSING','detail':'crowdfunding_mode\x20\x27'+a+'\x27\x20declares\x20a\x20campaign\x20but\x20no\x20build_note\x20carries:\x20'+y['join'](';\x20')+'\x20'+'(INV-E3\x20/\x20L-04\x20/\x20L-01\x20/\x20L-05).\x20Add\x20these\x20as\x20honest\x20build_notes\x20—\x20never\x20present\x20an\x20attested\x20aggregate\x20as\x20a\x20'+'chain-verified\x20custody\x20proof,\x20never\x20imply\x20investment\x20returns,\x20and\x20flag\x20the\x20compliance\x20surface.'});}return c;}function emitLogisticsGates(a,b){const c=[];if(a==='none')return c;const d=b['shape'],e=d['some'](g=>g['named_operator']!==undefined||(g['from']??[])['some'](h=>h['named_operator']!==undefined));a==='courier'&&!e&&c['push']({'code':'LOGISTICS_COURIER_RAIL_MISSING','detail':'logistics_mode\x20\x27courier\x27\x20declares\x20per-order\x20dispatched\x20riders,\x20but\x20machine_shape\x20carries\x20NO\x20named_operator\x20'+'rail.\x20A\x20dispatched\x20rider\x20is\x20NEITHER\x20a\x20permission\x20entity\x20NOR\x20the\x20buyer\x20—\x20the\x20ONLY\x20forward\x20they\x20can\x20ever\x20'+'pass\x20is\x20a\x20namedOperator\x20roster\x20rail\x20(the\x20rider\x20namespace\x27s\x20per-order\x20roster,\x20written\x20by\x20the\x20dispatch\x20'+'keeper\x20via\x20permission\x20index\x20221;\x20K-1\x20batch\x20B).\x20Bind\x20the\x20handover\x20forwards\x20(merchant→courier\x20pickup,\x20'+'courier→buyer\x20drop-off)\x20with\x20named_operator\x20\x27<namespace>\x27\x20—\x20and\x20disclose\x20the\x20roster\x20duty\x20in\x20a\x20build_note\x20'+'(the\x20NAMED_OPERATOR_ROSTER_UNDISCLOSED\x20gate\x20and\x20the\x20G6\x20dispatch\x20disclosure\x20below\x20enforce\x20the\x20rest).'});const f=/(deliver|courier|shipping|freight|ride|dispatch|logistic)/i;if(a==='courier'){const g=b['rows']['find'](h=>h['mode']==='surplus'&&f['test']((h['value_from']??'')+'\x20'+(h['recipient_key']??'')));g!==undefined&&c['push']({'code':'LOGISTICS_COURIER_FEE_POOLED','detail':'logistics_mode\x20\x27courier\x27\x20has\x20a\x20delivery-fee\x20allocator\x20row\x20in\x20SURPLUS\x20mode\x20'+('(value_from/recipient_key\x20\x27'+(g['value_from']??g['recipient_key']??'')+'\x27)\x20—\x20a\x20surplus\x20leg\x20')+'drains\x20the\x20remainder\x20of\x20the\x20pool\x20it\x20hangs\x20on,\x20which\x20for\x20a\x20courier\x20build\x20IS\x20the\x20buyer\x27s\x20goods\x20escrow\x20'+'(the\x20grab-pool\x20shape\x20the\x20affiliate\x20INV-D3\x20family\x20bans).\x20The\x20delivery\x20fee\x20is\x20KNOWN\x20at\x20order\x20time\x20—\x20the\x20'+'buyer\x20sees\x20and\x20pays\x20it\x20before\x20dispatch\x20—\x20so\x20make\x20it\x20an\x20INDEPENDENT\x20leg:\x20a\x20fixed\x20Amount\x20row\x20(or\x20a\x20Rate\x20'+'row\x20off\x20a\x20dedicated\x20delivery-fee\x20pool\x20funded\x20separately),\x20never\x20a\x20Surplus/Rate\x20drain\x20of\x20the\x20goods\x20pool.'});}if(a==='pickup_point'){const h=b['guardSpecs']['some'](j=>j['template_id']==='pattern.time_lock_absolute'||j['template_id']==='tpl_time_lock_absolute_ms'),i=b['guardSpecs']['some'](j=>j['template_id']==='pattern.time_window_upper_bound'||j['template_id']==='tpl_time_window_upper'||j['template_id']==='tpl_time_window_upper_absolute_ms');(!h||!i)&&c['push']({'code':'LOGISTICS_PICKUP_CUTOFF_MISSING','detail':'logistics_mode\x20\x27pickup_point\x27\x20declares\x20batch\x20consolidation,\x20but\x20the\x20shape\x20is\x20missing\x20'+(''+(!h?'the\x20ABSOLUTE\x20batch-cutoff\x20release\x20gate\x20(pattern.time_lock_absolute\x20—\x20every\x20funder\x27s/leader\x27s\x20release\x20anchors\x20on\x20the\x20SAME\x20shared\x20cutoff\x20clock,\x20not\x20per-order\x20entry+duration)':''))+(''+(!h&&!i?'\x20and\x20':''))+(''+(!i?'the\x20unclaimed-goods\x20exit\x20window\x20(pattern.time_window_upper_bound\x20—\x20goods\x20never\x20picked\x20up\x20must\x20refund/return\x20at\x20a\x20bounded\x20deadline,\x20never\x20hold\x20open-ended)':''))+'.\x20Both\x20are\x20mandatory:\x20without\x20the\x20shared\x20cutoff\x20the\x20batch\x20is\x20not\x20a\x20batch\x20(each\x20order\x20releases\x20on\x20its\x20own\x20clock),\x20and\x20without\x20the\x20exit\x20window\x20an\x20unclaimed\x20parcel\x20strands\x20in\x20the\x20pickup\x20point\x20forever.'});}if(a==='carrier'){const j=/(track|shipping evidence|waybill|airbill|carrier record|parcel evidence)/i,k=b['guardSpecs']['some'](l=>l['host']==='machine'&&j['test'](l['key']+'\x20'+l['purpose']));!k&&c['push']({'code':'LOGISTICS_CARRIER_EVIDENCE_MISSING','detail':'logistics_mode\x20\x27carrier\x27\x20declares\x20third-party\x20carrier\x20shipment,\x20but\x20NO\x20machine\x20guard\x20binds\x20'+'shipping/tracking\x20evidence.\x20Add\x20a\x20repository_data_check\x20guard\x20on\x20the\x20ship\x20forward\x20keyed\x20to\x20a\x20'+'tracking-hash\x20row\x20(the\x20retail\x20idiom:\x20the\x20evidence\x20Repository\x20row\x20is\x20written\x20by\x20an\x20authorized\x20'+'writer\x20—\x20pattern.repository_write_authorization\x20—\x20and\x20the\x20ship\x20guard\x20reads\x20it),\x20so\x20a\x20dispute\x20has\x20a\x20'+'dispute-ready\x20record\x20of\x20what\x20was\x20shipped\x20and\x20when.'});}{const l=/(lost|loss|damag|theft)/i,m=q=>q['replace'](/permanently lost/gi,''),n=/(transit loss|lost (?:parcel|package|goods|in transit)|in[- ]transit loss|carrier lost|loss (?:is |)remed|loss route|lost shipment)/i,o=d['some'](q=>l['test'](q['name'])||l['test'](q['role']??''))||b['guardSpecs']['some'](q=>q['host']==='machine'&&l['test'](m(q['key']+'\x20'+q['purpose']))),p=b['buildNotes']['some'](q=>n['test'](q));!o&&!p&&c['push']({'code':'LOGISTICS_TRANSIT_LOSS_UNCOVERED','detail':'logistics_mode\x20\x27'+a+'\x27\x20moves\x20a\x20physical\x20good,\x20but\x20the\x20shape\x20has\x20NO\x20in-transit\x20loss\x20rail\x20'+'(no\x20loss/damage\x20node\x20or\x20machine-guard\x20family)\x20and\x20NO\x20build_note\x20disclosing\x20the\x20loss\x20remedy.\x20Goods\x20can\x20'+'be\x20lost\x20or\x20damaged\x20between\x20handover\x20and\x20acceptance\x20in\x20EVERY\x20physical\x20mode\x20—\x20silence\x20means\x20the\x20buyer\x27s\x20'+'funds\x20strand\x20behind\x20an\x20undeliverable\x20order\x20with\x20no\x20taught\x20route.\x20Either\x20express\x20the\x20loss\x20waypoint\x20(a\x20'+'node\x20like\x20the\x20retail\x20lost-parcel\x20record,\x20or\x20a\x20loss-evidence\x20machine\x20guard)\x20or\x20add\x20a\x20build_note\x20'+'disclosing\x20the\x20remedy\x20route\x20(e.g.\x20\x22transit\x20loss\x20is\x20remedied\x20by\x20the\x20buyer\x27s\x20arbitration\x20route\x20into\x20the\x20'+'refund\x20rail\x20—\x20the\x20ruling\x20pays\x20the\x20buyer;\x20the\x20carrier\x20claim\x20is\x20an\x20off-chain\x20recovery,\x20disclosed\x20as\x20such\x22).'});}if(a==='courier'||a==='pickup_point'){const q=/(dispatch|schedul|no.{0,24}oracle|no on-chain.{0,24}(dispatch|scheduler)|off-chain keeper|keeper.{0,40}dispatch|roster|named.?operator|permission.{0,12}221)/i,r=b['buildNotes']['some'](s=>q['test'](s));!r&&c['push']({'code':'LOGISTICS_DISPATCH_UNDISCLOSED','detail':'logistics_mode\x20\x27'+a+'\x27\x20is\x20a\x20dynamically\x20dispatched\x20fulfillment\x20topology,\x20but\x20no\x20build_note\x20'+'discloses\x20the\x20two\x20🔴\x20SOLE-TRUTH\x20boundaries.\x20①\x20The\x20chain\x20has\x20NO\x20dispatch/scheduling\x20primitive\x20—\x20'+'assignment\x20of\x20riders/pickup\x20batches\x20is\x20an\x20OFF-CHAIN\x20keeper\x20duty\x20(K-4);\x20its\x20only\x20chain\x20footprint\x20is\x20the\x20'+'namedOperator\x20roster\x20written\x20via\x20permission\x20index\x20221.\x20②\x20There\x20is\x20NO\x20distance/weight/weather\x20oracle\x20—\x20'+'ETA,\x20route,\x20and\x20dynamic\x20pricing\x20are\x20NOT\x20chain-verifiable.\x20Add\x20a\x20build_note\x20stating\x20WHO\x20dispatches\x20(the\x20'+'keeper),\x20WHAT\x20the\x20keeper\x20writes\x20(the\x20roster,\x20per\x20order/shift),\x20and\x20that\x20ETA/pricing\x20live\x20off-chain.'});}return c;}function emitFormulaGates(a){const b=[];for(const c of a['rows']){if(c['mode']!=='formula')continue;const d='allocator\x20row\x20('+c['track']+'/'+(c['recipient_key']??c['recipient'])+')';c['formula']?.['selector']!==0x2&&b['push']({'code':'FORMULA_SELECTOR_NOT_SUM_BOUND','detail':d+'\x20declares\x20a\x20Formula\x20leg\x20with\x20selector\x20'+JSON['stringify'](c['formula']?.['selector'])+'\x20—\x20only\x202\x20'+'(SUM_BOUND)\x20is\x20allowed.\x20A\x20bare\x20SUM\x20(1)\x20can\x20be\x20inflated\x20by\x20forged\x20rows:\x20any\x20Repository\x20writer\x20who\x20'+'can\x20add\x20a\x20large\x20row\x20inflates\x20the\x20scalar,\x20and\x20the\x20leg\x20pays\x20coefficient\x20×\x20scalar\x20/\x2010000\x20—\x20forged\x20'+'row,\x20forged\x20money\x20(ksc-tn-261024\x20F-01);\x20COUNT\x20(0)\x20is\x20likewise\x20escrow-unbound.\x20SUM_BOUND\x20clamps\x20'+'every\x20candidate\x20row\x20to\x20min(row_value,\x20the\x20amount\x20of\x20the\x20Order\x20its\x20id\x20names),\x20so\x20a\x20dynamic-pricing\x20'+'scalar\x20can\x20never\x20credit\x20a\x20contribution\x20beyond\x20the\x20escrow\x20actually\x20bound\x20to\x20it.\x20TWO\x20clamp\x20'+'guarantees,\x20keep\x20them\x20separate\x20—\x20never\x20blur\x20them\x20into\x20an\x20unconditional\x20\x22three-term\x20clamp\x22:\x20'+'(a)\x20UNCONDITIONAL\x20on\x20every\x20protocol\x20version:\x20min(row_value,\x20that\x20Order\x20amount),\x20with\x20a\x20candidate\x20'+'id\x20that\x20is\x20not\x20a\x20framework\x20Order\x20contributing\x200\x20fail-closed;\x20(b)\x20FLAG-GATED:\x20the\x20third\x20clamp\x20'+'term\x20against\x20the\x20row\x27s\x20LIVE\x20allocation\x20balance\x20ships\x20behind\x20the\x20v140\x20live-cap\x20protocol\x20flag\x20'+'(FLAG_ENABLE_REPOSITORY_ESCROW_LIVE_CAP)\x20—\x20on\x20a\x20protocol\x20version\x20without\x20it,\x20a\x20refunded\x20order\x27s\x20'+'frozen\x20amount\x20still\x20contributes\x20to\x20the\x20scalar.\x20Never\x20promise\x20the\x20live-balance\x20clamp\x20without\x20'+'naming\x20its\x20flag.\x20Declare\x20'+'formula:\x20{\x20selector:\x202,\x20repo,\x20key,\x20ids,\x20...\x20}\x20on\x20the\x20row\x20(the\x20runtime\x20spec\x20is\x20then\x20bound\x20via\x20'+'allocation\x20formula_spec_set).'});const e=c['formula']?.['ids'],f=e!==undefined&&e['length']>0x0?JSON['stringify'](e):'';!f['includes']('order')&&b['push']({'code':'FORMULA_ROW_KEY_NOT_ORDER','detail':d+'\x20declares\x20a\x20Formula\x20leg\x20whose\x20candidate\x20ids\x20'+(e===undefined||e['length']===0x0?'are\x20empty\x20or\x20missing':'('+f+')')+'\x20do\x20not\x20bind\x20an\x20Order\x20id.\x20'+'Under\x20SUM_BOUND\x20every\x20row\x20is\x20clamped\x20to\x20min(row_value,\x20order.amount\x20of\x20the\x20row\x20id);\x20a\x20row\x20keyed\x20by\x20'+'anything\x20that\x20is\x20not\x20a\x20real\x20framework\x20Order\x20contributes\x200\x20—\x20the\x20leg\x20silently\x20prices\x20at\x200\x20(fail-closed\x20'+'native\x20behavior,\x20a\x20silent\x20error\x20source),\x20and\x20an\x20empty\x20list\x20matches\x20NO\x20records.\x20Bind\x20ids\x20to\x20the\x20plan\x27s\x20'+'Order(s)\x20(e.g.\x20[{\x20\x22$ref\x22:\x20\x22<order\x20step\x20id>\x22\x20}])\x20so\x20the\x20clamp\x20reads\x20the\x20real\x20escrow.'});}return b;}export function emitModeGates(a,b){const c=emitAfterSalesGates(a['afterSalesMode'],b),d=emitAcceptanceGates(a['acceptanceMode'],b);return{'blockers':[...c,...d['blockers'],...emitInstallmentGates(a['installmentMode'],b),...emitAffiliateGates(a['affiliateMode'],b),...emitCrowdfundingGates(a['crowdfundingMode'],b),...emitLogisticsGates(a['logisticsMode'],b),...emitFormulaGates(b)],'disclosures':[...d['disclosures']]};}export function deriveCapabilityModes({template:a,inputs:b}){const c=b['after_sales_mode'],d=c==='return'||c==='exchange'||c==='warranty'||c==='none'?c:undefined,e=d??a['after_sales_mode']??'none',f=b['acceptance_mode'],g=f==='milestone'||f==='contest'||f==='bounty'||f==='agent'||f==='none'?f:undefined,h=g??a['acceptance_mode']??'none',i=b['installment_mode'],j=i==='deposit_balance'||i==='milestone_n'||i==='none'?i:undefined,k=j??a['installment_mode']??'none',l=b['affiliate_mode'],m=l==='commission'||l==='none'?l:undefined,n=m??a['affiliate_mode']??'none',o=b['crowdfunding_mode'],p=o==='threshold'||o==='flexible'||o==='none'?o:undefined,q=p??a['crowdfunding_mode']??'none',r=b['logistics_mode'],s=r==='carrier'||r==='merchant_managed'||r==='courier'||r==='pickup_point'||r==='none'?r:undefined,t=s??a['logistics_mode']??'none';return{'afterSalesMode':e,'acceptanceMode':h,'installmentMode':k,'affiliateMode':n,'crowdfundingMode':q,'logisticsMode':t};}
|
|
1
|
+
import{afterSalesRailRegex as a22a,afterSalesRailNodeMatches}from'../knowledge/template-scanner.js';import{TWO_TX_RENEW_RECIPE}from'../knowledge/protocol-facts.js';function emitAfterSalesGates(a,b){const c=[];if(a==='none')return c;const d=a22a(a),e=b['shape']['some'](f=>afterSalesRailNodeMatches(a,f['name']));return!e&&c['push']({'code':'AFTER_SALES_RAIL_MISSING','detail':'after_sales_mode\x20\x27'+a+'\x27\x20declares\x20a\x20buyer\x20after-sales\x20remedy,\x20but\x20machine_shape\x20has\x20no\x20'+('backing\x20rail\x20(no\x20node\x20matching\x20'+d+').\x20Add\x20the\x20'+a+'\x20node\x20family\x20')+'(e.g.\x20return_requested\x20->\x20returned\x20for\x20\x27return\x27)\x20as\x20a\x20node-gated\x20fund\x20rail\x20(decision\x2011:\x20NEVER\x20a\x20'+'claimed_by\x20leg\x20—\x20RAIL_CLAIMED_BY_LEG\x20critical)\x20anchored\x20on\x20the\x20delivered\x20ENTRY\x20time\x20'+'(INV-C2,\x20TIME-ANCHOR-01);\x20refund\x20and\x20award\x20are\x20independent\x20tracks\x20and\x20any\x20overlap\x20is\x20disclosed\x20'+'at\x20the\x20dual-payout\x20gate\x20(DUAL-RAIL-01).\x20Or\x20set\x20after_sales_mode\x20\x27none\x27\x20if\x20this\x20shop\x20ships\x20no\x20such\x20remedy.'}),c;}function emitAcceptanceGates(a,b){const c=[],d=[];if(a==='none')return{'blockers':c,'disclosures':d};const e=a==='contest'||a==='bounty'||a==='agent';e&&b['arbitrationMode']!=='third_party'&&c['push']({'code':'ACCEPTANCE_JUDGE_NOT_INDEPENDENT','detail':'acceptance_mode\x20\x27'+a+'\x27\x20is\x20a\x20judge-decided\x20acceptance\x20(a\x20third\x20party\x20rules\x20on\x20'+('release),\x20but\x20arbitration_mode\x20is\x20\x27'+(b['arbitrationMode']??'none')+'\x27,\x20not\x20\x27third_party\x27.\x20')+'The\x20party\x20owing\x20the\x20payout\x20must\x20not\x20also\x20decide\x20whether\x20it\x20is\x20owed\x20(merchant\x20self-adjudication,\x20'+'INV-A3).\x20Set\x20arbitration_mode\x20\x27third_party\x27\x20so\x20an\x20independent\x20venue/judge\x20Permission\x20rules\x20'+'(R2;\x20enforced\x20at\x20publish\x20by\x20controller-disjointness),\x20or\x20use\x20acceptance_mode\x20\x27milestone\x27\x20if\x20the\x20'+'buyer\x20genuinely\x20self-adjudicates.'});const f=b['feeParams']['revision_rounds_max'],g=typeof f==='number'||typeof f==='string'&&f['trim']()!==''&&/^\d+$/['test'](f['trim']());if(g){const h=b['guardSpecs']['some'](i=>i['host']==='repository'||/repository/i['test'](i['template_id']));!h&&c['push']({'code':'ACCEPTANCE_REVISION_UNBOUNDED','detail':'acceptance_mode\x20\x27'+a+'\x27\x20declares\x20a\x20bounded\x20revision\x20loop\x20'+('(fee_params.revision_rounds_max\x20=\x20'+String(f)+'),\x20but\x20no\x20counter-backed\x20Repository\x20')+'guard\x20exists.\x20The\x20chain\x20caps\x20EDGE\x20count\x20(MAX_FORWARD\x20/\x20MAX_NODE_PAIR),\x20never\x20VISIT\x20count,\x20'+'so\x20a\x20finite\x20cap\x20in\x20fee_params\x20alone\x20is\x20a\x20promise\x20the\x20chain\x20cannot\x20keep\x20(INV-A1).\x20Either\x20declare\x20'+'revision_rounds_max\x20\x27unlimited\x27\x20(the\x20honest\x20form\x20—\x20the\x20revision\x20loop\x20is\x20then\x20genuinely\x20'+'unbounded)\x20or\x20mount\x20a\x20counter-backed\x20Repository\x20guard\x20(pattern.repository_data_check\x20reading\x20a\x20'+'per-order\x20revision\x20tally\x20written\x20via\x20pattern.repository_write_authorization)\x20that\x20gates\x20the\x20'+'redelivery\x20forward\x20once\x20the\x20tally\x20reaches\x20the\x20cap.'});}if(a==='contest')d['push']('Winner\x20rule\x20(first-to-node):\x20the\x20winner\x20is\x20the\x20first\x20account\x20whose\x20forward\x20completes\x20entry\x20into\x20'+'the\x20adjudication\x20node\x20—\x20computable\x20from\x20the\x20order\x27s\x20Progress\x20history\x20(first\x20matching\x20entry,\x20earliest\x20'+'time);\x20ties\x20resolve\x20by\x20chain\x20timestamp.\x20This\x20rule\x20is\x20disclosed\x20for\x20judge/merchant\x20reference;\x20the\x20'+'chain\x20stores\x20no\x20winner\x20field\x20(F-RQD2-05).');else a==='bounty'&&d['push']('Winner\x20rule\x20(judge-accepted\x20triage):\x20winners\x20are\x20the\x20submitters\x20whose\x20reports\x20the\x20independent\x20judge\x20'+'accepts\x20(severity-ranked);\x20the\x20Progress\x20history\x20proves\x20who\x20delivered,\x20the\x20judge\x20permission\x20decides\x20'+'which\x20delivery\x20wins.');return{'blockers':c,'disclosures':d};}function emitInstallmentGates(a,b){const c=[];if(a==='none')return c;const d=/(due|owed|owing|unpaid|awaiting|pending)/i,f=/(paid|captured|funded|settled)/i,g=/(deposit|down_?pay|balance_due|balance_owed|awaiting|installment|milestone)/i,h=/(refund|cancel|exit|forfeit|kill|void|abandon|release|expire|lapse)/i,i=[];for(const s of b['shape']){const t=s['name'];for(const u of s['from']??[]){typeof u==='string'?i['push']({'prev':u,'target':t}):i['push']({'prev':u['prev'],'target':t,'guardKey':u['guard_key']});}}const j=i['filter'](w=>d['test'](w['prev'])&&f['test'](w['target'])&&(w['guardKey']===undefined||w['guardKey']['trim']()===''));j['length']>0x0&&c['push']({'code':'INSTALLMENT_FUNDING_UNGATED','detail':'installment_mode\x20\x27'+a+'\x27\x20captures\x20a\x20later\x20payment,\x20but\x20the\x20funding\x20forward(s)\x20'+j['map'](w=>'\x27'+w['prev']+'\x27\x20→\x20\x27'+w['target']+'\x27')['join'](',\x20')+'\x20carry\x20NO\x20guard_key.\x20A\x20bare\x20advance\x20records\x20the\x20balance\x20as\x20paid\x20WITHOUT\x20the\x20capture\x20landing\x20in\x20the\x20'+'Allocation\x20—\x20a\x20zero-value\x20advance\x20(INV-B1,\x20H4).\x20Bind\x20a\x20fund-gate\x20Guard\x20on\x20each\x20capture\x20forward\x20'+'(constant\x20=\x20order\x20address,\x20convert_witness\x20OrderAllocation(109),\x20allocation.balance\x20query\x201051\x20>=\x20the\x20'+'capture\x20amount).\x20PRE-STATE\x20CONSTRAINT\x20(esound-mn-261021\x20B-1,\x20mainnet-verified):\x20guards\x20read\x20the\x20'+'COMMITTED\x20pre-transaction\x20balance\x20—\x20funding\x20that\x20lands\x20in\x20the\x20SAME\x20PTB\x20(the\x20one-PTB\x20order_renew\x20'+'payment\x20half)\x20is\x20INVISIBLE\x20to\x20the\x20forward\x27s\x20guard,\x20so\x20a\x20balance-gated\x20capture\x20advanced\x20by\x20'+('order_renew\x20ALWAYS\x20aborts.\x20'+TWO_TX_RENEW_RECIPE+'\x20Pair\x20the\x20balance\x20gate\x20with\x20the\x20once\x20slot\x20')+'(H5\x20—\x20the\x20fund\x20gate\x20is\x20a\x20STATE\x20READ,\x20not\x20a\x20once)\x20so\x20a\x20replay\x20cannot\x20re-capture.'});const k=new Set(b['rows']['filter'](w=>w['track']==='refund'||w['track']==='settlement')['map'](w=>w['guard_key'])['filter'](w=>typeof w==='string'&&w['trim']()!=='')),l=new Set(b['shape']['map'](w=>w['name'])),m=new Map(b['shape']['map'](w=>[w['name'],w['semantic_role']])),o=new Set();for(const w of b['guardSpecs']){if(w['host']!=='machine'||!/allocator_node_gate|progress_state_check/['test'](w['template_id']))continue;if(!k['has'](w['key']))continue;for(const x of Object['values'](w['params']??{})){if(typeof x==='string'&&l['has'](x))o['add'](x);}}const p=new Map();for(const y of i){const z=p['get'](y['prev'])??[];z['push'](y['target']),p['set'](y['prev'],z);}const q=A=>{const B=new Set([A]),C=[...p['get'](A)??[]];while(C['length']>0x0){const D=C['pop']();if(o['has'](D))return!![];const E=m['get'](D);if(E==='final'||E==='cancelled')return!![];if(B['has'](D))continue;B['add'](D);for(const F of p['get'](D)??[])if(!B['has'](F))C['push'](F);}return![];},r=[];for(const A of b['shape']){if(!g['test'](A['name']))continue;const B=i['filter'](D=>D['prev']===A['name']),C=q(A['name']);if(!C){const D=B['filter'](E=>h['test'](E['target']))['map'](E=>'\x27'+E['target']+'\x27');r['push'](D['length']>0x0?A['name']+'\x20(keyword-named\x20target(s)\x20'+D['join'](',\x20')+'\x20reach\x20no\x20refund/settlement\x20rail\x20and\x20no\x20final/cancelled\x20state\x20—\x20the\x20NAME\x20alone\x20is\x20not\x20an\x20exit)':A['name']);}}return r['length']>0x0&&c['push']({'code':'INSTALLMENT_DEPOSIT_STRANDED','detail':'installment_mode\x20\x27'+a+'\x27\x20holds\x20a\x20buyer\x20payment\x20at\x20state(s)\x20'+r['map'](E=>'\x27'+E+'\x27')['join'](',\x20')+'\x20with\x20NO\x20deposit-exit\x20rail\x20(no\x20outgoing\x20refund\x20/\x20cancel\x20/\x20forfeit\x20/\x20expire\x20edge).\x20There\x20is\x20no\x20on-chain\x20'+'obligation\x20to\x20pay\x20the\x20balance\x20(INV-B2,\x20H1),\x20so\x20a\x20buyer\x20who\x20walks\x20away\x20strands\x20the\x20already-paid\x20portion\x20'+'at\x20that\x20node\x20permanently\x20(Machine\x20+\x20Allocator\x20immutable,\x20IMMUT-001).\x20Add\x20a\x20deposit-exit\x20rail\x20from\x20each\x20'+'held\x20state\x20—\x20a\x20refund/cancel\x20forward\x20into\x20an\x20exit\x20node\x20whose\x20allocator\x20returns\x20the\x20held\x20funds\x20to\x20the\x20'+'order\x20payer\x20(GuardIdentifier(0))\x20or\x20applies\x20the\x20declared\x20deposit_exit_policy\x20(full\x20refund\x20vs\x20a\x20kill\x20fee\x20'+'compensating\x20the\x20merchant\x20for\x20the\x20reserved\x20capacity).'}),c;}function emitAffiliateGates(a,b){const c=[];if(a==='none')return c;const d=/(commission|affiliate|referr|attribut|partner_?payout)/i,e=b['shape']['some'](i=>d['test'](i['name'])),f=b['rows']['some'](i=>d['test'](i['value_from']??'')||d['test'](i['recipient_key']??''));!e&&!f&&c['push']({'code':'AFFILIATE_RAIL_MISSING','detail':'affiliate_mode\x20\x27'+a+'\x27\x20declares\x20a\x20referral/affiliate\x20commission\x20overlay,\x20but\x20machine_shape\x20has\x20no\x20'+'commission-family\x20node\x20and\x20the\x20allocator\x20has\x20no\x20commission\x20row\x20—\x20a\x20declared\x20partner\x20payout\x20with\x20no\x20rail\x20to\x20'+'walk\x20it\x20is\x20a\x20false\x20promise\x20at\x20quote\x20time\x20(INV-D3).\x20Add\x20an\x20INDEPENDENT\x20commission\x20leg:\x20a\x20Rate\x20row\x20off\x20a\x20'+'dedicated\x20commission\x20pool\x20(never\x20a\x20Surplus/Rate\x20drain\x20of\x20the\x20buyer\x27s\x20goods\x20escrow\x20—\x20anti-grab-pool)\x20to\x20an\x20explicit\x20'+'non-empty\x20partner\x20Entity,\x20gated\x20by\x20a\x20window-anchored\x20claim\x20guard\x20(INV-D1\x20rides\x20TIME-ANCHOR-01)\x20so\x20the\x20'+'commission\x20is\x20claimable\x20only\x20after\x20the\x20attribution/refund\x20window\x20closes.'});const g=/(post-?lock|clawback|unrecoverable|irrevocab|no\s*(?:revers|recov|clawback)|cannot be reversed|once released|released commission)/i,h=b['buildNotes']['some'](i=>g['test'](i));return!h&&c['push']({'code':'AFFILIATE_CLAWBACK_UNDISCLOSED','detail':'affiliate_mode\x20\x27'+a+'\x27\x20declares\x20a\x20commission\x20but\x20no\x20build_note\x20discloses\x20the\x20post-lock\x20no-clawback\x20'+'truth\x20(INV-D2).\x20SOLE\x20TRUTH:\x20Allocation\x20distribute\x20is\x20a\x20ONE-WAY\x20outflow\x20(no\x20debit/clawback\x20primitive,\x20§11.0\x20G2),\x20'+'so\x20once\x20a\x20commission\x20is\x20RELEASED\x20it\x20CANNOT\x20be\x20reversed\x20on\x20chain\x20—\x20a\x20refund/chargeback\x20after\x20release\x20leaves\x20the\x20'+'affiliate\x20commission\x20unrecoverable.\x20Add\x20a\x20build_note\x20stating\x20this\x20honestly\x20(e.g.\x20\x22post-lock:\x20a\x20released\x20'+'affiliate\x20commission\x20is\x20unrecoverable\x20—\x20refunds\x20after\x20the\x20attribution\x20window\x20do\x20NOT\x20claw\x20back\x20the\x20'+'partner\x20payout\x22).\x20L-04/D-5:\x20never\x20imply\x20a\x20recovery\x20capability\x20the\x20chain\x20does\x20not\x20have.'}),c;}function emitCrowdfundingGates(a,b){const c=[];if(a==='none')return c;const d=/(releas|settle|funded|disburs|project)/i,e=/(refund|missed|unmet|return|reimburse)/i,f=b['shape']['some'](s=>d['test'](s['name'])),g=b['rows']['some'](s=>s['track']==='settlement'&&(d['test'](s['guard_key']??'')||d['test'](s['recipient_key']??''))),h=b['shape']['some'](s=>e['test'](s['name'])),i=b['rows']['some'](s=>s['track']==='refund'||e['test'](s['guard_key']??''));!f&&!g&&c['push']({'code':'CROWDFUNDING_THRESHOLD_GATE_MISSING','detail':'crowdfunding_mode\x20\x27'+a+'\x27\x20declares\x20a\x20campaign\x20but\x20machine_shape\x20has\x20no\x20release/settlement\x20'+'node\x20and\x20the\x20allocator\x20has\x20no\x20settlement\x20row\x20to\x20the\x20project\x20Entity\x20—\x20the\x20escrowed\x20contributions\x20would\x20'+'strand\x20at\x20the\x20deadline\x20with\x20no\x20exit\x20rail\x20(INV-E1).\x20Add\x20a\x20release\x20leg\x20(Rate\x2010000\x20to\x20a\x20NON-EMPTY\x20project\x20'+'Entity,\x20gated\x20at\x20the\x20campaign-deadline\x20settlement\x20terminal)\x20and,\x20for\x20a\x20threshold\x20campaign,\x20its\x20D-BUG-2\x20'+'refund\x20twin.'});a==='threshold'&&!h&&!i&&c['push']({'code':'CROWDFUNDING_THRESHOLD_GATE_MISSING','detail':'crowdfunding_mode\x20\x27threshold\x27\x20declares\x20an\x20all-or-nothing\x20campaign\x20but\x20there\x20is\x20NO\x20refund-family\x20node/row\x20—\x20'+'a\x20missed\x20goal\x20would\x20strand\x20every\x20contribution\x20instead\x20of\x20returning\x20it\x20(INV-E1\x20/\x20D-BUG-2).\x20Add\x20the\x20refund\x20'+'leg\x20(per-contributor,\x20order-anchored\x20user\x20slot\x200\x20—\x20the\x20submitted\x20Order,\x20never\x20slot\x20254;\x20node-gated\x20at\x20the\x20'+'refund\x20terminal,\x20decision\x2011\x20—\x20never\x20a\x20claimed_by\x20leg)\x20as\x20the\x20mutually-exclusive\x20twin\x20of\x20the\x20'+'release\x20leg:\x20aggregate\x20>=\x20goal\x20→\x20release;\x20aggregate\x20<\x20goal\x20→\x20refund.'});if(a==='threshold'){const s=b['guardSpecs']['filter'](v=>v['host']==='repository'||/repository_write/i['test'](v['template_id'])),t=s['length']>0x0,u=s['some'](v=>{const w=(v['policy']?.['id_from']??'')['toLowerCase']();return w==='signer'||w==='clock';});if(!t)c['push']({'code':'CROWDFUNDING_AGGREGATE_UNBOUND','detail':'crowdfunding_mode\x20\x27threshold\x27\x20gates\x20release\x20on\x20an\x20aggregate\x20funding\x20total,\x20but\x20no\x20host:\x22repository\x22\x20'+'write\x20policy\x20declares\x20the\x20contribution\x20rows\x20—\x20with\x20no\x20write-bound\x20policy\x20the\x20total\x20is\x20forgeable,\x20so\x20'+'anyone\x20could\x20inflate\x20the\x20aggregate\x20and\x20fake\x20a\x20\x27goal\x20met\x27\x20(INV-E2\x20/\x20R-X1-17:\x20existence-is-not-trust).\x20'+'Mount\x20pattern.repository_write_authorization\x20(identity\x20leaf\x20order.owner==Signer\x20/\x20order.agent\x20has\x20Signer)\x20'+'and\x20key\x20the\x20contribution\x20rows\x20by\x20the\x20funder\x27s\x20ORDER\x20(policy\x20id_from\x20unset;\x20row\x20id\x20=\x20the\x20Order\x20address).'});else{if(u){const v=s['filter'](w=>{const x=(w['policy']?.['id_from']??'')['toLowerCase']();return x==='signer'||x==='clock';})['map'](w=>'\x27'+w['key']+'\x27');c['push']({'code':'CROWDFUNDING_SIGNER_KEYED_ROWS','detail':'crowdfunding_mode\x20\x27threshold\x27\x20gates\x20release\x20on\x20an\x20aggregate\x20funding\x20total,\x20but\x20the\x20contribution\x20'+('policy\x20'+v['join'](',\x20')+'\x20keys\x20rows\x20by\x20the\x20WALLET\x20(id_from\x20signer/clock)\x20—\x20the\x20OLD\x20pre-migration\x20')+'shape\x20(ksc-tn-261024\x20F-01/F-05).\x20Wallet-keyed\x20rows\x20feed\x20the\x20escrow-bound\x20sum\x20(query\x201179,\x20per-row\x20'+'min(row,\x20order.amount,\x20LIVE\x20allocation.balance))\x20ZERO\x20—\x20the\x20goal\x20gate\x20silently\x20bricks\x20—\x20and\x20the\x20free-form\x20sum-where\x20(1174)\x20stays\x20'+'self-reported,\x20so\x20a\x20backer\x20can\x20still\x20record\x201.0\x20for\x20a\x200.1\x20pledge.\x20Key\x20the\x20rows\x20by\x20the\x20funder\x27s\x20ORDER\x20'+'instead\x20(policy\x20id_from\x20unset;\x20the\x20backer\x27s\x20tooling\x20submits\x20the\x20row\x20id\x20=\x20their\x20Order\x20address\x20through\x20'+'the\x20passport-bearing\x20data\x20write),\x20pass\x20those\x20ORDER\x20addresses\x20as\x20the\x20aggregate\x27s\x20candidate\x20ids,\x20and\x20pair\x20the\x20gate\x20'+'with\x20the\x20live-escrow\x20leg\x20(allocation.balance\x20query\x201051\x20via\x20convert_witness\x20OrderAllocation\x20109,\x20'+'>=\x20order.amount)\x20so\x20a\x20refunded/never-funded\x20order\x20can\x20neither\x20count\x20toward\x20the\x20goal\x20nor\x20be\x20settled.'});}}}c['push'](...emitCampaignDeadlineGate(b));const j=b['buildNotes'],k=/(attest|keeper|aggregate trust|read-?only sum|not a chain-?verified|independent recomputation)/i,l=/(not investment|non-?investment|no (?:investment )?return|never promise)/i,m=/(kyc|aml|securities|money-?transmission|regulatory|cross-border|compliance)/i,n=/(no-?refund|non-?refundable|keep-?it-?all)/i,o=j['some'](w=>l['test'](w)),p=j['some'](w=>m['test'](w)),q=a==='threshold'?j['some'](w=>k['test'](w)):!![],r=a==='flexible'?j['some'](w=>n['test'](w)):!![];if(!q||!o||!p||!r){const w=[!q?'the\x20aggregate-trust\x20boundary\x20(the\x20funding\x20total\x20is\x20a\x20keeper-attested\x20Repository\x20sum,\x20NOT\x20a\x20chain-verified\x20money\x20oracle)':null,!o?'the\x20L-01\x20non-investment\x20statement\x20(never\x20promise\x20returns\x20/\x20promote\x20coin\x20price;\x20not\x20investment\x20advice\x20or\x20a\x20return\x20promise)':null,!p?'the\x20L-05\x20KYC/AML\x20+\x20cross-border\x20regulatory\x20caution\x20(HIGH\x20intensity)':null,!r?'the\x20flexible\x20keep-it-all\x20NO-REFUND\x20posture\x20(contributions\x20non-refundable\x20once\x20the\x20deadline\x20passes;\x20no\x20refunds)':null]['filter'](Boolean);c['push']({'code':'CROWDFUNDING_DISCLOSURE_MISSING','detail':'crowdfunding_mode\x20\x27'+a+'\x27\x20declares\x20a\x20campaign\x20but\x20no\x20build_note\x20carries:\x20'+w['join'](';\x20')+'\x20'+'(INV-E3\x20/\x20L-04\x20/\x20L-01\x20/\x20L-05).\x20Add\x20these\x20as\x20honest\x20build_notes\x20—\x20never\x20present\x20an\x20attested\x20aggregate\x20as\x20a\x20'+'chain-verified\x20custody\x20proof,\x20never\x20imply\x20investment\x20returns,\x20and\x20flag\x20the\x20compliance\x20surface.'});}return c;}function emitLogisticsGates(a,b){const c=[];if(a==='none')return c;const d=b['shape'],e=d['some'](g=>g['named_operator']!==undefined||(g['from']??[])['some'](h=>h['named_operator']!==undefined));a==='courier'&&!e&&c['push']({'code':'LOGISTICS_COURIER_RAIL_MISSING','detail':'logistics_mode\x20\x27courier\x27\x20declares\x20per-order\x20dispatched\x20riders,\x20but\x20machine_shape\x20carries\x20NO\x20named_operator\x20'+'rail.\x20A\x20dispatched\x20rider\x20is\x20NEITHER\x20a\x20permission\x20entity\x20NOR\x20the\x20buyer\x20—\x20the\x20ONLY\x20forward\x20they\x20can\x20ever\x20'+'pass\x20is\x20a\x20namedOperator\x20roster\x20rail\x20(the\x20rider\x20namespace\x27s\x20per-order\x20roster,\x20written\x20by\x20the\x20dispatch\x20'+'keeper\x20via\x20permission\x20index\x20221;\x20K-1\x20batch\x20B).\x20Bind\x20the\x20handover\x20forwards\x20(merchant→courier\x20pickup,\x20'+'courier→buyer\x20drop-off)\x20with\x20named_operator\x20\x27<namespace>\x27\x20—\x20and\x20disclose\x20the\x20roster\x20duty\x20in\x20a\x20build_note\x20'+'(the\x20NAMED_OPERATOR_ROSTER_UNDISCLOSED\x20gate\x20and\x20the\x20G6\x20dispatch\x20disclosure\x20below\x20enforce\x20the\x20rest).'});const f=/(deliver|courier|shipping|freight|ride|dispatch|logistic)/i;if(a==='courier'){const g=b['rows']['find'](h=>h['mode']==='surplus'&&f['test']((h['value_from']??'')+'\x20'+(h['recipient_key']??'')));g!==undefined&&c['push']({'code':'LOGISTICS_COURIER_FEE_POOLED','detail':'logistics_mode\x20\x27courier\x27\x20has\x20a\x20delivery-fee\x20allocator\x20row\x20in\x20SURPLUS\x20mode\x20'+('(value_from/recipient_key\x20\x27'+(g['value_from']??g['recipient_key']??'')+'\x27)\x20—\x20a\x20surplus\x20leg\x20')+'drains\x20the\x20remainder\x20of\x20the\x20pool\x20it\x20hangs\x20on,\x20which\x20for\x20a\x20courier\x20build\x20IS\x20the\x20buyer\x27s\x20goods\x20escrow\x20'+'(the\x20grab-pool\x20shape\x20the\x20affiliate\x20INV-D3\x20family\x20bans).\x20The\x20delivery\x20fee\x20is\x20KNOWN\x20at\x20order\x20time\x20—\x20the\x20'+'buyer\x20sees\x20and\x20pays\x20it\x20before\x20dispatch\x20—\x20so\x20make\x20it\x20an\x20INDEPENDENT\x20leg:\x20a\x20fixed\x20Amount\x20row\x20(or\x20a\x20Rate\x20'+'row\x20off\x20a\x20dedicated\x20delivery-fee\x20pool\x20funded\x20separately),\x20never\x20a\x20Surplus/Rate\x20drain\x20of\x20the\x20goods\x20pool.'});}if(a==='pickup_point'){const h=b['guardSpecs']['some'](j=>j['template_id']==='pattern.time_lock_absolute'||j['template_id']==='tpl_time_lock_absolute_ms'),i=b['guardSpecs']['some'](j=>j['template_id']==='pattern.time_window_upper_bound'||j['template_id']==='tpl_time_window_upper'||j['template_id']==='tpl_time_window_upper_absolute_ms');(!h||!i)&&c['push']({'code':'LOGISTICS_PICKUP_CUTOFF_MISSING','detail':'logistics_mode\x20\x27pickup_point\x27\x20declares\x20batch\x20consolidation,\x20but\x20the\x20shape\x20is\x20missing\x20'+(''+(!h?'the\x20ABSOLUTE\x20batch-cutoff\x20release\x20gate\x20(pattern.time_lock_absolute\x20—\x20every\x20funder\x27s/leader\x27s\x20release\x20anchors\x20on\x20the\x20SAME\x20shared\x20cutoff\x20clock,\x20not\x20per-order\x20entry+duration)':''))+(''+(!h&&!i?'\x20and\x20':''))+(''+(!i?'the\x20unclaimed-goods\x20exit\x20window\x20(pattern.time_window_upper_bound\x20—\x20goods\x20never\x20picked\x20up\x20must\x20refund/return\x20at\x20a\x20bounded\x20deadline,\x20never\x20hold\x20open-ended)':''))+'.\x20Both\x20are\x20mandatory:\x20without\x20the\x20shared\x20cutoff\x20the\x20batch\x20is\x20not\x20a\x20batch\x20(each\x20order\x20releases\x20on\x20its\x20own\x20clock),\x20and\x20without\x20the\x20exit\x20window\x20an\x20unclaimed\x20parcel\x20strands\x20in\x20the\x20pickup\x20point\x20forever.'});}if(a==='carrier'){const j=/(track|shipping evidence|waybill|airbill|carrier record|parcel evidence)/i,k=b['guardSpecs']['some'](l=>l['host']==='machine'&&j['test'](l['key']+'\x20'+l['purpose']));!k&&c['push']({'code':'LOGISTICS_CARRIER_EVIDENCE_MISSING','detail':'logistics_mode\x20\x27carrier\x27\x20declares\x20third-party\x20carrier\x20shipment,\x20but\x20NO\x20machine\x20guard\x20binds\x20'+'shipping/tracking\x20evidence.\x20Add\x20a\x20repository_data_check\x20guard\x20on\x20the\x20ship\x20forward\x20keyed\x20to\x20a\x20'+'tracking-hash\x20row\x20(the\x20retail\x20idiom:\x20the\x20evidence\x20Repository\x20row\x20is\x20written\x20by\x20an\x20authorized\x20'+'writer\x20—\x20pattern.repository_write_authorization\x20—\x20and\x20the\x20ship\x20guard\x20reads\x20it),\x20so\x20a\x20dispute\x20has\x20a\x20'+'dispute-ready\x20record\x20of\x20what\x20was\x20shipped\x20and\x20when.'});}{const l=/(lost|loss|damag|theft)/i,m=q=>q['replace'](/permanently lost/gi,''),n=/(transit loss|lost (?:parcel|package|goods|in transit)|in[- ]transit loss|carrier lost|loss (?:is |)remed|loss route|lost shipment)/i,o=d['some'](q=>l['test'](q['name'])||l['test'](q['role']??''))||b['guardSpecs']['some'](q=>q['host']==='machine'&&l['test'](m(q['key']+'\x20'+q['purpose']))),p=b['buildNotes']['some'](q=>n['test'](q));!o&&!p&&c['push']({'code':'LOGISTICS_TRANSIT_LOSS_UNCOVERED','detail':'logistics_mode\x20\x27'+a+'\x27\x20moves\x20a\x20physical\x20good,\x20but\x20the\x20shape\x20has\x20NO\x20in-transit\x20loss\x20rail\x20'+'(no\x20loss/damage\x20node\x20or\x20machine-guard\x20family)\x20and\x20NO\x20build_note\x20disclosing\x20the\x20loss\x20remedy.\x20Goods\x20can\x20'+'be\x20lost\x20or\x20damaged\x20between\x20handover\x20and\x20acceptance\x20in\x20EVERY\x20physical\x20mode\x20—\x20silence\x20means\x20the\x20buyer\x27s\x20'+'funds\x20strand\x20behind\x20an\x20undeliverable\x20order\x20with\x20no\x20taught\x20route.\x20Either\x20express\x20the\x20loss\x20waypoint\x20(a\x20'+'node\x20like\x20the\x20retail\x20lost-parcel\x20record,\x20or\x20a\x20loss-evidence\x20machine\x20guard)\x20or\x20add\x20a\x20build_note\x20'+'disclosing\x20the\x20remedy\x20route\x20(e.g.\x20\x22transit\x20loss\x20is\x20remedied\x20by\x20the\x20buyer\x27s\x20arbitration\x20route\x20into\x20the\x20'+'refund\x20rail\x20—\x20the\x20ruling\x20pays\x20the\x20buyer;\x20the\x20carrier\x20claim\x20is\x20an\x20off-chain\x20recovery,\x20disclosed\x20as\x20such\x22).'});}if(a==='courier'||a==='pickup_point'){const q=/(dispatch|schedul|no.{0,24}oracle|no on-chain.{0,24}(dispatch|scheduler)|off-chain keeper|keeper.{0,40}dispatch|roster|named.?operator|permission.{0,12}221)/i,r=b['buildNotes']['some'](s=>q['test'](s));!r&&c['push']({'code':'LOGISTICS_DISPATCH_UNDISCLOSED','detail':'logistics_mode\x20\x27'+a+'\x27\x20is\x20a\x20dynamically\x20dispatched\x20fulfillment\x20topology,\x20but\x20no\x20build_note\x20'+'discloses\x20the\x20two\x20🔴\x20SOLE-TRUTH\x20boundaries.\x20①\x20The\x20chain\x20has\x20NO\x20dispatch/scheduling\x20primitive\x20—\x20'+'assignment\x20of\x20riders/pickup\x20batches\x20is\x20an\x20OFF-CHAIN\x20keeper\x20duty\x20(K-4);\x20its\x20only\x20chain\x20footprint\x20is\x20the\x20'+'namedOperator\x20roster\x20written\x20via\x20permission\x20index\x20221.\x20②\x20There\x20is\x20NO\x20distance/weight/weather\x20oracle\x20—\x20'+'ETA,\x20route,\x20and\x20dynamic\x20pricing\x20are\x20NOT\x20chain-verifiable.\x20Add\x20a\x20build_note\x20stating\x20WHO\x20dispatches\x20(the\x20'+'keeper),\x20WHAT\x20the\x20keeper\x20writes\x20(the\x20roster,\x20per\x20order/shift),\x20and\x20that\x20ETA/pricing\x20live\x20off-chain.'});}return c;}function emitFormulaGates(a){const b=[];for(const c of a['rows']){if(c['mode']!=='formula')continue;const d='allocator\x20row\x20('+c['track']+'/'+(c['recipient_key']??c['recipient'])+')';c['formula']?.['selector']!==0x2&&b['push']({'code':'FORMULA_SELECTOR_NOT_SUM_BOUND','detail':d+'\x20declares\x20a\x20Formula\x20leg\x20with\x20selector\x20'+JSON['stringify'](c['formula']?.['selector'])+'\x20—\x20only\x202\x20'+'(SUM_BOUND)\x20is\x20allowed.\x20A\x20bare\x20SUM\x20(1)\x20can\x20be\x20inflated\x20by\x20forged\x20rows:\x20any\x20Repository\x20writer\x20who\x20'+'can\x20add\x20a\x20large\x20row\x20inflates\x20the\x20scalar,\x20and\x20the\x20leg\x20pays\x20coefficient\x20×\x20scalar\x20/\x2010000\x20—\x20forged\x20'+'row,\x20forged\x20money\x20(ksc-tn-261024\x20F-01);\x20COUNT\x20(0)\x20is\x20likewise\x20escrow-unbound.\x20SUM_BOUND\x20clamps\x20'+'every\x20candidate\x20row\x20to\x20min(row_value,\x20the\x20amount\x20of\x20the\x20Order\x20its\x20id\x20names),\x20so\x20a\x20dynamic-pricing\x20'+'scalar\x20can\x20never\x20credit\x20a\x20contribution\x20beyond\x20the\x20escrow\x20actually\x20bound\x20to\x20it.\x20TWO\x20clamp\x20'+'guarantees,\x20keep\x20them\x20separate\x20—\x20never\x20blur\x20them\x20into\x20an\x20unconditional\x20\x22three-term\x20clamp\x22:\x20'+'(a)\x20UNCONDITIONAL\x20on\x20every\x20protocol\x20version:\x20min(row_value,\x20that\x20Order\x20amount),\x20with\x20a\x20candidate\x20'+'id\x20that\x20is\x20not\x20a\x20framework\x20Order\x20contributing\x200\x20fail-closed;\x20(b)\x20FLAG-GATED:\x20the\x20third\x20clamp\x20'+'term\x20against\x20the\x20row\x27s\x20LIVE\x20allocation\x20balance\x20ships\x20behind\x20the\x20v140\x20live-cap\x20protocol\x20flag\x20'+'(FLAG_ENABLE_REPOSITORY_ESCROW_LIVE_CAP)\x20—\x20on\x20a\x20protocol\x20version\x20without\x20it,\x20a\x20refunded\x20order\x27s\x20'+'frozen\x20amount\x20still\x20contributes\x20to\x20the\x20scalar.\x20Never\x20promise\x20the\x20live-balance\x20clamp\x20without\x20'+'naming\x20its\x20flag.\x20Declare\x20'+'formula:\x20{\x20selector:\x202,\x20repo,\x20key,\x20ids,\x20...\x20}\x20on\x20the\x20row\x20(the\x20runtime\x20spec\x20is\x20then\x20bound\x20via\x20'+'allocation\x20formula_spec_set).'});const e=c['formula']?.['ids'],f=e!==undefined&&e['length']>0x0?JSON['stringify'](e):'';!f['includes']('order')&&b['push']({'code':'FORMULA_ROW_KEY_NOT_ORDER','detail':d+'\x20declares\x20a\x20Formula\x20leg\x20whose\x20candidate\x20ids\x20'+(e===undefined||e['length']===0x0?'are\x20empty\x20or\x20missing':'('+f+')')+'\x20do\x20not\x20bind\x20an\x20Order\x20id.\x20'+'Under\x20SUM_BOUND\x20every\x20row\x20is\x20clamped\x20to\x20min(row_value,\x20order.amount\x20of\x20the\x20row\x20id);\x20a\x20row\x20keyed\x20by\x20'+'anything\x20that\x20is\x20not\x20a\x20real\x20framework\x20Order\x20contributes\x200\x20—\x20the\x20leg\x20silently\x20prices\x20at\x200\x20(fail-closed\x20'+'native\x20behavior,\x20a\x20silent\x20error\x20source),\x20and\x20an\x20empty\x20list\x20matches\x20NO\x20records.\x20Bind\x20ids\x20to\x20the\x20plan\x27s\x20'+'Order(s)\x20(e.g.\x20[{\x20\x22$ref\x22:\x20\x22<order\x20step\x20id>\x22\x20}])\x20so\x20the\x20clamp\x20reads\x20the\x20real\x20escrow.'});}return b;}function emitCampaignDeadlineGate(a){const b=[],c=a['inputs']['campaign_deadline_ms']??a['feeParams']?.['campaign_deadline_ms'],d=typeof c==='number'?c:Number(c);if(a['buildTimeMs']!==undefined){if(!Number['isFinite'](d)||d<=0x0)b['push']({'code':'CROWDFUNDING_DEADLINE_UNSET','detail':'this\x20build\x20gates\x20release/refund/withdrawal\x20or\x20a\x20group-buy\x20cutoff\x20on\x20the\x20ABSOLUTE\x20shared\x20deadline\x20'+('(campaign_deadline_ms),\x20but\x20it\x20resolved\x20to\x20'+String(c)+'\x20even\x20though\x20this\x20build\x20knows\x20its\x20')+'instant\x20—\x20an\x20unresolved\x20zero\x20opens\x20the\x20deadline\x20gate\x20at\x20genesis\x20(Clock\x20>=\x200\x20is\x20always\x20true)\x20and\x20the\x20'+'paired\x20closing\x20twin\x20(Clock\x20<=\x200)\x20is\x20ALWAYS\x20FALSE:\x20the\x20pre-deadline\x20exit\x20is\x20dead\x20on\x20arrival\x20and\x20the\x20'+'release/cancel\x20polarity\x20is\x20resolvable\x20at\x20block\x20one\x20(ktt5\x20T-20,\x20ddmc-mn\x20F-DDMC-08).\x20Pass\x20a\x20real\x20'+'future\x20epoch-ms\x20timestamp\x20via\x20inputs.campaign_deadline_ms,\x20or\x20a\x20length\x20via\x20'+'inputs.campaign_duration_days\x20for\x20the\x20generation-time\x20conversion.'});else{if(d<=a['buildTimeMs'])b['push']({'code':'CROWDFUNDING_DEADLINE_PAST','detail':'campaign_deadline_ms\x20('+d+')\x20is\x20not\x20after\x20this\x20build\x27s\x20instant\x20('+a['buildTimeMs']+')\x20—\x20'+'the\x20shared\x20deadline\x20is\x20ALREADY\x20EXPIRED\x20at\x20publish:\x20the\x20pre-deadline\x20exit\x20is\x20dead\x20on\x20'+'arrival\x20and\x20the\x20release/refund\x20polarity\x20is\x20resolvable\x20at\x20block\x20one\x20(the\x20live\x20ktt5\x20run\x20set\x20the\x20'+'deadline\x20before\x20the\x20first\x20order\x20and\x20could\x20never\x20test\x20a\x20mid-round\x20withdrawal,\x20T-20).\x20Pass\x20a\x20future\x20'+'epoch-ms\x20timestamp\x20(build\x20instant\x20+\x20campaign_duration_days\x20is\x20the\x20sanctioned\x20conversion).'});else a['buildTimeMs']+0xa*0xea60-d>0x0&&b['push']({'code':'CROWDFUNDING_DEADLINE_IMMINENT','detail':'campaign_deadline_ms\x20('+d+')\x20is\x20less\x20than\x2010\x20minutes\x20after\x20this\x20build\x27s\x20instant\x20'+('('+a['buildTimeMs']+')\x20—\x20the\x20round\x20is\x20effectively\x20expired\x20by\x20the\x20time\x20ANY\x20buyer\x20sees\x20the\x20')+'listing\x20(pdd\x20F-09\x20min-lead).\x20Give\x20the\x20campaign\x20a\x20real\x20lead\x20window:\x20build\x20instant\x20+\x20'+'campaign_duration_days\x20/\x20campaign_duration_hours\x20(hours\x20for\x20short\x20pop-up\x20rounds,\x20minimum\x20'+'sanctioned\x20length\x2010\x20minutes)\x20or\x20a\x20further-out\x20absolute\x20timestamp.'});}}return b;}export function emitModeGates(a,b){const c=emitAfterSalesGates(a['afterSalesMode'],b),d=emitAcceptanceGates(a['acceptanceMode'],b);return{'blockers':[...c,...d['blockers'],...emitInstallmentGates(a['installmentMode'],b),...emitAffiliateGates(a['affiliateMode'],b),...emitCrowdfundingGates(a['crowdfundingMode'],b),...a['crowdfundingMode']==='none'&&(b['inputs']['campaign_deadline_ms']!==undefined||b['feeParams']?.['campaign_deadline_ms']!==undefined)?emitCampaignDeadlineGate(b):[],...emitLogisticsGates(a['logisticsMode'],b),...emitFormulaGates(b)],'disclosures':[...d['disclosures']]};}export function deriveCapabilityModes({template:a,inputs:b}){const c=b['after_sales_mode'],d=c==='return'||c==='exchange'||c==='warranty'||c==='none'?c:undefined,e=d??a['after_sales_mode']??'none',f=b['acceptance_mode'],g=f==='milestone'||f==='contest'||f==='bounty'||f==='agent'||f==='none'?f:undefined,h=g??a['acceptance_mode']??'none',i=b['installment_mode'],j=i==='deposit_balance'||i==='milestone_n'||i==='none'?i:undefined,k=j??a['installment_mode']??'none',l=b['affiliate_mode'],m=l==='commission'||l==='none'?l:undefined,n=m??a['affiliate_mode']??'none',o=b['crowdfunding_mode'],p=o==='threshold'||o==='flexible'||o==='none'?o:undefined,q=p??a['crowdfunding_mode']??'none',r=b['logistics_mode'],s=r==='carrier'||r==='merchant_managed'||r==='courier'||r==='pickup_point'||r==='none'?r:undefined,t=s??a['logistics_mode']??'none';return{'afterSalesMode':e,'acceptanceMode':h,'installmentMode':k,'affiliateMode':n,'crowdfundingMode':q,'logisticsMode':t};}
|
package/dist/composition/plan.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{OBJECT_GRAPH}from'../chain-semantics/index.js';export function isRef(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a)&&typeof a['$ref']==='string'&&Object['keys'](a)['every'](b=>b==='$ref'||b==='path');}export function isLate(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a)&&typeof a['$late']==='object'&&a['$late']!==null&&Object['keys'](a)['every'](b=>b==='$late');}export const P=a=>a;export function ref(a){return{'$ref':a};}export function collectLateMarks(a,b=new Set()){if(Array['isArray'](a)){for(const c of a)collectLateMarks(c,b);return b;}if(a&&typeof a==='object'){const d=a,e=d['$late'];if(e&&typeof e==='object'){const f=e;if(f['by']==='local_name'&&typeof f['mark']==='string')b['add'](f['mark']);}for(const g of Object['values'](d))collectLateMarks(g,b);}return b;}export function collectRecipientLateMarks(a,b=new Set()){const c=d=>{if(typeof d==='object'&&d!==null&&!Array['isArray'](d)){const e=d;if(Array['isArray'](e['allocators']))d=e['allocators'];}if(!Array['isArray'](d))return;for(const f of d){if(typeof f!=='object'||f===null)continue;const g=f,h=Array['isArray'](g['sharing'])?g['sharing']:[];for(const i of h){const j=i?.['who'],k=j?.['Entity'],m=k?.['name_or_address'],n=m!==null&&typeof m==='object'?m['$late']:undefined;if(n!==null&&typeof n==='object'){const o=n;if(o['by']==='local_name'&&typeof o['mark']==='string')b['add'](o['mark']);}}}};for(const d of a['steps']){if(d['op']==='create'&&d['object']==='service')c(d['params']['order_allocators']);if(d['op']==='configure'&&d['method']==='order_allocators')c(d['params']['allocators']);}return b;}export function collectAddressSlotBareNames(a,b=new Set()){const c=d=>/^0x[0-9a-fA-F]{1,64}$/['test'](d['trim']());for(const d of a['steps']){if(d['op']!=='create'||d['object']!=='guard')continue;const e=d['params']['table'];if(!Array['isArray'](e))continue;for(const f of e){if(f===null||typeof f!=='object')continue;const g=f,h=g['value_type'],i=h==='Address',j=h==='VecAddress';if(!i&&!j)continue;const k=g['value'];i&&typeof k==='string'&&k['length']>0x0&&!c(k)&&b['add'](k);if(j&&Array['isArray'](k))for(const l of k){if(typeof l==='string'&&l['length']>0x0&&!c(l))b['add'](l);}}}return b;}export const CREATABLE_OBJECTS={'permission':'Permission','guard':'Guard','repository':'Repository','machine':'Machine','service':'Service<T>','arbitration':'Arbitration<T>','treasury':'Treasury<T>','reward':'Reward<T>','demand':'Demand','contact':'Contact','proof':'Proof','resource':'Resource'};export const PUBLISHABLE_KINDS=['service','machine'];export function refsOf(a,b=new Set()){if(isRef(a))b['add'](a['$ref']);else{if(Array['isArray'](a)){for(const c of a)refsOf(c,b);}else{if(typeof a==='object'&&a!==null&&!isLate(a)){for(const d of Object['values'](a))refsOf(d,b);}}}return b;}export function stepById(a,b){return a['steps']['find'](c=>c['id']===b);}export function createsOf(a,b){return a['steps']['filter'](c=>c['op']==='create'&&c['object']===b);}export function resolveValue(a,b,c){if(isRef(a)){const d=b['get'](a['$ref']);if(d===undefined)throw new Error('unresolved\x20ref:\x20'+a['$ref']);return a['path']?''+d+a['path']:d;}if(isLate(a))return c(a['$late']);if(Array['isArray'](a))return a['map'](e=>resolveValue(e,b,c));if(typeof a==='object'&&a!==null)return Object['fromEntries'](Object['entries'](a)['map'](([e,f])=>[e,resolveValue(f,b,c)]));return a;}function guardStructuralIssues(a,b){const c=[],d=['WRITER_ACCOUNT_ADDRESS'],e=h=>{if(typeof h==='string'&&h['includes']('${')){c['push']({'code':'PLAN_GUARD_PLACEHOLDER','step':a,'detail':'unfilled\x20template\x20placeholder\x20\x27'+h['slice'](0x0,0x30)+'\x27\x20—\x20resolve\x20every\x20guard\x20param\x20before\x20execution'});return;}typeof h==='string'&&d['some'](i=>h['includes'](i))&&c['push']({'code':'PLAN_GUARD_PLACEHOLDER','step':a,'detail':'unfilled\x20template\x20placeholder\x20sentinel\x20\x27'+h['slice'](0x0,0x30)+'\x27\x20—\x20resolve\x20every\x20guard\x20param\x20before\x20execution\x20(algr12\x20P0-5:\x20this\x20literal\x20published\x20to\x20mainnet\x20and\x20blocked\x20every\x20evidence\x20write)'});},f=b['table'];if(Array['isArray'](f))for(const h of f){if(h===null||typeof h!=='object')continue;const i=h,j=i['value'];j===''&&c['push']({'code':'PLAN_GUARD_EMPTY_VEC','step':a,'detail':'table\x20row\x20'+String(i['identifier'])+'\x20carries\x20an\x20EMPTY\x20value\x20—\x20the\x20serialized\x20bytes\x20are\x20empty\x20and\x20the\x20chain\x20aborts\x20the\x20create\x20(E_TABLE_ITEM_VALUE_EMPTY=14)'}),(i['value_type']==='VecAddress'||i['value_type']===0xa)&&Array['isArray'](j)&&j['some'](k=>typeof k==='string'&&/^0x0+$/i['test'](k))&&c['push']({'code':'PLAN_GUARD_ZERO_ADDR','step':a,'detail':'table\x20row\x20'+String(i['identifier'])+'\x20(VecAddress)\x20carries\x20a\x20ZERO-ADDRESS\x20placeholder\x20—\x20'+'the\x20retired\x20ddmc4\x20B-04\x20workaround;\x20a\x20zero\x20address\x20is\x20NOT\x20\x22no\x20list\x22\x20(the\x20guard\x20table\x20would\x20claim\x20'+'address\x200\x20is\x20allowed).\x20Legal\x20exits:\x20arm\x20the\x20list\x20with\x20real\x20addresses,\x20or\x20omit\x20the\x20guard\x20via\x20'+'guard_resolutions\x20{kind:\x22omit\x22}\x20when\x20\x27no\x20list\x27\x20is\x20the\x20intended\x20polarity.'}),e(j);}const g=l=>{if(Array['isArray'](l)){for(const o of l)g(o);return;}if(l===null||typeof l!=='object')return;const m=l;(m['type']==='logic_and'||m['type']==='logic_or')&&Array['isArray'](m['nodes'])&&m['nodes']['length']===0x1&&c['push']({'code':'PLAN_LOGIC_ARITY','step':a,'detail':String(m['type'])+'\x20with\x20a\x20single\x20child\x20—\x20the\x20kernel\x20rejects\x20the\x20shape;\x20unwrap\x20the\x20operand\x20(the\x20compile\x20kernel\x20normalizes\x20this\x20automatically)'});for(const [p,q]of Object['entries'](m)){if(p==='type')continue;e(q),g(q);}};return g(b['root']),c;}function lateEmptyMarkIssues(a,b){const c=[],d=e=>{if(Array['isArray'](e)){for(const h of e)d(h);return;}if(e===null||typeof e!=='object')return;const f=e,g=f['$late'];if(g!==null&&typeof g==='object'){const i=g;i['by']==='local_name'&&typeof i['mark']==='string'&&i['mark']['length']===0x0&&c['push']({'code':'PLAN_LATE_EMPTY_MARK','step':a,'detail':'{$late:{by:\x27local_name\x27,\x20mark:\x27\x27}}\x20—\x20an\x20EMPTY\x20mark\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20for\x20the\x20Entity/name\x20slot\x20(cour\x20ENTITY-LATENAME);\x20declare\x20the\x20LocalMark\x20name\x20and\x20register\x20it\x20before\x20running'}),i['by']==='address'&&typeof i['address']==='string'&&i['address']['length']===0x0&&c['push']({'code':'PLAN_LATE_EMPTY_MARK','step':a,'detail':'{$late:{by:\x27address\x27,\x20address:\x27\x27}}\x20—\x20an\x20EMPTY\x20address\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20for\x20the\x20Entity/name\x20slot\x20(cour\x20ENTITY-LATENAME);\x20bind\x20a\x20real\x20address'});}for(const j of Object['values'](f))d(j);};return d(b),c;}function nameReferenceOrphanIssues(a){const b=new Set();for(const e of a['steps']){if(e['op']!=='create')continue;const f=e['params']['name'];if(typeof f==='string'&&f['length']>0x0)b['add'](f);}const c=new Set(a['external_refs']??[]),d=[];for(const g of a['steps']){if(g['op']!=='configure')continue;const h=i=>{if(Array['isArray'](i)){for(const l of i)h(l);return;}if(i===null||typeof i!=='object')return;const j=i,k=Object['keys'](j);if(k['length']===0x1&&k[0x0]==='name'&&typeof j['name']==='string'){const m=j['name'];!b['has'](m)&&!c['has'](m)&&d['push']({'code':'PLAN_NAME_REF_ORPHAN','step':g['id'],'detail':'configure\x20step\x20\x27{'+g['id']+'}\x27\x20references\x20an\x20object\x20by\x20bare\x20name\x20form\x20{name:\x20\x22'+m+'\x22}\x20with\x20NO\x20create\x20step\x20in\x20this\x20plan\x20and\x20no\x20external_refs\x20declaration\x20—\x20'+'the\x20SDK\x27s\x20name-resolution\x20semantics\x20are\x20CREATE-IF-MISSING,\x20so\x20this\x20write\x20would\x20mint\x20a\x20fresh\x20orphan\x20object\x20instead\x20of\x20binding\x20the\x20intended\x20one\x20(cour\x20ORPHAN-REPO,\x20mainnet:\x202\x20permanent\x20orphans,\x200.0123\x20WOW;\x20guards\x20freeze\x20at\x20publish).\x20'+('Fix:\x20create\x20the\x20object\x20explicitly\x20in\x20this\x20plan\x20and\x20pass\x20{\x22$ref\x22:\x20\x22<step-id>\x22},\x20or\x20declare\x20\x22'+m+'\x22\x20in\x20plan.external_refs\x20AFTER\x20registering\x20the\x20LocalMark\x20—\x20')+('or,\x20if\x20minting\x20is\x20truly\x20intended,\x20make\x20it\x20explicit\x20with\x20{name:\x20\x22'+m+'\x22,\x20create_if_missing:\x20true}')});}else{for(const o of Object['values'](j))h(o);}};h(g['params']);}return d;}export function validatePlan(a){const b=[],c=new Set(a['steps']['map'](e=>e['id'])),d=new Map();return a['steps']['forEach']((e,f)=>{d['has'](e['id'])&&b['push']({'code':'PLAN_DUP_STEP','step':e['id'],'detail':'duplicate\x20step\x20id\x20at\x20index\x20'+f});d['set'](e['id'],f);if(e['op']==='create'){if(!(e['object']in CREATABLE_OBJECTS))b['push']({'code':'PLAN_UNKNOWN_KIND','step':e['id'],'detail':'unknown\x20object\x20kind:\x20'+e['object']});else!(CREATABLE_OBJECTS[e['object']]in OBJECT_GRAPH)&&b['push']({'code':'PLAN_UNKNOWN_KIND','step':e['id'],'detail':'kind\x20'+e['object']+'\x20not\x20in\x20chain\x20OBJECT_GRAPH'});if(e['object']==='guard'){const h=e['params']['table'];(!Array['isArray'](h)||h['length']===0x0)&&b['push']({'code':'PLAN_PROSE_GUARD','step':e['id'],'detail':'guard\x20requires\x20a\x20non-empty\x20structured\x20`table`\x20param\x20(no\x20prose\x20logic\x20slots)'}),b['push'](...guardStructuralIssues(e['id'],e['params']));}if(e['object']==='machine'){const j=e['params']['nodes'];(!Array['isArray'](j)||j['length']===0x0)&&b['push']({'code':'PLAN_MACHINE_NODES','step':e['id'],'detail':'machine\x20requires\x20a\x20non-empty\x20`nodes`\x20param'});}}if(e['op']==='configure'){for(const k of e['requires']??[]){(!d['has'](k)||d['get'](k)===f)&&b['push']({'code':'PLAN_REQUIRES_UNKNOWN','step':e['id'],'detail':'requires\x20unknown/prior-less\x20step:\x20'+k});}typeof e['target']==='string'&&c['has'](e['target'])&&b['push']({'code':'PLAN_NAME_COLLISION','step':e['id'],'detail':'target\x20\x27'+e['target']+'\x27\x20names\x20a\x20create\x20step\x20in\x20THIS\x20plan\x20—\x20pass\x20{\x22$ref\x22:\x20\x22'+e['target']+'\x22}\x20so\x20it\x20binds\x20to\x20this\x20run\x27s\x20output.\x20'+'A\x20bare\x20name\x20resolves\x20through\x20the\x20global\x20mark\x20namespace\x20and\x20silently\x20binds\x20a\x20previous\x20run\x27s\x20object\x20(frozen,\x20unrepairable)'});}if(e['op']==='publish'){const l=d['get'](e['target']['$ref']),m=l===undefined?undefined:a['steps'][l];if(!c['has'](e['target']['$ref']))b['push']({'code':'PLAN_REF_UNKNOWN','step':e['id'],'detail':'publish\x20target\x20unknown:\x20'+e['target']['$ref']});else(m===undefined||m['op']!=='create'||!PUBLISHABLE_KINDS['includes'](m['object']))&&b['push']({'code':'PLAN_PUBLISH_TARGET','step':e['id'],'detail':'publish\x20target\x20must\x20be\x20a\x20created\x20service|machine,\x20got:\x20'+(m?.['op']==='create'?m['object']:m?.['op'])});}e['op']!=='publish'&&e['params']!==undefined&&b['push'](...lateEmptyMarkIssues(e['id'],e['params']));const g=e['op']==='create'||e['op']==='configure'?refsOf(e['params']):new Set();if(e['op']==='configure'&&isRef(e['target']))g['add'](e['target']['$ref']);if(e['op']==='publish')g['add'](e['target']['$ref']);for(const n of g){const o=d['get'](n);if(!c['has'](n))b['push']({'code':'PLAN_REF_UNKNOWN','step':e['id'],'detail':'ref\x20to\x20unknown\x20step:\x20'+n});else(o===undefined||o>=f)&&b['push']({'code':'PLAN_REF_FORWARD','step':e['id'],'detail':'ref\x20to\x20non-prior\x20step:\x20'+n});}}),b['push'](...nameReferenceOrphanIssues(a)),b;}
|
|
1
|
+
import{OBJECT_GRAPH}from'../chain-semantics/index.js';import{auditMachineNodes}from'../knowledge/audit-rules.js';export function isRef(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a)&&typeof a['$ref']==='string'&&Object['keys'](a)['every'](b=>b==='$ref'||b==='path');}export function isLate(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a)&&typeof a['$late']==='object'&&a['$late']!==null&&Object['keys'](a)['every'](b=>b==='$late');}export const P=a=>a;export function ref(a){return{'$ref':a};}export function collectLateMarks(a,b=new Set()){if(Array['isArray'](a)){for(const c of a)collectLateMarks(c,b);return b;}if(a&&typeof a==='object'){const d=a,e=d['$late'];if(e&&typeof e==='object'){const f=e;if(f['by']==='local_name'&&typeof f['mark']==='string')b['add'](f['mark']);}for(const g of Object['values'](d))collectLateMarks(g,b);}return b;}export function collectRecipientLateMarks(a,b=new Set()){const c=d=>{if(typeof d==='object'&&d!==null&&!Array['isArray'](d)){const e=d;if(Array['isArray'](e['allocators']))d=e['allocators'];}if(!Array['isArray'](d))return;for(const f of d){if(typeof f!=='object'||f===null)continue;const g=f,h=Array['isArray'](g['sharing'])?g['sharing']:[];for(const i of h){const j=i?.['who'],k=j?.['Entity'],m=k?.['name_or_address'],n=m!==null&&typeof m==='object'?m['$late']:undefined;if(n!==null&&typeof n==='object'){const o=n;if(o['by']==='local_name'&&typeof o['mark']==='string')b['add'](o['mark']);}}}};for(const d of a['steps']){if(d['op']==='create'&&d['object']==='service')c(d['params']['order_allocators']);if(d['op']==='configure'&&d['method']==='order_allocators')c(d['params']['allocators']);}return b;}export function collectAddressSlotBareNames(a,b=new Set()){const c=d=>/^0x[0-9a-fA-F]{1,64}$/['test'](d['trim']());for(const d of a['steps']){if(d['op']!=='create'||d['object']!=='guard')continue;const e=d['params']['table'];if(!Array['isArray'](e))continue;for(const f of e){if(f===null||typeof f!=='object')continue;const g=f,h=g['value_type'],i=h==='Address',j=h==='VecAddress';if(!i&&!j)continue;const k=g['value'];i&&typeof k==='string'&&k['length']>0x0&&!c(k)&&b['add'](k);if(j&&Array['isArray'](k))for(const l of k){if(typeof l==='string'&&l['length']>0x0&&!c(l))b['add'](l);}}}return b;}export const CREATABLE_OBJECTS={'permission':'Permission','guard':'Guard','repository':'Repository','machine':'Machine','service':'Service<T>','arbitration':'Arbitration<T>','treasury':'Treasury<T>','reward':'Reward<T>','demand':'Demand','contact':'Contact','proof':'Proof','resource':'Resource'};export const PUBLISHABLE_KINDS=['service','machine'];export function refsOf(a,b=new Set()){if(isRef(a))b['add'](a['$ref']);else{if(Array['isArray'](a)){for(const c of a)refsOf(c,b);}else{if(typeof a==='object'&&a!==null&&!isLate(a)){for(const d of Object['values'](a))refsOf(d,b);}}}return b;}export function stepById(a,b){return a['steps']['find'](c=>c['id']===b);}export function createsOf(a,b){return a['steps']['filter'](c=>c['op']==='create'&&c['object']===b);}export function resolveValue(a,b,c){if(isRef(a)){const d=b['get'](a['$ref']);if(d===undefined)throw new Error('unresolved\x20ref:\x20'+a['$ref']);return a['path']?''+d+a['path']:d;}if(isLate(a))return c(a['$late']);if(Array['isArray'](a))return a['map'](e=>resolveValue(e,b,c));if(typeof a==='object'&&a!==null)return Object['fromEntries'](Object['entries'](a)['map'](([e,f])=>[e,resolveValue(f,b,c)]));return a;}function guardStructuralIssues(a,b){const c=[],d=new Map([['WRITER_ACCOUNT_ADDRESS','algr12\x20P0-5:\x20this\x20literal\x20published\x20to\x20mainnet\x20and\x20blocked\x20every\x20evidence\x20write).\x20'+'Fill\x20it\x20with\x20REAL\x20address(es),\x20e.g.\x20the\x20default\x20signing\x20account\x20you\x20already\x20pass\x20to\x20plan_execute\x20as\x20env.account:\x20'+'re-run\x20template_generate\x20/\x20the\x20guard\x20step\x20with\x20allowed_writers=[\x22<env.account\x20address,\x200x…>\x22]\x20'+'(add\x20every\x20additional\x20writer\x20address\x20that\x20must\x20sign\x20evidence\x20writes).\x20'+'Never\x20ship\x20the\x20sentinel\x20literal\x20—\x20it\x20becomes\x20a\x20VecAddress\x20allowlist\x20row\x20and\x20locks\x20ALL\x20writers\x20out.'],['MERCHANT_ADDRESS','the\x20membership-voucher\x20gate\x20(tpl_buy_guard_payment_voucher)\x20needs\x20the\x20CLUB\x27s\x20own\x20claimable\x20wallet\x20as\x20the\x20recipient\x20leg).\x20'+'Answer\x20the\x20wizard\x27s\x20merchant_address\x20question\x20(guide_confirm.fee_overrides.merchant_address)\x20with\x20the\x20club\x27s\x20real\x20'+'address\x20—\x20every\x20membership\x20fee\x20is\x20misrouted\x20if\x20this\x20is\x20wrong,\x20and\x20a\x20wrong\x20value\x20cannot\x20be\x20repaired\x20after\x20publish.']]),e=i=>{if(typeof i==='string'){if(i['includes']('${')){c['push']({'code':'PLAN_GUARD_PLACEHOLDER','step':a,'detail':'unfilled\x20template\x20placeholder\x20\x27'+i['slice'](0x0,0x30)+'\x27\x20—\x20resolve\x20every\x20guard\x20param\x20before\x20execution'});return;}const j=[...d['keys']()]['find'](k=>i['includes'](k));j!==undefined&&c['push']({'code':'PLAN_GUARD_PLACEHOLDER','step':a,'detail':'unfilled\x20template\x20placeholder\x20sentinel\x20\x27'+i['slice'](0x0,0x30)+'\x27\x20—\x20resolve\x20every\x20guard\x20param\x20before\x20execution\x20'+('('+d['get'](j))});return;}if(Array['isArray'](i)){for(const k of i)e(k);return;}if(i!==null&&typeof i==='object'){for(const l of Object['values'](i))e(l);}},f=b['table'];if(Array['isArray'](f))for(const i of f){if(i===null||typeof i!=='object')continue;const j=i,k=j['value'];k===''&&c['push']({'code':'PLAN_GUARD_EMPTY_VEC','step':a,'detail':'table\x20row\x20'+String(j['identifier'])+'\x20carries\x20an\x20EMPTY\x20value\x20—\x20the\x20serialized\x20bytes\x20are\x20empty\x20and\x20the\x20chain\x20aborts\x20the\x20create\x20(E_TABLE_ITEM_VALUE_EMPTY=14)'}),(j['value_type']==='VecAddress'||j['value_type']===0xa)&&Array['isArray'](k)&&k['some'](l=>typeof l==='string'&&/^0x0+$/i['test'](l))&&c['push']({'code':'PLAN_GUARD_ZERO_ADDR','step':a,'detail':'table\x20row\x20'+String(j['identifier'])+'\x20(VecAddress)\x20carries\x20a\x20ZERO-ADDRESS\x20placeholder\x20—\x20'+'the\x20retired\x20ddmc4\x20B-04\x20workaround;\x20a\x20zero\x20address\x20is\x20NOT\x20\x22no\x20list\x22\x20(the\x20guard\x20table\x20would\x20claim\x20'+'address\x200\x20is\x20allowed).\x20Legal\x20exits:\x20arm\x20the\x20list\x20with\x20real\x20addresses,\x20or\x20omit\x20the\x20guard\x20via\x20'+'guard_resolutions\x20{kind:\x22omit\x22}\x20when\x20\x27no\x20list\x27\x20is\x20the\x20intended\x20polarity.'}),e(k);}const g=l=>{if(Array['isArray'](l)){for(const o of l)g(o);return;}if(l===null||typeof l!=='object')return;const m=l;if(m['type']==='identifier'&&typeof m['identifier']==='number'){const p=Array['isArray'](f)&&f['some'](q=>q!==null&&typeof q==='object'&&q['identifier']===m['identifier']);Array['isArray'](f)&&!p&&c['push']({'code':'PLAN_GUARD_SLOT_RANGE','step':a,'detail':'tree\x20node\x20references\x20table\x20identifier\x20'+m['identifier']+'\x20which\x20does\x20NOT\x20exist\x20in\x20this\x20guard\x27s\x20table\x20—\x20the\x20leg\x20is\x20vacuous\x20and\x20the\x20guard\x20passes\x20everyone\x20(F-x4-41);\x20fix\x20the\x20reference\x20or\x20add\x20the\x20table\x20row\x20before\x20minting\x20(guards\x20are\x20immutable)'});}for(const q of Object['keys'](m)){q!=='identifier'&&/conditions?[-_]?identifier/i['test'](q)&&c['push']({'code':'PLAN_GUARD_SLOT_RANGE','step':a,'detail':'tree\x20node\x20carries\x20field\x20\x27'+q+'\x27\x20which\x20the\x20chain\x20does\x20NOT\x20have\x20—\x20its\x20condition\x20references\x20are\x20silently\x20dropped\x20and\x20the\x20leg\x20is\x20vacuous\x20(F-x4-41\x20shipped\x20exactly\x20this);\x20fold\x20the\x20conditions\x20into\x20real\x20logic_and/logic_or\x20+\x20identifier\x20nodes'});}(m['type']==='logic_and'||m['type']==='logic_or')&&Array['isArray'](m['nodes'])&&m['nodes']['length']===0x1&&c['push']({'code':'PLAN_LOGIC_ARITY','step':a,'detail':String(m['type'])+'\x20with\x20a\x20single\x20child\x20—\x20the\x20kernel\x20rejects\x20the\x20shape;\x20unwrap\x20the\x20operand\x20(the\x20compile\x20kernel\x20normalizes\x20this\x20automatically)'});for(const [r,s]of Object['entries'](m)){if(r==='type')continue;e(s),g(s);}};g(b['root']);for(const l of Object['values'](b))e(l);const h=new Set();return c['filter'](m=>{const n=m['code']+'\x00'+m['detail'];if(h['has'](n))return![];return h['add'](n),!![];});}function lateEmptyMarkIssues(a,b){const c=[],d=e=>{if(Array['isArray'](e)){for(const h of e)d(h);return;}if(e===null||typeof e!=='object')return;const f=e,g=f['$late'];if(g!==null&&typeof g==='object'){const i=g;i['by']==='local_name'&&typeof i['mark']==='string'&&i['mark']['length']===0x0&&c['push']({'code':'PLAN_LATE_EMPTY_MARK','step':a,'detail':'{$late:{by:\x27local_name\x27,\x20mark:\x27\x27}}\x20—\x20an\x20EMPTY\x20mark\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20for\x20the\x20Entity/name\x20slot\x20(cour\x20ENTITY-LATENAME);\x20declare\x20the\x20LocalMark\x20name\x20and\x20register\x20it\x20before\x20running'}),i['by']==='address'&&typeof i['address']==='string'&&i['address']['length']===0x0&&c['push']({'code':'PLAN_LATE_EMPTY_MARK','step':a,'detail':'{$late:{by:\x27address\x27,\x20address:\x27\x27}}\x20—\x20an\x20EMPTY\x20address\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20for\x20the\x20Entity/name\x20slot\x20(cour\x20ENTITY-LATENAME);\x20bind\x20a\x20real\x20address'});}for(const j of Object['values'](f))d(j);};return d(b),c;}function nameReferenceOrphanIssues(a){const b=new Set();for(const e of a['steps']){if(e['op']!=='create')continue;const f=e['params']['name'];if(typeof f==='string'&&f['length']>0x0)b['add'](f);}const c=new Set(a['external_refs']??[]),d=[];for(const g of a['steps']){if(g['op']!=='configure')continue;const h=i=>{if(Array['isArray'](i)){for(const l of i)h(l);return;}if(i===null||typeof i!=='object')return;const j=i,k=Object['keys'](j);if(k['length']===0x1&&k[0x0]==='name'&&typeof j['name']==='string'){const m=j['name'];!b['has'](m)&&!c['has'](m)&&d['push']({'code':'PLAN_NAME_REF_ORPHAN','step':g['id'],'detail':'configure\x20step\x20\x27{'+g['id']+'}\x27\x20references\x20an\x20object\x20by\x20bare\x20name\x20form\x20{name:\x20\x22'+m+'\x22}\x20with\x20NO\x20create\x20step\x20in\x20this\x20plan\x20and\x20no\x20external_refs\x20declaration\x20—\x20'+'the\x20SDK\x27s\x20name-resolution\x20semantics\x20are\x20CREATE-IF-MISSING,\x20so\x20this\x20write\x20would\x20mint\x20a\x20fresh\x20orphan\x20object\x20instead\x20of\x20binding\x20the\x20intended\x20one\x20(cour\x20ORPHAN-REPO,\x20mainnet:\x202\x20permanent\x20orphans,\x200.0123\x20WOW;\x20guards\x20freeze\x20at\x20publish).\x20'+('Fix:\x20create\x20the\x20object\x20explicitly\x20in\x20this\x20plan\x20and\x20pass\x20{\x22$ref\x22:\x20\x22<step-id>\x22},\x20or\x20declare\x20\x22'+m+'\x22\x20in\x20plan.external_refs\x20AFTER\x20registering\x20the\x20LocalMark\x20—\x20')+('or,\x20if\x20minting\x20is\x20truly\x20intended,\x20make\x20it\x20explicit\x20with\x20{name:\x20\x22'+m+'\x22,\x20create_if_missing:\x20true}')});}else{for(const o of Object['values'](j))h(o);}};h(g['params']);}return d;}function machineNodeAuditIssues(a){const b=[];for(const c of a['steps']){if(c['op']!=='create'||c['object']!=='machine')continue;const d=c['params'],e=d?.['nodes'];if(!Array['isArray'](e)||e['length']===0x0)continue;const f=typeof d?.['reentry_kind']==='string'?d['reentry_kind']:undefined,g=auditMachineNodes(e,f);g['critical']['length']>0x0&&b['push']({'code':'PLAN_MACHINE_NODE_AUDIT','step':c['id'],'detail':'machine\x20create\x20step\x20\x27'+c['id']+'\x27\x20fails\x20the\x20shared\x20pre-publish\x20node\x20audit\x20with\x20'+(g['critical']['length']+'\x20CRITICAL\x20finding(s).\x20Fix\x20the\x20machine\x20NODES\x20in\x20THIS\x20plan\x20')+'BEFORE\x20executing\x20—\x20guards\x20created\x20for\x20violating\x20node\x20names\x20are\x20immutable\x20and\x20would\x20'+'need\x20a\x20full\x20rebuild\x20(ptrn7:\x204\x20guards\x20orphaned,\x202\x20publish\x20blocks,\x20zero\x20semantic\x20change):\x0a'+g['critical']['map'](h=>'\x20\x20-\x20'+h)['join']('\x0a')});}return b;}export function validatePlan(a){const b=[],c=new Set(a['steps']['map'](e=>e['id'])),d=new Map();return a['steps']['forEach']((e,f)=>{d['has'](e['id'])&&b['push']({'code':'PLAN_DUP_STEP','step':e['id'],'detail':'duplicate\x20step\x20id\x20at\x20index\x20'+f});d['set'](e['id'],f);if(e['op']==='create'){if(!(e['object']in CREATABLE_OBJECTS))b['push']({'code':'PLAN_UNKNOWN_KIND','step':e['id'],'detail':'unknown\x20object\x20kind:\x20'+e['object']});else!(CREATABLE_OBJECTS[e['object']]in OBJECT_GRAPH)&&b['push']({'code':'PLAN_UNKNOWN_KIND','step':e['id'],'detail':'kind\x20'+e['object']+'\x20not\x20in\x20chain\x20OBJECT_GRAPH'});if(e['object']==='guard'){const h=e['params']['table'];(!Array['isArray'](h)||h['length']===0x0)&&b['push']({'code':'PLAN_PROSE_GUARD','step':e['id'],'detail':'guard\x20requires\x20a\x20non-empty\x20structured\x20`table`\x20param\x20(no\x20prose\x20logic\x20slots)'}),b['push'](...guardStructuralIssues(e['id'],e['params']));}if(e['object']==='machine'){const j=e['params']['nodes'];(!Array['isArray'](j)||j['length']===0x0)&&b['push']({'code':'PLAN_MACHINE_NODES','step':e['id'],'detail':'machine\x20requires\x20a\x20non-empty\x20`nodes`\x20param'});}}if(e['op']==='configure'){for(const k of e['requires']??[]){(!d['has'](k)||d['get'](k)===f)&&b['push']({'code':'PLAN_REQUIRES_UNKNOWN','step':e['id'],'detail':'requires\x20unknown/prior-less\x20step:\x20'+k});}typeof e['target']==='string'&&c['has'](e['target'])&&b['push']({'code':'PLAN_NAME_COLLISION','step':e['id'],'detail':'target\x20\x27'+e['target']+'\x27\x20names\x20a\x20create\x20step\x20in\x20THIS\x20plan\x20—\x20pass\x20{\x22$ref\x22:\x20\x22'+e['target']+'\x22}\x20so\x20it\x20binds\x20to\x20this\x20run\x27s\x20output.\x20'+'A\x20bare\x20name\x20resolves\x20through\x20the\x20global\x20mark\x20namespace\x20and\x20silently\x20binds\x20a\x20previous\x20run\x27s\x20object\x20(frozen,\x20unrepairable)'});}if(e['op']==='publish'){const l=d['get'](e['target']['$ref']),m=l===undefined?undefined:a['steps'][l];if(!c['has'](e['target']['$ref']))b['push']({'code':'PLAN_REF_UNKNOWN','step':e['id'],'detail':'publish\x20target\x20unknown:\x20'+e['target']['$ref']});else(m===undefined||m['op']!=='create'||!PUBLISHABLE_KINDS['includes'](m['object']))&&b['push']({'code':'PLAN_PUBLISH_TARGET','step':e['id'],'detail':'publish\x20target\x20must\x20be\x20a\x20created\x20service|machine,\x20got:\x20'+(m?.['op']==='create'?m['object']:m?.['op'])});}e['op']!=='publish'&&e['params']!==undefined&&b['push'](...lateEmptyMarkIssues(e['id'],e['params']));const g=e['op']==='create'||e['op']==='configure'?refsOf(e['params']):new Set();if(e['op']==='configure'&&isRef(e['target']))g['add'](e['target']['$ref']);if(e['op']==='publish')g['add'](e['target']['$ref']);for(const n of g){const o=d['get'](n);if(!c['has'](n))b['push']({'code':'PLAN_REF_UNKNOWN','step':e['id'],'detail':'ref\x20to\x20unknown\x20step:\x20'+n});else(o===undefined||o>=f)&&b['push']({'code':'PLAN_REF_FORWARD','step':e['id'],'detail':'ref\x20to\x20non-prior\x20step:\x20'+n});}}),b['push'](...nameReferenceOrphanIssues(a)),b['push'](...machineNodeAuditIssues(a)),b;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{listBuiltinTemplates,getBuiltinTemplate,BUILTIN_TEMPLATES_VERSION}from'../knowledge/builtin-templates.js';import{paramPlane}from'./param-disclosure.js';const COMPARE_KEYS=[{'key':'platform_commission_bps','dimension':'platform_take_rate','label':'platform\x20commission'},{'key':'merchant_service_fee_bps','dimension':'merchant_service_fee','label':'merchant\x20service\x20fee'},{'key':'incumbent_take_bps','dimension':'incumbent_take_rate_reference','label':'declared\x20incumbent\x20take-rate\x20reference'}],FUND_SPEED_KEYS=['settle_hours','auto_confirm_hours'],SELF_PLATFORM_NOTE='supported\x20—\x20set\x20platform_commission_bps\x20and\x20attach\x20a\x20dedicated\x20platform\x20Entity;\x20the\x20cap\x20(when\x20declared)\x20bounds\x20the\x20take';function bpsToPercent(a){const b=a/0x64;return(Number['isInteger'](b)?b:b['toFixed'](0x2))+'%';}function projectFundSpeed(a,b){const c=FUND_SPEED_KEYS['find'](e=>a['fee_params'][e]!==undefined);if(c===undefined)return null;const d=b['find'](e=>e['key']===c);return{'key':c,'value':a['fee_params'][c],'landing_line':d?.['landing_line']??'declared\x20in\x20fee_params\x20(no\x20landing\x20probe\x20row)','evidence':[{'source':'fee_params','detail':c+'\x20=\x20'+String(a['fee_params'][c])},...d?[{'source':'param_plane','detail':'status='+d['status']+',\x20landing='+d['landing_line']}]:[]]};}function projectVsTraditional(a){const b=[];for(const {key:c,dimension:d,label:e}of COMPARE_KEYS){const f=a['fee_params'][c];if(f===undefined||typeof f!=='number')continue;const g=a['fee_params']['platform_rate_cap_bps'],h=typeof g==='number'&&c==='platform_commission_bps'?'\x20(declared\x20cap\x20'+bpsToPercent(g)+')':'';b['push']({'dimension':d,'wowok':bpsToPercent(f)+'\x20'+e+h,'traditional':null,'wowok_evidence':[c,...typeof g==='number'&&c==='platform_commission_bps'?['platform_rate_cap_bps']:[]]});}return b;}export function productCard(a){const b=getBuiltinTemplate(a);if(!b)throw new Error('template\x20\x27'+a+'\x27\x20is\x20not\x20in\x20the\x20builtin\x20catalog\x20'+('(available:\x20'+listBuiltinTemplates()['map'](e=>e['id'])['join'](',\x20')+')'));const c=paramPlane(b),d=b['machine_shape']['map'](e=>{const f=e['semantic_role']??e['role'];return e['name']+'\x20—\x20'+f;});return{'alignment':{'template_id':b['id'],'industry':b['industry'],'variant':b['variant'],'product_ref':b['product_ref'],'archetype':b['archetype'],'phase':b['phase'],'one_liner':b['product_ref']+'-modeled\x20'+b['variant']+'\x20archetype\x20for\x20'+b['industry']+':\x20'+(b['trust_mechanisms']['length']+'\x20declared\x20trust\x20mechanisms,\x20'+b['guards']['length']+'\x20guard\x20refs,\x20')+(b['machine_shape']['length']+'\x20machine\x20nodes,\x20'+c['filter'](e=>e['editable'])['length']+'/'+c['length']+'\x20params\x20editable.'),'evidence':[{'source':'product_ref','detail':b['product_ref']},{'source':'trust_mechanisms','detail':b['trust_mechanisms']['length']+'\x20entries'},{'source':'guards','detail':b['guards']['length']+'\x20refs'},{'source':'machine_shape','detail':b['machine_shape']['length']+'\x20nodes'}]},'features':{'flow':d,'fund_speed':projectFundSpeed(b,c),'model':[...b['trust_mechanisms']],'vs_traditional':projectVsTraditional(b)},'cost':{'platform_fee':{'bps':typeof b['fee_params']['platform_commission_bps']==='number'?b['fee_params']['platform_commission_bps']:0x0,'cap_bps':typeof b['fee_params']['platform_rate_cap_bps']==='number'?b['fee_params']['platform_rate_cap_bps']:null,'self_platform':SELF_PLATFORM_NOTE,'evidence':[{'source':'fee_params','detail':'platform_commission_bps\x20=\x20'+String(b['fee_params']['platform_commission_bps']??0x0)},...typeof b['fee_params']['platform_rate_cap_bps']==='number'?[{'source':'fee_params','detail':'platform_rate_cap_bps\x20=\x20'+String(b['fee_params']['platform_rate_cap_bps'])}]:[]]},'gas_objects_estimate':{'value':b['machine_shape']['length']+b['guards']['length'],'basis':'template\x20shape\x20(machine\x20nodes\x20+\x20guard\x20refs),\x20pre-compile\x20—\x20the\x20compiled\x20object\x20count\x20is\x20the\x20MID\x20stage\x27s\x20compose_probe\x20verdict'},'compensation_fund':{'policy':b['compensation_fund_policy']==='forbidden'?'forbidden':'allowed','note':b['compensation_fund_policy']==='forbidden'?'DO-NOT-FUND\x20ruling\x20on\x20this\x20template\x27s\x20key_risk\x20—\x20the\x20build\x20guide\x20emits\x20neither\x20the\x20topup\x20step\x20nor\x20the\x20fund-sizing\x20check':'sized\x20at\x20deploy\x20time\x20against\x20the\x20key_risk\x20—\x20never\x20a\x20fixed\x20formula'},'keeper_dependencies':[...b['keeper_dependencies']]},'params':{'total':c['length'],'editable':c['filter'](e=>e['editable'])['length'],'live':c['filter'](e=>e['status']==='live')['length'],'groups':((()=>{const e=new Map();for(const f of c){const g=e['get'](f['group'])??{'tier':f['tier'],'count':0x0};e['set'](f['group'],{'tier':Math['min'](g['tier'],f['tier']),'count':g['count']+0x1});}return[...e['entries']()]['map'](([h,{tier:i,count:j}])=>({'group':h,'tier':i,'count':j}))['sort']((h,i)=>h['tier']-i['tier']||h['group']['localeCompare'](i['group']));})()),'full_rows_via':'industry_pack_operation\x20action=\x27get\x27\x20layer=\x27params\x27\x20template=\x27<id>\x27'},'risks':{'key_risk':b['key_risk'],'differences':[...b['differences']],'user_inputs':[...b['user_inputs']],'capability_risks':[],'capability_risks_note':'union\x20with\x20Lattice\x20Capability.risks\x20lands\x20with\x20the\x20Binding\x20Table\x20(M2+)\x20—\x20this\x20card\x20projects\x20the\x20template\x27s\x20own\x20declared\x20risks\x20only'},'templates_version':BUILTIN_TEMPLATES_VERSION};}export function productCards(a){const b=listBuiltinTemplates(),c=a?b['filter'](d=>d['industry']===a):b;return c['map'](d=>{const e=paramPlane(d);return{'template_id':d['id'],'industry':d['industry'],'product_ref':d['product_ref'],'archetype':d['archetype'],'one_liner':d['product_ref']+'-modeled\x20'+d['variant']+'\x20archetype\x20for\x20'+d['industry']+':\x20'+(d['trust_mechanisms']['length']+'\x20trust\x20mechanisms,\x20'+e['filter'](
|
|
1
|
+
import{listBuiltinTemplates,getBuiltinTemplate,BUILTIN_TEMPLATES_VERSION}from'../knowledge/builtin-templates.js';import{paramPlane}from'./param-disclosure.js';import{summarizeRuleDeclarations}from'../knowledge/rule-declarations.js';const COMPARE_KEYS=[{'key':'platform_commission_bps','dimension':'platform_take_rate','label':'platform\x20commission'},{'key':'merchant_service_fee_bps','dimension':'merchant_service_fee','label':'merchant\x20service\x20fee'},{'key':'incumbent_take_bps','dimension':'incumbent_take_rate_reference','label':'declared\x20incumbent\x20take-rate\x20reference'}],FUND_SPEED_KEYS=['settle_hours','auto_confirm_hours'],SELF_PLATFORM_NOTE='supported\x20—\x20set\x20platform_commission_bps\x20and\x20attach\x20a\x20dedicated\x20platform\x20Entity;\x20the\x20cap\x20(when\x20declared)\x20bounds\x20the\x20take';function bpsToPercent(a){const b=a/0x64;return(Number['isInteger'](b)?b:b['toFixed'](0x2))+'%';}function projectFundSpeed(a,b){const c=FUND_SPEED_KEYS['find'](e=>a['fee_params'][e]!==undefined);if(c===undefined)return null;const d=b['find'](e=>e['key']===c);return{'key':c,'value':a['fee_params'][c],'landing_line':d?.['landing_line']??'declared\x20in\x20fee_params\x20(no\x20landing\x20probe\x20row)','evidence':[{'source':'fee_params','detail':c+'\x20=\x20'+String(a['fee_params'][c])},...d?[{'source':'param_plane','detail':'status='+d['status']+',\x20landing='+d['landing_line']}]:[]]};}function projectVsTraditional(a){const b=[];for(const {key:c,dimension:d,label:e}of COMPARE_KEYS){const f=a['fee_params'][c];if(f===undefined||typeof f!=='number')continue;const g=a['fee_params']['platform_rate_cap_bps'],h=typeof g==='number'&&c==='platform_commission_bps'?'\x20(declared\x20cap\x20'+bpsToPercent(g)+')':'';b['push']({'dimension':d,'wowok':bpsToPercent(f)+'\x20'+e+h,'traditional':null,'wowok_evidence':[c,...typeof g==='number'&&c==='platform_commission_bps'?['platform_rate_cap_bps']:[]]});}return b;}export function productCard(a){const b=getBuiltinTemplate(a);if(!b)throw new Error('template\x20\x27'+a+'\x27\x20is\x20not\x20in\x20the\x20builtin\x20catalog\x20'+('(available:\x20'+listBuiltinTemplates()['map'](e=>e['id'])['join'](',\x20')+')'));const c=paramPlane(b),d=b['machine_shape']['map'](e=>{const f=e['semantic_role']??e['role'];return e['name']+'\x20—\x20'+f;});return{'alignment':{'template_id':b['id'],'industry':b['industry'],'variant':b['variant'],'product_ref':b['product_ref'],'archetype':b['archetype'],'phase':b['phase'],'one_liner':b['product_ref']+'-modeled\x20'+b['variant']+'\x20archetype\x20for\x20'+b['industry']+':\x20'+(b['trust_mechanisms']['length']+'\x20declared\x20trust\x20mechanisms,\x20'+b['guards']['length']+'\x20guard\x20refs,\x20')+(b['machine_shape']['length']+'\x20machine\x20nodes,\x20'+c['filter'](e=>e['editable'])['length']+'/'+c['length']+'\x20params\x20editable.'),'evidence':[{'source':'product_ref','detail':b['product_ref']},{'source':'trust_mechanisms','detail':b['trust_mechanisms']['length']+'\x20entries'},{'source':'guards','detail':b['guards']['length']+'\x20refs'},{'source':'machine_shape','detail':b['machine_shape']['length']+'\x20nodes'}]},'features':{'flow':d,'fund_speed':projectFundSpeed(b,c),'model':[...b['trust_mechanisms']],'vs_traditional':projectVsTraditional(b)},'cost':{'platform_fee':{'bps':typeof b['fee_params']['platform_commission_bps']==='number'?b['fee_params']['platform_commission_bps']:0x0,'cap_bps':typeof b['fee_params']['platform_rate_cap_bps']==='number'?b['fee_params']['platform_rate_cap_bps']:null,'self_platform':SELF_PLATFORM_NOTE,'evidence':[{'source':'fee_params','detail':'platform_commission_bps\x20=\x20'+String(b['fee_params']['platform_commission_bps']??0x0)},...typeof b['fee_params']['platform_rate_cap_bps']==='number'?[{'source':'fee_params','detail':'platform_rate_cap_bps\x20=\x20'+String(b['fee_params']['platform_rate_cap_bps'])}]:[]]},'gas_objects_estimate':{'value':b['machine_shape']['length']+b['guards']['length'],'basis':'template\x20shape\x20(machine\x20nodes\x20+\x20guard\x20refs),\x20pre-compile\x20—\x20the\x20compiled\x20object\x20count\x20is\x20the\x20MID\x20stage\x27s\x20compose_probe\x20verdict'},'compensation_fund':{'policy':b['compensation_fund_policy']==='forbidden'?'forbidden':'allowed','note':b['compensation_fund_policy']==='forbidden'?'DO-NOT-FUND\x20ruling\x20on\x20this\x20template\x27s\x20key_risk\x20—\x20the\x20build\x20guide\x20emits\x20neither\x20the\x20topup\x20step\x20nor\x20the\x20fund-sizing\x20check':'sized\x20at\x20deploy\x20time\x20against\x20the\x20key_risk\x20—\x20never\x20a\x20fixed\x20formula'},'keeper_dependencies':[...b['keeper_dependencies']]},'params':{'total':c['length'],'editable':c['filter'](e=>e['editable'])['length'],'live':c['filter'](e=>e['status']==='live')['length'],'groups':((()=>{const e=new Map();for(const f of c){const g=e['get'](f['group'])??{'tier':f['tier'],'count':0x0};e['set'](f['group'],{'tier':Math['min'](g['tier'],f['tier']),'count':g['count']+0x1});}return[...e['entries']()]['map'](([h,{tier:i,count:j}])=>({'group':h,'tier':i,'count':j}))['sort']((h,i)=>h['tier']-i['tier']||h['group']['localeCompare'](i['group']));})()),'full_rows_via':'industry_pack_operation\x20action=\x27get\x27\x20layer=\x27params\x27\x20template=\x27<id>\x27'},'declarations':{...summarizeRuleDeclarations(b),'full_rows_via':'industry_pack_operation\x20action=\x27get\x27\x20layer=\x27params\x27\x20template=\x27<id>\x27'},'risks':{'key_risk':b['key_risk'],'differences':[...b['differences']],'user_inputs':[...b['user_inputs']],'capability_risks':[],'capability_risks_note':'union\x20with\x20Lattice\x20Capability.risks\x20lands\x20with\x20the\x20Binding\x20Table\x20(M2+)\x20—\x20this\x20card\x20projects\x20the\x20template\x27s\x20own\x20declared\x20risks\x20only'},'templates_version':BUILTIN_TEMPLATES_VERSION};}export function productCards(a){const b=listBuiltinTemplates(),c=a?b['filter'](d=>d['industry']===a):b;return c['map'](d=>{const e=paramPlane(d),f=summarizeRuleDeclarations(d);return{'template_id':d['id'],'industry':d['industry'],'product_ref':d['product_ref'],'archetype':d['archetype'],'one_liner':d['product_ref']+'-modeled\x20'+d['variant']+'\x20archetype\x20for\x20'+d['industry']+':\x20'+(d['trust_mechanisms']['length']+'\x20trust\x20mechanisms,\x20'+e['filter'](g=>g['editable'])['length']+'/'+e['length']+'\x20params\x20editable.'),'cost_headline':{'platform_fee_bps':typeof d['fee_params']['platform_commission_bps']==='number'?d['fee_params']['platform_commission_bps']:0x0,'gas_objects_estimate':d['machine_shape']['length']+d['guards']['length'],'compensation_fund':d['compensation_fund_policy']==='forbidden'?'forbidden':'allowed'},'params':{'total':e['length'],'editable':e['filter'](g=>g['editable'])['length']},'rule_declarations':{'total':f['supply']['total']+f['labor']['total']+f['incentive']['total']+f['ops_kpis']['total'],'unexpressible':f['supply']['unexpressible']+f['labor']['unexpressible']+f['incentive']['unexpressible']+f['ops_kpis']['unexpressible']},'templates_version':BUILTIN_TEMPLATES_VERSION};});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const MAX_MACHINE_NODES=0x64;export const MAX_NODE_INBOUND_PAIRS=0x28;const MAX_GUARD_IDENTIFIER=0xdc,MAX_MULTI_OPERANDS=0x8;function effectiveCount(a,b,c){const d=c[a]??b['fee_params']?.[a],e=typeof d==='number'?d:typeof d==='string'&&d['trim']()!==''?Number(d):NaN;if(!Number['isInteger'](e)||e<0x1)return undefined;return e;}const TOKEN_RE=/\{([a-z0-9_]+)\.(last|first|\d+)\}/g;function expandFromAll(a){const b=/^\{([a-z0-9_]+)\.all\}$/['exec'](a);return b?.[0x1];}function resolveRefs(a,b){let c;const d=a['replace'](TOKEN_RE,(e,f,g)=>{const h=b['get'](f);if(h===undefined||h['length']===0x0)return c=f,e;if(g==='last')return h[h['length']-0x1];if(g==='first')return h[0x0];const i=Number(g);if(i<0x1||i>h['length'])return c=f,e;return h[i-0x1];});return c!==undefined?undefined:d;}export function expandShapeSegments(a){const {template:b,shape:c,inputs:d}=a,f=c['filter'](o=>o['segment']!==undefined);if(f['length']===0x0)return{'shape':c,'resolutions':{},'blockers':[],'notes':[]};const g=[],h=[],i=new Map(),j=new Map();for(const o of f){const p=o['segment'];if(i['has'](p['id'])){g['push']({'code':'SEGMENT_DECLARATION_INVALID','detail':'machine_shape\x20declares\x20segment\x20\x27'+p['id']+'\x27\x20twice\x20—\x20a\x20segment\x20id\x20must\x20name\x20ONE\x20prototype\x20node'});continue;}if(!o['name']['includes']('{i}')){g['push']({'code':'SEGMENT_DECLARATION_INVALID','detail':'segment\x20prototype\x20\x27'+p['id']+'\x27\x20has\x20name\x20\x27'+o['name']+'\x27\x20but\x20its\x20name\x20carries\x20no\x20\x22{i}\x22\x20placeholder\x20—\x20the\x20expander\x20cannot\x20build\x20the\x20instance\x20names'});continue;}const q=effectiveCount(p['count_from'],b,d);if(q===undefined){g['push']({'code':'SEGMENT_DECLARATION_INVALID','detail':'segment\x20\x27'+p['id']+'\x27\x20declares\x20count_from\x20\x27'+p['count_from']+'\x27,\x20which\x20resolves\x20to\x20no\x20positive\x20integer\x20'+'(fee_params/inputs).\x20A\x20segment\x20must\x20declare\x20a\x20real\x20count\x20—\x20this\x20is\x20the\x20parameter\x20turn\x20the\x20old\x20'+'authoring-time\x20promise\x20never\x20implemented\x20(yfd\x20D-01)'});continue;}i['set'](p['id'],Array['from']({'length':q},(r,s)=>o['name']['replace'](/\{i\}/g,String(s+0x1)))),j['set'](p['count_from'],q);}if(g['some'](r=>r['code']==='SEGMENT_DECLARATION_INVALID'))return{'shape':c,'resolutions':{},'blockers':g,'notes':h};const l=[];for(const r of c){if(r['segment']===undefined){l['push'](r);continue;}const s=i['get'](r['segment']['id']);for(let u=0x0;u<s['length'];u+=0x1){const v={...r,'name':s[u],'role':r['role']};delete v['segment'];if(u>0x0)v['from']=[s[u-0x1]];l['push'](v);}const t=r['segment'];h['push']('SEGMENT\x20\x27'+t['id']+'\x27\x20expanded\x20to\x20'+s['length']+'\x20node(s)\x20from\x20\x27'+t['count_from']+'\x27\x20(build-time\x20segment:\x20'+(s[0x0]+'..'+s[s['length']-0x1]+',\x20chain\x20edges\x20generated;\x20machine\x20node-count\x20and\x20inbound-pair\x20caps\x20enforced)'));}const m=new Set(l['map'](w=>w['name']));for(const w of l){if(w['from']===undefined)continue;const x=[];for(const y of w['from']){const z=typeof y==='string',A=z?y:y['prev'],B=z?expandFromAll(A):undefined;if(B!==undefined){const D=i['get'](B);if(D===undefined){g['push']({'code':'SEGMENT_REF_UNKNOWN','detail':'node\x20\x27'+w['name']+'\x27\x20edge\x20\x27{'+B+'.all}\x27\x20names\x20no\x20declared\x20segment'});continue;}for(const E of D)x['push'](E);continue;}const C=resolveRefs(A,i);if(C===undefined){g['push']({'code':'SEGMENT_REF_UNKNOWN','detail':'node\x20\x27'+w['name']+'\x27\x20edge\x20\x27'+A+'\x27\x20carries\x20an\x20unresolvable\x20segment\x20token\x20—\x20use\x20'+'\x22{<segment>.last}\x22,\x20\x22{<segment>.first}\x22,\x20\x22{<segment>.<n>}\x22\x20or\x20the\x20whole\x20element\x20\x22{<segment>.all}\x22'});continue;}if(z)x['push'](C);else x['push']({...y,'prev':C});}w['from']=x;}l['length']>MAX_MACHINE_NODES&&g['push']({'code':'SEGMENT_NODE_CAP_EXCEEDED','detail':'the\x20expanded\x20machine\x20carries\x20'+l['length']+'\x20nodes;\x20the\x20chain\x27s\x20machine\x20node-count\x20cap\x20(MAX_NODE_COUNT)\x20is\x20'+MAX_MACHINE_NODES+'.\x20'+'Reduce\x20the\x20segment\x20count\x20or\x20split\x20the\x20delivery\x20into\x20multiple\x20Machines'});for(const F of l){if(F['from']===undefined)continue;const G=new Set(F['from']['map'](H=>typeof H==='string'?H:H['prev']));G['size']>MAX_NODE_INBOUND_PAIRS&&g['push']({'code':'MACHINE_PAIR_CAP_EXCEEDED','detail':'node\x20\x27'+F['name']+'\x27\x20carries\x20'+G['size']+'\x20inbound\x20edges;\x20the\x20chain\x27s\x20per-node\x20inbound-pair\x20cap\x20(MAX_NODE_PAIR_COUNT)\x20is\x20'+(MAX_NODE_INBOUND_PAIRS+'\x20pairs\x20per\x20node\x20—\x20the\x20chain\x20ABORTS\x20the\x20machine\x20create.\x20A\x20long\x20segment\x27s\x20')+'refund\x20fan-in\x20is\x20the\x20usual\x20cause:\x20route\x20the\x20refund\x20through\x20the\x20terminal\x20sweep\x20instead\x20of\x20one\x20edge\x20'+'per\x20segment\x20instance'});for(const H of F['from']){const I=typeof H==='string'?H:H['prev'];I!==''&&!m['has'](I)&&g['push']({'code':'SEGMENT_REF_UNKNOWN','detail':'node\x20\x27'+F['name']+'\x27\x20edge\x20prev\x20\x27'+I+'\x27\x20is\x20not\x20a\x20machine_shape\x20node\x20after\x20expansion'});}}const n=buildSegmentRails(b,i,g,h);return checkRepeatAmountFloor(b,j,g),{'shape':l,'resolutions':n,'blockers':g,'notes':h};}function progressCurrent(){return{'type':'query','query':'progress.current','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]};}function equal(a,b){return{'type':'logic_equal','nodes':[a,b]};}function orTree(a){if(a['length']===0x1)return a[0x0];if(a['length']<=MAX_MULTI_OPERANDS)return{'type':'logic_or','nodes':a};const b=[];for(let c=0x0;c<a['length'];c+=MAX_MULTI_OPERANDS){const d=a['slice'](c,c+MAX_MULTI_OPERANDS);b['push'](d['length']===0x1?d[0x0]:{'type':'logic_or','nodes':d});}return orTree(b);}function segmentRailBody(a,b,c){const d=a['length']+0x1,e=a['length']+0x2,f=[{'identifier':0x0,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'order_id\x20(the\x20submitted\x20Order;\x20alloc-time\x20binding)'},...a['map']((l,m)=>({'identifier':m+0x1,'b_submission':![],'value_type':'String','value':l,'name':'qualifying\x20node\x20'+(m+0x1)})),...c==='buyer_or_keeper'?[{'identifier':d,'b_submission':![],'value_type':'Address','value':{'$ref':'service'},'name':'service\x20(circular\x20ref\x20by\x20name;\x20the\x20submitted\x20Permission\x20must\x20equal\x20service.permission)'},{'identifier':e,'b_submission':!![],'value_type':'Address','object_type':'Permission','name':'Permission\x20object\x20submitted\x20by\x20the\x20firing\x20caller\x20(merchant-or-keeper\x20side)'}]:[],{'identifier':0xff,'b_submission':!![],'value_type':'U64','name':'ONCE\x20key\x20(255):\x20the\x20submitted\x20progress.history\x20count'}],g=orTree(a['map']((l,m)=>equal(progressCurrent(),{'type':'identifier','identifier':m+0x1}))),h=equal({'type':'identifier','identifier':0xff},{'type':'query','query':'progress.history\x20count','object':{'identifier':0x0,'convert_witness':'OrderProgress'},'parameters':[]}),i=orTree([equal({'type':'query','query':'order.owner','object':{'identifier':0x0},'parameters':[]},{'type':'context','context':'Signer'}),{'type':'query','query':'order.agent\x20has','object':{'identifier':0x0},'parameters':[{'type':'context','context':'Signer'}]}]),j=c==='buyer_or_keeper'?{'type':'logic_and','nodes':[equal({'type':'query','query':'service.permission','object':{'identifier':d},'parameters':[]},{'type':'identifier','identifier':e}),orTree([equal({'type':'query','query':'permission.owner','object':{'identifier':e},'parameters':[]},{'type':'context','context':'Signer'}),{'type':'query','query':'permission.admin\x20has','object':{'identifier':e},'parameters':[{'type':'context','context':'Signer'}]}])]}:undefined,k=j===undefined?i:orTree([i,j]);return{'kind':'inline','description':'Segment\x20rail\x20guard\x20\x27'+b+'\x27\x20generated\x20at\x20build\x20time:\x20qualifying\x20node\x20set\x20{'+a['join'](',\x20')+'}\x20'+('('+a['length']+'\x20node(s)\x20—\x20every\x20shipped\x20segment\x20instance\x20plus\x20the\x20declared\x20safety-net\x20states)\x20AND\x20the\x20')+'per-fire\x20identifier-255\x20once\x20key\x20(the\x20submitted\x20progress.history\x20count\x20—\x20a\x20replay\x20at\x20the\x20same\x20node\x20aborts\x20'+('16)\x20AND\x20the\x20caller-authorization\x20leg\x20('+(c==='buyer'?'buyer\x20order-holder\x20or\x20its\x20registered\x20agent\x20only\x20—\x20the\x20counterparty\x20can\x20never\x20self-claim':'buyer\x20side\x20OR\x20the\x20merchant-or-keeper\x20dynamic\x20permission\x20(service.permission\x20==\x20the\x20submitted\x20Permission,\x20signer\x20owns/administers\x20it)')+').\x20Generated\x20by\x20the\x20kernel\x27s\x20segment\x20expander\x20because\x20a\x20fixed-slot\x20tpl_*\x20body\x20cannot\x20follow\x20an\x20arbitrary\x20count.'),'table':f,'root':{'type':'logic_and','nodes':[g,h,k]}};}function buildSegmentRails(a,b,c,d){const e={};return(a['guards']??[])['forEach']((f,g)=>{const h=f['node_set_segments'],j=f['node_set_nodes'];if(h===undefined&&j===undefined)return;const k=f['key']??f['template_id']+'#'+g,l=[];for(const q of h??[]){const r=b['get'](q);if(r===undefined){c['push']({'code':'SEGMENT_REF_UNKNOWN','detail':'guard\x20\x27'+k+'\x27\x20node_set_segments\x20names\x20\x27'+q+'\x27,\x20which\x20is\x20no\x20declared\x20machine_shape\x20segment'});return;}for(const s of r)if(!l['includes'](s))l['push'](s);}for(const t of j??[])if(!l['includes'](t))l['push'](t);if(l['length']===0x0)return;const m=f['params']??{},o=m['node_set_caller']==='buyer_or_keeper'?'buyer_or_keeper':'buyer',p=l['length']+0x1+(o==='buyer_or_keeper'?0x2:0x0);if(p>MAX_GUARD_IDENTIFIER){c['push']({'code':'SEGMENT_GUARD_SLOTS_EXCEEDED','detail':'guard\x20\x27'+k+'\x27\x20needs\x20'+p+'\x20table\x20identifiers;\x20the\x20chain\x27s\x20guard-table\x20cap\x20(MAX_USER_IDENTIFIER)\x20is\x20'+(MAX_GUARD_IDENTIFIER+'.\x20Reduce\x20the\x20segment\x20count\x20or\x20split\x20the\x20rail\x20per\x20delivery\x20block')});return;}e[k]=segmentRailBody(l,k,o),d['push']('guard\x20\x27'+k+'\x27\x20rendered\x20at\x20build\x20time\x20over\x20'+l['length']+'\x20qualifying\x20node(s)\x20'+('(nested\x20logic_or,\x20'+MAX_MULTI_OPERANDS+'-child\x20cap\x20respected)'));}),e;}function checkRepeatAmountFloor(a,b,c){const d=a['allocator']?.['rows']??[],e=a['fee_params']??{},f=Number(e['min_term_price']),g=Number(e['max_discount_bps']??0x0);if(!Number['isFinite'](f)||f<=0x0)return;const h=f*(0x1-(Number['isFinite'](g)?g:0x0)/0x2710);for(const i of d){const j=typeof i['repeat_from']==='string'?i['repeat_from']:undefined;if(j===undefined)continue;const k=b['get'](j);if(k===undefined)continue;const l=typeof i['value_from']==='string'?i['value_from']:undefined,m=l!==undefined?e[l]:i['value'],n=Number(m);if(!Number['isFinite'](n)||n<=0x0)continue;const o=k*n;o>h&&c['push']({'code':'SEGMENT_COUNT_PRICE_FLOOR_BREACH','detail':'the\x20settlement\x20rail\x20repeats\x20'+k+'\x20time(s)\x20x\x20'+n+'\x20=\x20'+o+',\x20above\x20the\x20declared\x20price\x20floor\x20'+(h+'\x20(min_term_price\x20x\x20(1\x20-\x20max_discount_bps/10000)).\x20alloc()\x20asserts\x20balance\x20>=\x20fix\x20at\x20EVERY\x20')+'release,\x20so\x20the\x20tail\x20instance\x20aborts\x20EINSUFFICIENT_BALANCE\x20and\x20the\x20escrow\x20cannot\x20fully\x20leave\x20'+('(crs9-mn-261015\x20F-34).\x20Raise\x20term_price\x20above\x20'+o+',\x20or\x20lower\x20the\x20per-instance\x20Amount')});}}
|
package/dist/config/judgment.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync,readFileSync,readdirSync,statSync,writeFileSync,renameSync,mkdirSync,copyFileSync}from'node:fs';import{fileURLToPath}from'node:url';import{dirname,join}from'node:path';import{z}from'zod';import{getWowMcpDir}from'@wowok/wowok';import{SEVERITY_ORDER}from'./severity.js';import{judgmentDocWarnings}from'./config-warnings.js';import{RuleDomainPackSchema,RuleDomainPackInputSchema}from'./rule-engine.js';import{parseFactRef}from'./exposure.js';import{ACTOR_ROLES}from'../role/types.js';export const EXPECTED_JUDGMENT_VERSION=0x1;export const JUDGMENT_SECTION_NAMES=['evaluation','game','match','monitor','mode','scorecard','rules','role_intent'];const SeverityKeySchema=z['enum'](SEVERITY_ORDER);export const DimensionStandardSchema=z['object']({'label':z['string'](),'description':z['string']()})['strict']();const LevelBandSchema=z['object']({'min':z['number'](),'level':z['string']()})['strict'](),GradeWordBandSchema=z['object']({'min':z['number'](),'word':z['string']()})['strict']();export const EvaluationSectionSchema=z['object']({'comment':z['string']()['optional'](),'weights':z['record'](z['string'](),z['number']()),'dimensions':z['record'](z['string'](),DimensionStandardSchema),'severity_deduction':z['record'](SeverityKeySchema,z['number']()),'level_bands':z['array'](LevelBandSchema),'grade_words':z['object']({'comment':z['string']()['optional'](),'trust':z['array'](GradeWordBandSchema),'risk':z['array'](GradeWordBandSchema),'match':z['array'](GradeWordBandSchema)['optional']()})['strict']()})['strict']();export const EvaluationSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'weights':z['record'](z['string'](),z['number']())['optional'](),'dimensions':z['record'](z['string'](),DimensionStandardSchema)['optional'](),'severity_deduction':z['record'](z['string'](),z['number']())['optional'](),'level_bands':z['array'](LevelBandSchema)['optional'](),'grade_words':z['object']({'comment':z['string']()['optional'](),'trust':z['array'](GradeWordBandSchema)['optional'](),'risk':z['array'](GradeWordBandSchema)['optional'](),'match':z['array'](GradeWordBandSchema)['optional']()})['strict']()['optional']()})['strict']();const RoleInterestSchema=z['object']({'prefer':z['array'](z['string']()),'avoid':z['array'](z['string']()),'sensitivity':z['number']()})['strict'](),KeywordRuleSchema=z['object']({'id':z['string'](),'keywords':z['array'](z['string']())['min'](0x1),'effect':z['string'](),'anchor':z['enum'](['prefer','avoid']),'when_forbidden':z['boolean']()})['strict']();export const ArbGameSectionSchema=z['object']({'comment':z['string']()['optional'](),'effect_semantics':z['record'](z['string'](),z['array'](z['string']())),'role_interests':z['record'](z['string'](),RoleInterestSchema),'keyword_rules':z['array'](KeywordRuleSchema),'forbid_pattern':z['string'](),'scoring':z['object']({'base':z['number'](),'per_gain':z['number'](),'per_risk':z['number']()})['strict']()})['strict']();export const ArbGameSectionInputSchema=ArbGameSectionSchema['partial']();export const GameSectionSchema=z['object']({'comment':z['string']()['optional'](),'outcome_semantics':z['record'](z['string'](),z['array'](z['string']())),'role_interests':z['record'](z['string'](),RoleInterestSchema),'appetite_multipliers':z['object']({'conservative':z['number'](),'balanced':z['number'](),'aggressive':z['number']()})['strict'](),'scoring':z['object']({'base':z['number'](),'per_gain':z['number'](),'per_risk':z['number']()})['strict'](),'keyword_rules':z['array'](KeywordRuleSchema),'forbid_pattern':z['string'](),'arb':ArbGameSectionSchema})['strict']();export const GameSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'outcome_semantics':z['record'](z['string'](),z['array'](z['string']()))['optional'](),'role_interests':z['record'](z['string'](),RoleInterestSchema)['optional'](),'appetite_multipliers':z['object']({'conservative':z['number']()['optional'](),'balanced':z['number']()['optional'](),'aggressive':z['number']()['optional']()})['strict']()['optional'](),'scoring':z['object']({'base':z['number']()['optional'](),'per_gain':z['number']()['optional'](),'per_risk':z['number']()['optional']()})['strict']()['optional'](),'keyword_rules':z['array'](KeywordRuleSchema)['optional'](),'forbid_pattern':z['string']()['optional'](),'arb':ArbGameSectionInputSchema['optional']()})['strict']();const MatchBandSchema=z['object']({'min':z['number'](),'score':z['number']()})['strict']();export const MatchSectionSchema=z['object']({'comment':z['string']()['optional'](),'region_scores':z['object']({'exact':z['number'](),'contains':z['number'](),'compatible':z['number'](),'overlap':z['number'](),'mismatch':z['number']()})['strict'](),'weights':z['object']({'region':z['number'](),'industry':z['number'](),'price':z['number'](),'trust':z['number'](),'capabilities':z['number'](),'buyable':z['number'](),'reward_commitment':z['number'](),'tags':z['number'](),'acceptance':z['number']()})['strict'](),'trust_bands':z['array'](MatchBandSchema),'neutral_score':z['number'](),'price_over_budget_tolerance_pct':z['number'](),'top_n':z['number']()['int']()})['strict']();export const MatchSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'region_scores':z['object']({'exact':z['number']()['optional'](),'contains':z['number']()['optional'](),'compatible':z['number']()['optional'](),'overlap':z['number']()['optional'](),'mismatch':z['number']()['optional']()})['strict']()['optional'](),'weights':z['object']({'region':z['number']()['optional'](),'industry':z['number']()['optional'](),'price':z['number']()['optional'](),'trust':z['number']()['optional'](),'capabilities':z['number']()['optional'](),'buyable':z['number']()['optional'](),'reward_commitment':z['number']()['optional'](),'tags':z['number']()['optional'](),'acceptance':z['number']()['optional']()})['strict']()['optional'](),'trust_bands':z['array'](MatchBandSchema)['optional'](),'neutral_score':z['number']()['optional'](),'price_over_budget_tolerance_pct':z['number']()['optional'](),'top_n':z['number']()['int']()['optional']()})['strict']();const MonitorThresholdsFullSchema=z['object']({'progress_stall_hours':z['number'](),'compensation_drop_ratio':z['number'](),'compensation_coverage_min':z['number'](),'messenger_timeout_hours':z['number'](),'review_window_closing_days':z['number'](),'arb_window_closing_days':z['number']()})['strict'](),MonitorEscalationSchema=z['object']({'default_expected_progress_hours':z['number'](),'stall_expected_multiplier':z['number'](),'stall_escalation_multiplier':z['number'](),'messenger_escalation_multiplier':z['number'](),'ratio_critical_threshold':z['number']()})['strict']();export const MonitorSectionSchema=z['object']({'comment':z['string']()['optional'](),'thresholds':MonitorThresholdsFullSchema,'escalation':MonitorEscalationSchema})['strict']();export const MonitorSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'thresholds':z['object']({'progress_stall_hours':z['number']()['optional'](),'compensation_drop_ratio':z['number']()['optional'](),'compensation_coverage_min':z['number']()['optional'](),'messenger_timeout_hours':z['number']()['optional'](),'review_window_closing_days':z['number']()['optional'](),'arb_window_closing_days':z['number']()['optional']()})['strict']()['optional'](),'escalation':z['object']({'default_expected_progress_hours':z['number']()['optional'](),'stall_expected_multiplier':z['number']()['optional'](),'stall_escalation_multiplier':z['number']()['optional'](),'messenger_escalation_multiplier':z['number']()['optional'](),'ratio_critical_threshold':z['number']()['optional']()})['strict']()['optional']()})['strict']();const AppetitePostureSchema=z['object']({'max_risk':z['number'](),'min_benefit':z['number']()})['strict']();export const ModeSectionSchema=z['object']({'comment':z['string']()['optional'](),'appetite_thresholds':z['object']({'conservative':AppetitePostureSchema,'balanced':AppetitePostureSchema,'aggressive':AppetitePostureSchema})['strict']()})['strict']();export const ModeSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'appetite_thresholds':z['object']({'conservative':AppetitePostureSchema['optional'](),'balanced':AppetitePostureSchema['optional'](),'aggressive':AppetitePostureSchema['optional']()})['strict']()['optional']()})['strict']();const PostureWeightSchema=z['object']({'volume':z['number'](),'balanced':z['number'](),'margin':z['number']()})['strict'](),MetricTuneSchema=z['object']({'weight':PostureWeightSchema['optional'](),'good_threshold':z['number']()['optional'](),'bad_threshold':z['number']()['optional']()})['strict']();export const ScorecardSectionSchema=z['object']({'comment':z['string']()['optional'](),'metrics':z['record'](z['string'](),MetricTuneSchema),'shop_evidence_metrics':z['array'](z['string']())})['strict']();export const ScorecardSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'metrics':z['record'](z['string'](),MetricTuneSchema)['optional'](),'shop_evidence_metrics':z['array'](z['string']())['optional']()})['strict']();const RoleIntentEntrySchema=z['object']({'comment':z['string']()['optional'](),'intents':z['array'](z['object']({'id':z['string'](),'weight':z['number']()['min'](0x0)['max'](0x1)})['strict']())['min'](0x1),'horizon':z['number']()['int']()['positive']()['optional'](),'risk_appetite':z['enum'](['conservative','balanced','aggressive'])['optional'](),'red_lines':z['array'](z['string']())['optional'](),'strategy_leaning':z['enum'](['cooperative','opportunistic','confrontational'])['optional']()})['strict']();export const RoleIntentSectionSchema=z['object']({'comment':z['string']()['optional'](),'roles':z['record'](z['string'](),RoleIntentEntrySchema)})['strict']();export const RoleIntentSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'roles':z['record'](z['string'](),RoleIntentEntrySchema['partial']())['optional']()})['strict']();export const RulesSectionSchema=z['object']({'comment':z['string']()['optional'](),'domains':z['record'](z['string'](),RuleDomainPackSchema)})['strict']();export const RulesSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'domains':z['record'](z['string'](),RuleDomainPackInputSchema)['optional']()})['strict']();export const JudgmentDocSchema=z['object']({'version':z['number']()['int'](),'description':z['string']()['optional'](),'evaluation':EvaluationSectionSchema,'game':GameSectionSchema,'match':MatchSectionSchema,'monitor':MonitorSectionSchema,'mode':ModeSectionSchema,'scorecard':ScorecardSectionSchema,'rules':RulesSectionSchema,'role_intent':RoleIntentSectionSchema})['strict']();export const JudgmentDocInputSchema=z['object']({'version':z['number']()['int'](),'description':z['string']()['optional'](),'evaluation':EvaluationSectionInputSchema['optional'](),'game':GameSectionInputSchema['optional'](),'match':MatchSectionInputSchema['optional'](),'monitor':MonitorSectionInputSchema['optional'](),'mode':ModeSectionInputSchema['optional'](),'scorecard':ScorecardSectionInputSchema['optional'](),'rules':RulesSectionInputSchema['optional'](),'role_intent':RoleIntentSectionInputSchema['optional']()})['strict']();export const JudgmentFragmentSchema=JudgmentDocInputSchema['omit']({'version':!![]})['extend']({'version':z['number']()['int']()['optional']()});function isPlainObject(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a);}function entryId(a){if(isPlainObject(a)){if(typeof a['rule_id']==='string')return a['rule_id'];if(typeof a['id']==='string')return a['id'];}return null;}export function mergeJudgmentValues(a,b){if(Array['isArray'](a)&&Array['isArray'](b)){if(a['length']===0x0)return[...b];if(b['length']===0x0)return[...a];const c=[...a,...b]['every'](f=>entryId(f)!==null);if(!c)return[...b];const d=new Map();for(const f of a)d['set'](entryId(f),f);for(const g of b){const h=entryId(g),i=d['get'](h);d['set'](h,i===undefined?g:mergeJudgmentValues(i,g));}return[...d['values']()];}if(isPlainObject(a)&&isPlainObject(b)){const j={...a};for(const [l,m]of Object['entries'](b)){j[l]=mergeJudgmentValues(a[l],m);}return j;}return b===undefined?a:b;}const FACTORY_PATH=fileURLToPath(new URL('../knowledge/baselines/judgment-baselines.json',import.meta.url)),USER_DOC_NAME='judgment.json',LEGACY_USER_DOC_NAME='judgment-baselines.json';export function userJudgmentDocPath(){const a=process['env']['WOWOK_CONFIG_DIR']||getWowMcpDir();return join(a,USER_DOC_NAME);}function resolveUserDocPath(){const a=process['env']['WOWOK_CONFIG_DIR']||getWowMcpDir(),b=join(a,USER_DOC_NAME);if(existsSync(b))return b;const c=join(a,LEGACY_USER_DOC_NAME);return existsSync(c)?c:b;}function zodMessage(a){return a['issues']['slice'](0x0,0x5)['map'](b=>(b['path']['join']('.')||'(root)')+':\x20'+b['message'])['join'](';\x20');}function loadFactory(){let a;try{a=readFileSync(FACTORY_PATH,'utf-8');}catch{throw new Error('Judgment\x20baselines\x20document\x20not\x20found\x20(knowledge/baselines/judgment-baselines.json)\x20—\x20broken\x20installation.');}const b=JudgmentDocSchema['parse'](JSON['parse'](a));if(b['version']!==EXPECTED_JUDGMENT_VERSION)throw new Error('Factory\x20judgment\x20document\x20has\x20version\x20'+b['version']+',\x20expected\x20'+EXPECTED_JUDGMENT_VERSION+'\x20—\x20broken\x20installation.');return b;}const FACTORY=loadFactory(),RULE_PACKS_DIR=fileURLToPath(new URL('../knowledge/baselines/rules/',import.meta.url));function loadFactoryRulePacks(){let a=[];try{a=readdirSync(RULE_PACKS_DIR)['filter'](c=>c['endsWith']('.json'));}catch{return{};}const b={};for(const c of a){const d=c['replace'](/\.json$/,''),e=readFileSync(join(RULE_PACKS_DIR,c),'utf-8');b[d]=RuleDomainPackSchema['parse'](JSON['parse'](e));}return b;}const FACTORY_RULE_PACKS=loadFactoryRulePacks();export function factoryRulePack(a){return FACTORY_RULE_PACKS[a]??null;}function withFactoryRulePacks(a){const b=a['rules']??{'domains':{}},c=mergeJudgmentValues(FACTORY_RULE_PACKS,b['domains']??{});return{...a,'rules':{...b,'domains':c}};}function unknownRuleRef(a){for(const [b,c]of Object['entries'](a['rules']?.['domains']??{})){const d=FACTORY_RULE_PACKS[b];if(!d)return'rules.domains:\x20unknown\x20domain\x20\x27'+b+'\x27\x20(not\x20in\x20the\x20factory\x20rule\x20packs\x20—\x20check\x20for\x20a\x20typo)';const e=new Set(d['rules']['map'](f=>f['rule_id']));for(const f of c['rules']){if(!e['has'](f['rule_id']))return'rules.domains.'+b+':\x20unknown\x20rule\x20\x27'+f['rule_id']+'\x27\x20(users\x20may\x20tune\x20or\x20disable\x20factory\x20rules,\x20not\x20invent\x20them)';}}return null;}function unknownDimensionKey(a){for(const b of Object['keys'](a['evaluation']['weights'])){if(!(b in FACTORY['evaluation']['weights']))return'evaluation.weights:\x20unknown\x20dimension\x20\x27'+b+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}for(const c of Object['keys'](a['evaluation']['dimensions'])){if(!(c in FACTORY['evaluation']['dimensions']))return'evaluation.dimensions:\x20unknown\x20dimension\x20\x27'+c+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}return null;}function unknownGameRef(a){for(const d of Object['keys'](a['game']['role_interests'])){if(!(d in FACTORY['game']['role_interests']))return'game.role_interests:\x20unknown\x20role\x20\x27'+d+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}for(const f of Object['keys'](a['game']['outcome_semantics'])){if(!(f in FACTORY['game']['outcome_semantics']))return'game.outcome_semantics:\x20unknown\x20outcome\x20\x27'+f+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}const b=new Set(Object['values'](FACTORY['game']['outcome_semantics'])['flat']());for(const g of a['game']['keyword_rules']){if(!b['has'](g['effect']))return'game.keyword_rules.'+g['id']+':\x20unknown\x20effect\x20\x27'+g['effect']+'\x27\x20(must\x20be\x20an\x20effect\x20defined\x20in\x20game.outcome_semantics)';}const c=a['game']['arb'];if(c){const h=FACTORY['game']['arb'];for(const j of Object['keys'](c['role_interests'])){if(!(j in h['role_interests']))return'game.arb.role_interests:\x20unknown\x20perspective\x20\x27'+j+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}const i=new Set(Object['keys'](h['effect_semantics']));for(const k of c['keyword_rules']){if(!i['has'](k['effect']))return'game.arb.keyword_rules.'+k['id']+':\x20unknown\x20effect\x20\x27'+k['effect']+'\x27\x20(must\x20be\x20an\x20effect\x20defined\x20in\x20game.arb.effect_semantics)';}for(const [l,m]of Object['entries'](c['role_interests'])){for(const n of[...m['prefer'],...m['avoid']]){if(!i['has'](n))return'game.arb.role_interests.'+l+':\x20unknown\x20effect\x20\x27'+n+'\x27\x20(must\x20be\x20an\x20effect\x20defined\x20in\x20game.arb.effect_semantics)';}}}return null;}function unknownScorecardRef(a){for(const b of Object['keys'](a['scorecard']['metrics'])){if(!(b in FACTORY['scorecard']['metrics']))return'scorecard.metrics:\x20unknown\x20metric\x20\x27'+b+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}for(const c of a['scorecard']['shop_evidence_metrics']){if(!(c in FACTORY['scorecard']['metrics']))return'scorecard.shop_evidence_metrics:\x20unknown\x20metric\x20\x27'+c+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}return null;}function unknownRoleIntentRef(a){const b=new Set(ACTOR_ROLES),c=FACTORY['role_intent']?.['roles']??{};for(const [d,e]of Object['entries'](a['role_intent']?.['roles']??{})){if(!b['has'](d))return'role_intent.roles:\x20unknown\x20role\x20\x27'+d+'\x27\x20(must\x20be\x20an\x20ACTOR\x20role\x20—\x20neutral/system\x20hold\x20no\x20intent)';const f=new Set((c[d]?.['intents']??[])['map'](g=>g['id']));for(const g of e['intents']){if(!f['has'](g['id']))return'role_intent.roles.'+d+':\x20unknown\x20intent\x20\x27'+g['id']+'\x27\x20(not\x20in\x20the\x20factory\x20profile\x20—\x20users\x20re-tune\x20weights,\x20they\x20never\x20invent\x20intent\x20vocabulary)';}}return null;}function unknownExposureRef(a){for(const [b,d]of Object['entries'](a['rules']?.['domains']??{})){const e=FACTORY_RULE_PACKS[b];if(!e)continue;const f=new Set(Object['keys'](e['facts']??{}));for(const g of d['rules']){for(const [h,i]of g['cases']['entries']()){const j=parseFactRef(String(i['level']));if(j!==null&&!f['has'](j))return'rules.domains.'+b+'.'+g['rule_id']+'.cases['+h+'].level:\x20unknown\x20fact\x20reference\x20\x27fact:'+j+'\x27\x20(not\x20in\x20the\x20factory\x20\x27'+b+'\x27\x20fact\x20vocabulary)';for(const [k,l]of(i['exposure']?.['gain_paths']??[])['entries']()){const m=parseFactRef(String(l['viability']));if(m!==null&&!f['has'](m))return'rules.domains.'+b+'.'+g['rule_id']+'.cases['+h+'].exposure.gain_paths['+k+'].viability:\x20unknown\x20fact\x20reference\x20\x27fact:'+m+'\x27\x20(not\x20in\x20the\x20factory\x20\x27'+b+'\x27\x20fact\x20vocabulary)';}}}}return null;}let userState=null,lastReloadError=null,effectiveCache=null;function invalidate(){effectiveCache=null;}function probeUserDoc(){const a=resolveUserDocPath();let b=null,c=0x0;try{b=readFileSync(a,'utf-8'),c=statSync(a)['mtimeMs'];}catch{b=null;}if(b===null){if(userState!==null||lastReloadError!==null)return userState=null,lastReloadError=null,invalidate(),!![];return![];}if(userState&&userState['raw']===b)return![];try{const d=JSON['parse'](b),f=JudgmentDocInputSchema['parse'](d);if(f['version']!==EXPECTED_JUDGMENT_VERSION)throw new Error('version:\x20unsupported\x20document\x20version\x20'+f['version']+'\x20(expected\x20'+EXPECTED_JUDGMENT_VERSION+')');const g=withFactoryRulePacks(mergeJudgmentValues(FACTORY,f)),h=unknownDimensionKey(g)??unknownRuleRef(g)??unknownExposureRef(g)??unknownGameRef(g)??unknownScorecardRef(g)??unknownRoleIntentRef(g);if(h)throw new Error(h);const i=JudgmentDocSchema['safeParse'](g);if(!i['success'])throw new Error('schema:\x20'+zodMessage(i['error']));return userState={'raw':b,'mtimeMs':c,'doc':f},lastReloadError=null,invalidate(),!![];}catch(j){return lastReloadError=j instanceof z['ZodError']?'schema:\x20'+zodMessage(j):j instanceof Error?j['message']:String(j),![];}}function effective(){if(!effectiveCache){let a=withFactoryRulePacks(mergeJudgmentValues(FACTORY,layerSlots['industry']?.['fragment']??{}));a=mergeJudgmentValues(a,userState?.['doc']??{}),a=mergeJudgmentValues(a,layerSlots['persona']?.['fragment']??{});for(const [b,c]of overrides){a=applyPath(a,b,c);}effectiveCache=JudgmentDocSchema['parse'](a);}return effectiveCache;}const layerSlots={'persona':null,'industry':null},layerErrors={'persona':null,'industry':null};let disableTrace=[];function recordDisableTrace(a,b,c){disableTrace=disableTrace['filter'](d=>d['layer']!==b);for(const [d,e]of Object['entries'](c['rules']?.['domains']??{})){for(const f of e['rules']??[]){f['enabled']===![]&&disableTrace['push']({'layer':b,'domain':d,'rule_id':f['rule_id']});}}}function parseLayerFragment(a,b){let c;try{c=JudgmentFragmentSchema['parse'](a);}catch(h){return{'error':b+':\x20'+(h instanceof z['ZodError']?zodMessage(h):String(h))};}if(c['version']!==undefined&&c['version']!==EXPECTED_JUDGMENT_VERSION)return{'error':b+':\x20unsupported\x20fragment\x20version\x20'+c['version']+'\x20(expected\x20'+EXPECTED_JUDGMENT_VERSION+')'};const d=withFactoryRulePacks(mergeJudgmentValues(FACTORY,c)),f=unknownDimensionKey(d)??unknownRuleRef(d)??unknownExposureRef(d)??unknownGameRef(d)??unknownScorecardRef(d)??unknownRoleIntentRef(d);if(f)return{'error':b+':\x20'+f};const g=JudgmentDocSchema['safeParse'](d);if(!g['success'])return{'error':b+':\x20schema:\x20'+zodMessage(g['error'])};return{'fragment':c};}function setLayerFragment(a,b,c){if(b===null||b===undefined)return(layerSlots[a]!==null||layerErrors[a]!==null)&&(layerSlots[a]=null,layerErrors[a]=null,disableTrace=disableTrace['filter'](f=>f['layer']!==c),invalidate()),{'ok':!![]};let d;try{d=JSON['stringify'](b)??'';}catch{return{'ok':![],'error':c+':\x20fragment\x20is\x20not\x20JSON-serializable'};}if(layerSlots[a]?.['raw']===d)return{'ok':!![]};const e=parseLayerFragment(b,c);if(e['error']||!e['fragment'])return layerErrors[a]=e['error']??'rejected',{'ok':![],'error':layerErrors[a]??undefined};return layerSlots[a]={'raw':d,'fragment':e['fragment'],'label':c},layerErrors[a]=null,recordDisableTrace(a,c,e['fragment']),invalidate(),{'ok':!![]};}export function setJudgmentPersonaFragment(a,b='persona'){return setLayerFragment('persona',a,b);}export function setJudgmentIndustryOverlay(a,b='industry\x20packs'){return setLayerFragment('industry',a,b);}export function judgmentLayerError(a){return layerErrors[a];}export function validateJudgmentFragment(a,b='judgment'){return parseLayerFragment(a,b)['error']??null;}export function judgmentDisableTrace(){return disableTrace['map'](a=>({...a}));}export function clearJudgmentLayers(){layerSlots['persona']=null,layerSlots['industry']=null,layerErrors['persona']=null,layerErrors['industry']=null,disableTrace=[],invalidate();}const overrides=new Map();function resolvePath(a,b){let c=a;for(const d of b){if(!isPlainObject(c))return undefined;c=c[d];if(c===undefined)return undefined;}return c;}function applyPath(a,b,c){const d=b['split']('.'),e=structuredClone(a);let f=e;for(let g=0x0;g<d['length']-0x1;g++){f=f[d[g]];}return f[d[d['length']-0x1]]=c,e;}function typeName(a){if(Array['isArray'](a))return'array';if(a===null)return'null';return typeof a;}function sameShape(a,b){const c=typeName(a),d=typeName(b);if(c==='object'&&d==='object')return isPlainObject(a)&&isPlainObject(b);return c===d;}export function setJudgmentOverride(a,b){const c=typeof a==='string'?a['trim']():'';if(!c)return{'ok':![],'error':'\x27path\x27\x20is\x20required\x20(dotted,\x20e.g.\x20evaluation.weights.trust_reviews)'};if(b===undefined||b===null||!(typeof b==='number'||typeof b==='string'||typeof b==='boolean'||Array['isArray'](b)||isPlainObject(b)))return{'ok':![],'error':'\x27value\x27\x20must\x20be\x20a\x20JSON\x20value\x20(number\x20/\x20string\x20/\x20boolean\x20/\x20array\x20/\x20object)'};const d=c['split']('.')['filter'](Boolean),f=d[0x0];if(!JUDGMENT_SECTION_NAMES['includes'](f))return{'ok':![],'error':'Unknown\x20section\x20\x27'+f+'\x27\x20—\x20sections:\x20'+JUDGMENT_SECTION_NAMES['join'](',\x20')};probeUserDoc();const g=resolvePath(effective(),d);if(g===undefined)return{'ok':![],'error':'Unknown\x20judgment\x20path\x20\x27'+c+'\x27'};if(!sameShape(g,b))return{'ok':![],'error':'Type\x20mismatch\x20at\x20\x27'+c+'\x27\x20—\x20expected\x20'+typeName(g)+',\x20got\x20'+typeName(b)};try{JudgmentDocSchema['parse'](applyPath(effective(),c,b));}catch(h){return{'ok':![],'error':'Rejected:\x20'+(h instanceof z['ZodError']?zodMessage(h):h instanceof Error?h['message']:String(h))};}return overrides['set'](c,b),invalidate(),{'ok':!![]};}export function clearJudgmentOverride(a){const b=overrides['delete'](typeof a==='string'?a['trim']():'');if(b)invalidate();return b;}export function clearJudgmentOverrides(){const a=overrides['size'];return a>0x0&&(overrides['clear'](),invalidate()),a;}export function judgmentOverrides(){return Array['from'](overrides['entries']())['map'](([a,b])=>({'path':a,'value':b}));}export function getJudgmentDoc(){return probeUserDoc(),structuredClone(effective());}let policyRunDoc=null;export function beginPolicyRun(){policyRunDoc=getJudgmentDoc();}export function endPolicyRun(){policyRunDoc=null;}export function policyJudgmentDoc(){return policyRunDoc??getJudgmentDoc();}export function evaluationSection(){return getJudgmentDoc()['evaluation'];}export function factoryJudgmentDoc(){return structuredClone(withFactoryRulePacks(FACTORY));}export function readUserJudgmentDocView(){probeUserDoc();if(userState)return{'user_path':userJudgmentDocPath(),'exists':!![],'version':EXPECTED_JUDGMENT_VERSION,'doc':structuredClone(userState['doc'])};return{'user_path':userJudgmentDocPath(),'exists':![],'version':EXPECTED_JUDGMENT_VERSION,'doc':factoryJudgmentDoc()};}export function judgmentStatus(){probeUserDoc();const a=effective(),b={};for(const c of JUDGMENT_SECTION_NAMES){const d=a[c];if(c==='rules'&&isPlainObject(d)){const e=d['domains']??{};b[c]=Object['values'](e)['reduce']((f,g)=>f+(Array['isArray'](g['rules'])?g['rules']['length']:0x0),0x0);continue;}b[c]=Array['isArray'](d)?d['length']:isPlainObject(d)?Object['keys'](d)['length']:0x0;}return{'version':a['version'],'factory_path':FACTORY_PATH,'user_path':userJudgmentDocPath(),'user_doc_loaded':userState!==null,'user_mtime':userState?new Date(userState['mtimeMs'])['toISOString']():null,'last_reload_error':lastReloadError,'user_doc':userState?structuredClone(userState['doc']):null,'persona_fragment_loaded':layerSlots['persona']!==null,'industry_overlay_loaded':layerSlots['industry']!==null,'layer_errors':{'persona':layerErrors['persona'],'industry':layerErrors['industry']},'disable_trace':judgmentDisableTrace(),'sections':b,'overrides':judgmentOverrides()};}function jsonEqual(c,d){if(c===d)return!![];if(Array['isArray'](c)&&Array['isArray'](d))return JSON['stringify'](c)===JSON['stringify'](d);if(isPlainObject(c)&&isPlainObject(d)){const e=Object['keys'](c);if(e['length']!==Object['keys'](d)['length'])return![];return e['every'](f=>f in d&&jsonEqual(c[f],d[f]));}return![];}function collectChanges(a,c,d,e){if(isPlainObject(c)){const f=isPlainObject(a)?a:{};for(const [g,h]of Object['entries'](c)){collectChanges(f[g],h,d?d+'.'+g:g,e);}return;}!jsonEqual(a,c)&&e['push']({'path':d||'(root)','old':a===undefined?null:a,'new':c});}export function patchUserJudgmentDoc(a){const b=userJudgmentDocPath(),c=join(dirname(b),'judgment.backup.json'),d=resolveUserDocPath();if(!isPlainObject(a))throw new Error('\x27patch\x27\x20must\x20be\x20a\x20partial\x20judgment\x20document\x20object\x20(e.g.\x20{\x22evaluation\x22:\x20{\x22weights\x22:\x20{…}}})');if(a['version']!==undefined&&a['version']!==EXPECTED_JUDGMENT_VERSION)throw new Error('patch.version:\x20unsupported\x20version\x20'+String(a['version'])+'\x20(expected\x20'+EXPECTED_JUDGMENT_VERSION+')');const {version:f,...g}=a;let h;try{h=JudgmentFragmentSchema['parse'](g);}catch(s){throw new Error('patch\x20rejected:\x20'+(s instanceof z['ZodError']?zodMessage(s):s instanceof Error?s['message']:String(s)));}if(Object['keys'](h)['length']===0x0)throw new Error('\x27patch\x27\x20is\x20empty\x20—\x20nothing\x20to\x20apply\x20(sections:\x20'+JUDGMENT_SECTION_NAMES['join'](',\x20')+')');let i=null,j=![];try{const t=readFileSync(d,'utf-8');j=!![];const u=JSON['parse'](t);i=JudgmentDocInputSchema['parse'](u);}catch(v){if(j)throw new Error('the\x20current\x20user\x20document\x20is\x20not\x20a\x20valid\x20judgment\x20document\x20('+(v instanceof Error?v['message']:String(v))+')\x20—\x20fix\x20or\x20remove\x20'+d+'\x20by\x20hand\x20first');i=null;}const k=mergeJudgmentValues(i??{'version':EXPECTED_JUDGMENT_VERSION},h);k['version']=EXPECTED_JUDGMENT_VERSION;const l=withFactoryRulePacks(mergeJudgmentValues(FACTORY,k)),m=unknownDimensionKey(l)??unknownRuleRef(l)??unknownExposureRef(l)??unknownGameRef(l)??unknownScorecardRef(l)??unknownRoleIntentRef(l);if(m)throw new Error('patch\x20rejected:\x20'+m);const n=JudgmentDocSchema['safeParse'](l);if(!n['success'])throw new Error('patch\x20rejected:\x20schema:\x20'+zodMessage(n['error']));const o=judgmentDocWarnings(l),p=[];collectChanges(i??{},h,'',p);if(p['length']===0x0)return{'applied':!![],'user_path':b,'backup_path':null,'version':EXPECTED_JUDGMENT_VERSION,'changed':p,'reload_error':null,'warnings':o};const q=JSON['stringify'](k,null,0x2)+'\x0a';mkdirSync(dirname(b),{'recursive':!![]});if(j)copyFileSync(d,c);const r=b+'.tmp';writeFileSync(r,q,'utf-8'),renameSync(r,b);try{userState={'raw':q,'mtimeMs':statSync(b)['mtimeMs'],'doc':k},lastReloadError=null;}catch(w){lastReloadError=w instanceof Error?w['message']:String(w);}return invalidate(),{'applied':!![],'user_path':b,'backup_path':j?c:null,'version':EXPECTED_JUDGMENT_VERSION,'changed':p,'reload_error':lastReloadError,'warnings':o};}
|
|
1
|
+
import{existsSync,readFileSync,readdirSync,statSync,writeFileSync,renameSync,mkdirSync,copyFileSync}from'node:fs';import{fileURLToPath}from'node:url';import{dirname,join}from'node:path';import{z}from'zod';import{getWowMcpDir}from'@wowok/wowok';import{SEVERITY_ORDER}from'./severity.js';import{judgmentDocWarnings}from'./config-warnings.js';import{RuleDomainPackSchema,RuleDomainPackInputSchema}from'./rule-engine.js';import{parseFactRef}from'./exposure.js';import{ACTOR_ROLES}from'../role/types.js';export const EXPECTED_JUDGMENT_VERSION=0x1;export const JUDGMENT_SECTION_NAMES=['evaluation','game','match','monitor','mode','scorecard','rules','role_intent'];const SeverityKeySchema=z['enum'](SEVERITY_ORDER);export const DimensionStandardSchema=z['object']({'label':z['string'](),'description':z['string']()})['strict']();const LevelBandSchema=z['object']({'min':z['number'](),'level':z['string']()})['strict'](),GradeWordBandSchema=z['object']({'min':z['number'](),'word':z['string']()})['strict']();export const EvaluationSectionSchema=z['object']({'comment':z['string']()['optional'](),'weights':z['record'](z['string'](),z['number']()),'dimensions':z['record'](z['string'](),DimensionStandardSchema),'severity_deduction':z['record'](SeverityKeySchema,z['number']()),'level_bands':z['array'](LevelBandSchema),'grade_words':z['object']({'comment':z['string']()['optional'](),'trust':z['array'](GradeWordBandSchema),'risk':z['array'](GradeWordBandSchema),'match':z['array'](GradeWordBandSchema)['optional']()})['strict']()})['strict']();export const EvaluationSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'weights':z['record'](z['string'](),z['number']())['optional'](),'dimensions':z['record'](z['string'](),DimensionStandardSchema)['optional'](),'severity_deduction':z['record'](z['string'](),z['number']())['optional'](),'level_bands':z['array'](LevelBandSchema)['optional'](),'grade_words':z['object']({'comment':z['string']()['optional'](),'trust':z['array'](GradeWordBandSchema)['optional'](),'risk':z['array'](GradeWordBandSchema)['optional'](),'match':z['array'](GradeWordBandSchema)['optional']()})['strict']()['optional']()})['strict']();const RoleInterestSchema=z['object']({'prefer':z['array'](z['string']()),'avoid':z['array'](z['string']()),'sensitivity':z['number']()})['strict'](),KeywordRuleSchema=z['object']({'id':z['string'](),'keywords':z['array'](z['string']())['min'](0x1),'effect':z['string'](),'anchor':z['enum'](['prefer','avoid']),'when_forbidden':z['boolean']()})['strict']();export const ArbGameSectionSchema=z['object']({'comment':z['string']()['optional'](),'effect_semantics':z['record'](z['string'](),z['array'](z['string']())),'role_interests':z['record'](z['string'](),RoleInterestSchema),'keyword_rules':z['array'](KeywordRuleSchema),'forbid_pattern':z['string'](),'scoring':z['object']({'base':z['number'](),'per_gain':z['number'](),'per_risk':z['number']()})['strict']()})['strict']();export const ArbGameSectionInputSchema=ArbGameSectionSchema['partial']();export const GameSectionSchema=z['object']({'comment':z['string']()['optional'](),'outcome_semantics':z['record'](z['string'](),z['array'](z['string']())),'role_interests':z['record'](z['string'](),RoleInterestSchema),'appetite_multipliers':z['object']({'conservative':z['number'](),'balanced':z['number'](),'aggressive':z['number']()})['strict'](),'scoring':z['object']({'base':z['number'](),'per_gain':z['number'](),'per_risk':z['number']()})['strict'](),'keyword_rules':z['array'](KeywordRuleSchema),'forbid_pattern':z['string'](),'arb':ArbGameSectionSchema})['strict']();export const GameSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'outcome_semantics':z['record'](z['string'](),z['array'](z['string']()))['optional'](),'role_interests':z['record'](z['string'](),RoleInterestSchema)['optional'](),'appetite_multipliers':z['object']({'conservative':z['number']()['optional'](),'balanced':z['number']()['optional'](),'aggressive':z['number']()['optional']()})['strict']()['optional'](),'scoring':z['object']({'base':z['number']()['optional'](),'per_gain':z['number']()['optional'](),'per_risk':z['number']()['optional']()})['strict']()['optional'](),'keyword_rules':z['array'](KeywordRuleSchema)['optional'](),'forbid_pattern':z['string']()['optional'](),'arb':ArbGameSectionInputSchema['optional']()})['strict']();const MatchBandSchema=z['object']({'min':z['number'](),'score':z['number']()})['strict']();export const MatchSectionSchema=z['object']({'comment':z['string']()['optional'](),'region_scores':z['object']({'exact':z['number'](),'contains':z['number'](),'compatible':z['number'](),'overlap':z['number'](),'mismatch':z['number']()})['strict'](),'weights':z['object']({'region':z['number'](),'industry':z['number'](),'price':z['number'](),'trust':z['number'](),'capabilities':z['number'](),'buyable':z['number'](),'reward_commitment':z['number'](),'tags':z['number'](),'acceptance':z['number']()})['strict'](),'trust_bands':z['array'](MatchBandSchema),'neutral_score':z['number'](),'price_over_budget_tolerance_pct':z['number'](),'top_n':z['number']()['int']()})['strict']();export const MatchSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'region_scores':z['object']({'exact':z['number']()['optional'](),'contains':z['number']()['optional'](),'compatible':z['number']()['optional'](),'overlap':z['number']()['optional'](),'mismatch':z['number']()['optional']()})['strict']()['optional'](),'weights':z['object']({'region':z['number']()['optional'](),'industry':z['number']()['optional'](),'price':z['number']()['optional'](),'trust':z['number']()['optional'](),'capabilities':z['number']()['optional'](),'buyable':z['number']()['optional'](),'reward_commitment':z['number']()['optional'](),'tags':z['number']()['optional'](),'acceptance':z['number']()['optional']()})['strict']()['optional'](),'trust_bands':z['array'](MatchBandSchema)['optional'](),'neutral_score':z['number']()['optional'](),'price_over_budget_tolerance_pct':z['number']()['optional'](),'top_n':z['number']()['int']()['optional']()})['strict']();const MonitorThresholdsFullSchema=z['object']({'progress_stall_hours':z['number'](),'compensation_drop_ratio':z['number'](),'compensation_coverage_min':z['number'](),'messenger_timeout_hours':z['number'](),'review_window_closing_days':z['number'](),'arb_window_closing_days':z['number']()})['strict'](),MonitorEscalationSchema=z['object']({'default_expected_progress_hours':z['number'](),'stall_expected_multiplier':z['number'](),'stall_escalation_multiplier':z['number'](),'messenger_escalation_multiplier':z['number'](),'ratio_critical_threshold':z['number']()})['strict']();export const MonitorSectionSchema=z['object']({'comment':z['string']()['optional'](),'thresholds':MonitorThresholdsFullSchema,'escalation':MonitorEscalationSchema})['strict']();export const MonitorSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'thresholds':z['object']({'progress_stall_hours':z['number']()['optional'](),'compensation_drop_ratio':z['number']()['optional'](),'compensation_coverage_min':z['number']()['optional'](),'messenger_timeout_hours':z['number']()['optional'](),'review_window_closing_days':z['number']()['optional'](),'arb_window_closing_days':z['number']()['optional']()})['strict']()['optional'](),'escalation':z['object']({'default_expected_progress_hours':z['number']()['optional'](),'stall_expected_multiplier':z['number']()['optional'](),'stall_escalation_multiplier':z['number']()['optional'](),'messenger_escalation_multiplier':z['number']()['optional'](),'ratio_critical_threshold':z['number']()['optional']()})['strict']()['optional']()})['strict']();const AppetitePostureSchema=z['object']({'max_risk':z['number'](),'min_benefit':z['number']()})['strict']();export const ModeSectionSchema=z['object']({'comment':z['string']()['optional'](),'appetite_thresholds':z['object']({'conservative':AppetitePostureSchema,'balanced':AppetitePostureSchema,'aggressive':AppetitePostureSchema})['strict']()})['strict']();export const ModeSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'appetite_thresholds':z['object']({'conservative':AppetitePostureSchema['optional'](),'balanced':AppetitePostureSchema['optional'](),'aggressive':AppetitePostureSchema['optional']()})['strict']()['optional']()})['strict']();const PostureWeightSchema=z['object']({'volume':z['number'](),'balanced':z['number'](),'margin':z['number']()})['strict'](),MetricTuneSchema=z['object']({'weight':PostureWeightSchema['optional'](),'good_threshold':z['number']()['optional'](),'bad_threshold':z['number']()['optional']()})['strict']();export const ScorecardSectionSchema=z['object']({'comment':z['string']()['optional'](),'metrics':z['record'](z['string'](),MetricTuneSchema),'shop_evidence_metrics':z['array'](z['string']())})['strict']();export const ScorecardSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'metrics':z['record'](z['string'](),MetricTuneSchema)['optional'](),'shop_evidence_metrics':z['array'](z['string']())['optional']()})['strict']();const RoleIntentEntrySchema=z['object']({'comment':z['string']()['optional'](),'intents':z['array'](z['object']({'id':z['string'](),'weight':z['number']()['min'](0x0)['max'](0x1)})['strict']())['min'](0x1),'horizon':z['number']()['int']()['positive']()['optional'](),'risk_appetite':z['enum'](['conservative','balanced','aggressive'])['optional'](),'red_lines':z['array'](z['string']())['optional'](),'strategy_leaning':z['enum'](['cooperative','opportunistic','confrontational'])['optional']()})['strict']();export const RoleIntentSectionSchema=z['object']({'comment':z['string']()['optional'](),'roles':z['record'](z['string'](),RoleIntentEntrySchema)})['strict']();export const RoleIntentSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'roles':z['record'](z['string'](),RoleIntentEntrySchema['partial']())['optional']()})['strict']();export const RulesSectionSchema=z['object']({'comment':z['string']()['optional'](),'domains':z['record'](z['string'](),RuleDomainPackSchema)})['strict']();export const RulesSectionInputSchema=z['object']({'comment':z['string']()['optional'](),'domains':z['record'](z['string'](),RuleDomainPackInputSchema)['optional']()})['strict']();export const JudgmentDocSchema=z['object']({'version':z['number']()['int'](),'description':z['string']()['optional'](),'evaluation':EvaluationSectionSchema,'game':GameSectionSchema,'match':MatchSectionSchema,'monitor':MonitorSectionSchema,'mode':ModeSectionSchema,'scorecard':ScorecardSectionSchema,'rules':RulesSectionSchema,'role_intent':RoleIntentSectionSchema})['strict']();export const JudgmentDocInputSchema=z['object']({'version':z['number']()['int'](),'description':z['string']()['optional'](),'evaluation':EvaluationSectionInputSchema['optional'](),'game':GameSectionInputSchema['optional'](),'match':MatchSectionInputSchema['optional'](),'monitor':MonitorSectionInputSchema['optional'](),'mode':ModeSectionInputSchema['optional'](),'scorecard':ScorecardSectionInputSchema['optional'](),'rules':RulesSectionInputSchema['optional'](),'role_intent':RoleIntentSectionInputSchema['optional']()})['strict']();export const JudgmentFragmentSchema=JudgmentDocInputSchema['omit']({'version':!![]})['extend']({'version':z['number']()['int']()['optional']()});function isPlainObject(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a);}function entryId(a){if(isPlainObject(a)){if(typeof a['rule_id']==='string')return a['rule_id'];if(typeof a['id']==='string')return a['id'];}return null;}export function mergeJudgmentValues(a,b){if(Array['isArray'](a)&&Array['isArray'](b)){if(a['length']===0x0)return[...b];if(b['length']===0x0)return[...a];const c=[...a,...b]['every'](f=>entryId(f)!==null);if(!c)return[...b];const d=new Map();for(const f of a)d['set'](entryId(f),f);for(const g of b){const h=entryId(g),i=d['get'](h);d['set'](h,i===undefined?g:mergeJudgmentValues(i,g));}return[...d['values']()];}if(isPlainObject(a)&&isPlainObject(b)){const j={...a};for(const [l,m]of Object['entries'](b)){j[l]=mergeJudgmentValues(a[l],m);}return j;}return b===undefined?a:b;}const FACTORY_PATH=fileURLToPath(new URL('../knowledge/baselines/judgment-baselines.json',import.meta.url)),USER_DOC_NAME='judgment.json',LEGACY_USER_DOC_NAME='judgment-baselines.json';export function userJudgmentDocPath(){const a=process['env']['WOWOK_CONFIG_DIR']||getWowMcpDir();return join(a,USER_DOC_NAME);}function resolveUserDocPath(){const a=process['env']['WOWOK_CONFIG_DIR']||getWowMcpDir(),b=join(a,USER_DOC_NAME);if(existsSync(b))return b;const c=join(a,LEGACY_USER_DOC_NAME);return existsSync(c)?c:b;}function zodMessage(a){return a['issues']['slice'](0x0,0x5)['map'](b=>(b['path']['join']('.')||'(root)')+':\x20'+b['message'])['join'](';\x20');}function loadFactory(){let a;try{a=readFileSync(FACTORY_PATH,'utf-8');}catch{throw new Error('Judgment\x20baselines\x20document\x20not\x20found\x20(knowledge/baselines/judgment-baselines.json)\x20—\x20broken\x20installation.');}const b=JudgmentDocSchema['parse'](JSON['parse'](a));if(b['version']!==EXPECTED_JUDGMENT_VERSION)throw new Error('Factory\x20judgment\x20document\x20has\x20version\x20'+b['version']+',\x20expected\x20'+EXPECTED_JUDGMENT_VERSION+'\x20—\x20broken\x20installation.');return b;}const FACTORY=loadFactory(),RULE_PACKS_DIR=fileURLToPath(new URL('../knowledge/baselines/rules/',import.meta.url));function loadFactoryRulePacks(){let a=[];try{a=readdirSync(RULE_PACKS_DIR)['filter'](d=>d['endsWith']('.json'));}catch{return{};}const b=d=>d instanceof z['ZodError']?d['issues']['slice'](0x0,0x3)['map'](f=>(f['path']['join']('.')||'(root)')+':\x20'+f['message'])['join'](';\x20'):d instanceof Error?d['message']:String(d),c={};for(const d of a){const f=d['replace'](/\.json$/,''),g=join(RULE_PACKS_DIR,d);let h;for(let i=0x0;i<0x2;i++){try{const j=readFileSync(g,'utf-8'),k=RuleDomainPackSchema['parse'](JSON['parse'](j));c[f]=k;try{writeFileSync(g+'.good',j);}catch{}h=undefined;break;}catch(l){h=l;if(i===0x0)try{Atomics['wait'](new Int32Array(new SharedArrayBuffer(0x4)),0x0,0x0,0x32);}catch{}}}if(h===undefined)continue;try{const m=readFileSync(g+'.good','utf-8');c[f]=RuleDomainPackSchema['parse'](JSON['parse'](m)),process['stderr']['write']('[judgment]\x20rule\x20pack\x20\x22'+d+'\x22\x20failed\x20validation\x20('+b(h)+')\x20—\x20'+'running\x20on\x20the\x20LAST-GOOD\x20copy;\x20fix\x20or\x20delete\x20the\x20bad\x20file\x20to\x20clear\x20this\x20warning.\x0a');}catch{process['stderr']['write']('[judgment]\x20rule\x20pack\x20\x22'+d+'\x22\x20failed\x20validation\x20('+b(h)+')\x20and\x20no\x20last-good\x20copy\x20'+('exists\x20—\x20domain\x20\x22'+f+'\x22\x20is\x20DISABLED\x20for\x20this\x20run\x20(the\x20server\x20stays\x20up;\x20inline\x20domains\x20unaffected).\x0a'));}}return c;}const FACTORY_RULE_PACKS=loadFactoryRulePacks();export function factoryRulePack(a){return FACTORY_RULE_PACKS[a]??null;}function withFactoryRulePacks(a){const b=a['rules']??{'domains':{}},c=mergeJudgmentValues(FACTORY_RULE_PACKS,b['domains']??{});return{...a,'rules':{...b,'domains':c}};}function unknownRuleRef(a){for(const [b,c]of Object['entries'](a['rules']?.['domains']??{})){const d=FACTORY_RULE_PACKS[b];if(!d)return'rules.domains:\x20unknown\x20domain\x20\x27'+b+'\x27\x20(not\x20in\x20the\x20factory\x20rule\x20packs\x20—\x20check\x20for\x20a\x20typo)';const e=new Set(d['rules']['map'](f=>f['rule_id']));for(const f of c['rules']){if(!e['has'](f['rule_id']))return'rules.domains.'+b+':\x20unknown\x20rule\x20\x27'+f['rule_id']+'\x27\x20(users\x20may\x20tune\x20or\x20disable\x20factory\x20rules,\x20not\x20invent\x20them)';}}return null;}function unknownDimensionKey(a){for(const b of Object['keys'](a['evaluation']['weights'])){if(!(b in FACTORY['evaluation']['weights']))return'evaluation.weights:\x20unknown\x20dimension\x20\x27'+b+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}for(const c of Object['keys'](a['evaluation']['dimensions'])){if(!(c in FACTORY['evaluation']['dimensions']))return'evaluation.dimensions:\x20unknown\x20dimension\x20\x27'+c+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}return null;}function unknownGameRef(a){for(const d of Object['keys'](a['game']['role_interests'])){if(!(d in FACTORY['game']['role_interests']))return'game.role_interests:\x20unknown\x20role\x20\x27'+d+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}for(const f of Object['keys'](a['game']['outcome_semantics'])){if(!(f in FACTORY['game']['outcome_semantics']))return'game.outcome_semantics:\x20unknown\x20outcome\x20\x27'+f+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}const b=new Set(Object['values'](FACTORY['game']['outcome_semantics'])['flat']());for(const g of a['game']['keyword_rules']){if(!b['has'](g['effect']))return'game.keyword_rules.'+g['id']+':\x20unknown\x20effect\x20\x27'+g['effect']+'\x27\x20(must\x20be\x20an\x20effect\x20defined\x20in\x20game.outcome_semantics)';}const c=a['game']['arb'];if(c){const h=FACTORY['game']['arb'];for(const j of Object['keys'](c['role_interests'])){if(!(j in h['role_interests']))return'game.arb.role_interests:\x20unknown\x20perspective\x20\x27'+j+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}const i=new Set(Object['keys'](h['effect_semantics']));for(const k of c['keyword_rules']){if(!i['has'](k['effect']))return'game.arb.keyword_rules.'+k['id']+':\x20unknown\x20effect\x20\x27'+k['effect']+'\x27\x20(must\x20be\x20an\x20effect\x20defined\x20in\x20game.arb.effect_semantics)';}for(const [l,m]of Object['entries'](c['role_interests'])){for(const n of[...m['prefer'],...m['avoid']]){if(!i['has'](n))return'game.arb.role_interests.'+l+':\x20unknown\x20effect\x20\x27'+n+'\x27\x20(must\x20be\x20an\x20effect\x20defined\x20in\x20game.arb.effect_semantics)';}}}return null;}function unknownScorecardRef(a){for(const b of Object['keys'](a['scorecard']['metrics'])){if(!(b in FACTORY['scorecard']['metrics']))return'scorecard.metrics:\x20unknown\x20metric\x20\x27'+b+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}for(const c of a['scorecard']['shop_evidence_metrics']){if(!(c in FACTORY['scorecard']['metrics']))return'scorecard.shop_evidence_metrics:\x20unknown\x20metric\x20\x27'+c+'\x27\x20(not\x20in\x20the\x20factory\x20document\x20—\x20check\x20for\x20a\x20typo)';}return null;}function unknownRoleIntentRef(a){const b=new Set(ACTOR_ROLES),c=FACTORY['role_intent']?.['roles']??{};for(const [d,e]of Object['entries'](a['role_intent']?.['roles']??{})){if(!b['has'](d))return'role_intent.roles:\x20unknown\x20role\x20\x27'+d+'\x27\x20(must\x20be\x20an\x20ACTOR\x20role\x20—\x20neutral/system\x20hold\x20no\x20intent)';const f=new Set((c[d]?.['intents']??[])['map'](g=>g['id']));for(const g of e['intents']){if(!f['has'](g['id']))return'role_intent.roles.'+d+':\x20unknown\x20intent\x20\x27'+g['id']+'\x27\x20(not\x20in\x20the\x20factory\x20profile\x20—\x20users\x20re-tune\x20weights,\x20they\x20never\x20invent\x20intent\x20vocabulary)';}}return null;}function unknownExposureRef(a){for(const [b,d]of Object['entries'](a['rules']?.['domains']??{})){const e=FACTORY_RULE_PACKS[b];if(!e)continue;const f=new Set(Object['keys'](e['facts']??{}));for(const g of d['rules']){for(const [h,i]of g['cases']['entries']()){const j=parseFactRef(String(i['level']));if(j!==null&&!f['has'](j))return'rules.domains.'+b+'.'+g['rule_id']+'.cases['+h+'].level:\x20unknown\x20fact\x20reference\x20\x27fact:'+j+'\x27\x20(not\x20in\x20the\x20factory\x20\x27'+b+'\x27\x20fact\x20vocabulary)';for(const [k,l]of(i['exposure']?.['gain_paths']??[])['entries']()){const m=parseFactRef(String(l['viability']));if(m!==null&&!f['has'](m))return'rules.domains.'+b+'.'+g['rule_id']+'.cases['+h+'].exposure.gain_paths['+k+'].viability:\x20unknown\x20fact\x20reference\x20\x27fact:'+m+'\x27\x20(not\x20in\x20the\x20factory\x20\x27'+b+'\x27\x20fact\x20vocabulary)';}}}}return null;}let userState=null,lastReloadError=null,effectiveCache=null;function invalidate(){effectiveCache=null;}function probeUserDoc(){const a=resolveUserDocPath();let b=null,c=0x0;try{b=readFileSync(a,'utf-8'),c=statSync(a)['mtimeMs'];}catch{b=null;}if(b===null){if(userState!==null||lastReloadError!==null)return userState=null,lastReloadError=null,invalidate(),!![];return![];}if(userState&&userState['raw']===b)return![];try{const d=JSON['parse'](b),f=JudgmentDocInputSchema['parse'](d);if(f['version']!==EXPECTED_JUDGMENT_VERSION)throw new Error('version:\x20unsupported\x20document\x20version\x20'+f['version']+'\x20(expected\x20'+EXPECTED_JUDGMENT_VERSION+')');const g=withFactoryRulePacks(mergeJudgmentValues(FACTORY,f)),h=unknownDimensionKey(g)??unknownRuleRef(g)??unknownExposureRef(g)??unknownGameRef(g)??unknownScorecardRef(g)??unknownRoleIntentRef(g);if(h)throw new Error(h);const i=JudgmentDocSchema['safeParse'](g);if(!i['success'])throw new Error('schema:\x20'+zodMessage(i['error']));return userState={'raw':b,'mtimeMs':c,'doc':f},lastReloadError=null,invalidate(),!![];}catch(j){return lastReloadError=j instanceof z['ZodError']?'schema:\x20'+zodMessage(j):j instanceof Error?j['message']:String(j),![];}}function effective(){if(!effectiveCache){let a=withFactoryRulePacks(mergeJudgmentValues(FACTORY,layerSlots['industry']?.['fragment']??{}));a=mergeJudgmentValues(a,userState?.['doc']??{}),a=mergeJudgmentValues(a,layerSlots['persona']?.['fragment']??{});for(const [b,c]of overrides){a=applyPath(a,b,c);}effectiveCache=JudgmentDocSchema['parse'](a);}return effectiveCache;}const layerSlots={'persona':null,'industry':null},layerErrors={'persona':null,'industry':null};let disableTrace=[];function recordDisableTrace(a,b,c){disableTrace=disableTrace['filter'](d=>d['layer']!==b);for(const [d,e]of Object['entries'](c['rules']?.['domains']??{})){for(const f of e['rules']??[]){f['enabled']===![]&&disableTrace['push']({'layer':b,'domain':d,'rule_id':f['rule_id']});}}}function parseLayerFragment(a,b){let c;try{c=JudgmentFragmentSchema['parse'](a);}catch(h){return{'error':b+':\x20'+(h instanceof z['ZodError']?zodMessage(h):String(h))};}if(c['version']!==undefined&&c['version']!==EXPECTED_JUDGMENT_VERSION)return{'error':b+':\x20unsupported\x20fragment\x20version\x20'+c['version']+'\x20(expected\x20'+EXPECTED_JUDGMENT_VERSION+')'};const d=withFactoryRulePacks(mergeJudgmentValues(FACTORY,c)),f=unknownDimensionKey(d)??unknownRuleRef(d)??unknownExposureRef(d)??unknownGameRef(d)??unknownScorecardRef(d)??unknownRoleIntentRef(d);if(f)return{'error':b+':\x20'+f};const g=JudgmentDocSchema['safeParse'](d);if(!g['success'])return{'error':b+':\x20schema:\x20'+zodMessage(g['error'])};return{'fragment':c};}function setLayerFragment(a,b,c){if(b===null||b===undefined)return(layerSlots[a]!==null||layerErrors[a]!==null)&&(layerSlots[a]=null,layerErrors[a]=null,disableTrace=disableTrace['filter'](f=>f['layer']!==c),invalidate()),{'ok':!![]};let d;try{d=JSON['stringify'](b)??'';}catch{return{'ok':![],'error':c+':\x20fragment\x20is\x20not\x20JSON-serializable'};}if(layerSlots[a]?.['raw']===d)return{'ok':!![]};const e=parseLayerFragment(b,c);if(e['error']||!e['fragment'])return layerErrors[a]=e['error']??'rejected',{'ok':![],'error':layerErrors[a]??undefined};return layerSlots[a]={'raw':d,'fragment':e['fragment'],'label':c},layerErrors[a]=null,recordDisableTrace(a,c,e['fragment']),invalidate(),{'ok':!![]};}export function setJudgmentPersonaFragment(a,b='persona'){return setLayerFragment('persona',a,b);}export function setJudgmentIndustryOverlay(a,b='industry\x20packs'){return setLayerFragment('industry',a,b);}export function judgmentLayerError(a){return layerErrors[a];}export function validateJudgmentFragment(a,b='judgment'){return parseLayerFragment(a,b)['error']??null;}export function judgmentDisableTrace(){return disableTrace['map'](a=>({...a}));}export function clearJudgmentLayers(){layerSlots['persona']=null,layerSlots['industry']=null,layerErrors['persona']=null,layerErrors['industry']=null,disableTrace=[],invalidate();}const overrides=new Map();function resolvePath(a,b){let c=a;for(const d of b){if(!isPlainObject(c))return undefined;c=c[d];if(c===undefined)return undefined;}return c;}function applyPath(a,b,c){const d=b['split']('.'),e=structuredClone(a);let f=e;for(let g=0x0;g<d['length']-0x1;g++){f=f[d[g]];}return f[d[d['length']-0x1]]=c,e;}function typeName(a){if(Array['isArray'](a))return'array';if(a===null)return'null';return typeof a;}function sameShape(a,b){const c=typeName(a),d=typeName(b);if(c==='object'&&d==='object')return isPlainObject(a)&&isPlainObject(b);return c===d;}export function setJudgmentOverride(a,b){const c=typeof a==='string'?a['trim']():'';if(!c)return{'ok':![],'error':'\x27path\x27\x20is\x20required\x20(dotted,\x20e.g.\x20evaluation.weights.trust_reviews)'};if(b===undefined||b===null||!(typeof b==='number'||typeof b==='string'||typeof b==='boolean'||Array['isArray'](b)||isPlainObject(b)))return{'ok':![],'error':'\x27value\x27\x20must\x20be\x20a\x20JSON\x20value\x20(number\x20/\x20string\x20/\x20boolean\x20/\x20array\x20/\x20object)'};const d=c['split']('.')['filter'](Boolean),f=d[0x0];if(!JUDGMENT_SECTION_NAMES['includes'](f))return{'ok':![],'error':'Unknown\x20section\x20\x27'+f+'\x27\x20—\x20sections:\x20'+JUDGMENT_SECTION_NAMES['join'](',\x20')};probeUserDoc();const g=resolvePath(effective(),d);if(g===undefined)return{'ok':![],'error':'Unknown\x20judgment\x20path\x20\x27'+c+'\x27'};if(!sameShape(g,b))return{'ok':![],'error':'Type\x20mismatch\x20at\x20\x27'+c+'\x27\x20—\x20expected\x20'+typeName(g)+',\x20got\x20'+typeName(b)};try{JudgmentDocSchema['parse'](applyPath(effective(),c,b));}catch(h){return{'ok':![],'error':'Rejected:\x20'+(h instanceof z['ZodError']?zodMessage(h):h instanceof Error?h['message']:String(h))};}return overrides['set'](c,b),invalidate(),{'ok':!![]};}export function clearJudgmentOverride(a){const b=overrides['delete'](typeof a==='string'?a['trim']():'');if(b)invalidate();return b;}export function clearJudgmentOverrides(){const a=overrides['size'];return a>0x0&&(overrides['clear'](),invalidate()),a;}export function judgmentOverrides(){return Array['from'](overrides['entries']())['map'](([a,b])=>({'path':a,'value':b}));}export function getJudgmentDoc(){return probeUserDoc(),structuredClone(effective());}let policyRunDoc=null;export function beginPolicyRun(){policyRunDoc=getJudgmentDoc();}export function endPolicyRun(){policyRunDoc=null;}export function policyJudgmentDoc(){return policyRunDoc??getJudgmentDoc();}export function evaluationSection(){return getJudgmentDoc()['evaluation'];}export function factoryJudgmentDoc(){return structuredClone(withFactoryRulePacks(FACTORY));}export function readUserJudgmentDocView(){probeUserDoc();if(userState)return{'user_path':userJudgmentDocPath(),'exists':!![],'version':EXPECTED_JUDGMENT_VERSION,'doc':structuredClone(userState['doc'])};return{'user_path':userJudgmentDocPath(),'exists':![],'version':EXPECTED_JUDGMENT_VERSION,'doc':factoryJudgmentDoc()};}export function judgmentStatus(){probeUserDoc();const a=effective(),b={};for(const c of JUDGMENT_SECTION_NAMES){const d=a[c];if(c==='rules'&&isPlainObject(d)){const e=d['domains']??{};b[c]=Object['values'](e)['reduce']((f,g)=>f+(Array['isArray'](g['rules'])?g['rules']['length']:0x0),0x0);continue;}b[c]=Array['isArray'](d)?d['length']:isPlainObject(d)?Object['keys'](d)['length']:0x0;}return{'version':a['version'],'factory_path':FACTORY_PATH,'user_path':userJudgmentDocPath(),'user_doc_loaded':userState!==null,'user_mtime':userState?new Date(userState['mtimeMs'])['toISOString']():null,'last_reload_error':lastReloadError,'user_doc':userState?structuredClone(userState['doc']):null,'persona_fragment_loaded':layerSlots['persona']!==null,'industry_overlay_loaded':layerSlots['industry']!==null,'layer_errors':{'persona':layerErrors['persona'],'industry':layerErrors['industry']},'disable_trace':judgmentDisableTrace(),'sections':b,'overrides':judgmentOverrides()};}function jsonEqual(c,d){if(c===d)return!![];if(Array['isArray'](c)&&Array['isArray'](d))return JSON['stringify'](c)===JSON['stringify'](d);if(isPlainObject(c)&&isPlainObject(d)){const e=Object['keys'](c);if(e['length']!==Object['keys'](d)['length'])return![];return e['every'](f=>f in d&&jsonEqual(c[f],d[f]));}return![];}function collectChanges(a,c,d,e){if(isPlainObject(c)){const f=isPlainObject(a)?a:{};for(const [g,h]of Object['entries'](c)){collectChanges(f[g],h,d?d+'.'+g:g,e);}return;}!jsonEqual(a,c)&&e['push']({'path':d||'(root)','old':a===undefined?null:a,'new':c});}export function patchUserJudgmentDoc(a){const b=userJudgmentDocPath(),c=join(dirname(b),'judgment.backup.json'),d=resolveUserDocPath();if(!isPlainObject(a))throw new Error('\x27patch\x27\x20must\x20be\x20a\x20partial\x20judgment\x20document\x20object\x20(e.g.\x20{\x22evaluation\x22:\x20{\x22weights\x22:\x20{…}}})');if(a['version']!==undefined&&a['version']!==EXPECTED_JUDGMENT_VERSION)throw new Error('patch.version:\x20unsupported\x20version\x20'+String(a['version'])+'\x20(expected\x20'+EXPECTED_JUDGMENT_VERSION+')');const {version:f,...g}=a;let h;try{h=JudgmentFragmentSchema['parse'](g);}catch(s){throw new Error('patch\x20rejected:\x20'+(s instanceof z['ZodError']?zodMessage(s):s instanceof Error?s['message']:String(s)));}if(Object['keys'](h)['length']===0x0)throw new Error('\x27patch\x27\x20is\x20empty\x20—\x20nothing\x20to\x20apply\x20(sections:\x20'+JUDGMENT_SECTION_NAMES['join'](',\x20')+')');let i=null,j=![];try{const t=readFileSync(d,'utf-8');j=!![];const u=JSON['parse'](t);i=JudgmentDocInputSchema['parse'](u);}catch(v){if(j)throw new Error('the\x20current\x20user\x20document\x20is\x20not\x20a\x20valid\x20judgment\x20document\x20('+(v instanceof Error?v['message']:String(v))+')\x20—\x20fix\x20or\x20remove\x20'+d+'\x20by\x20hand\x20first');i=null;}const k=mergeJudgmentValues(i??{'version':EXPECTED_JUDGMENT_VERSION},h);k['version']=EXPECTED_JUDGMENT_VERSION;const l=withFactoryRulePacks(mergeJudgmentValues(FACTORY,k)),m=unknownDimensionKey(l)??unknownRuleRef(l)??unknownExposureRef(l)??unknownGameRef(l)??unknownScorecardRef(l)??unknownRoleIntentRef(l);if(m)throw new Error('patch\x20rejected:\x20'+m);const n=JudgmentDocSchema['safeParse'](l);if(!n['success'])throw new Error('patch\x20rejected:\x20schema:\x20'+zodMessage(n['error']));const o=judgmentDocWarnings(l),p=[];collectChanges(i??{},h,'',p);if(p['length']===0x0)return{'applied':!![],'user_path':b,'backup_path':null,'version':EXPECTED_JUDGMENT_VERSION,'changed':p,'reload_error':null,'warnings':o};const q=JSON['stringify'](k,null,0x2)+'\x0a';mkdirSync(dirname(b),{'recursive':!![]});if(j)copyFileSync(d,c);const r=b+'.tmp';writeFileSync(r,q,'utf-8'),renameSync(r,b);try{userState={'raw':q,'mtimeMs':statSync(b)['mtimeMs'],'doc':k},lastReloadError=null;}catch(w){lastReloadError=w instanceof Error?w['message']:String(w);}return invalidate(),{'applied':!![],'user_path':b,'backup_path':j?c:null,'version':EXPECTED_JUDGMENT_VERSION,'changed':p,'reload_error':lastReloadError,'warnings':o};}
|