@wowok/agent-mcp 3.4.0 → 3.4.2
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/README.md +8 -0
- package/dist/chain-semantics/composition-truth.d.ts +102 -0
- package/dist/chain-semantics/composition-truth.js +1 -0
- package/dist/chain-semantics/eval-order.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/index.d.ts +1 -0
- package/dist/chain-semantics/index.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/blueprint-view.d.ts +3 -3
- package/dist/composition/blueprint-view.js +1 -1
- package/dist/composition/compile.d.ts +24 -3
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.d.ts +206 -0
- package/dist/composition/emit-phases.js +1 -0
- package/dist/composition/generate.d.ts +40 -0
- package/dist/composition/generate.js +1 -0
- package/dist/composition/guard-fill.d.ts +44 -0
- package/dist/composition/guard-fill.js +1 -0
- package/dist/composition/inflight.d.ts +20 -2
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/input-normalize.d.ts +15 -0
- package/dist/composition/input-normalize.js +1 -0
- package/dist/composition/materialize.d.ts +18 -13
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.d.ts +35 -0
- package/dist/composition/mode-gates.js +1 -0
- package/dist/composition/param-disclosure.js +1 -1
- package/dist/composition/plan-retry-ledger.d.ts +21 -0
- package/dist/composition/plan-retry-ledger.js +1 -0
- package/dist/composition/plan.d.ts +7 -2
- package/dist/composition/plan.js +1 -1
- package/dist/composition/product-card.d.ts +94 -0
- package/dist/composition/product-card.js +1 -0
- package/dist/composition/supply-chain-emit.d.ts +46 -0
- package/dist/composition/supply-chain-emit.js +1 -0
- package/dist/config/config-audit.spec.js +1 -1
- package/dist/config/config-warnings.d.ts +2 -0
- package/dist/config/config-warnings.js +1 -0
- package/dist/config/exposure.d.ts +2 -2
- package/dist/config/judgment.d.ts +31 -5
- package/dist/config/judgment.js +1 -1
- package/dist/config/judgment.spec.js +1 -1
- package/dist/config/match-policy-file.d.ts +34 -0
- package/dist/config/match-policy-file.js +1 -0
- package/dist/config/match-policy-file.spec.d.ts +1 -0
- package/dist/config/match-policy-file.spec.js +1 -0
- package/dist/config/rule-engine.d.ts +5 -5
- package/dist/config/rule-engine.js +1 -1
- package/dist/config/runtime.d.ts +0 -1
- package/dist/config/runtime.js +1 -1
- package/dist/config/severity.d.ts +0 -2
- package/dist/config/severity.js +1 -1
- package/dist/config/store-policy.spec.js +1 -1
- package/dist/config/template-params.d.ts +42 -0
- package/dist/config/template-params.js +1 -0
- package/dist/config/template-params.spec.d.ts +1 -0
- package/dist/config/template-params.spec.js +1 -0
- package/dist/data/api/api.spec.js +1 -1
- package/dist/data/api/server.js +1 -1
- package/dist/data/projection/store.d.ts +2 -1
- package/dist/data/projection/store.js +1 -1
- package/dist/data/projection/types.d.ts +22 -0
- package/dist/data/sync/cdc.d.ts +1 -2
- package/dist/data/sync/cdc.js +1 -1
- package/dist/evaluation/acceptance.d.ts +8 -0
- package/dist/evaluation/acceptance.js +1 -1
- package/dist/evaluation/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/capability.d.ts +2 -0
- package/dist/evaluation/category-match-rules.d.ts +0 -1
- package/dist/evaluation/category-match-rules.js +1 -1
- package/dist/evaluation/composer.d.ts +25 -0
- package/dist/evaluation/composer.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/extract.d.ts +7 -0
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/game-strategy.d.ts +0 -3
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/match-operation.d.ts +9 -0
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/match-policy-resolver.d.ts +9 -0
- package/dist/evaluation/match-policy-resolver.js +1 -0
- package/dist/evaluation/match-policy.d.ts +3 -1
- package/dist/evaluation/match-policy.js +1 -1
- package/dist/evaluation/region.d.ts +0 -6
- package/dist/evaluation/region.js +1 -1
- package/dist/evaluation/standards.d.ts +2 -1
- package/dist/evaluation/standards.js +1 -1
- package/dist/evaluation/structured-lines.d.ts +8 -0
- package/dist/evaluation/structured-lines.js +1 -0
- package/dist/evaluation/types.d.ts +6 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/capability-manifest.d.ts +1 -0
- package/dist/extensions/capability-manifest.js +1 -1
- package/dist/extensions/capability.d.ts +91 -0
- package/dist/extensions/capability.js +1 -0
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.d.ts +13 -0
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/extensions/registry.d.ts +0 -2
- package/dist/extensions/registry.js +1 -1
- package/dist/goal/GoalEngine.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/facts.js +1 -1
- package/dist/graph/onchain/order-status.d.ts +0 -1
- package/dist/graph/onchain/order-status.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/harness/verify.d.ts +0 -3
- package/dist/harness/verify.js +1 -1
- package/dist/intent/types.d.ts +0 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/detectors.js +1 -1
- package/dist/keeper/types.d.ts +0 -1
- package/dist/keeper/types.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +1 -0
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +6 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-puzzle.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +4 -3
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +21 -2
- package/dist/knowledge/baselines/rules/oracle.json +120 -0
- package/dist/knowledge/baselines/rules/plan.json +384 -17
- package/dist/knowledge/baselines/rules/progress.json +20 -2
- package/dist/knowledge/builtin-templates.d.ts +28 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/component-schema.js +1 -1
- package/dist/knowledge/contact-templates.d.ts +0 -1
- package/dist/knowledge/contact-templates.js +1 -1
- package/dist/knowledge/dynamic-pricing.js +1 -1
- package/dist/knowledge/fee-param-bindings.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +1 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/game-scenarios.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-binding-table.d.ts +52 -0
- package/dist/knowledge/guard-binding-table.js +1 -0
- package/dist/knowledge/guard-binding-verifier.d.ts +30 -0
- package/dist/knowledge/guard-binding-verifier.js +1 -0
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-blueprint.d.ts +68 -0
- package/dist/knowledge/guard-blueprint.js +1 -0
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-host-context.d.ts +24 -0
- package/dist/knowledge/guard-host-context.js +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +3 -0
- package/dist/knowledge/guard-node-gates.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +11 -0
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.d.ts +6 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.d.ts +38 -0
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/object-dependency.d.ts +31 -0
- package/dist/knowledge/object-dependency.js +1 -0
- package/dist/knowledge/onchain-constants.d.ts +2 -0
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/param-schema.d.ts +23 -0
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/path-oracle/coverage.d.ts +16 -0
- package/dist/knowledge/path-oracle/coverage.js +1 -0
- package/dist/knowledge/path-oracle/index.d.ts +5 -0
- package/dist/knowledge/path-oracle/index.js +1 -0
- package/dist/knowledge/path-oracle/products/food-delivery.d.ts +2 -0
- package/dist/knowledge/path-oracle/products/food-delivery.js +1 -0
- package/dist/knowledge/path-oracle/schema.d.ts +188 -0
- package/dist/knowledge/path-oracle/schema.js +1 -0
- package/dist/knowledge/pattern-resolutions.d.ts +2 -0
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/protocol-facts.js +1 -1
- package/dist/knowledge/requirement-families.d.ts +13 -0
- package/dist/knowledge/requirement-families.js +1 -0
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +1 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/semantic-ir.d.ts +4 -0
- package/dist/knowledge/semantic-ir.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/sku-name-gate.d.ts +17 -0
- package/dist/knowledge/sku-name-gate.js +1 -0
- package/dist/knowledge/supply-chain.d.ts +9 -0
- package/dist/knowledge/supply-chain.js +1 -1
- package/dist/knowledge/template-loader.d.ts +14 -6
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-nav.d.ts +3 -1
- package/dist/knowledge/template-nav.js +1 -1
- package/dist/knowledge/template-prose.d.ts +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +62 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-test-profiles.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +5 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/customer-interest.d.ts +4 -0
- package/dist/participation/customer-interest.js +1 -1
- package/dist/participation/node-action-advisor.d.ts +4 -0
- package/dist/participation/node-action-advisor.js +1 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/participation/time-window.d.ts +11 -0
- package/dist/participation/time-window.js +1 -1
- package/dist/persona/address-format.d.ts +0 -1
- package/dist/persona/address-format.js +1 -1
- package/dist/persona/bridge.js +1 -1
- package/dist/persona/index.d.ts +0 -2
- package/dist/persona/index.js +1 -1
- package/dist/persona/model.js +1 -1
- package/dist/persona/persona-audit.spec.js +1 -1
- package/dist/persona/types.d.ts +6 -0
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +2 -2
- package/dist/playbooks/service-build/intent-analyzer.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +50 -23
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +2 -0
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +8 -0
- 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/reverse-mapping.d.ts +6 -0
- package/dist/playbooks/service-build/reverse-mapping.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +1 -0
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/playbooks/service-build/workflow-design-assessment.d.ts +10 -1
- package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/repository.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +104 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +15 -6
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/base.d.ts +256 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +32 -6
- package/dist/schema/call/demand.d.ts +15 -6
- package/dist/schema/call/demand.js +1 -1
- package/dist/schema/call/guard.d.ts +8 -8
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.d.ts +3 -0
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +32 -8
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +26 -8
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/payment.d.ts +20 -8
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.d.ts +330 -114
- package/dist/schema/call/permission.js +1 -1
- package/dist/schema/call/personal.d.ts +10 -4
- package/dist/schema/call/personal.js +1 -1
- package/dist/schema/call/progress.d.ts +16 -4
- package/dist/schema/call/proof.js +1 -1
- package/dist/schema/call/reward.d.ts +10 -4
- 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 +143 -45
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +15 -6
- package/dist/schema/call/treasury.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +61 -0
- package/dist/schema/config/index.js +1 -1
- package/dist/schema/envelope-unify.d.ts +4 -0
- package/dist/schema/envelope-unify.js +1 -0
- package/dist/schema/evaluation/index.d.ts +216 -19
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +47 -0
- package/dist/schema/goal/planning.d.ts +115 -1
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +137 -6
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/industry-pack/modes.d.ts +6 -6
- package/dist/schema/keeper/index.d.ts +26 -0
- package/dist/schema/local/index.d.ts +137 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.d.ts +6 -0
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +26 -0
- package/dist/schema/operations.d.ts +345 -84
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +2907 -640
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +145 -4
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +266 -73
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +1 -1
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/permission-machine-check.d.ts +2 -0
- package/dist/schema/utils/permission-machine-check.js +1 -1
- package/dist/schema/watch/index.d.ts +16 -0
- package/dist/schema/watch/index.js +1 -1
- package/dist/schema/workflow/index.d.ts +2 -2
- package/dist/schema/workflow/index.js +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +94 -0
- package/dist/schemas/benchmark_migration_operation.output.json +338 -9
- package/dist/schemas/benchmark_migration_operation.schema.json +27 -2
- package/dist/schemas/bridge_operation.output.json +94 -0
- package/dist/schemas/config_operation.output.json +352 -0
- package/dist/schemas/config_operation.schema.json +20 -2
- package/dist/schemas/evaluation_operation.output.json +570 -4
- package/dist/schemas/evaluation_operation.schema.json +194 -3
- package/dist/schemas/goal_operation.schema.json +183 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +621 -0
- package/dist/schemas/industry_pack_operation.schema.json +20 -2
- package/dist/schemas/keeper_operation.output.json +94 -0
- package/dist/schemas/local_cache_operation.output.json +94 -0
- package/dist/schemas/local_history_operation.output.json +94 -0
- package/dist/schemas/local_info_operation.output.json +94 -0
- package/dist/schemas/local_mark_operation.output.json +94 -0
- package/dist/schemas/messenger_operation.output.json +94 -0
- package/dist/schemas/monitor_events.output.json +94 -0
- package/dist/schemas/monitor_subscription.output.json +94 -0
- package/dist/schemas/onchain_events.output.json +94 -0
- package/dist/schemas/onchain_operations.output.json +313 -1
- package/dist/schemas/onchain_operations.schema.json +1265 -671
- package/dist/schemas/onchain_operations_allocation.schema.json +30 -15
- package/dist/schemas/onchain_operations_arbitration.schema.json +9 -2
- package/dist/schemas/onchain_operations_contact.schema.json +8 -1
- package/dist/schemas/onchain_operations_demand.schema.json +29 -14
- package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -1
- package/dist/schemas/onchain_operations_guard.schema.json +290 -105
- package/dist/schemas/onchain_operations_machine.schema.json +49 -34
- package/dist/schemas/onchain_operations_order.schema.json +63 -40
- package/dist/schemas/onchain_operations_payment.schema.json +26 -11
- package/dist/schemas/onchain_operations_permission.schema.json +362 -235
- package/dist/schemas/onchain_operations_personal.schema.json +27 -15
- package/dist/schemas/onchain_operations_progress.schema.json +45 -30
- package/dist/schemas/onchain_operations_proof.schema.json +9 -2
- package/dist/schemas/onchain_operations_repository.schema.json +8 -1
- package/dist/schemas/onchain_operations_reward.schema.json +32 -17
- package/dist/schemas/onchain_operations_service.schema.json +232 -125
- package/dist/schemas/onchain_operations_treasury.schema.json +32 -17
- package/dist/schemas/onchain_table_data.output.json +258 -6
- package/dist/schemas/onchain_table_data.schema.json +92 -52
- package/dist/schemas/persona_operation.output.json +7752 -0
- package/dist/schemas/persona_operation.schema.json +1232 -4
- package/dist/schemas/query_toolkit.output.json +756 -116
- package/dist/schemas/query_toolkit.schema.json +138 -7
- package/dist/schemas/schema_query.schema.json +1 -1
- package/dist/schemas/watch_operation.output.json +83 -0
- package/dist/schemas/wip_file.output.json +8 -0
- package/dist/schemas/workflow_operation.schema.json +2 -2
- package/dist/tools/handlers/benchmark-migration.d.ts +20 -3
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/evaluation.spec.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +30 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/persona.js +1 -1
- package/dist/tools/handlers/query.d.ts +8 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/winner-derivation.d.ts +20 -0
- package/dist/tools/handlers/winner-derivation.js +1 -0
- package/dist/tools/handlers/wip-upload.js +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/evaluation.js +1 -1
- package/dist/tools/registry/identity.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/transport-integrity.d.ts +7 -0
- package/dist/tools/transport-integrity.js +1 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wrap.d.ts +5 -0
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
- package/dist/extensions/business-modules.d.ts +0 -54
- package/dist/extensions/business-modules.js +0 -1
- package/dist/schemas/guard-templates.json +0 -379
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createHash}from'node:crypto';export const POLICY_WEIGHT_RULE_IDS=['region','industry','price','trust','capabilities','tags','acceptance'];export const PRESET_MATCH_POLICIES={'default':{'policy_id':'default','version':0x1,'unknown_policy':'neutral_score'},'retail':{'policy_id':'retail','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0xa,'industry':0xf,'price':0x19,'trust':0xf,'capabilities':0x1e,'tags':0x5}},'life_service':{'policy_id':'life_service','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0x14,'industry':0xf,'price':0xa,'trust':0x19,'capabilities':0x19,'tags':0x5}},'trust_first':{'policy_id':'trust_first','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'arb','op':'gte','value':0x1}],'weights':{'trust':0x1e,'capabilities':0x19,'region':0xa,'industry':0xa,'price':0xa,'tags':0x5}},'cross_border':{'policy_id':'cross_border','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'wip_verify','op':'eq','value':!![]}],'weights':{'capabilities':0x19,'trust':0x14,'industry':0x14,'tags':0xf,'price':0xf,'region':0x5}},'cheap_and_fast':{'policy_id':'cheap_and_fast','version':0x1,'unknown_policy':'drop','gates':[{'dim':'price','op':'lte','params':{'from_budget':!![],'hard':!![]}}],'weights':{'price':0x23,'trust':0xf,'capabilities':0xf,'region':0xa,'industry':0xa,'tags':0x5}},'enterprise':{'policy_id':'enterprise','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'machine','op':'eq','value':!![]},{'dim':'buy_guard','op':'eq','value':!![]}],'weights':{'capabilities':0x1e,'trust':0x19,'industry':0xf,'acceptance':0xa,'price':0xa,'region':0x5,'tags':0x5}},'supplier_hunting':{'policy_id':'supplier_hunting','version':0x1,'direction':'supply_to_demand','unknown_policy':'neutral_score'}};function normalizePresetId(a){return a['trim']()['toLowerCase']()['replace'](/-/g,'_');}export function resolveMatchPolicy(a,b){if(a===undefined)return undefined;let c;if(typeof a==='string'){const e=PRESET_MATCH_POLICIES[normalizePresetId(a)];if(!e)throw new Error('unknown\x20match_policy\x20preset\x20\x27'+a+'\x27\x20—\x20available:\x20'+Object['keys'](PRESET_MATCH_POLICIES)['join'](',\x20')+'\x20(or\x20pass\x20an\x20inline\x20policy\x20object)');c=e;}else{if(typeof a!=='object'||a===null||typeof a['policy_id']!=='string'||a['policy_id']['length']===0x0)throw new Error('inline\x20match_policy\x20must\x20be\x20an\x20object\x20with\x20a\x20non-empty\x20string\x20policy_id');c=a;}const d=c['direction']??'demand_to_supply';if(d!==b)throw new Error('match_policy\x20\x27'+c['policy_id']+'\x27\x20has\x20direction\x20\x27'+d+'\x27\x20and\x20cannot\x20drive\x20a\x20\x27'+b+'\x27\x20query');return c;}function bigIntValue(a){if(typeof a==='bigint')return a;if(typeof a==='number'&&Number['isInteger'](a))return BigInt(a);if(typeof a==='string'&&/^-?\d+$/['test'](a['trim']()))return BigInt(a['trim']());return undefined;}function asStringArray(a){if(Array['isArray'](a))return a['map'](String);if(typeof a==='string')return[a];return undefined;}function minSalePrice(a){if(!a['sales']||a['sales']['length']===0x0)return undefined;let b;for(const c of a['sales']){const d=bigIntValue(c['price']);if(d===undefined)continue;if(b===undefined||d<b)b=d;}return b;}function evalGate(a,b,c){const d=a['op']??'eq';switch(a['dim']){case'live':{const e=a['value']===undefined?!![]:Boolean(a['value']);if(b['bPublished']===undefined&&b['bPaused']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'published/paused\x20flags\x20absent\x20from\x20candidate\x20payload'};const f=(b['bPublished']??![])&&!(b['bPaused']??![]);return f===e?{'dim':a['dim'],'status':'satisfied','reason':'live='+f}:{'dim':a['dim'],'status':'violated','reason':'live='+f+',\x20gate\x20requires\x20'+e};}case'price':{if(d!=='lte'&&d!=='gte')return null;let g=bigIntValue(a['value']);if(g===undefined&&a['params']?.['from_budget']===!![])g=c['budgetWei'];if(g===undefined)return{'dim':a['dim'],'status':'unknown','reason':'no\x20gate\x20value\x20and\x20no\x20request\x20budget\x20to\x20bind\x20from_budget'};const h=minSalePrice(b);if(h===undefined)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20exposes\x20no\x20sale\x20price'};const i=d==='lte'?h<=g:h>=g;return i?{'dim':a['dim'],'status':'satisfied','reason':'price_min\x20'+h+'\x20'+d+'\x20'+g}:{'dim':a['dim'],'status':'violated','reason':'price_min\x20'+h+'\x20fails\x20'+d+'\x20'+g};}case'arb':{if(d!=='gte')return null;const j=bigIntValue(a['value']);if(j===undefined)return null;if(!b['arbitrations'])return{'dim':a['dim'],'status':'unknown','reason':'arbitration\x20list\x20absent\x20from\x20candidate\x20payload'};const k=BigInt(b['arbitrations']['length'])>=j;return k?{'dim':a['dim'],'status':'satisfied','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20>=\x20'+j}:{'dim':a['dim'],'status':'violated','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20<\x20'+j};}case'compensation':{if(d!=='gte')return null;const l=bigIntValue(a['value']);if(l===undefined)return null;const m=bigIntValue(b['compensation_fund']);if(m===undefined)return{'dim':a['dim'],'status':'unknown','reason':'compensation_fund\x20absent\x20from\x20candidate\x20payload'};return m>=l?{'dim':a['dim'],'status':'satisfied','reason':'compensation_fund\x20'+m+'\x20>=\x20'+l}:{'dim':a['dim'],'status':'violated','reason':'compensation_fund\x20'+m+'\x20<\x20'+l};}case'machine':case'messenger':case'buy_guard':{const n=a['value']===undefined?!![]:Boolean(a['value']),o=a['dim']==='machine'?b['machine']:a['dim']==='messenger'?b['um']:b['buy_guard'];if(o===undefined)return{'dim':a['dim'],'status':'unknown','reason':a['dim']+'\x20binding\x20absent\x20from\x20candidate\x20payload'};const p=o!==null;return p===n?{'dim':a['dim'],'status':'satisfied','reason':a['dim']+'\x20bound='+p}:{'dim':a['dim'],'status':'violated','reason':a['dim']+'\x20bound='+p+',\x20gate\x20requires\x20'+n};}case'wip_verify':{const q=a['value']===undefined?!![]:Boolean(a['value']);if(!b['sales'])return{'dim':a['dim'],'status':'unknown','reason':'sales\x20absent\x20from\x20candidate\x20payload'};const r=b['sales']['some'](t=>typeof t['wip_hash']==='string'&&t['wip_hash']['length']>0x0);return r===q?{'dim':a['dim'],'status':'satisfied','reason':'has_wip_verification='+r}:{'dim':a['dim'],'status':'violated','reason':'has_wip_verification='+r+',\x20gate\x20requires\x20'+q};}case'text':{if(d!=='must_contain'&&d!=='must_not_contain')return null;const t=asStringArray(a['value']);if(!t||t['length']===0x0)return null;const u=[b['description']??'',...(b['sales']??[])['map'](w=>w['name']??'')]['join']('\x20')['toLowerCase']();if(u['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20carries\x20no\x20text\x20to\x20match'};if(d==='must_contain'){const w=t['filter'](x=>!u['includes'](x['toLowerCase']()));return w['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+t['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+w['join'](',\x20')};}const v=t['filter'](x=>u['includes'](x['toLowerCase']()));return v['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+v['join'](',\x20')};}case'owner':{if(d!=='in'&&d!=='not_in')return null;const x=asStringArray(a['value']);if(!x)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20candidate\x20payload'};const y=x['includes'](b['owner']),z=d==='in'?y:!y;return z?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+d+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+d+'\x20list'};}default:return null;}}function applyGates(a,b,d,e){const f=a['unknown_policy']??'neutral_score',g=new Set(),h=[],i=[],j=[];for(const m of a['gates']??[]){d(m,e)===null&&g['add']('gate\x20dim\x20\x27'+m['dim']+'\x27\x20(op\x20\x27'+(m['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');}const k=new Set(),l=new Set();for(const n of a['excludes']??[]){if(n['dim']==='blacklist'){for(const p of n['objects']??[])k['add'](p);for(const q of n['owners']??[])l['add'](q);}else g['add']('exclude\x20dim\x20\x27'+n['dim']+'\x27\x20not\x20enforceable\x20client-side\x20(no\x20local\x20facet)');}for(const r of b){if(k['has'](r['object'])){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20object'});continue;}const s=r['owner'];if(s!==undefined&&l['has'](s)){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20owner'});continue;}let t=!![];for(const u of a['gates']??[]){const v=d(u,r);if(v===null){g['add']('gate\x20dim\x20\x27'+u['dim']+'\x27\x20(op\x20\x27'+(u['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');continue;}if(v['status']==='violated'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+':\x20'+v['reason']}),t=![];break;}if(v['status']==='unknown'){if(f==='drop'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+'\x20unknown\x20('+v['reason']+')\x20and\x20unknown_policy=drop'}),t=![];break;}j['push']({'object':r['object'],'dim':v['dim'],'reason':v['reason']});}}if(t)h['push'](r);}return{'passed':h,'dropped':i,'unknown_notes':j,'ignored':[...g]['sort']()};}export function applyPolicyGates(a,b,c={}){return applyGates(a,b,(d,e)=>evalGate(d,e,c),{'object':'','description':'','location':''});}function evalDemandGate(a,b){const c=a['op']??'eq';switch(a['dim']){case'text':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const e=asStringArray(a['value']);if(!e||e['length']===0x0)return null;const f=(b['description']??'')['toLowerCase']();if(f['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20description\x20text'};if(c==='must_contain'){const h=e['filter'](i=>!f['includes'](i['toLowerCase']()));return h['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+e['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+h['join'](',\x20')};}const g=e['filter'](i=>f['includes'](i['toLowerCase']()));return g['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+g['join'](',\x20')};}case'location':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const i=asStringArray(a['value']);if(!i||i['length']===0x0)return null;const j=(b['location']??'')['toLowerCase']();if(j['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20location'};if(c==='must_contain'){const l=i['filter'](m=>!j['includes'](m['toLowerCase']()));return l['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+i['length']+'\x20term(s)\x20present\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'location\x20missing\x20term(s):\x20'+l['join'](',\x20')};}const k=i['filter'](m=>j['includes'](m['toLowerCase']()));return k['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20in\x20location:\x20'+k['join'](',\x20')};}case'reward':{if(c!=='gte'&&c!=='lte')return null;const m=bigIntValue(a['value']);if(m===undefined)return null;if(b['rewards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'reward\x20list\x20absent\x20from\x20demand\x20payload'};const n=BigInt(b['rewards']['length']),o=c==='gte'?n>=m:n<=m;return o?{'dim':a['dim'],'status':'satisfied','reason':'reward_count\x20'+n+'\x20'+c+'\x20'+m}:{'dim':a['dim'],'status':'violated','reason':'reward_count\x20'+n+'\x20fails\x20'+c+'\x20'+m};}case'messenger':{const p=a['value']===undefined?!![]:Boolean(a['value']);if(b['um']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'messenger\x20binding\x20absent\x20from\x20demand\x20payload'};const q=b['um']!==null;return q===p?{'dim':a['dim'],'status':'satisfied','reason':'messenger\x20bound='+q}:{'dim':a['dim'],'status':'violated','reason':'messenger\x20bound='+q+',\x20gate\x20requires\x20'+p};}case'guard':{const r=a['value']===undefined?!![]:Boolean(a['value']);if(b['guards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'guard\x20list\x20absent\x20from\x20demand\x20payload'};const s=b['guards']['length']>0x0;return s===r?{'dim':a['dim'],'status':'satisfied','reason':'guarded='+s}:{'dim':a['dim'],'status':'violated','reason':'guarded='+s+',\x20gate\x20requires\x20'+r};}case'presenters':{if(c!=='gte'&&c!=='lte')return null;const t=bigIntValue(a['value']);if(t===undefined)return null;if(b['presenters_count']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'presenters_count\x20absent\x20from\x20demand\x20payload'};const u=BigInt(b['presenters_count']),v=c==='gte'?u>=t:u<=t;return v?{'dim':a['dim'],'status':'satisfied','reason':'presenters_count\x20'+u+'\x20'+c+'\x20'+t}:{'dim':a['dim'],'status':'violated','reason':'presenters_count\x20'+u+'\x20fails\x20'+c+'\x20'+t};}case'owner':{if(c!=='in'&&c!=='not_in')return null;const w=asStringArray(a['value']);if(!w)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20demand\x20payload'};const x=w['includes'](b['owner']),y=c==='in'?x:!x;return y?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+c+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+c+'\x20list'};}default:return null;}}export function applyDemandPolicyGates(a,b){return applyGates(a,b,evalDemandGate,{'object':'','description':'','location':''});}export function policyToInjection(a){const b={},c=[],d=new Set(POLICY_WEIGHT_RULE_IDS);for(const [e,f]of Object['entries'](a['weights']??{})){if(d['has'](e))b[e]=f;else c['push']('weight\x20on\x20unregistered\x20rule\x20\x27'+e+'\x27\x20ignored\x20(client\x20engine\x20has:\x20'+POLICY_WEIGHT_RULE_IDS['join'](',\x20')+')');}return{'injection':{'overrides':{'rules':Object['fromEntries'](Object['entries'](b)['map'](([g,h])=>[g,{'weight':h}]))}},'applied':b,'ignored':c['sort']()};}export function applyPolicyRerank(a,b){const c=[],d=[...a]['sort']((k,l)=>l['result']['total']-k['result']['total']||k['service']['object']['localeCompare'](l['service']['object']));let e=d,f=![],g=0x0;const h=b['rerank']?.['diversity'];if(h){if(h['by']==='permission')c['push']('rerank.diversity\x20by\x20\x27permission\x27\x20not\x20enforceable\x20client-side\x20(no\x20permission\x20facet\x20on\x20candidates);\x20use\x20\x27owner\x27');else{const k=new Map(),l=[],n=[];for(const o of e){const p=o['service']['owner'];if(p===undefined){l['push'](o);continue;}const q=k['get'](p)??0x0;q<h['max_per_group']?(k['set'](p,q+0x1),l['push'](o)):n['push'](o);}e=[...l,...n],f=!![],g=n['length'];}}if(b['rerank']?.['explore']!==undefined)c['push']('rerank.explore\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20local\x20bandit\x20state)');if(b['rerank']?.['llm']!==undefined)c['push']('rerank.llm\x20not\x20enforceable\x20in\x20this\x20build\x20(deterministic\x20kernel\x20only)');if(b['rerank']?.['fairness']!==undefined)c['push']('rerank.fairness\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20exposure\x20accounting)');const i=b['output']?.['top_n'],j=i!==undefined?e['slice'](0x0,i):e;return{'matches':j,'order':'total\x20DESC,\x20object_id\x20ASC'+(f?',\x20diversity(owner)<='+h['max_per_group']:''),'diversity_applied':f,'deferred':g,'ignored':c['sort']()};}export function rerankDemandMatches(a,b){const c=applyPolicyRerank(a['map'](e=>({'service':{'object':e['demand']['object'],...e['demand']['owner']!==undefined?{'owner':e['demand']['owner']}:{}},'result':e['result']})),b),d=new Map(a['map'](e=>[e['demand']['object'],e]));return{...c,'matches':c['matches']['map'](e=>d['get'](e['service']['object']))};}function canonicalize(a){if(Array['isArray'](a))return a['map'](canonicalize);if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a)['sort']()){b[c]=canonicalize(a[c]);}return b;}return a;}export function policyHash(a){return createHash('sha256')['update'](JSON['stringify'](canonicalize(a)))['digest']('hex');}export function buildPolicyEffect(a,b,c,d,e=[]){const f=[...new Set([...b['ignored'],...c['ignored'],...d['ignored'],...e])]['sort']();if(a['recall']!==undefined)f['push']('section\x20\x27recall\x27\x20is\x20a\x20server-side\x20directive\x20—\x20not\x20sent\x20upstream\x20from\x20a\x20private\x20policy;\x20recall\x20stays\x20on\x20the\x20route\x20in\x20effect');if(a['verify']!==undefined)f['push']('section\x20\x27verify\x27\x20not\x20enforceable\x20client-side\x20in\x20this\x20build');return{'policy_id':a['policy_id'],'version':a['version'],'direction':a['direction']??'demand_to_supply','policy_hash':policyHash(a),'unknown_policy':a['unknown_policy']??'neutral_score','dropped':b['dropped'],'unknown_kept':b['unknown_notes'],'weights_applied':c['applied'],'rerank':d['order'],'deferred_by_diversity':d['deferred'],'ignored':f['sort'](),'privacy':'client_side_only\x20—\x20the\x20policy\x20and\x20its\x20hash\x20never\x20leave\x20this\x20device'};}
|
|
1
|
+
import{createHash}from'node:crypto';export const POLICY_WEIGHT_RULE_IDS=['region','industry','price','trust','capabilities','tags','acceptance'];export const PRESET_MATCH_POLICIES={'default':{'policy_id':'default','version':0x1,'unknown_policy':'neutral_score'},'retail':{'policy_id':'retail','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0xa,'industry':0xf,'price':0x19,'trust':0xf,'capabilities':0x1e,'tags':0x5}},'life_service':{'policy_id':'life_service','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0x14,'industry':0xf,'price':0xa,'trust':0x19,'capabilities':0x19,'tags':0x5}},'trust_first':{'policy_id':'trust_first','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'arb','op':'gte','value':0x1}],'weights':{'trust':0x1e,'capabilities':0x19,'region':0xa,'industry':0xa,'price':0xa,'tags':0x5}},'cross_border':{'policy_id':'cross_border','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'wip_verify','op':'eq','value':!![]}],'weights':{'capabilities':0x19,'trust':0x14,'industry':0x14,'tags':0xf,'price':0xf,'region':0x5}},'cheap_and_fast':{'policy_id':'cheap_and_fast','version':0x1,'unknown_policy':'drop','gates':[{'dim':'price','op':'lte','params':{'from_budget':!![],'hard':!![]}}],'weights':{'price':0x23,'trust':0xf,'capabilities':0xf,'region':0xa,'industry':0xa,'tags':0x5}},'enterprise':{'policy_id':'enterprise','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'machine','op':'eq','value':!![]},{'dim':'buy_guard','op':'eq','value':!![]}],'weights':{'capabilities':0x1e,'trust':0x19,'industry':0xf,'acceptance':0xa,'price':0xa,'region':0x5,'tags':0x5}},'supplier_hunting':{'policy_id':'supplier_hunting','version':0x1,'direction':'supply_to_demand','unknown_policy':'neutral_score'}};function normalizePresetId(a){return a['trim']()['toLowerCase']()['replace'](/-/g,'_');}export function resolveMatchPolicy(a,b){if(a===undefined)return undefined;let c;if(typeof a==='string'){const e=PRESET_MATCH_POLICIES[normalizePresetId(a)];if(!e)throw new Error('unknown\x20match_policy\x20preset\x20\x27'+a+'\x27\x20—\x20available:\x20'+Object['keys'](PRESET_MATCH_POLICIES)['join'](',\x20')+'\x20(or\x20pass\x20an\x20inline\x20policy\x20object)');c=e;}else{if(typeof a!=='object'||a===null||typeof a['policy_id']!=='string'||a['policy_id']['length']===0x0)throw new Error('inline\x20match_policy\x20must\x20be\x20an\x20object\x20with\x20a\x20non-empty\x20string\x20policy_id');c=a;}const d=c['direction']??'demand_to_supply';if(d!==b)throw new Error('match_policy\x20\x27'+c['policy_id']+'\x27\x20has\x20direction\x20\x27'+d+'\x27\x20and\x20cannot\x20drive\x20a\x20\x27'+b+'\x27\x20query');return c;}function bigIntValue(a){if(typeof a==='bigint')return a;if(typeof a==='number'&&Number['isInteger'](a))return BigInt(a);if(typeof a==='string'&&/^-?\d+$/['test'](a['trim']()))return BigInt(a['trim']());return undefined;}function asStringArray(a){if(Array['isArray'](a))return a['map'](String);if(typeof a==='string')return[a];return undefined;}function minSalePrice(a){if(!a['sales']||a['sales']['length']===0x0)return undefined;let b;for(const c of a['sales']){const d=bigIntValue(c['price']);if(d===undefined)continue;if(b===undefined||d<b)b=d;}return b;}function evalGate(a,b,c){const d=a['op']??'eq';switch(a['dim']){case'live':{const e=a['value']===undefined?!![]:Boolean(a['value']);if(b['bPublished']===undefined&&b['bPaused']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'published/paused\x20flags\x20absent\x20from\x20candidate\x20payload'};const f=(b['bPublished']??![])&&!(b['bPaused']??![]);return f===e?{'dim':a['dim'],'status':'satisfied','reason':'live='+f}:{'dim':a['dim'],'status':'violated','reason':'live='+f+',\x20gate\x20requires\x20'+e};}case'price':{if(d!=='lte'&&d!=='gte')return null;let g=bigIntValue(a['value']);if(g===undefined&&a['params']?.['from_budget']===!![])g=c['budgetWei'];if(g===undefined)return{'dim':a['dim'],'status':'unknown','reason':'no\x20gate\x20value\x20and\x20no\x20request\x20budget\x20to\x20bind\x20from_budget'};const h=minSalePrice(b);if(h===undefined)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20exposes\x20no\x20sale\x20price'};const i=d==='lte'?h<=g:h>=g;return i?{'dim':a['dim'],'status':'satisfied','reason':'price_min\x20'+h+'\x20'+d+'\x20'+g}:{'dim':a['dim'],'status':'violated','reason':'price_min\x20'+h+'\x20fails\x20'+d+'\x20'+g};}case'arb':{if(d!=='gte')return null;const j=bigIntValue(a['value']);if(j===undefined)return null;if(!b['arbitrations'])return{'dim':a['dim'],'status':'unknown','reason':'arbitration\x20list\x20absent\x20from\x20candidate\x20payload'};const k=BigInt(b['arbitrations']['length'])>=j;return k?{'dim':a['dim'],'status':'satisfied','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20>=\x20'+j}:{'dim':a['dim'],'status':'violated','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20<\x20'+j};}case'compensation':{if(d!=='gte')return null;const l=bigIntValue(a['value']);if(l===undefined)return null;const m=bigIntValue(b['compensation_fund']);if(m===undefined)return{'dim':a['dim'],'status':'unknown','reason':'compensation_fund\x20absent\x20from\x20candidate\x20payload'};return m>=l?{'dim':a['dim'],'status':'satisfied','reason':'compensation_fund\x20'+m+'\x20>=\x20'+l}:{'dim':a['dim'],'status':'violated','reason':'compensation_fund\x20'+m+'\x20<\x20'+l};}case'machine':case'messenger':case'buy_guard':{const n=a['value']===undefined?!![]:Boolean(a['value']),o=a['dim']==='machine'?b['machine']:a['dim']==='messenger'?b['um']:b['buy_guard'];if(o===undefined)return{'dim':a['dim'],'status':'unknown','reason':a['dim']+'\x20binding\x20absent\x20from\x20candidate\x20payload'};const p=o!==null;return p===n?{'dim':a['dim'],'status':'satisfied','reason':a['dim']+'\x20bound='+p}:{'dim':a['dim'],'status':'violated','reason':a['dim']+'\x20bound='+p+',\x20gate\x20requires\x20'+n};}case'wip_verify':{const q=a['value']===undefined?!![]:Boolean(a['value']);if(!b['sales'])return{'dim':a['dim'],'status':'unknown','reason':'sales\x20absent\x20from\x20candidate\x20payload'};const r=b['sales']['some'](t=>typeof t['wip_hash']==='string'&&t['wip_hash']['length']>0x0);return r===q?{'dim':a['dim'],'status':'satisfied','reason':'has_wip_verification='+r}:{'dim':a['dim'],'status':'violated','reason':'has_wip_verification='+r+',\x20gate\x20requires\x20'+q};}case'text':{if(d!=='must_contain'&&d!=='must_not_contain')return null;const t=asStringArray(a['value']);if(!t||t['length']===0x0)return null;const u=[b['description']??'',...(b['sales']??[])['map'](w=>w['name']??'')]['join']('\x20')['toLowerCase']();if(u['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20carries\x20no\x20text\x20to\x20match'};if(d==='must_contain'){const w=t['filter'](x=>!u['includes'](x['toLowerCase']()));return w['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+t['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+w['join'](',\x20')};}const v=t['filter'](x=>u['includes'](x['toLowerCase']()));return v['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+v['join'](',\x20')};}case'owner':{if(d!=='in'&&d!=='not_in')return null;const x=asStringArray(a['value']);if(!x)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20candidate\x20payload'};const y=x['includes'](b['owner']),z=d==='in'?y:!y;return z?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+d+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+d+'\x20list'};}default:return null;}}function applyGates(a,b,d,e){const f=a['unknown_policy']??'neutral_score',g=new Set(),h=[],i=[],j=[];for(const m of a['gates']??[]){d(m,e)===null&&g['add']('gate\x20dim\x20\x27'+m['dim']+'\x27\x20(op\x20\x27'+(m['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');}const k=new Set(),l=new Set();for(const n of a['excludes']??[]){if(n['dim']==='blacklist'){for(const p of n['objects']??[])k['add'](p);for(const q of n['owners']??[])l['add'](q);}else g['add']('exclude\x20dim\x20\x27'+n['dim']+'\x27\x20not\x20enforceable\x20client-side\x20(no\x20local\x20facet)');}for(const r of b){if(k['has'](r['object'])){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20object'});continue;}const s=r['owner'];if(s!==undefined&&l['has'](s)){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20owner'});continue;}let t=!![];for(const u of a['gates']??[]){const v=d(u,r);if(v===null){g['add']('gate\x20dim\x20\x27'+u['dim']+'\x27\x20(op\x20\x27'+(u['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');continue;}if(v['status']==='violated'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+':\x20'+v['reason']}),t=![];break;}if(v['status']==='unknown'){if(f==='drop'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+'\x20unknown\x20('+v['reason']+')\x20and\x20unknown_policy=drop'}),t=![];break;}j['push']({'object':r['object'],'dim':v['dim'],'reason':v['reason']});}}if(t)h['push'](r);}return{'passed':h,'dropped':i,'unknown_notes':j,'ignored':[...g]['sort']()};}export function applyPolicyGates(a,b,c={}){return applyGates(a,b,(d,e)=>evalGate(d,e,c),{'object':'','description':'','location':''});}function evalDemandGate(a,b){const c=a['op']??'eq';switch(a['dim']){case'text':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const e=asStringArray(a['value']);if(!e||e['length']===0x0)return null;const f=(b['description']??'')['toLowerCase']();if(f['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20description\x20text'};if(c==='must_contain'){const h=e['filter'](i=>!f['includes'](i['toLowerCase']()));return h['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+e['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+h['join'](',\x20')};}const g=e['filter'](i=>f['includes'](i['toLowerCase']()));return g['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+g['join'](',\x20')};}case'location':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const i=asStringArray(a['value']);if(!i||i['length']===0x0)return null;const j=(b['location']??'')['toLowerCase']();if(j['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20location'};if(c==='must_contain'){const l=i['filter'](m=>!j['includes'](m['toLowerCase']()));return l['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+i['length']+'\x20term(s)\x20present\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'location\x20missing\x20term(s):\x20'+l['join'](',\x20')};}const k=i['filter'](m=>j['includes'](m['toLowerCase']()));return k['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20in\x20location:\x20'+k['join'](',\x20')};}case'reward':{if(c!=='gte'&&c!=='lte')return null;const m=bigIntValue(a['value']);if(m===undefined)return null;if(b['rewards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'reward\x20list\x20absent\x20from\x20demand\x20payload'};const n=BigInt(b['rewards']['length']),o=c==='gte'?n>=m:n<=m;return o?{'dim':a['dim'],'status':'satisfied','reason':'reward_count\x20'+n+'\x20'+c+'\x20'+m}:{'dim':a['dim'],'status':'violated','reason':'reward_count\x20'+n+'\x20fails\x20'+c+'\x20'+m};}case'messenger':{const p=a['value']===undefined?!![]:Boolean(a['value']);if(b['um']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'messenger\x20binding\x20absent\x20from\x20demand\x20payload'};const q=b['um']!==null;return q===p?{'dim':a['dim'],'status':'satisfied','reason':'messenger\x20bound='+q}:{'dim':a['dim'],'status':'violated','reason':'messenger\x20bound='+q+',\x20gate\x20requires\x20'+p};}case'guard':{const r=a['value']===undefined?!![]:Boolean(a['value']);if(b['guards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'guard\x20list\x20absent\x20from\x20demand\x20payload'};const s=b['guards']['length']>0x0;return s===r?{'dim':a['dim'],'status':'satisfied','reason':'guarded='+s}:{'dim':a['dim'],'status':'violated','reason':'guarded='+s+',\x20gate\x20requires\x20'+r};}case'presenters':{if(c!=='gte'&&c!=='lte')return null;const t=bigIntValue(a['value']);if(t===undefined)return null;if(b['presenters_count']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'presenters_count\x20absent\x20from\x20demand\x20payload'};const u=BigInt(b['presenters_count']),v=c==='gte'?u>=t:u<=t;return v?{'dim':a['dim'],'status':'satisfied','reason':'presenters_count\x20'+u+'\x20'+c+'\x20'+t}:{'dim':a['dim'],'status':'violated','reason':'presenters_count\x20'+u+'\x20fails\x20'+c+'\x20'+t};}case'owner':{if(c!=='in'&&c!=='not_in')return null;const w=asStringArray(a['value']);if(!w)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20demand\x20payload'};const x=w['includes'](b['owner']),y=c==='in'?x:!x;return y?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+c+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+c+'\x20list'};}default:return null;}}export function applyDemandPolicyGates(a,b){return applyGates(a,b,evalDemandGate,{'object':'','description':'','location':''});}export function policyToInjection(a){const b={},c=[],d=new Set(POLICY_WEIGHT_RULE_IDS);for(const [e,f]of Object['entries'](a['weights']??{})){if(d['has'](e))b[e]=f;else c['push']('weight\x20on\x20unregistered\x20rule\x20\x27'+e+'\x27\x20ignored\x20(client\x20engine\x20has:\x20'+POLICY_WEIGHT_RULE_IDS['join'](',\x20')+')');}return{'injection':{'overrides':{'rules':Object['fromEntries'](Object['entries'](b)['map'](([g,h])=>[g,{'weight':h}]))}},'applied':b,'ignored':c['sort']()};}export function applyPolicyRerank(a,b){const c=[],d=[...a]['sort']((k,l)=>l['result']['total']-k['result']['total']||k['service']['object']['localeCompare'](l['service']['object']));let e=d,f=![],g=0x0;const h=b['rerank']?.['diversity'];if(h){if(h['by']==='permission')c['push']('rerank.diversity\x20by\x20\x27permission\x27\x20not\x20enforceable\x20client-side\x20(no\x20permission\x20facet\x20on\x20candidates);\x20use\x20\x27owner\x27');else{const k=new Map(),l=[],n=[];for(const o of e){const p=o['service']['owner'];if(p===undefined){l['push'](o);continue;}const q=k['get'](p)??0x0;q<h['max_per_group']?(k['set'](p,q+0x1),l['push'](o)):n['push'](o);}e=[...l,...n],f=!![],g=n['length'];}}if(b['rerank']?.['explore']!==undefined)c['push']('rerank.explore\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20local\x20bandit\x20state)');if(b['rerank']?.['llm']!==undefined)c['push']('rerank.llm\x20not\x20enforceable\x20in\x20this\x20build\x20(deterministic\x20kernel\x20only)');if(b['rerank']?.['fairness']!==undefined)c['push']('rerank.fairness\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20exposure\x20accounting)');const i=b['output']?.['top_n'],j=i!==undefined?e['slice'](0x0,i):e;return{'matches':j,'order':'total\x20DESC,\x20object_id\x20ASC'+(f?',\x20diversity(owner)<='+h['max_per_group']:''),'diversity_applied':f,'deferred':g,'ignored':c['sort']()};}export function rerankDemandMatches(a,b){const c=applyPolicyRerank(a['map'](e=>({'service':{'object':e['demand']['object'],...e['demand']['owner']!==undefined?{'owner':e['demand']['owner']}:{}},'result':e['result']})),b),d=new Map(a['map'](e=>[e['demand']['object'],e]));return{...c,'matches':c['matches']['map'](e=>d['get'](e['service']['object']))};}function canonicalize(a){if(Array['isArray'](a))return a['map'](canonicalize);if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a)['sort']()){b[c]=canonicalize(a[c]);}return b;}return a;}export function policyHash(a){return createHash('sha256')['update'](JSON['stringify'](canonicalize(a)))['digest']('hex');}export function buildPolicyEffect(a,b,c,d,e=[],f='request'){const g=[...new Set([...b['ignored'],...c['ignored'],...d['ignored'],...e])]['sort']();if(a['recall']!==undefined)g['push']('section\x20\x27recall\x27\x20is\x20a\x20server-side\x20directive\x20—\x20not\x20sent\x20upstream\x20from\x20a\x20private\x20policy;\x20recall\x20stays\x20on\x20the\x20route\x20in\x20effect');if(a['verify']!==undefined)g['push']('section\x20\x27verify\x27\x20not\x20enforceable\x20client-side\x20in\x20this\x20build');return{'policy_id':a['policy_id'],'version':a['version'],'direction':a['direction']??'demand_to_supply','policy_hash':policyHash(a),'policy_source':f,'unknown_policy':a['unknown_policy']??'neutral_score','dropped':b['dropped'],'unknown_kept':b['unknown_notes'],'weights_applied':c['applied'],'rerank':d['order'],'deferred_by_diversity':d['deferred'],'ignored':g['sort'](),'privacy':'client_side_only\x20—\x20the\x20policy\x20and\x20its\x20hash\x20never\x20leave\x20this\x20device'};}
|
|
@@ -7,10 +7,4 @@ export interface Region {
|
|
|
7
7
|
}
|
|
8
8
|
export type RegionRelation = "exact" | "contains" | "overlap" | "compatible" | "mismatch";
|
|
9
9
|
export declare function parseRegion(raw: string): Region;
|
|
10
|
-
export interface RegionValidation {
|
|
11
|
-
region: Region;
|
|
12
|
-
valid: boolean;
|
|
13
|
-
reminder?: string;
|
|
14
|
-
}
|
|
15
|
-
export declare function validateRegionInput(raw: string): RegionValidation;
|
|
16
10
|
export declare function relateRegion(a: Region, b: Region): RegionRelation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const REMOTE_KEYWORDS=['remote','online','anywhere'];export function parseRegion(a){const b=a?.['trim']()??'',c=b['toLowerCase'](),d=REMOTE_KEYWORDS['some'](e=>c['includes'](e));if(d)return{'mode':'remote','raw':b};return{'mode':'physical','raw':b};}export function
|
|
1
|
+
const REMOTE_KEYWORDS=['remote','online','anywhere'];export function parseRegion(a){const b=a?.['trim']()??'',c=b['toLowerCase'](),d=REMOTE_KEYWORDS['some'](e=>c['includes'](e));if(d)return{'mode':'remote','raw':b};return{'mode':'physical','raw':b};}export function relateRegion(c,d){if(c['mode']==='remote'||d['mode']==='remote')return'compatible';const e=normalizePhysical(c['raw']),f=normalizePhysical(d['raw']);if(!e||!f)return'mismatch';if(e===f)return'exact';if(e['includes'](f)||f['includes'](e))return'contains';if(regionRouteRelates(c['raw'],d['raw']))return'contains';if(c['province']&&d['province']&&c['province']===d['province'])return'overlap';return'mismatch';}function regionRouteRelates(a,b){const c=f=>{const g=[],h=f['split'](/->|→/);for(const i of h){for(const j of[i,...i['split'](',')]){const k=normalizePhysical(j);if(k&&!g['includes'](k))g['push'](k);}}return g;},d=c(a),e=c(b);for(const f of d){for(const g of e){if(f===g||f['includes'](g)||g['includes'](f))return!![];}}return![];}function normalizePhysical(a){return a['trim']()['toLowerCase']()['replace'](/\s+/g,'');}
|
|
@@ -6,4 +6,5 @@ export declare function defaultWeights(): Record<string, number>;
|
|
|
6
6
|
export declare function dimensionLabel(ruleId: string): string;
|
|
7
7
|
export declare function severityDeduction(severity: string): number;
|
|
8
8
|
export declare function levelFromScore(score: number): string;
|
|
9
|
-
export declare function gradeWord(side: "trust" | "risk", score: number): string;
|
|
9
|
+
export declare function gradeWord(side: "trust" | "risk" | "match", score: number): string;
|
|
10
|
+
export declare function matchGradeFromScore(score: number): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{evaluationSection}from'../config/judgment.js';import{normalizeSeverity}from'../config/severity.js';export function defaultWeight(a){return evaluationSection()['weights'][a]??0x0;}export function defaultWeights(){return{...evaluationSection()['weights']};}export function dimensionLabel(a){return evaluationSection()['dimensions'][a]?.['label']??a;}export function severityDeduction(a){return evaluationSection()['severity_deduction'][normalizeSeverity(a)]??0x0;}export function levelFromScore(a){const b=evaluationSection()['level_bands'];for(const c of b){if(a>=c['min'])return c['level'];}return b[b['length']-0x1]?.['level']??'high';}export function gradeWord(a,b){const c=evaluationSection()['grade_words'][a];for(const d of c){if(b>=d['min'])return d['word'];}return c[c['length']-0x1]?.['word']??'unknown';}
|
|
1
|
+
import{evaluationSection}from'../config/judgment.js';import{normalizeSeverity}from'../config/severity.js';export function defaultWeight(a){return evaluationSection()['weights'][a]??0x0;}export function defaultWeights(){return{...evaluationSection()['weights']};}export function dimensionLabel(a){return evaluationSection()['dimensions'][a]?.['label']??a;}export function severityDeduction(a){return evaluationSection()['severity_deduction'][normalizeSeverity(a)]??0x0;}export function levelFromScore(a){const b=evaluationSection()['level_bands'];for(const c of b){if(a>=c['min'])return c['level'];}return b[b['length']-0x1]?.['level']??'high';}export function gradeWord(a,b){const c=evaluationSection()['grade_words'][a];if(!Array['isArray'](c))return'unknown';for(const d of c){if(b>=d['min'])return d['word'];}return c[c['length']-0x1]?.['word']??'unknown';}export function matchGradeFromScore(a){return gradeWord('match',a);}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface StructuredLine {
|
|
2
|
+
key: string;
|
|
3
|
+
raw_key: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const STRUCTURED_LINE_KEYS: readonly ["quote", "price", "terms", "timing", "contact"];
|
|
7
|
+
export declare function parseStructuredLines(text: string | null | undefined): StructuredLine[];
|
|
8
|
+
export declare function firstStructuredValue(lines: StructuredLine[], keys: readonly string[]): string | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const STRUCTURED_LINE_KEYS=['quote','price','terms','timing','contact'];const MAX_LINES_SCANNED=0x20,MAX_VALUE_LEN=0xc8,LINE_RE=/^([^::=]{1,32})[::=](.+)$/;export function parseStructuredLines(a){if(!a||typeof a!=='string')return[];const b=[],c=new Set();for(const d of a['split'](/\r?\n/)['slice'](0x0,MAX_LINES_SCANNED)){const e=d['trim']();if(e===''||e['includes']('://'))continue;const f=LINE_RE['exec'](e);if(!f)continue;const g=f[0x1]['trim'](),h=f[0x2]['trim']()['slice'](0x0,MAX_VALUE_LEN);if(g===''||h===''||/^\d+[.)]$/['test'](g))continue;const i=g['toLowerCase']();if(c['has'](i))continue;c['add'](i),b['push']({'key':i,'raw_key':g,'value':h});if(b['length']>=MAX_LINES_SCANNED)break;}return b;}export function firstStructuredValue(a,b){const c=new Set(b['map'](d=>d['toLowerCase']()));for(const d of a){if(c['has'](d['key']))return d['value'];}return null;}
|
|
@@ -86,12 +86,18 @@ export interface EvaluationFinding {
|
|
|
86
86
|
message: string;
|
|
87
87
|
deduction: number;
|
|
88
88
|
}
|
|
89
|
+
export interface RedFlagBasis {
|
|
90
|
+
flag: string;
|
|
91
|
+
basis: "object_defect" | "requirement_unmet";
|
|
92
|
+
rule_id?: string;
|
|
93
|
+
}
|
|
89
94
|
export interface EvaluationResult {
|
|
90
95
|
evaluation_id: string;
|
|
91
96
|
total: number;
|
|
92
97
|
level: EvaluationLevel;
|
|
93
98
|
breakdown: EvaluationBreakdown[];
|
|
94
99
|
red_flags: string[];
|
|
100
|
+
red_flag_basis?: RedFlagBasis[];
|
|
95
101
|
blocked: boolean;
|
|
96
102
|
trace: EvaluationTraceEntry[];
|
|
97
103
|
summary: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{distillIntent,extractSignals}from'./intent-distill.js';import{getProfile,updateFromOperation}from'./user-profile.js';import{findMatches,recordSignature}from'./experience-reuse.js';import{EXPERIENCE_LAYER_VERSION}from'./types.js';import{isEnabled as
|
|
1
|
+
import{distillIntent,extractSignals}from'./intent-distill.js';import{getProfile,updateFromOperation}from'./user-profile.js';import{findMatches,recordSignature}from'./experience-reuse.js';import{EXPERIENCE_LAYER_VERSION}from'./types.js';import{isEnabled as a120a}from'../config/index.js';import{recordIndustrySignal}from'../knowledge/flywheel-loop.js';export{EXPERIENCE_LAYER_VERSION};export function getExperienceFeedback(a,b,c){try{const d=distillIntent(a,b,c),e=findMatches(d['primary_intent'],a,b,0x3);if(e['length']===0x0)return undefined;const f=e[0x0],g=getProfile();return formatFeedback(f,e,d['scenario'],g);}catch{return undefined;}}export function recordOperationOutcome(a,b,c,d,e,f=[]){try{const g=distillIntent(a,b,c),h=extractSignals(a,b);recordSignature({'intent':g['primary_intent'],'scenario':g['scenario'],'signals':h,'timestamp':Date['now'](),'outcome':d,'error_code':e}),updateFromOperation(g['primary_intent'],g['scenario'],d,e,f);try{if(a120a('industry_evolution')){const i=typeof b?.['industry']==='string'&&b['industry']['trim']()?b['industry']['trim']():undefined;if(i){const j=d==='success'?{'success':!![]}:{'success':![],'error_code':e};recordIndustrySignal(i,{'type':a,'data':b},j);}}}catch{}}catch{}}function formatFeedback(a,b,c,d){const e=buildAdviceText(a,b,d),f=collectAvoidList(b,d),g=a['relevance'],h=c??a['signature']['scenario'],i={};if(e)i['advice']=e;if(f['length']>0x0)i['avoid']=f;if(g>0x0)i['relevance']=Math['round'](g*0x64)/0x64;if(h)i['matched_scenario']=h;return i;}function buildAdviceText(a,b,c){const d=[];if(a['signature']['outcome']==='success')d['push']('Historically,\x20'+a['signature']['intent']+'\x20operation\x20succeeded');else a['signature']['outcome']==='failed'&&d['push']('Historically,\x20'+a['signature']['intent']+'\x20operation\x20failed\x20('+(a['signature']['error_code']??'unknown\x20error')+'),\x20pay\x20special\x20attention\x20to\x20parameters');return c['expertise_tier']==='novice'&&b['length']>0x0&&d['push']('It\x20is\x20recommended\x20to\x20carefully\x20check\x20parameters\x20before\x20executing'),d['join'](';\x20')||a['advice'];}function collectAvoidList(b,c){const d=new Set();for(const e of b){for(const f of e['avoid']){d['add'](f);}}for(const g of c['frequent_pitfalls']){d['add']('You\x20often\x20make\x20mistakes\x20at\x20the\x20'+g+'\x20step,\x20please\x20be\x20especially\x20careful');}return Array['from'](d)['slice'](0x0,0x5);}
|
|
@@ -38,6 +38,7 @@ export declare class CapabilityRegistry {
|
|
|
38
38
|
private constructor();
|
|
39
39
|
registerCard(card: CapabilityCard): boolean;
|
|
40
40
|
getCard(capabilityId: string): CapabilityCard | undefined;
|
|
41
|
+
listCards(): CapabilityCard[];
|
|
41
42
|
private registerBuiltins;
|
|
42
43
|
}
|
|
43
44
|
export declare function getCapabilityRegistry(): CapabilityRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export class CapabilityRegistry{static ['instance'];['cards']=new Map();static['Instance'](){return!CapabilityRegistry['instance']&&(CapabilityRegistry['instance']=new CapabilityRegistry()),CapabilityRegistry['instance'];}constructor(){this['registerBuiltins']();}['registerCard'](a){if(!a['capability_id']||!a['object_type']||!a['module'])return![];return this['cards']['set'](a['capability_id'],a),!![];}['getCard'](a){return this['cards']['get'](a);}['registerBuiltins'](){this['registerCard']({'capability_id':'permission.index_create','display_name':'Permission\x20Index\x20Create','description':'Create\x20role\x20permission\x20index,\x20supports\x20multi-role\x20permission\x20assignment\x20such\x20as\x20merchant/customer/arbiter','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Index\x20proliferation\x20without\x20naming\x20convention\x20makes\x20permission\x20audits\x20harder']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Role-based\x20governance\x20foundation\x20for\x20all\x20other\x20objects']}}),this['registerCard']({'capability_id':'permission.role_assign','display_name':'Permission\x20Role\x20Assign','description':'Assign\x20role\x20permission\x20index\x20to\x20objects\x20(Machine/Service/Allocation)','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Mis-assigned\x20role\x20grants\x20unintended\x20operational\x20authority']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Binds\x20governance\x20roles\x20to\x20concrete\x20objects']}}),this['registerCard']({'capability_id':'guard.validate_buy','display_name':'Guard\x20Validate\x20Buy','description':'Order\x20validation:\x20check\x20buyer\x20eligibility,\x20order\x20parameters,\x20inventory\x20and\x20other\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-strict\x20buy\x20validation\x20blocks\x20legitimate\x20orders;\x20over-loose\x20validation\x20admits\x20fraud']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Automated\x20purchase\x20gating\x20without\x20manual\x20review']}}),this['registerCard']({'capability_id':'guard.validate_wip_hash','display_name':'Guard\x20Validate\x20WIP\x20Hash','description':'Validate\x20WIP\x20(Work-In-Progress)\x20hash,\x20used\x20for\x20milestone\x20validation\x20of\x20digital\x20deliverables','object_type':'guard','module':'handler','category':'evidence','industry_agnostic':'low','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Wrong\x20hash\x20algorithm\x20or\x20field\x20mapping\x20stalls\x20milestone\x20release']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Tamper-proof\x20delivery\x20evidence\x20for\x20digital\x20deliverables']}}),this['registerCard']({'capability_id':'machine.node_topology','display_name':'Machine\x20Node\x20Topology','description':'Workflow\x20node\x20topology:\x20define\x20the\x20state\x20machine\x20from\x20order\x20creation\x20to\x20completion','object_type':'machine','module':'templates','category':'workflow','industry_agnostic':'low','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Dead-end\x20nodes\x20or\x20missing\x20refund\x20paths\x20trap\x20order\x20funds']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'high','benefits':['Declarative\x20workflow\x20from\x20order\x20creation\x20to\x20completion']}}),this['registerCard']({'capability_id':'treasury.owner_receive','display_name':'Treasury\x20Owner\x20Receive','description':'Fund\x20escrow:\x20supports\x20owner_receive\x20mode,\x20funds\x20go\x20directly\x20into\x20the\x20object\x20owner\x20wallet','object_type':'treasury','module':'handler','category':'fund_flow','industry_agnostic':'high','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Direct\x20fund\x20custody\x20—\x20misconfigured\x20owner\x20diverts\x20all\x20proceeds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Automated\x20escrow\x20and\x20owner\x20settlement']}}),this['registerCard']({'capability_id':'allocation.distribute','display_name':'Multi-tier\x20Allocation\x20Distribution','description':'Multi-tier\x20allocation:\x20supports\x20distributing\x20funds\x20to\x20multiple\x20recipients\x20by\x20ratio\x20/\x20by\x20order\x20/\x20by\x20condition','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'medium','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'medium','compliance_risk':'low','known_risks':['Wrong\x20split\x20ratios\x20or\x20recipient\x20addresses\x20misdirect\x20settlement\x20funds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Multi-recipient\x20settlement\x20without\x20manual\x20transfers']}}),this['registerCard']({'capability_id':'allocation.distribute_milestone','display_name':'Milestone-based\x20Allocation','description':'Milestone\x20allocation:\x20release\x20funds\x20by\x20delivery\x20milestones,\x20each\x20milestone\x20requires\x20WIP\x20hash\x20validation','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'low','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Stuck\x20milestone\x20gates\x20lock\x20buyer\x20funds\x20until\x20evidence\x20is\x20supplied']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Evidence-gated\x20release\x20protects\x20both\x20buyer\x20and\x20provider']}}),this['registerCard']({'capability_id':'service.publish','display_name':'Service\x20Publish','description':'Publish\x20Service\x20object\x20on-chain,\x20bind\x20Machine/Guard/Permission/Allocation\x20and\x20other\x20dependencies','object_type':'service','module':'handler','category':'lifecycle','industry_agnostic':'high','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Publish\x20freezes\x20the\x20machine\x20graph\x20and\x20the\x20configured\x20prefix\x20+\x20thresholds\x20of\x20order_allocators\x20(E_ALREADY_PUBLISHED);\x20allocator\x20APPEND\x20remains\x20possible\x20(order_allocators_append)\x20—\x20use\x20it\x20to\x20add\x20missing\x20fund-exit\x20legs']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['On-chain\x20discoverability\x20and\x20order\x20intake']}}),this['registerCard']({'capability_id':'progress.advance','display_name':'Progress\x20Advance','description':'Order\x20fulfillment\x20progress\x20advance:\x20advance\x20to\x20next\x20state\x20based\x20on\x20Machine\x20node\x20topology','object_type':'progress','module':'handler','category':'workflow','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'high','compliance_risk':'low','known_risks':['Forward\x20without\x20authorized\x20executor\x20permanently\x20stalls\x20the\x20order']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Deterministic\x20order\x20state\x20progression']}}),this['registerCard']({'capability_id':'arb.vote_weighted','display_name':'Arbitration\x20Vote\x20Weighted','description':'guard-based\x20weighted\x20voting\x20arbitration:\x20vote\x20by\x20Guard\x20weight\x20to\x20determine\x20arbitration\x20result','object_type':'arb','module':'handler','category':'trust','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'high','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Shared\x20permission\x20with\x20Service\x20destroys\x20dispute\x20independence\x20(E_ARBITRATION_PERMISSION_CONFLICT)']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'low','benefits':['Neutral\x20third-party\x20dispute\x20resolution']}}),this['registerCard']({'capability_id':'reward.claim_guard','display_name':'Reward\x20Claim\x20Guard','description':'Reward\x20claim:\x20release\x20reward\x20after\x20validating\x20claim\x20conditions\x20(such\x20as\x20positive\x20review,\x20repurchase)\x20via\x20Guard','object_type':'reward','module':'handler','category':'fund_flow','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Loose\x20claim\x20conditions\x20drain\x20the\x20reward\x20pool']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Incentivizes\x20reviews\x20and\x20repurchase']}}),this['registerCard']({'capability_id':'contact.im_create','display_name':'Contact\x20IM\x20Create','description':'Create\x20IM\x20contact\x20object:\x20buyer\x20and\x20seller\x20communicate\x20via\x20Messenger','object_type':'contact','module':'handler','category':'communication','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Unattended\x20IM\x20channel\x20degrades\x20dispute\x20response\x20time']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['Direct\x20buyer-seller\x20encrypted\x20communication']}}),this['registerCard']({'capability_id':'demand.matching','display_name':'Demand\x20Matching','description':'Demand\x20matching:\x20match\x20corresponding\x20Service\x20based\x20on\x20user\x20demand','object_type':'demand','module':'handler','category':'query','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Poor\x20matching\x20signals\x20bury\x20quality\x20services']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'medium','benefits':['Demand-side\x20discovery\x20channel']}}),this['registerCard']({'capability_id':'repository.write_validate','display_name':'Repository\x20Write\x20Validate','description':'Knowledge\x20base\x20write\x20validation:\x20validate\x20write\x20permissions\x20and\x20data\x20format\x20via\x20Guard','object_type':'repository','module':'handler','category':'validation','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'medium','known_risks':['Unvalidated\x20writes\x20pollute\x20the\x20knowledge\x20base\x20with\x20unverifiable\x20claims']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Guard-gated\x20attestation\x20for\x20off-chain\x20data']}}),this['registerCard']({'capability_id':'proof.evidence_anchor','display_name':'Proof\x20Evidence\x20Anchor','description':'Evidence\x20on-chain:\x20anchor\x20delivery\x20evidence\x20(hash)\x20to\x20on-chain\x20Progress\x20node','object_type':'proof','module':'handler','category':'evidence','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Anchored\x20evidence\x20is\x20immutable\x20—\x20wrong\x20hash\x20cannot\x20be\x20corrected']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Immutable\x20WTS\x20evidence\x20for\x20Messenger\x20confirmations']}}),this['registerCard']({'capability_id':'personal.profile_manage','display_name':'Personal\x20Profile\x20Manage','description':'Personal\x20profile\x20management:\x20user\x20identity/preference/history\x20management','object_type':'personal','module':'handler','category':'data_model','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Profile\x20data\x20may\x20fall\x20under\x20privacy\x20regulation\x20(PII)']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'low','benefits':['Portable\x20user\x20identity\x20across\x20services']}}),this['registerCard']({'capability_id':'payment.settle','display_name':'Payment\x20Settle','description':'Payment\x20settlement:\x20complete\x20fund\x20settlement\x20in\x20collaboration\x20with\x20Allocation','object_type':'payment','module':'handler','category':'fund_flow','industry_agnostic':'high','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Settlement\x20errors\x20are\x20irreversible\x20once\x20funds\x20transfer']},'benefit_profile':{'automation_level':'high','trust_boost':'low','efficiency_gain':'high','benefits':['Atomic\x20settlement\x20in\x20collaboration\x20with\x20Allocation']}}),this['registerCard']({'capability_id':'guard.validate_withdraw','display_name':'Guard\x20Validate\x20Withdraw','description':'Withdrawal\x20validation:\x20gate\x20fund\x20release\x20from\x20Allocation\x20escrow\x20on\x20delivery\x20confirmation','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Mis-gated\x20withdrawal\x20releases\x20escrowed\x20funds\x20prematurely']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Contract-enforced\x20delivery\x20gate\x20replaces\x20platform\x20custody']}}),this['registerCard']({'capability_id':'guard.validate_refund','display_name':'Guard\x20Validate\x20Refund','description':'Refund\x20validation:\x20gate\x20buyer\x20refund\x20on\x20cancellation\x20or\x20return\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-broad\x20refund\x20conditions\x20enable\x20buyer\x20abuse']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Trustless\x20buyer\x20refund\x20without\x20merchant\x20approval']}});}}export function getCapabilityRegistry(){return CapabilityRegistry['Instance']();}export const CAPABILITY_MANIFEST_VERSION=0x2;
|
|
1
|
+
export class CapabilityRegistry{static ['instance'];['cards']=new Map();static['Instance'](){return!CapabilityRegistry['instance']&&(CapabilityRegistry['instance']=new CapabilityRegistry()),CapabilityRegistry['instance'];}constructor(){this['registerBuiltins']();}['registerCard'](a){if(!a['capability_id']||!a['object_type']||!a['module'])return![];return this['cards']['set'](a['capability_id'],a),!![];}['getCard'](a){return this['cards']['get'](a);}['listCards'](){return[...this['cards']['values']()];}['registerBuiltins'](){this['registerCard']({'capability_id':'permission.index_create','display_name':'Permission\x20Index\x20Create','description':'Create\x20role\x20permission\x20index,\x20supports\x20multi-role\x20permission\x20assignment\x20such\x20as\x20merchant/customer/arbiter','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Index\x20proliferation\x20without\x20naming\x20convention\x20makes\x20permission\x20audits\x20harder']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Role-based\x20governance\x20foundation\x20for\x20all\x20other\x20objects']}}),this['registerCard']({'capability_id':'permission.role_assign','display_name':'Permission\x20Role\x20Assign','description':'Assign\x20role\x20permission\x20index\x20to\x20objects\x20(Machine/Service/Allocation)','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Mis-assigned\x20role\x20grants\x20unintended\x20operational\x20authority']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Binds\x20governance\x20roles\x20to\x20concrete\x20objects']}}),this['registerCard']({'capability_id':'guard.validate_buy','display_name':'Guard\x20Validate\x20Buy','description':'Order\x20validation:\x20check\x20buyer\x20eligibility,\x20order\x20parameters,\x20inventory\x20and\x20other\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-strict\x20buy\x20validation\x20blocks\x20legitimate\x20orders;\x20over-loose\x20validation\x20admits\x20fraud']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Automated\x20purchase\x20gating\x20without\x20manual\x20review']}}),this['registerCard']({'capability_id':'guard.validate_wip_hash','display_name':'Guard\x20Validate\x20WIP\x20Hash','description':'Validate\x20WIP\x20(Work-In-Progress)\x20hash,\x20used\x20for\x20milestone\x20validation\x20of\x20digital\x20deliverables','object_type':'guard','module':'handler','category':'evidence','industry_agnostic':'low','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Wrong\x20hash\x20algorithm\x20or\x20field\x20mapping\x20stalls\x20milestone\x20release']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Tamper-proof\x20delivery\x20evidence\x20for\x20digital\x20deliverables']}}),this['registerCard']({'capability_id':'machine.node_topology','display_name':'Machine\x20Node\x20Topology','description':'Workflow\x20node\x20topology:\x20define\x20the\x20state\x20machine\x20from\x20order\x20creation\x20to\x20completion','object_type':'machine','module':'templates','category':'workflow','industry_agnostic':'low','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Dead-end\x20nodes\x20or\x20missing\x20refund\x20paths\x20trap\x20order\x20funds']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'high','benefits':['Declarative\x20workflow\x20from\x20order\x20creation\x20to\x20completion']}}),this['registerCard']({'capability_id':'treasury.owner_receive','display_name':'Treasury\x20Owner\x20Receive','description':'Fund\x20escrow:\x20supports\x20owner_receive\x20mode,\x20funds\x20go\x20directly\x20into\x20the\x20object\x20owner\x20wallet','object_type':'treasury','module':'handler','category':'fund_flow','industry_agnostic':'high','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Direct\x20fund\x20custody\x20—\x20misconfigured\x20owner\x20diverts\x20all\x20proceeds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Automated\x20escrow\x20and\x20owner\x20settlement']}}),this['registerCard']({'capability_id':'allocation.distribute','display_name':'Multi-tier\x20Allocation\x20Distribution','description':'Multi-tier\x20allocation:\x20supports\x20distributing\x20funds\x20to\x20multiple\x20recipients\x20by\x20ratio\x20/\x20by\x20order\x20/\x20by\x20condition','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'medium','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'medium','compliance_risk':'low','known_risks':['Wrong\x20split\x20ratios\x20or\x20recipient\x20addresses\x20misdirect\x20settlement\x20funds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Multi-recipient\x20settlement\x20without\x20manual\x20transfers']}}),this['registerCard']({'capability_id':'allocation.distribute_milestone','display_name':'Milestone-based\x20Allocation','description':'Milestone\x20allocation:\x20release\x20funds\x20by\x20delivery\x20milestones,\x20each\x20milestone\x20requires\x20WIP\x20hash\x20validation','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'low','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Stuck\x20milestone\x20gates\x20lock\x20buyer\x20funds\x20until\x20evidence\x20is\x20supplied']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Evidence-gated\x20release\x20protects\x20both\x20buyer\x20and\x20provider']}}),this['registerCard']({'capability_id':'service.publish','display_name':'Service\x20Publish','description':'Publish\x20Service\x20object\x20on-chain,\x20bind\x20Machine/Guard/Permission/Allocation\x20and\x20other\x20dependencies','object_type':'service','module':'handler','category':'lifecycle','industry_agnostic':'high','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Publish\x20freezes\x20the\x20machine\x20graph\x20and\x20the\x20configured\x20prefix\x20+\x20thresholds\x20of\x20order_allocators\x20(E_ALREADY_PUBLISHED);\x20allocator\x20APPEND\x20remains\x20possible\x20(order_allocators_append)\x20—\x20use\x20it\x20to\x20add\x20missing\x20fund-exit\x20legs']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['On-chain\x20discoverability\x20and\x20order\x20intake']}}),this['registerCard']({'capability_id':'progress.advance','display_name':'Progress\x20Advance','description':'Order\x20fulfillment\x20progress\x20advance:\x20advance\x20to\x20next\x20state\x20based\x20on\x20Machine\x20node\x20topology','object_type':'progress','module':'handler','category':'workflow','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'high','compliance_risk':'low','known_risks':['Forward\x20without\x20authorized\x20executor\x20permanently\x20stalls\x20the\x20order']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Deterministic\x20order\x20state\x20progression']}}),this['registerCard']({'capability_id':'arb.vote_weighted','display_name':'Arbitration\x20Vote\x20Weighted','description':'guard-based\x20weighted\x20voting\x20arbitration:\x20vote\x20by\x20Guard\x20weight\x20to\x20determine\x20arbitration\x20result','object_type':'arb','module':'handler','category':'trust','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'high','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Shared\x20permission\x20with\x20Service\x20destroys\x20dispute\x20independence\x20(E_ARBITRATION_PERMISSION_CONFLICT)']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'low','benefits':['Neutral\x20third-party\x20dispute\x20resolution']}}),this['registerCard']({'capability_id':'reward.claim_guard','display_name':'Reward\x20Claim\x20Guard','description':'Reward\x20claim:\x20release\x20reward\x20after\x20validating\x20claim\x20conditions\x20(such\x20as\x20positive\x20review,\x20repurchase)\x20via\x20Guard','object_type':'reward','module':'handler','category':'fund_flow','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Loose\x20claim\x20conditions\x20drain\x20the\x20reward\x20pool']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Incentivizes\x20reviews\x20and\x20repurchase']}}),this['registerCard']({'capability_id':'contact.im_create','display_name':'Contact\x20IM\x20Create','description':'Create\x20IM\x20contact\x20object:\x20buyer\x20and\x20seller\x20communicate\x20via\x20Messenger','object_type':'contact','module':'handler','category':'communication','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Unattended\x20IM\x20channel\x20degrades\x20dispute\x20response\x20time']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['Direct\x20buyer-seller\x20encrypted\x20communication']}}),this['registerCard']({'capability_id':'demand.matching','display_name':'Demand\x20Matching','description':'Demand\x20matching:\x20match\x20corresponding\x20Service\x20based\x20on\x20user\x20demand','object_type':'demand','module':'handler','category':'query','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Poor\x20matching\x20signals\x20bury\x20quality\x20services']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'medium','benefits':['Demand-side\x20discovery\x20channel']}}),this['registerCard']({'capability_id':'repository.write_validate','display_name':'Repository\x20Write\x20Validate','description':'Knowledge\x20base\x20write\x20validation:\x20validate\x20write\x20permissions\x20and\x20data\x20format\x20via\x20Guard','object_type':'repository','module':'handler','category':'validation','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'medium','known_risks':['Unvalidated\x20writes\x20pollute\x20the\x20knowledge\x20base\x20with\x20unverifiable\x20claims']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Guard-gated\x20attestation\x20for\x20off-chain\x20data']}}),this['registerCard']({'capability_id':'proof.evidence_anchor','display_name':'Proof\x20Evidence\x20Anchor','description':'Evidence\x20on-chain:\x20anchor\x20delivery\x20evidence\x20(hash)\x20to\x20on-chain\x20Progress\x20node','object_type':'proof','module':'handler','category':'evidence','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Anchored\x20evidence\x20is\x20immutable\x20—\x20wrong\x20hash\x20cannot\x20be\x20corrected']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Immutable\x20WTS\x20evidence\x20for\x20Messenger\x20confirmations']}}),this['registerCard']({'capability_id':'personal.profile_manage','display_name':'Personal\x20Profile\x20Manage','description':'Personal\x20profile\x20management:\x20user\x20identity/preference/history\x20management','object_type':'personal','module':'handler','category':'data_model','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Profile\x20data\x20may\x20fall\x20under\x20privacy\x20regulation\x20(PII)']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'low','benefits':['Portable\x20user\x20identity\x20across\x20services']}}),this['registerCard']({'capability_id':'payment.settle','display_name':'Payment\x20Settle','description':'Payment\x20settlement:\x20complete\x20fund\x20settlement\x20in\x20collaboration\x20with\x20Allocation','object_type':'payment','module':'handler','category':'fund_flow','industry_agnostic':'high','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Settlement\x20errors\x20are\x20irreversible\x20once\x20funds\x20transfer']},'benefit_profile':{'automation_level':'high','trust_boost':'low','efficiency_gain':'high','benefits':['Atomic\x20settlement\x20in\x20collaboration\x20with\x20Allocation']}}),this['registerCard']({'capability_id':'guard.validate_withdraw','display_name':'Guard\x20Validate\x20Withdraw','description':'Withdrawal\x20validation:\x20gate\x20fund\x20release\x20from\x20Allocation\x20escrow\x20on\x20delivery\x20confirmation','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Mis-gated\x20withdrawal\x20releases\x20escrowed\x20funds\x20prematurely']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Contract-enforced\x20delivery\x20gate\x20replaces\x20platform\x20custody']}}),this['registerCard']({'capability_id':'guard.validate_refund','display_name':'Guard\x20Validate\x20Refund','description':'Refund\x20validation:\x20gate\x20buyer\x20refund\x20on\x20cancellation\x20or\x20return\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-broad\x20refund\x20conditions\x20enable\x20buyer\x20abuse']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Trustless\x20buyer\x20refund\x20without\x20merchant\x20approval']}});}}export function getCapabilityRegistry(){return CapabilityRegistry['Instance']();}export const CAPABILITY_MANIFEST_VERSION=0x2;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { ProjectObjectType } from "../playbooks/service-build/namespace.js";
|
|
2
|
+
import type { Severity } from "../config/severity.js";
|
|
3
|
+
import type { WorkflowCapabilities } from "../evaluation/capability.js";
|
|
4
|
+
export type CapabilityId = string;
|
|
5
|
+
export type CapabilityGroup = "fund_safety" | "trust_evidence" | "fulfillment" | "promotion" | "governance" | "composition";
|
|
6
|
+
export interface CapabilityBind {
|
|
7
|
+
node?: string;
|
|
8
|
+
surface?: "machine" | "allocator" | "allocation" | "guard" | "arbitration" | "repository" | "permission" | "reward";
|
|
9
|
+
}
|
|
10
|
+
export interface CapabilityCost {
|
|
11
|
+
gas_objects: number;
|
|
12
|
+
fund?: string;
|
|
13
|
+
bearer: "merchant" | "buyer" | "shared";
|
|
14
|
+
}
|
|
15
|
+
export interface CapabilityConstraint {
|
|
16
|
+
constraint_id: string;
|
|
17
|
+
description: string;
|
|
18
|
+
level: "hard" | "soft" | "info";
|
|
19
|
+
blocking: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface CapabilityEvaluationImpact {
|
|
22
|
+
dimension: string;
|
|
23
|
+
effect: "boost" | "required" | "optional";
|
|
24
|
+
description: string;
|
|
25
|
+
}
|
|
26
|
+
export interface Capability {
|
|
27
|
+
id: CapabilityId;
|
|
28
|
+
name: string;
|
|
29
|
+
group: CapabilityGroup;
|
|
30
|
+
description: string;
|
|
31
|
+
objectTypes: ProjectObjectType[];
|
|
32
|
+
intent: string[];
|
|
33
|
+
binds: CapabilityBind[];
|
|
34
|
+
requires: CapabilityId[];
|
|
35
|
+
excludes: CapabilityId[];
|
|
36
|
+
provides: Array<keyof WorkflowCapabilities>;
|
|
37
|
+
params: string[];
|
|
38
|
+
risks: string[];
|
|
39
|
+
disclosures: string[];
|
|
40
|
+
cost: CapabilityCost;
|
|
41
|
+
requiredConstraints: CapabilityConstraint[];
|
|
42
|
+
evaluationImpact: CapabilityEvaluationImpact[];
|
|
43
|
+
industryFit: Record<string, number>;
|
|
44
|
+
addressesPainPoints: string[];
|
|
45
|
+
intentSignals: RegExp[];
|
|
46
|
+
userProtections: string[];
|
|
47
|
+
merchantObligations: string[];
|
|
48
|
+
requiresKeeper: boolean;
|
|
49
|
+
keeperHint?: string;
|
|
50
|
+
source: "core" | "composition";
|
|
51
|
+
}
|
|
52
|
+
export interface CapabilityAdoptionFinding {
|
|
53
|
+
rule: string;
|
|
54
|
+
severity: Severity;
|
|
55
|
+
detail: string;
|
|
56
|
+
}
|
|
57
|
+
export interface CapabilityAdoptionResult {
|
|
58
|
+
capability: CapabilityId;
|
|
59
|
+
adopted: boolean;
|
|
60
|
+
reason?: string;
|
|
61
|
+
missingConstraints?: string[];
|
|
62
|
+
findings: CapabilityAdoptionFinding[];
|
|
63
|
+
evidence_matched?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare const CAPABILITIES: Capability[];
|
|
66
|
+
export declare const COMPOSITION_CAPABILITIES: Capability[];
|
|
67
|
+
export declare const ALL_CAPABILITIES: Capability[];
|
|
68
|
+
export declare function getCapability(id: CapabilityId): Capability | undefined;
|
|
69
|
+
export declare function recommendCapabilities(industry: string, intentDescription: string, options?: {
|
|
70
|
+
minFit?: number;
|
|
71
|
+
maxCapabilities?: number;
|
|
72
|
+
}): Capability[];
|
|
73
|
+
export interface CapabilityEvidenceReport {
|
|
74
|
+
matched: boolean;
|
|
75
|
+
tested: number;
|
|
76
|
+
hits: string[];
|
|
77
|
+
cjkIntent?: boolean;
|
|
78
|
+
}
|
|
79
|
+
export interface StructuredEvidence {
|
|
80
|
+
paymentModel?: string;
|
|
81
|
+
trustArbitration?: string;
|
|
82
|
+
trustRefundPolicy?: string;
|
|
83
|
+
proofsOfDelivery?: string[];
|
|
84
|
+
allocationCount?: number;
|
|
85
|
+
}
|
|
86
|
+
export declare function capabilityIntentEvidence(capability: Capability, intentText: string, structured?: StructuredEvidence): CapabilityEvidenceReport;
|
|
87
|
+
export declare function capabilityHasIntentEvidence(capability: Capability, intentText: string): boolean;
|
|
88
|
+
export declare function checkCapabilityConstraints(capability: Capability, satisfiedConstraintIds: Set<string>, opts?: {
|
|
89
|
+
evidenceMatched?: boolean;
|
|
90
|
+
evidence?: CapabilityEvidenceReport;
|
|
91
|
+
}): CapabilityAdoptionResult;
|