@wowok/agent-mcp 3.1.2 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/config-audit.spec.d.ts +1 -0
- package/dist/config/config-audit.spec.js +1 -0
- package/dist/config/exposure.d.ts +108 -0
- package/dist/config/exposure.js +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +1 -1
- package/dist/config/judgment.d.ts +1228 -0
- package/dist/config/judgment.js +1 -0
- package/dist/config/judgment.spec.d.ts +1 -0
- package/dist/config/judgment.spec.js +1 -0
- package/dist/config/rule-engine.d.ts +299 -0
- package/dist/config/rule-engine.js +1 -0
- package/dist/config/rule-engine.spec.d.ts +1 -0
- package/dist/config/rule-engine.spec.js +1 -0
- package/dist/config/runtime.js +1 -1
- package/dist/config/severity.d.ts +7 -0
- package/dist/config/severity.js +1 -0
- package/dist/customer/index.d.ts +3 -9
- package/dist/customer/index.js +1 -1
- package/dist/customer/industry-risks.d.ts +3 -17
- package/dist/customer/industry-risks.js +1 -1
- package/dist/customer/order-monitor.d.ts +3 -1
- package/dist/customer/order-monitor.js +1 -1
- package/dist/customer/types.d.ts +1 -165
- package/dist/customer/types.js +1 -1
- package/dist/customer/user-preferences.d.ts +0 -49
- package/dist/customer/user-preferences.js +1 -1
- package/dist/evaluation/acceptance.d.ts +1 -0
- package/dist/evaluation/acceptance.js +1 -1
- package/dist/evaluation/arbitration-game.js +1 -1
- package/dist/evaluation/architecture.spec.d.ts +1 -0
- package/dist/evaluation/architecture.spec.js +1 -0
- package/dist/evaluation/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.d.ts +16 -0
- package/dist/evaluation/builtins/graph-service.js +1 -0
- package/dist/evaluation/builtins/graph-service.spec.d.ts +1 -0
- package/dist/evaluation/builtins/graph-service.spec.js +1 -0
- package/dist/evaluation/builtins/index.d.ts +1 -1
- package/dist/evaluation/builtins/index.js +1 -1
- package/dist/evaluation/builtins/purity.spec.d.ts +1 -0
- package/dist/evaluation/builtins/purity.spec.js +1 -0
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/facets/catalog.d.ts +19 -0
- package/dist/evaluation/facets/catalog.js +1 -0
- package/dist/evaluation/game-strategy.d.ts +2 -2
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/guard-scan.d.ts +10 -0
- package/dist/evaluation/guard-scan.js +1 -0
- package/dist/evaluation/match-operation.d.ts +2 -2
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/standards.d.ts +9 -0
- package/dist/evaluation/standards.js +1 -0
- package/dist/evaluation/standards.spec.d.ts +1 -0
- package/dist/evaluation/standards.spec.js +1 -0
- package/dist/evaluation/types.d.ts +11 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/custom-registry-file.js +1 -1
- package/dist/extensions/index.d.ts +1 -1
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-audit.spec.d.ts +1 -0
- package/dist/extensions/industry-audit.spec.js +1 -0
- package/dist/extensions/industry-layers.d.ts +14 -5
- package/dist/extensions/industry-layers.js +1 -1
- package/dist/extensions/industry-pack.d.ts +2 -0
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/mode-evaluator.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.d.ts +16 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/dataplane.d.ts +1 -1
- package/dist/graph/onchain/dataplane.js +1 -1
- package/dist/graph/onchain/edge-batch.spec.d.ts +1 -0
- package/dist/graph/onchain/edge-batch.spec.js +1 -0
- package/dist/graph/onchain/edge-schema.d.ts +11 -2
- package/dist/graph/onchain/edge-schema.js +1 -1
- package/dist/graph/onchain/entity-profile.spec.d.ts +1 -0
- package/dist/graph/onchain/entity-profile.spec.js +1 -0
- package/dist/graph/onchain/event-history.spec.d.ts +1 -0
- package/dist/graph/onchain/event-history.spec.js +1 -0
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exploration.d.ts +28 -0
- package/dist/graph/onchain/exploration.js +1 -0
- package/dist/graph/onchain/exploration.spec.d.ts +1 -0
- package/dist/graph/onchain/exploration.spec.js +1 -0
- package/dist/graph/onchain/exposure.d.ts +18 -0
- package/dist/graph/onchain/exposure.js +1 -0
- package/dist/graph/onchain/exposure.spec.d.ts +1 -0
- package/dist/graph/onchain/exposure.spec.js +1 -0
- package/dist/graph/onchain/extract-deep.spec.d.ts +1 -0
- package/dist/graph/onchain/extract-deep.spec.js +1 -0
- package/dist/graph/onchain/extract.d.ts +11 -3
- package/dist/graph/onchain/extract.js +1 -1
- package/dist/graph/onchain/facet-projection.d.ts +99 -0
- package/dist/graph/onchain/facet-projection.js +1 -0
- package/dist/graph/onchain/facet-projection.spec.d.ts +1 -0
- package/dist/graph/onchain/facet-projection.spec.js +1 -0
- package/dist/graph/onchain/facts.d.ts +103 -0
- package/dist/graph/onchain/facts.js +1 -0
- package/dist/graph/onchain/facts.spec.d.ts +1 -0
- package/dist/graph/onchain/facts.spec.js +1 -0
- package/dist/graph/onchain/field-manifest.d.ts +29 -0
- package/dist/graph/onchain/field-manifest.js +1 -0
- package/dist/graph/onchain/field-manifest.spec.d.ts +1 -0
- package/dist/graph/onchain/field-manifest.spec.js +1 -0
- package/dist/graph/onchain/fixtures.d.ts +80 -0
- package/dist/graph/onchain/fixtures.js +1 -0
- package/dist/graph/onchain/fixtures.spec.d.ts +1 -0
- package/dist/graph/onchain/fixtures.spec.js +1 -0
- package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
- package/dist/graph/onchain/graph-policy.spec.js +1 -0
- package/dist/graph/onchain/index.d.ts +14 -2
- package/dist/graph/onchain/index.js +1 -1
- package/dist/graph/onchain/interest.js +1 -1
- package/dist/graph/onchain/interest.spec.js +1 -1
- package/dist/graph/onchain/label-lint.spec.d.ts +1 -0
- package/dist/graph/onchain/label-lint.spec.js +1 -0
- package/dist/graph/onchain/names.d.ts +23 -0
- package/dist/graph/onchain/names.js +1 -0
- package/dist/graph/onchain/names.spec.d.ts +1 -0
- package/dist/graph/onchain/names.spec.js +1 -0
- package/dist/graph/onchain/onchain.spec.js +1 -1
- package/dist/graph/onchain/policy.d.ts +8 -0
- package/dist/graph/onchain/policy.js +1 -0
- package/dist/graph/onchain/proposal-graph.d.ts +11 -0
- package/dist/graph/onchain/proposal-graph.js +1 -0
- package/dist/graph/onchain/proposal-graph.spec.d.ts +1 -0
- package/dist/graph/onchain/proposal-graph.spec.js +1 -0
- package/dist/graph/onchain/sdk-batch.d.ts +5 -1
- package/dist/graph/onchain/sdk-batch.js +1 -1
- package/dist/graph/onchain/strategy.d.ts +16 -0
- package/dist/graph/onchain/strategy.js +1 -1
- package/dist/graph/onchain/strategy.spec.js +1 -1
- package/dist/graph/onchain/synthesis.d.ts +20 -0
- package/dist/graph/onchain/synthesis.js +1 -0
- package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
- package/dist/graph/onchain/synthesis.spec.js +1 -0
- package/dist/graph/onchain/table-ledger.spec.d.ts +1 -0
- package/dist/graph/onchain/table-ledger.spec.js +1 -0
- package/dist/graph/onchain/types.d.ts +57 -7
- package/dist/graph/onchain/viewport.d.ts +1 -0
- package/dist/graph/onchain/viewport.js +1 -1
- package/dist/harness/index.d.ts +1 -5
- package/dist/harness/index.js +1 -1
- package/dist/harness/verify.d.ts +6 -1
- package/dist/harness/verify.js +1 -1
- package/dist/index.js +1 -1
- package/dist/keeper/keeper.spec.js +1 -1
- package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
- package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocation-puzzle.d.ts +1 -1
- package/dist/knowledge/allocation-puzzle.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +4 -3
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/allocation-templates.js +1 -1
- package/dist/knowledge/arb-risk.d.ts +6 -6
- package/dist/knowledge/arb-risk.js +1 -1
- package/dist/knowledge/arbitration-ledger.d.ts +4 -4
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
- package/dist/knowledge/arbitration-puzzle.js +1 -1
- package/dist/knowledge/arbitration-risk.d.ts +4 -3
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +1 -0
- package/dist/knowledge/baselines/guard-lint-baseline.spec.js +1 -0
- package/dist/knowledge/baselines/judgment-baselines.json +289 -0
- package/dist/knowledge/baselines/risk-baselines.spec.d.ts +1 -0
- package/dist/knowledge/baselines/risk-baselines.spec.js +1 -0
- package/dist/knowledge/baselines/risk-cases.d.ts +8 -0
- package/dist/knowledge/baselines/risk-cases.js +1 -0
- package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
- package/dist/knowledge/baselines/rules/allocation.json +492 -0
- package/dist/knowledge/baselines/rules/arb.json +155 -0
- package/dist/knowledge/baselines/rules/arbitration.json +366 -0
- package/dist/knowledge/baselines/rules/bridge.json +197 -0
- package/dist/knowledge/baselines/rules/contact.json +152 -0
- package/dist/knowledge/baselines/rules/demand.json +158 -0
- package/dist/knowledge/baselines/rules/graph.json +453 -0
- package/dist/knowledge/baselines/rules/guard.json +981 -0
- package/dist/knowledge/baselines/rules/machine.json +706 -0
- package/dist/knowledge/baselines/rules/order.json +549 -0
- package/dist/knowledge/baselines/rules/payment.json +205 -0
- package/dist/knowledge/baselines/rules/permission.json +330 -0
- package/dist/knowledge/baselines/rules/personal.json +139 -0
- package/dist/knowledge/baselines/rules/progress.json +346 -0
- package/dist/knowledge/baselines/rules/proof.json +158 -0
- package/dist/knowledge/baselines/rules/registrar.json +159 -0
- package/dist/knowledge/baselines/rules/repository.json +244 -0
- package/dist/knowledge/baselines/rules/resource.json +117 -0
- package/dist/knowledge/baselines/rules/reward.json +471 -0
- package/dist/knowledge/baselines/rules/service.json +595 -0
- package/dist/knowledge/baselines/rules/treasury.json +440 -0
- package/dist/knowledge/baselines/rules/util.json +101 -0
- package/dist/knowledge/bridge-risk.d.ts +6 -6
- package/dist/knowledge/bridge-risk.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +26 -0
- package/dist/knowledge/builtin-templates.js +1 -0
- package/dist/knowledge/contact-risk.d.ts +6 -6
- package/dist/knowledge/contact-risk.js +1 -1
- package/dist/knowledge/contract-invariants.d.ts +1 -0
- package/dist/knowledge/contract-invariants.js +1 -1
- package/dist/knowledge/demand-risk.d.ts +6 -6
- package/dist/knowledge/demand-risk.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/facts-sync.spec.d.ts +1 -0
- package/dist/knowledge/facts-sync.spec.js +1 -0
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-eval.d.ts +15 -0
- package/dist/knowledge/guard-eval.js +1 -0
- package/dist/knowledge/guard-eval.spec.d.ts +1 -0
- package/dist/knowledge/guard-eval.spec.js +1 -0
- package/dist/knowledge/guard-field-cognition.d.ts +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-ledger.js +1 -1
- package/dist/knowledge/guard-lint.d.ts +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-risk.d.ts +7 -19
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +51 -45
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-rule-node.d.ts +7 -0
- package/dist/knowledge/industry-rule-node.js +1 -0
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-risk.d.ts +4 -7
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/migration-preflight.js +1 -1
- package/dist/knowledge/operation-dictionary.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/order-puzzle.d.ts +3 -3
- package/dist/knowledge/order-puzzle.js +1 -1
- package/dist/knowledge/order-risk.d.ts +7 -12
- package/dist/knowledge/order-risk.js +1 -1
- package/dist/knowledge/order-templates.js +1 -1
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/passport-templates.js +1 -1
- package/dist/knowledge/payment-risk.d.ts +8 -7
- package/dist/knowledge/payment-risk.js +1 -1
- package/dist/knowledge/payment-tracker.js +1 -1
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/permission-puzzle.d.ts +12 -12
- package/dist/knowledge/permission-puzzle.js +1 -1
- package/dist/knowledge/permission-risk.d.ts +4 -10
- package/dist/knowledge/permission-risk.js +1 -1
- package/dist/knowledge/permission-templates.js +1 -1
- package/dist/knowledge/personal-risk.d.ts +6 -6
- package/dist/knowledge/personal-risk.js +1 -1
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/progress-puzzle.d.ts +2 -2
- package/dist/knowledge/progress-puzzle.js +1 -1
- package/dist/knowledge/progress-risk.d.ts +4 -3
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/progress-templates.js +1 -1
- package/dist/knowledge/proof-risk.d.ts +6 -6
- package/dist/knowledge/proof-risk.js +1 -1
- package/dist/knowledge/puzzle-projections.d.ts +11 -0
- package/dist/knowledge/puzzle-projections.js +1 -0
- package/dist/knowledge/recipient-constraint.d.ts +20 -1
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/registrar-risk.d.ts +6 -6
- package/dist/knowledge/registrar-risk.js +1 -1
- package/dist/knowledge/repository-risk.d.ts +7 -7
- package/dist/knowledge/repository-risk.js +1 -1
- package/dist/knowledge/resource-risk.d.ts +6 -6
- package/dist/knowledge/resource-risk.js +1 -1
- package/dist/knowledge/reward-ledger.d.ts +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-puzzle.d.ts +2 -2
- package/dist/knowledge/reward-puzzle.js +1 -1
- package/dist/knowledge/reward-risk.d.ts +5 -6
- package/dist/knowledge/reward-risk.js +1 -1
- package/dist/knowledge/rule-node-analyzers.d.ts +43 -0
- package/dist/knowledge/rule-node-analyzers.js +1 -0
- package/dist/knowledge/rule-node-analyzers.spec.d.ts +1 -0
- package/dist/knowledge/rule-node-analyzers.spec.js +1 -0
- package/dist/knowledge/rule-outcome.d.ts +5 -0
- package/dist/knowledge/rule-outcome.js +1 -0
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +2 -2
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/service-allocator-audit-node.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-puzzle.d.ts +2 -2
- package/dist/knowledge/service-puzzle.js +1 -1
- package/dist/knowledge/service-risk-node.js +1 -1
- package/dist/knowledge/service-risk.d.ts +4 -4
- package/dist/knowledge/service-risk.js +1 -1
- package/dist/knowledge/service-templates.js +1 -1
- package/dist/knowledge/strategy-manuals.d.ts +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +84 -0
- package/dist/knowledge/template-loader.js +1 -0
- package/dist/knowledge/template-loader.spec.d.ts +1 -0
- package/dist/knowledge/template-loader.spec.js +1 -0
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +17 -0
- package/dist/knowledge/template-scanner.js +1 -0
- package/dist/knowledge/template-scanner.spec.d.ts +1 -0
- package/dist/knowledge/template-scanner.spec.js +1 -0
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/treasury-ledger.d.ts +1 -1
- package/dist/knowledge/treasury-ledger.js +1 -1
- package/dist/knowledge/treasury-puzzle.d.ts +3 -3
- package/dist/knowledge/treasury-puzzle.js +1 -1
- package/dist/knowledge/treasury-risk.d.ts +6 -4
- package/dist/knowledge/treasury-risk.js +1 -1
- package/dist/knowledge/treasury-templates.js +1 -1
- package/dist/knowledge/util-risk.d.ts +6 -6
- package/dist/knowledge/util-risk.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +4 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/knowledge/workspace-lists.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/arbitrator-interest.js +1 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/persona/analyzer.js +1 -1
- package/dist/persona/bridge.js +1 -1
- package/dist/persona/facet-profile.d.ts +33 -0
- package/dist/persona/facet-profile.js +1 -0
- package/dist/persona/index.js +1 -1
- package/dist/persona/model.d.ts +2 -1
- package/dist/persona/model.js +1 -1
- package/dist/persona/persona-audit.spec.d.ts +1 -0
- package/dist/persona/persona-audit.spec.js +1 -0
- package/dist/persona/topology-focus.d.ts +2 -2
- package/dist/persona/topology-focus.js +1 -1
- package/dist/persona/types.d.ts +14 -0
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/facet-money.d.ts +33 -0
- package/dist/playbooks/service-build/facet-money.js +1 -0
- package/dist/playbooks/service-build/facet-money.spec.d.ts +1 -0
- package/dist/playbooks/service-build/facet-money.spec.js +1 -0
- package/dist/playbooks/service-build/machine-panorama.d.ts +20 -0
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
- package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
- package/dist/playbooks/service-build/migration-planner.js +1 -0
- package/dist/playbooks/service-build/object-panorama.d.ts +65 -24
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +3 -3
- package/dist/playbooks/service-build/pipeline-actions.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
- package/dist/playbooks/service-build/reverse-mapping.js +1 -1
- package/dist/playbooks/service-build/risk-aggregator.d.ts +4 -2
- package/dist/playbooks/service-build/risk-aggregator.js +1 -1
- package/dist/playbooks/service-build/semantic-graph.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +56 -9
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +1 -0
- package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -0
- package/dist/playbooks/service-build/topology-query.d.ts +13 -2
- package/dist/playbooks/service-build/topology-query.js +1 -1
- package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
- package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
- package/dist/relationship/registry.js +1 -1
- package/dist/review/arb.d.ts +0 -2
- package/dist/review/arb.js +1 -1
- package/dist/review/machine.js +1 -1
- package/dist/review/order.d.ts +0 -1
- package/dist/review/order.js +1 -1
- package/dist/review/service.js +1 -1
- package/dist/review/types.d.ts +7 -0
- package/dist/role/profiles.js +1 -1
- package/dist/rules.d.ts +1 -2
- package/dist/rules.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +207 -0
- package/dist/schema/benchmark-migration/index.js +1 -0
- package/dist/schema/call/allocation.d.ts +1 -1
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.d.ts +1 -1
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +3374 -670
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/contact.d.ts +1 -1
- package/dist/schema/call/demand.d.ts +1 -1
- package/dist/schema/call/guard.d.ts +3 -3
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +5 -5
- package/dist/schema/call/order.d.ts +3 -3
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/permission-handler.d.ts +1 -1
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.d.ts +16 -16
- package/dist/schema/call/permission.js +1 -1
- package/dist/schema/call/personal.d.ts +8 -8
- package/dist/schema/call/personal.js +1 -1
- package/dist/schema/call/progress.d.ts +3 -3
- package/dist/schema/call/receipt.d.ts +28 -0
- package/dist/schema/call/receipt.js +1 -0
- package/dist/schema/call/repository.d.ts +11 -11
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +1 -1
- package/dist/schema/call/semantic-customer-advice.spec.d.ts +1 -0
- package/dist/schema/call/semantic-customer-advice.spec.js +1 -0
- package/dist/schema/call/semantic.d.ts +5 -2
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +7 -7
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +1 -1
- package/dist/schema/call/treasury.js +1 -1
- package/dist/schema/common/index.d.ts +6 -6
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +50 -1
- package/dist/schema/config/index.js +1 -1
- package/dist/schema/evaluation/index.d.ts +307 -213
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +6 -6
- package/dist/schema/goal/planning.d.ts +17 -17
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +1 -1
- package/dist/schema/interaction/index.d.ts +1 -1
- package/dist/schema/keeper/index.d.ts +1 -1
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +26 -26
- package/dist/schema/operations.d.ts +59 -43
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +4732 -24
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +830 -10
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +44 -44
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workflow/index.d.ts +1 -1
- package/dist/schema/workspace/index.d.ts +2 -2
- package/dist/schema-query-impl/index.d.ts +9 -0
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +1 -1
- package/dist/schemas/benchmark_migration_operation.output.json +793 -0
- package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
- package/dist/schemas/bridge_operation.output.json +1 -1
- package/dist/schemas/bridge_operation.schema.json +5 -5
- package/dist/schemas/config_operation.output.json +252 -0
- package/dist/schemas/config_operation.schema.json +21 -1
- package/dist/schemas/evaluation_operation.output.json +702 -162
- package/dist/schemas/evaluation_operation.schema.json +0 -429
- package/dist/schemas/goal_operation.schema.json +8 -8
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +7 -7
- package/dist/schemas/keeper_operation.output.json +1 -1
- package/dist/schemas/local_history_operation.output.json +1 -1
- package/dist/schemas/local_info_operation.output.json +1 -1
- package/dist/schemas/local_mark_operation.output.json +1 -1
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.output.json +1 -1
- package/dist/schemas/messenger_operation.schema.json +24 -12
- package/dist/schemas/monitor_events.output.json +1 -1
- package/dist/schemas/monitor_subscription.output.json +1 -1
- package/dist/schemas/onchain_events.output.json +2 -2
- package/dist/schemas/onchain_operations.output.json +6359 -3724
- package/dist/schemas/onchain_operations.schema.json +191 -141
- package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
- package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
- package/dist/schemas/onchain_operations_contact.schema.json +7 -5
- package/dist/schemas/onchain_operations_demand.schema.json +7 -5
- package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +5 -3
- package/dist/schemas/onchain_operations_machine.schema.json +22 -18
- package/dist/schemas/onchain_operations_order.schema.json +11 -7
- package/dist/schemas/onchain_operations_payment.schema.json +3 -3
- package/dist/schemas/onchain_operations_permission.schema.json +19 -11
- package/dist/schemas/onchain_operations_personal.schema.json +16 -10
- package/dist/schemas/onchain_operations_progress.schema.json +11 -7
- package/dist/schemas/onchain_operations_proof.schema.json +5 -3
- package/dist/schemas/onchain_operations_repository.schema.json +12 -8
- package/dist/schemas/onchain_operations_reward.schema.json +11 -9
- package/dist/schemas/onchain_operations_service.schema.json +28 -22
- package/dist/schemas/onchain_operations_treasury.schema.json +13 -11
- package/dist/schemas/onchain_table_data.output.json +88 -88
- package/dist/schemas/persona_operation.output.json +15875 -1
- package/dist/schemas/persona_operation.schema.json +3056 -478
- package/dist/schemas/query_toolkit.output.json +1325 -212
- package/dist/schemas/query_toolkit.schema.json +60 -2
- package/dist/schemas/workflow_operation.schema.json +4 -2
- package/dist/strategy/metrics.js +1 -1
- package/dist/strategy/scorecard.js +1 -1
- package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -0
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.d.ts +3 -0
- package/dist/tools/handlers/dispatch-expectations.js +1 -0
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.d.ts +3 -0
- package/dist/tools/move-fn-index.gen.js +1 -0
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/evaluation.d.ts +2 -0
- package/dist/tools/registry/evaluation.js +1 -0
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/sanitize-output.d.ts +3 -0
- package/dist/tools/sanitize-output.js +1 -0
- package/dist/tools/sanitize-output.spec.d.ts +1 -0
- package/dist/tools/sanitize-output.spec.js +1 -0
- package/dist/tools/shared.d.ts +0 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +9 -3
- package/dist/customer/customer-advice.d.ts +0 -32
- package/dist/customer/customer-advice.js +0 -1
- package/dist/customer/info-puzzle.d.ts +0 -146
- package/dist/customer/info-puzzle.js +0 -1
- package/dist/customer/order-strategy.d.ts +0 -17
- package/dist/customer/order-strategy.js +0 -1
- package/dist/customer/preorder-compare.d.ts +0 -24
- package/dist/customer/preorder-compare.js +0 -1
- package/dist/customer/reminder-system.d.ts +0 -42
- package/dist/customer/reminder-system.js +0 -1
- package/dist/customer/risk-assessment.d.ts +0 -13
- package/dist/customer/risk-assessment.js +0 -1
- package/dist/evaluation/builtins/service-risk.d.ts +0 -7
- package/dist/evaluation/builtins/service-risk.js +0 -1
- package/dist/knowledge/trust-metrics.d.ts +0 -66
- package/dist/knowledge/trust-metrics.js +0 -1
- package/dist/schema/trust/index.d.ts +0 -334
- package/dist/schema/trust/index.js +0 -1
- package/dist/schemas/trust_score.output.json +0 -847
- package/dist/schemas/trust_score.schema.json +0 -364
- package/dist/tools/handlers/trust.d.ts +0 -16
- package/dist/tools/handlers/trust.js +0 -1
- package/dist/tools/registry/trust.d.ts +0 -2
- package/dist/tools/registry/trust.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function fld(a,b){return a?.[b]??a?.['data']?.[b];}function detectType(a){const b=fld(a,'type')??fld(a,'type_raw');if(typeof b!=='string'||b['length']===0x0)return'';const c=b['split']('::')['pop']()??b;return c;}function objectsOfType(a,b){return a['filter'](c=>detectType(c)===b);}function identity(a){const b=fld(a,'name');if(typeof b==='string'&&b['trim']())return b['trim']();const c=fld(a,'object')??fld(a,'id');if(typeof c==='string'&&c['trim']())return c['trim']();return'unknown';}function balanceStr(a){if(a==null)return undefined;if(typeof a==='object'&&'balance'in a)return String(a['balance']);return String(a);}function extractService(a){const b=objectsOfType(a,'Service')[0x0];if(!b)return{'found':![],'name':'unavailable','description':'No\x20Service\x20object\x20found','published':![],'paused':![],'salesCount':0x0,'arbitrations':[],'hasBuyGuard':![],'hasUm':![],'rewardsCount':0x0};return{'found':!![],'name':identity(b),'description':fld(b,'description')??'Service\x20(no\x20description)','published':fld(b,'bPublished')??![],'paused':fld(b,'bPaused')??![],'salesCount':Array['isArray'](fld(b,'sales'))?fld(b,'sales')['length']:0x0,'arbitrations':(fld(b,'arbitrations')??[])['filter'](c=>!!c),'compensationFund':balanceStr(fld(b,'compensation_fund')),'hasBuyGuard':fld(b,'buy_guard')!=null,'hasUm':fld(b,'um')!=null,'rewardsCount':(fld(b,'rewards')??[])['length']};}const TERMINAL_SUFFIXES=['complete','completed','done','finish','finished','delivered','accepted','refund','cancelled','canceled'];function extractMachine(a,b){const c=objectsOfType(a,'Machine')[0x0];if(!c)return{'found':![],'nodeCount':0x0,'published':![],'paused':![],'entryNodes':[],'terminalNodeNames':[]};const d=(b??[])['map'](f=>f['name'])['filter'](f=>typeof f==='string'),e=d['filter'](f=>TERMINAL_SUFFIXES['some'](g=>f['toLowerCase']()['includes'](g)));return{'found':!![],'nodeCount':fld(c,'node_count')??
|
|
1
|
+
function fld(a,b){return a?.[b]??a?.['data']?.[b];}function detectType(a){const b=fld(a,'type')??fld(a,'type_raw');if(typeof b!=='string'||b['length']===0x0)return'';const c=b['split']('::')['pop']()??b;return c;}function objectsOfType(a,b){return a['filter'](c=>detectType(c)===b);}function identity(a){const b=fld(a,'name');if(typeof b==='string'&&b['trim']())return b['trim']();const c=fld(a,'object')??fld(a,'id');if(typeof c==='string'&&c['trim']())return c['trim']();return'unknown';}function balanceStr(a){if(a==null)return undefined;if(typeof a==='object'&&'balance'in a)return String(a['balance']);return String(a);}function extractService(a){const b=objectsOfType(a,'Service')[0x0];if(!b)return{'found':![],'name':'unavailable','description':'No\x20Service\x20object\x20found','published':![],'paused':![],'salesCount':0x0,'arbitrations':[],'hasBuyGuard':![],'hasUm':![],'rewardsCount':0x0};return{'found':!![],'name':identity(b),'description':fld(b,'description')??'Service\x20(no\x20description)','published':fld(b,'bPublished')??![],'paused':fld(b,'bPaused')??![],'salesCount':Array['isArray'](fld(b,'sales'))?fld(b,'sales')['length']:0x0,'arbitrations':(fld(b,'arbitrations')??[])['filter'](c=>!!c),'compensationFund':balanceStr(fld(b,'compensation_fund')),'hasBuyGuard':fld(b,'buy_guard')!=null,'hasUm':fld(b,'um')!=null,'rewardsCount':(fld(b,'rewards')??[])['length']};}const TERMINAL_SUFFIXES=['complete','completed','done','finish','finished','delivered','accepted','refund','cancelled','canceled'];function extractMachine(a,b){const c=objectsOfType(a,'Machine')[0x0];if(!c)return{'found':![],'nodeCount':0x0,'published':![],'paused':![],'entryNodes':[],'terminalNodeNames':[]};const d=(b??[])['map'](f=>f['name'])['filter'](f=>typeof f==='string'),e=d['filter'](f=>TERMINAL_SUFFIXES['some'](g=>f['toLowerCase']()['includes'](g)));return{'found':!![],'nodeCount':d['length']>0x0?d['length']:(fld(c,'node_count')??0x0)+0x1,'published':fld(c,'bPublished')??![],'paused':fld(c,'bPaused')??![],'entryNodes':[],'terminalNodeNames':e};}function hasRefundPath(a,b){return a['terminalNodeNames']['some'](c=>/refund|return|cancel/i['test'](c))||b;}function detectAllocationRefundSlot(a){const b=objectsOfType(a,'Service')[0x0],c=fld(b,'order_allocators'),d=Array['isArray'](c)?c:Array['isArray'](c?.['allocators'])?c['allocators']:[];for(const e of d){for(const f of e?.['sharing']??[]){const g=f?.['who'];if(g==null)continue;if(typeof g==='object'&&'Signer'in g)return!![];if(typeof g==='object'&&'Entity'in g)continue;}}return![];}export function generateBusinessReport(a){const b=a['objects']??[],c=extractService(b),d=extractMachine(b,a['machine_nodes']),e=detectAllocationRefundSlot(b),f=hasRefundPath(d,e),g=c['arbitrations']['length']>0x0,h=c['compensationFund'],i=h==null||h==='0',j=!c['found']?'unavailable':c['paused']?'published\x20but\x20PAUSED':c['published']?'published\x20and\x20active':'not\x20yet\x20published',k=!c['found']?'No\x20Service\x20object\x20available\x20to\x20describe.':c['description']+'\x20('+j+(c['salesCount']>0x0?',\x20'+c['salesCount']+'\x20sale\x20option(s)':'')+').',l=!d['found']?'Workflow\x20(Machine)\x20unavailable\x20—\x20cannot\x20describe\x20the\x20process.':d['nodeCount']>0x0?d['nodeCount']+'-node\x20workflow\x20('+(d['published']?'published':'draft')+(d['paused']?',\x20paused':'')+').'+(d['terminalNodeNames']['length']>0x0?'\x20Terminal/refund\x20nodes\x20detected:\x20'+d['terminalNodeNames']['join'](',\x20')+'.':'\x20No\x20explicit\x20terminal\x20node\x20detected\x20from\x20names.'):'Workflow\x20node\x20details\x20unavailable\x20(node_count\x20not\x20resolved).',m=f?'A\x20refund\x20path\x20is\x20present\x20(refund\x20terminal\x20node\x20or\x20a\x20payer-routed\x20allocation\x20slot).':'NO\x20refund\x20path\x20detected\x20—\x20funds\x20may\x20be\x20unrecoverable\x20once\x20the\x20workflow\x20advances\x20to\x20completion.',n=g?c['arbitrations']['length']+'\x20arbitration\x20service(s)\x20bound\x20—\x20disputes\x20have\x20a\x20resolution\x20path.':'NO\x20arbitration\x20bound\x20—\x20disputes\x20have\x20no\x20neutral\x20resolution\x20path.',o=[];if(!f)o['push']('No\x20refund\x20path\x20—\x20escrowed\x20funds\x20may\x20be\x20unrecoverable.');if(!g)o['push']('No\x20arbitration\x20bound\x20—\x20no\x20dispute\x20recourse.');if(i)o['push']('Compensation\x20fund\x20is\x20empty\x20—\x20arbitration\x20indemnity\x20would\x20be\x20unenforceable.');const p=[];if(c['published']&&!c['paused'])p['push']('Service\x20is\x20published\x20and\x20active.');if(f)p['push']('Refund\x20path\x20present.');if(g)p['push']('Arbitration\x20bound\x20(neutral\x20dispute\x20resolution).');if(!i)p['push']('Compensation\x20fund\x20funded\x20('+h+'\x20raw\x20units)\x20—\x20indemnity\x20enforceable.');if(c['hasBuyGuard'])p['push']('Buy\x20guard\x20present\x20(purchase\x20is\x20validated\x20by\x20on-chain\x20rules).');const q=[];if(!f)q['push']('Refund\x20path');if(!g)q['push']('Arbitration');if(i)q['push']('Compensation\x20fund');let r='low';if(!f&&!g)r='critical';else{if(!f||!g)r='high';else i&&(r='medium');}const s=[];if(c['found']&&c['paused'])s['push']('Service\x20is\x20currently\x20PAUSED\x20—\x20purchases\x20are\x20rejected\x20until\x20the\x20merchant\x20resumes\x20it.\x20This\x20is\x20a\x20merchant-side\x20availability\x20state,\x20not\x20a\x20trust\x20signal:\x20do\x20not\x20purchase\x20while\x20paused.');else c['found']&&!c['published']&&s['push']('Service\x20is\x20not\x20yet\x20published\x20—\x20purchases\x20are\x20not\x20possible\x20until\x20the\x20merchant\x20publishes\x20it.\x20This\x20is\x20a\x20launch\x20state,\x20not\x20a\x20trust\x20signal.');c['found']&&!c['hasUm']&&s['push']('No\x20contact\x20channel\x20(um)\x20configured\x20—\x20Messenger\x20pre-order\x20negotiation\x20with\x20the\x20merchant\x20is\x20unavailable.');const t=[];t['push']('Escrowed\x20settlement:\x20funds\x20release\x20only\x20when\x20the\x20workflow\x20advances\x20—\x20the\x20merchant\x20is\x20incentivized\x20to\x20deliver.'),t['push']('On-chain\x20reputation\x20(Registrar\x20like/dislike\x20+\x20dispute\x20rate)\x20is\x20a\x20public\x20trust\x20signal\x20for\x20future\x20buyers.');if(c['rewardsCount']>0x0)t['push'](c['rewardsCount']+'\x20reward(s)\x20configured\x20—\x20repeat-buyer\x20incentives\x20lower\x20acquisition\x20cost.');const u=[];u['push']('Escrow\x20safety:\x20money\x20is\x20locked\x20on-chain\x20until\x20completion,\x20not\x20held\x20by\x20the\x20merchant.');if(f)u['push']('Refund\x20path\x20exists\x20—\x20a\x20verified\x20refund\x20returns\x20the\x20escrow.');if(g)u['push']('Arbitration\x20recourse\x20—\x20a\x20neutral\x20third\x20party\x20can\x20rule\x20on\x20disputes.');if(!i)u['push']('Compensation\x20fund\x20backs\x20arbitration\x20indemnity.');const v=[];v['push']('Merchant\x20wants\x20settlement\x20released\x20early;\x20user\x20wants\x20to\x20verify\x20the\x20deliverable\x20first\x20—\x20the\x20workflow\x27s\x20confirm\x20step\x20is\x20the\x20contention\x20point.'),v['push']('Merchant\x20controls\x20the\x20Machine/Guards;\x20user\x20is\x20limited\x20to\x20the\x20confirm/refund\x20forwards\x20the\x20merchant\x20designed.');if(!g)v['push']('No\x20arbitration:\x20a\x20deadlock\x20has\x20no\x20neutral\x20tie-breaker.');const w=[];w['push']('Escrow\x20alignment:\x20funds\x20stay\x20locked\x20until\x20both\x20sides\x20advance\x20the\x20workflow\x20—\x20neither\x20can\x20unilaterally\x20take\x20the\x20money.');if(f)w['push']('Allocation\x20alignment:\x20a\x20refund\x20slot\x20routes\x20the\x20escrow\x20back\x20to\x20the\x20buyer\x20on\x20the\x20refund\x20path.');if(g)w['push']('Arbitration\x20alignment:\x20an\x20independent\x20Permission\x20+\x20public\x20voters\x20provide\x20a\x20neutral\x20dispute\x20authority.');w['push']('Reputation\x20alignment:\x20Registrar\x20like/dislike\x20is\x20framework-enforced\x20and\x20unforgeable\x20—\x20both\x20sides\x20are\x20accountable\x20to\x20public\x20history.');const x=r['toUpperCase'](),y=a['order_amount']!=null?'\x20'+a['order_amount']+'\x20raw\x20units\x20are\x20escrowed.':'',z=c['found']&&c['paused']?'\x20NOTE:\x20the\x20service\x20is\x20PAUSED\x20—\x20purchases\x20are\x20rejected\x20until\x20the\x20merchant\x20resumes\x20it.':c['found']&&!c['published']?'\x20NOTE:\x20the\x20service\x20is\x20not\x20yet\x20published\x20—\x20purchases\x20are\x20not\x20possible.':'',A=!c['found']?'No\x20Service\x20object\x20found\x20—\x20reverse\x20mapping\x20produced\x20a\x20minimal\x20report.':'\x22'+c['name']+'\x22\x20is\x20'+j+'.'+y+'\x20'+('Risk\x20level:\x20'+x+'.\x20'+(f?'Refund\x20path\x20present.':'NO\x20refund\x20path.')+'\x20')+(''+(g?'Arbitration\x20bound.':'NO\x20arbitration.'))+(z+'\x20')+'This\x20report\x20is\x20generated\x20deterministically\x20from\x20on-chain\x20facts\x20—\x20the\x20buyer\x20decides.';return{'summary':A,'merchantProfile':{'serviceDescription':k,'workflowDescription':l,'refundPolicy':m,'arbitrationPolicy':n},'userRiskAssessment':{'riskLevel':r,'keyRisks':o,'protections':p,'missingProtections':q,'notices':s},'gameTheoryAnalysis':{'merchantIncentives':t,'userIncentives':u,'potentialConflicts':v,'wowAlignments':w}};}export function classifyObjectType(a){return detectType(a);}export function extractObjectFields(a){if(!a||typeof a!=='object')return{};const b=a['data']??a;if(!b||typeof b!=='object')return{};return{...b};}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ProjectObjectType, IndustryMode } from "./namespace.js";
|
|
2
2
|
import type { ObjectPuzzleEntry } from "./business-puzzle.js";
|
|
3
|
-
|
|
3
|
+
import { type Severity } from "../../config/severity.js";
|
|
4
|
+
export type RiskSeverity = Severity;
|
|
4
5
|
export interface RiskAggregationInput {
|
|
5
6
|
project_prefix: string;
|
|
6
7
|
version: string;
|
|
@@ -21,6 +22,7 @@ export interface AggregatedRisk {
|
|
|
21
22
|
actual_value?: unknown;
|
|
22
23
|
expected_value?: unknown;
|
|
23
24
|
rule_source?: string;
|
|
25
|
+
proposal_node?: string;
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
export interface RiskAggregationResult {
|
|
@@ -49,7 +51,7 @@ export interface RiskAggregationResult {
|
|
|
49
51
|
}>>;
|
|
50
52
|
warnings: string[];
|
|
51
53
|
}
|
|
52
|
-
export declare function aggregateProjectRisks(input: RiskAggregationInput): RiskAggregationResult
|
|
54
|
+
export declare function aggregateProjectRisks(input: RiskAggregationInput): Promise<RiskAggregationResult>;
|
|
53
55
|
export declare function sortFindings(findings: AggregatedRisk[]): AggregatedRisk[];
|
|
54
56
|
export declare function countBySeverity(findings: AggregatedRisk[]): Record<RiskSeverity, number>;
|
|
55
57
|
export declare function determineStatus(severity_summary: Record<RiskSeverity, number>, threshold: RiskSeverity, user_confirmed_high_risks: string[], findings: AggregatedRisk[]): RiskAggregationResult["status"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ENTRYPOINT}from'@wowok/wowok';import{buildProposalGraph,buildViewport,runNodeAnalyzers}from'../../graph/onchain/index.js';import{RULE_NODE_ANALYZERS}from'../../knowledge/rule-node-analyzers.js';import{normalizeSeverity}from'../../config/severity.js';const SEVERITY_ORDER={'critical':0x0,'high':0x1,'medium':0x2,'low':0x3,'info':0x4},ALL_SEVERITIES=['critical','high','medium','low','info'];function findingToAggregatedRisk(a,b,c){const d=a['ruleId']??'?',e='\x20('+d+')',g=a['title']['endsWith'](e)?a['title']['slice'](0x0,a['title']['length']-e['length']):a['title'];return{'risk_rule_id':d,'object_type':b,'entry_id':c,'severity':normalizeSeverity(a['severity']),'message':g,'fix_suggestion':a['suggestion']??'','details':{...a['evidence']?{'field_path':a['evidence']}:{},'rule_source':a['id']['slice'](0x0,a['id']['indexOf'](':')),'proposal_node':a['path'][0x0]}};}export async function aggregateProjectRisks(a){const b=[];(!a||!a['project_prefix'])&&b['push']('input.project_prefix\x20is\x20empty');const c=a?.['puzzles']??{},d=await buildProposalGraph(c,{'network':ENTRYPOINT['Testnet']});for(const o of d['nodes']['values']()){o['proposal']&&!o['objectType']&&b['push']('No\x20analyzer\x20vocabulary\x20for\x20puzzle\x20key\x20\x27'+o['proposal']['sourceKey']+'\x27\x20—\x20key\x20skipped');}const e=buildViewport(d,d['seed'],'neutral'),g=runNodeAnalyzers(e,RULE_NODE_ANALYZERS),h=[];for(const p of g){if(p['ruleId']==null)continue;const q=p['path'][0x0]??'',r=d['nodes']['get'](q),s=r?.['proposal']?.['sourceKey']??q['replace'](/^proposal::/,'');h['push'](findingToAggregatedRisk(p,s,(a['project_prefix']??'project')+'_'+s));}sortFindings(h);const i=countBySeverity(h),j=a['severity_threshold']??'high',k=determineStatus(i,j,a['user_confirmed_high_risks']??[],h);let l;k==='RISK_PENDING_CONFIRM'&&(l=h['filter'](t=>t['severity']==='high')['filter'](t=>!(a['user_confirmed_high_risks']??[])['includes'](t['risk_rule_id']))['map'](t=>({'risk_rule_id':t['risk_rule_id'],'description':t['message'],'fix_suggestion':t['fix_suggestion'],'object_type':t['object_type'],'entry_id':t['entry_id']})));const m={};for(const t of h){const u=t['object_type'];!m[u]&&(m[u]=[]),m[u]['push']({'risk_rule_id':t['risk_rule_id'],'severity':t['severity'],'message':t['message'],'fix_suggestion':t['fix_suggestion'],'entry_id':t['entry_id']});}return{'namespace':{'prefix':a['project_prefix']??'','version':a['version']??'','industry':a['industry']??'general'},'findings':h,'severity_summary':i,'status':k,'pending_confirmations':l,'calibrated_at':Date['now'](),'fix_suggestions_grouped':m,'warnings':b};}export function sortFindings(a){return a['sort']((c,d)=>{const e=SEVERITY_ORDER[c['severity']]-SEVERITY_ORDER[d['severity']];if(e!==0x0)return e;if(c['object_type']!==d['object_type'])return c['object_type']['localeCompare'](d['object_type']);return c['risk_rule_id']['localeCompare'](d['risk_rule_id']);});}export function countBySeverity(a){const b={'critical':0x0,'high':0x0,'medium':0x0,'low':0x0,'info':0x0};for(const c of a){b[c['severity']]++;}return b;}export function determineStatus(a,b,c,d){if(a['critical']>0x0)return'RISK_BLOCKED';const e=SEVERITY_ORDER[b];if(a['high']>0x0&&e<=SEVERITY_ORDER['high']){const f=d['filter'](g=>g['severity']==='high'&&!c['includes'](g['risk_rule_id']));if(f['length']>0x0)return'RISK_PENDING_CONFIRM';}if(a['medium']>0x0&&e<=SEVERITY_ORDER['medium'])return'RISK_BLOCKED';if(a['low']>0x0&&e<=SEVERITY_ORDER['low'])return'RISK_BLOCKED';return'RISK_PASSED';}export function getCriticalRisks(a){if(!a?.['findings'])return[];return a['findings']['filter'](b=>b['severity']==='critical');}export function summarizeRiskReport(a){if(!a)return'(no\x20result)';const b=[];b['push']('#\x20Risk\x20Aggregation\x20Report'),b['push'](''),b['push']('-\x20Project:\x20'+a['namespace']['prefix']+'_'+a['namespace']['version']),b['push']('-\x20Status:\x20'+a['status']),b['push']('-\x20Calibrated\x20at:\x20'+new Date(a['calibrated_at'])['toISOString']()),b['push'](''),b['push']('##\x20Severity\x20Summary'),b['push'](''),b['push']('|\x20Severity\x20|\x20Count\x20|'),b['push']('|----------|-------|');for(const c of ALL_SEVERITIES){b['push']('|\x20'+c+'\x20|\x20'+(a['severity_summary'][c]??0x0)+'\x20|');}b['push']('');if(a['findings']['length']===0x0)return b['push']('No\x20risks\x20found.'),b['join']('\x0a');b['push']('##\x20Findings\x20(sorted\x20by\x20severity)'),b['push']('');for(const d of a['findings']){b['push']('-\x20**['+d['severity']+']\x20'+d['risk_rule_id']+'**\x20('+d['object_type']+'\x20/\x20'+d['entry_id']+')'),b['push']('\x20\x20-\x20'+d['message']),d['fix_suggestion']&&b['push']('\x20\x20-\x20Fix:\x20'+d['fix_suggestion']),d['details']?.['proposal_node']&&b['push']('\x20\x20-\x20Evaluated\x20on\x20'+d['details']['proposal_node']+'\x20via\x20'+(d['details']['rule_source']??'unknown\x20analyzer'));}if(a['warnings']['length']>0x0){b['push'](''),b['push']('##\x20Warnings');for(const e of a['warnings'])b['push']('-\x20'+e);}return b['join']('\x0a');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function buildSemanticGraph(a,b,c,d){const e=[],f=[],h=[],j=c?.['machine_shape']??[],k=c?.['allocator'],l=!!k&&!d?.['paymentExplicit']&&(k['count']>0x1||k['recipient']!=='signer');e['push']({'id':'main_permission','type':'permission','purpose':'Role-based\x20access\x20control\x20for\x20merchant,\x20customer,\x20and\x20optional\x20arbitrator','derivedFrom':{'intentField':'roles','rationale':'All\x20WOW\x20services\x20require\x20a\x20Permission\x20object\x20for\x20role\x20management'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_service','type':'service','purpose':'Main\x20service\x20offering:\x20'+a['description'],'derivedFrom':{'intentField':'description','rationale':'Service\x20is\x20the\x20primary\x20object\x20representing\x20the\x20merchant\x20offering'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_service','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_service','to':'main_permission','relation':'has_permission','required':!![],'derivedFrom':{'intentField':'roles','rationale':'Service\x20must\x20reference\x20its\x20Permission\x20object'}}));(a['payment']['model']==='milestone'||a['deliverables']['length']>0x1||j['length']>0x0)&&(e['push']({'id':'main_machine','type':'machine','purpose':'Workflow\x20controlling\x20deliverable\x20milestones\x20and\x20acceptance','derivedFrom':j['length']>0x0?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20machine_shape\x20prior:\x20'+j['length']+'\x20nodes'}:{'intentField':'deliverables','rationale':'Multiple\x20deliverables\x20or\x20milestone\x20payment\x20requires\x20Machine\x20workflow'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_machine','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...j['length']>0x0?{'nodes':{'type':'string','value':j['map'](s=>s['name'])['join']('\x20→\x20'),'mapsTo':'machine.nodes'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](s=>s['id']==='main_service')&&f['push']({'from':'main_service','to':'main_machine','relation':'uses_machine','required':!![],'derivedFrom':{'intentField':'deliverables','rationale':'Service\x20binds\x20to\x20Machine\x20for\x20workflow\x20execution'}}));(a['payment']['model']==='milestone'||a['payment']['model']==='escrow'||a['trust']['escrow']||l)&&(e['push']({'id':'main_allocation','type':'allocation','purpose':'Fund\x20distribution\x20among\x20merchant\x20and\x20optional\x20suppliers','derivedFrom':l&&a['payment']['model']!=='milestone'&&a['payment']['model']!=='escrow'&&!a['trust']['escrow']?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20allocator\x20prior:\x20'+k['description']}:{'intentField':'payment.allocation','rationale':'Escrow/milestone\x20requires\x20Allocation\x20for\x20fund\x20routing'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_allocation','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...k?{'allocator_strategy':{'type':'string','value':k['description'],'mapsTo':'allocation.strategy'},'allocator_mode':{'type':'enum','value':k['mode'],'allowed':['amount','rate','surplus'],'mapsTo':'allocation.mode'},'allocator_recipient_count':{'type':'number','value':k['count'],'mapsTo':'allocation.recipients'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](s=>s['id']==='main_service')&&f['push']({'from':'main_service','to':'main_allocation','relation':'has_order_allocators','required':!![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20must\x20bind\x20Allocation\x20for\x20order\x20fund\x20routing'}}));a['trust']['arbitration']!=='none'&&(e['push']({'id':'main_arbitration','type':'arb','purpose':'Independent\x20dispute\x20resolution','derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20object\x20provides\x20binding\x20dispute\x20resolution'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_arbitration','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'}},'expectedState':{'published':!![],'paused':![]}}),e['push']({'id':'arb_permission','type':'permission','purpose':'Independent\x20permission\x20for\x20arbitration\x20(MUST\x20differ\x20from\x20Service.permission)','derivedFrom':{'intentField':'trust.arbitration','rationale':'Contract-enforced:\x20arbitration.permission\x20!=\x20service.permission\x20(E_ARBITRATION_PERMISSION_CONFLICT=33)'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_arb_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_arbitration','to':'arb_permission','relation':'has_permission','required':!![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20requires\x20its\x20own\x20Permission'}}),e['find'](s=>s['id']==='main_service')&&f['push']({'from':'main_service','to':'main_arbitration','relation':'has_arbitration','required':![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Service\x20references\x20Arbitration\x20in\x20arbitrations\x20list'}}));const m=b['some'](s=>s['id']==='wip_provenance'||s['id']==='subscription_with_proof'||s['id']==='damage_attestation');m&&e['push']({'id':'main_repository','type':'repository','purpose':'Store\x20WIP\x20hashes\x20and\x20delivery\x20evidence','derivedFrom':{'intentField':'deliverables','rationale':'WIP\x20provenance\x20requires\x20Repository\x20for\x20hash\x20commitments'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_repository','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}});for(const s of b){for(const t of s['templateRefs']){if(t['object_type']==='guard')e['push']({'id':'guard_'+s['id'],'type':'guard','purpose':t['purpose'],'derivedFrom':{'intentField':'trust','rationale':'Guard\x20for\x20'+s['name']+'\x20module'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_'+s['id']+'_guard','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});else{if(t['template_id']['startsWith']('supplier-')){const u='supplier_'+s['id']+'_'+t['object_type'];if(e['some'](w=>w['id']===u))continue;e['push']({'id':u,'type':t['object_type'],'purpose':t['purpose'],'derivedFrom':{'intentField':'roles.suppliers','rationale':'Supplier\x20'+t['object_type']+'\x20for\x20'+s['name']+'\x20(B-6\x20two-hop\x20waterfall)'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_'+s['id']+'_'+t['object_type'],'mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});const v=e['find'](w=>w['id']==='main_service');v&&f['push']({'from':'main_service','to':u,'relation':'sub_order','required':![],'derivedFrom':{'intentField':'payment.allocation','rationale':'Two-hop\x20waterfall:\x20main\x20order\x20→\x20tier-1\x20allocation\x20→\x20supplier\x20sub-order\x20→\x20tier-2\x20allocation\x20('+s['name']+')'}});}}}}if(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset'){e['push']({'id':'main_contact','type':'contact','purpose':'Public\x20contact/IM\x20channel\x20so\x20customers\x20can\x20reach\x20the\x20merchant\x20before\x20ordering','derivedFrom':{'intentField':'description','rationale':'A\x20discoverable\x20contact\x20object\x20improves\x20customer\x20trust\x20and\x20order\x20conversion'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_contact','mapsTo':'object.name'},'description':{'type':'string','value':a['description'],'mapsTo':'object.description'}},'expectedState':{'published':!![],'paused':![]}});const w=e['find'](x=>x['id']==='main_service');w&&(w['config']['um']={'type':'address_ref','targetId':'main_contact','mapsTo':'object.um'},f['push']({'from':'main_service','to':'main_contact','relation':'has_contact','required':![],'derivedFrom':{'intentField':'description','rationale':'Service\x20binds\x20Contact\x20via\x20um\x20so\x20customers\x20can\x20reach\x20the\x20merchant'}}));}(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_reward','type':'reward','purpose':'Optional\x20incentive\x20pool\x20(discount/referral)\x20to\x20attract\x20and\x20retain\x20customers','derivedFrom':{'intentField':'payment','rationale':'Rewards\x20lower\x20acquisition\x20cost\x20and\x20boost\x20conversion'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_reward','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),e['find'](x=>x['id']==='main_service')&&f['push']({'from':'main_service','to':'main_reward','relation':'has_rewards','required':![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20can\x20reference\x20Reward\x20in\x20its\x20rewards\x20list'}}));if(c?.['guards']?.['length']){const x=y=>{switch(y){case'service':return e['find'](z=>z['id']==='main_service')?.['id'];case'machine':return e['find'](z=>z['id']==='main_machine')?.['id'];case'reward':return e['find'](z=>z['id']==='main_reward')?.['id'];case'repository':return e['find'](z=>z['id']==='main_repository')?.['id'];case'arbitration':return e['find'](z=>z['id']==='main_arbitration')?.['id'];default:return undefined;}};for(const y of c['guards']){const z='guard_'+y['template_id'];if(e['some'](B=>B['id']===z))continue;const A=x(y['host']);if(!A)continue;e['push']({'id':z,'type':'guard','purpose':y['purpose'],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20guard\x20prior\x20('+y['host']+'\x20host)'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_'+y['template_id'],'mapsTo':'object.name'},'template':{'type':'string','value':y['template_id'],'mapsTo':'guard.template'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':A,'to':z,'relation':'has_guard','required':![],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20attaches\x20'+y['template_id']+'\x20to\x20'+y['host']}});}}if(c?.['config_overrides'])for(const [B,C]of Object['entries'](c['config_overrides'])){for(const D of e){if(D['type']!==B)continue;for(const [E,F]of Object['entries'](C)){if(D['config'][E]!==undefined)continue;if(typeof F==='string')D['config'][E]={'type':'string','value':F,'mapsTo':'object.'+E};else{if(typeof F==='number')D['config'][E]={'type':'number','value':F,'mapsTo':'object.'+E};else typeof F==='boolean'&&(D['config'][E]={'type':'boolean','value':F,'mapsTo':'object.'+E});}}}}h['push']({'id':'service_permission_bound','level':'hard','description':'Service\x20must\x20be\x20bound\x20to\x20a\x20Permission\x20object','source':{'layer':'contract','reference':'service.move:\x20permission\x20field\x20is\x20required'},'fixSuggestion':'Create\x20Permission\x20object\x20first,\x20then\x20reference\x20it\x20in\x20Service.object.permission'});a['trust']['arbitration']!=='none'&&h['push']({'id':'arbitration_permission_independent','level':'hard','description':'Arbitration.permission\x20MUST\x20be\x20different\x20from\x20Service.permission','source':{'layer':'contract','reference':'service.move:433-436\x20E_ARBITRATION_PERMISSION_CONFLICT=33'},'fixSuggestion':'Create\x20a\x20dedicated\x20Permission\x20object\x20for\x20Arbitration,\x20do\x20NOT\x20reuse\x20Service.permission'});a['payment']['model']==='milestone'&&h['push']({'id':'machine_bound_before_publish','level':'hard','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service\x20before\x20Service.publish','source':{'layer':'contract','reference':'service.move:\x20machine\x20is\x20IMMUTABLE\x20after\x20publish'},'fixSuggestion':'Create\x20and\x20publish\x20Machine\x20before\x20calling\x20Service.publish.\x20Machine\x20cannot\x20be\x20changed\x20after\x20Service\x20is\x20published.'});if(c){h['push']({'id':'mode_key_risk','level':'info','description':'['+c['display_name']+']\x20key\x20risk:\x20'+c['key_risk'],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':c['build_notes']?.[0x0]??'Adopt\x20the\x20mode\x27s\x20guard/allocator\x20priors\x20when\x20materializing\x20objects'});for(let G=0x0;G<(c['build_notes']??[])['length'];G++){h['push']({'id':'mode_build_note_'+G,'level':'info','description':'['+c['display_name']+']\x20'+c['build_notes'][G],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':'Apply\x20this\x20note\x20during\x20object\x20materialization'});}c['risk_constraints']['require_arbitration']&&a['trust']['arbitration']==='none'&&h['push']({'id':'mode_requires_arbitration','level':'soft','description':'Mode\x20\x27'+c['display_name']+'\x27\x20requires\x20arbitration,\x20but\x20intent\x20trust.arbitration\x20is\x20\x27none\x27','source':{'layer':'industry_mode','reference':c['name']+'.risk_constraints.require_arbitration'},'fixSuggestion':'Set\x20guide_confirm.trust.arbitration\x20to\x20a\x20dispute\x20resolution\x20mode,\x20or\x20the\x20plan\x20ships\x20without\x20the\x20mode\x27s\x20safety\x20net'});}const n=calculateModuleScoreBoost(b),o=Math['min'](0x64,0x28+Object['values'](n)['reduce']((H,I)=>H+I,0x0)/0x2),p=Math['min'](0x64,0x32+(n['trust']??0x0)+(n['fund_safety']??0x0)),q=Math['min'](0x64,0x1e+b['length']*0x8),r={'estimatedRiskScore':o,'estimatedTrustScore':p,'estimatedCompletenessScore':q,'keyRisks':[...c?['['+c['display_name']+']\x20'+c['key_risk']]:[],...a['trust']['arbitration']==='none'?['No\x20arbitration\x20configured\x20—\x20disputes\x20have\x20no\x20resolution\x20path']:[],...a['payment']['model']==='upfront'&&a['trust']['refundPolicy']==='no_refund'?['Full\x20upfront\x20+\x20no\x20refund\x20=\x20high\x20user\x20risk']:[]],'strengths':[...b['map'](H=>H['name']+':\x20'+H['description']['slice'](0x0,0x3c)+'...'),...(c?.['expected_benefits']??[])['map'](H=>H['metric']+':\x20'+H['expected_value']+'\x20('+H['evidence']+')')],'moduleBoosts':n};return{'nodes':e,'edges':f,'constraints':h,'evaluationPreview':r,'adoptedModules':b['map'](H=>H['id']),'businessIntent':a};}function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}export function validateGraph(a){const b=[],c=[],d=[];for(const e of a['constraints']){if(e['id']==='service_permission_bound'){const f=a['nodes']['some'](h=>h['type']==='service'),g=a['edges']['some'](h=>h['relation']==='has_permission'&&h['from']['startsWith']('main_service'));f&&!g&&b['push'](e);}if(e['id']==='arbitration_permission_independent'){const h=a['nodes']['find'](j=>j['id']==='main_service'),i=a['nodes']['find'](j=>j['id']==='main_arbitration');if(h&&i){const j=a['edges']['find'](l=>l['from']==='main_service'&&l['relation']==='has_permission')?.['to'],k=a['edges']['find'](l=>l['from']==='main_arbitration'&&l['relation']==='has_permission')?.['to'];j&&k&&j===k&&b['push'](e);}}if(e['level']==='soft')c['push'](e);else e['level']==='info'&&d['push'](e);}return{'valid':b['length']===0x0,'hardViolations':b,'softViolations':c,'infoNotes':d};}
|
|
1
|
+
export function buildSemanticGraph(a,b,c,d){const e=[],f=[],h=[],j=c?.['machine_shape']??[],k=c?.['allocator'],l=!!k&&!d?.['paymentExplicit']&&(k['count']>0x1||k['recipient']!=='signer');e['push']({'id':'main_permission','type':'permission','purpose':'Role-based\x20access\x20control\x20for\x20merchant,\x20customer,\x20and\x20optional\x20arbitrator','derivedFrom':{'intentField':'roles','rationale':'All\x20WOW\x20services\x20require\x20a\x20Permission\x20object\x20for\x20role\x20management'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_service','type':'service','purpose':'Main\x20service\x20offering:\x20'+a['description'],'derivedFrom':{'intentField':'description','rationale':'Service\x20is\x20the\x20primary\x20object\x20representing\x20the\x20merchant\x20offering'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_service','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_service','to':'main_permission','relation':'requires_permission','required':!![],'derivedFrom':{'intentField':'roles','rationale':'Service\x20must\x20reference\x20its\x20Permission\x20object'}}));(a['payment']['model']==='milestone'||a['deliverables']['length']>0x1||j['length']>0x0)&&(e['push']({'id':'main_machine','type':'machine','purpose':'Workflow\x20controlling\x20deliverable\x20milestones\x20and\x20acceptance','derivedFrom':j['length']>0x0?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20machine_shape\x20prior:\x20'+j['length']+'\x20nodes'}:{'intentField':'deliverables','rationale':'Multiple\x20deliverables\x20or\x20milestone\x20payment\x20requires\x20Machine\x20workflow'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_machine','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...j['length']>0x0?{'nodes':{'type':'string','value':j['map'](s=>s['name'])['join']('\x20→\x20'),'mapsTo':'machine.nodes'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](s=>s['id']==='main_service')&&f['push']({'from':'main_service','to':'main_machine','relation':'uses_machine','required':!![],'derivedFrom':{'intentField':'deliverables','rationale':'Service\x20binds\x20to\x20Machine\x20for\x20workflow\x20execution'}}));(a['payment']['model']==='milestone'||a['payment']['model']==='escrow'||a['trust']['escrow']||l)&&(e['push']({'id':'main_allocation','type':'allocation','purpose':'Fund\x20distribution\x20among\x20merchant\x20and\x20optional\x20suppliers','derivedFrom':l&&a['payment']['model']!=='milestone'&&a['payment']['model']!=='escrow'&&!a['trust']['escrow']?{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20allocator\x20prior:\x20'+k['description']}:{'intentField':'payment.allocation','rationale':'Escrow/milestone\x20requires\x20Allocation\x20for\x20fund\x20routing'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_allocation','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'},...k?{'allocator_strategy':{'type':'string','value':k['description'],'mapsTo':'allocation.strategy'},'allocator_mode':{'type':'enum','value':k['mode'],'allowed':['amount','rate','surplus'],'mapsTo':'allocation.mode'},'allocator_recipient_count':{'type':'number','value':k['count'],'mapsTo':'allocation.recipients'}}:{}},'expectedState':{'published':!![],'paused':![]}}),e['find'](s=>s['id']==='main_service')&&f['push']({'from':'main_service','to':'main_allocation','relation':'has_order_allocators','required':!![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20must\x20bind\x20Allocation\x20for\x20order\x20fund\x20routing'}}));a['trust']['arbitration']!=='none'&&(e['push']({'id':'main_arbitration','type':'arb','purpose':'Independent\x20dispute\x20resolution','derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20object\x20provides\x20binding\x20dispute\x20resolution'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_arbitration','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'}},'expectedState':{'published':!![],'paused':![]}}),e['push']({'id':'arb_permission','type':'permission','purpose':'Independent\x20permission\x20for\x20arbitration\x20(MUST\x20differ\x20from\x20Service.permission)','derivedFrom':{'intentField':'trust.arbitration','rationale':'Contract-enforced:\x20arbitration.permission\x20!=\x20service.permission\x20(E_ARBITRATION_PERMISSION_CONFLICT=33)'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_arb_permission','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':'main_arbitration','to':'arb_permission','relation':'requires_permission','required':!![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Arbitration\x20requires\x20its\x20own\x20Permission'}}),e['find'](s=>s['id']==='main_service')&&f['push']({'from':'main_service','to':'main_arbitration','relation':'has_arbitration','required':![],'derivedFrom':{'intentField':'trust.arbitration','rationale':'Service\x20references\x20Arbitration\x20in\x20arbitrations\x20list'}}));const m=b['some'](s=>s['id']==='wip_provenance'||s['id']==='subscription_with_proof'||s['id']==='damage_attestation');m&&e['push']({'id':'main_repository','type':'repository','purpose':'Store\x20WIP\x20hashes\x20and\x20delivery\x20evidence','derivedFrom':{'intentField':'deliverables','rationale':'WIP\x20provenance\x20requires\x20Repository\x20for\x20hash\x20commitments'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_repository','mapsTo':'object.name'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}});for(const s of b){for(const t of s['templateRefs']){if(t['object_type']==='guard')e['push']({'id':'guard_'+s['id'],'type':'guard','purpose':t['purpose'],'derivedFrom':{'intentField':'trust','rationale':'Guard\x20for\x20'+s['name']+'\x20module'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_'+s['id']+'_guard','mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});else{if(t['template_id']['startsWith']('supplier-')){const u='supplier_'+s['id']+'_'+t['object_type'];if(e['some'](w=>w['id']===u))continue;e['push']({'id':u,'type':t['object_type'],'purpose':t['purpose'],'derivedFrom':{'intentField':'roles.suppliers','rationale':'Supplier\x20'+t['object_type']+'\x20for\x20'+s['name']+'\x20(B-6\x20two-hop\x20waterfall)'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_'+s['id']+'_'+t['object_type'],'mapsTo':'object.name'}},'expectedState':{'published':!![],'paused':![]}});const v=e['find'](w=>w['id']==='main_service');v&&f['push']({'from':'main_service','to':u,'relation':'sub_order','required':![],'derivedFrom':{'intentField':'payment.allocation','rationale':'Two-hop\x20waterfall:\x20main\x20order\x20→\x20tier-1\x20allocation\x20→\x20supplier\x20sub-order\x20→\x20tier-2\x20allocation\x20('+s['name']+')'}});}}}}if(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset'){e['push']({'id':'main_contact','type':'contact','purpose':'Public\x20contact/IM\x20channel\x20so\x20customers\x20can\x20reach\x20the\x20merchant\x20before\x20ordering','derivedFrom':{'intentField':'description','rationale':'A\x20discoverable\x20contact\x20object\x20improves\x20customer\x20trust\x20and\x20order\x20conversion'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_contact','mapsTo':'object.name'},'description':{'type':'string','value':a['description'],'mapsTo':'object.description'}},'expectedState':{'published':!![],'paused':![]}});const w=e['find'](x=>x['id']==='main_service');w&&(w['config']['um']={'type':'address_ref','targetId':'main_contact','mapsTo':'object.um'},f['push']({'from':'main_service','to':'main_contact','relation':'has_contact','required':![],'derivedFrom':{'intentField':'description','rationale':'Service\x20binds\x20Contact\x20via\x20um\x20so\x20customers\x20can\x20reach\x20the\x20merchant'}}));}(a['intent']['startsWith']('sell_')||a['intent']==='rent_asset')&&(e['push']({'id':'main_reward','type':'reward','purpose':'Optional\x20incentive\x20pool\x20(discount/referral)\x20to\x20attract\x20and\x20retain\x20customers','derivedFrom':{'intentField':'payment','rationale':'Rewards\x20lower\x20acquisition\x20cost\x20and\x20boost\x20conversion'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_reward','mapsTo':'object.name'},'type_parameter':{'type':'string','value':a['payment']['currency'],'mapsTo':'object.type_parameter'},'permission':{'type':'address_ref','targetId':'main_permission','mapsTo':'object.permission'}},'expectedState':{'published':!![],'paused':![]}}),e['find'](x=>x['id']==='main_service')&&f['push']({'from':'main_service','to':'main_reward','relation':'has_rewards','required':![],'derivedFrom':{'intentField':'payment','rationale':'Service\x20can\x20reference\x20Reward\x20in\x20its\x20rewards\x20list'}}));if(c?.['guards']?.['length']){const x=y=>{switch(y){case'service':return e['find'](z=>z['id']==='main_service')?.['id'];case'machine':return e['find'](z=>z['id']==='main_machine')?.['id'];case'reward':return e['find'](z=>z['id']==='main_reward')?.['id'];case'repository':return e['find'](z=>z['id']==='main_repository')?.['id'];case'arbitration':return e['find'](z=>z['id']==='main_arbitration')?.['id'];default:return undefined;}};for(const y of c['guards']){const z='guard_'+y['template_id'];if(e['some'](B=>B['id']===z))continue;const A=x(y['host']);if(!A)continue;e['push']({'id':z,'type':'guard','purpose':y['purpose'],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20guard\x20prior\x20('+y['host']+'\x20host)'},'config':{'name':{'type':'string','value':a['description']['slice'](0x0,0x14)+'_'+y['template_id'],'mapsTo':'object.name'},'template':{'type':'string','value':y['template_id'],'mapsTo':'guard.template'}},'expectedState':{'published':!![],'paused':![]}}),f['push']({'from':A,'to':z,'relation':'has_guard','required':![],'derivedFrom':{'intentField':'industry','rationale':'Mode\x20\x27'+c['name']+'\x27\x20attaches\x20'+y['template_id']+'\x20to\x20'+y['host']}});}}if(c?.['config_overrides'])for(const [B,C]of Object['entries'](c['config_overrides'])){for(const D of e){if(D['type']!==B)continue;for(const [E,F]of Object['entries'](C)){if(D['config'][E]!==undefined)continue;if(typeof F==='string')D['config'][E]={'type':'string','value':F,'mapsTo':'object.'+E};else{if(typeof F==='number')D['config'][E]={'type':'number','value':F,'mapsTo':'object.'+E};else typeof F==='boolean'&&(D['config'][E]={'type':'boolean','value':F,'mapsTo':'object.'+E});}}}}h['push']({'id':'service_permission_bound','level':'hard','description':'Service\x20must\x20be\x20bound\x20to\x20a\x20Permission\x20object','source':{'layer':'contract','reference':'permission\x20field\x20is\x20required'},'fixSuggestion':'Create\x20Permission\x20object\x20first,\x20then\x20reference\x20it\x20in\x20Service.object.permission'});a['trust']['arbitration']!=='none'&&h['push']({'id':'arbitration_permission_independent','level':'hard','description':'Arbitration.permission\x20MUST\x20be\x20different\x20from\x20Service.permission','source':{'layer':'contract','reference':'E_ARBITRATION_PERMISSION_CONFLICT=33'},'fixSuggestion':'Create\x20a\x20dedicated\x20Permission\x20object\x20for\x20Arbitration,\x20do\x20NOT\x20reuse\x20Service.permission'});a['payment']['model']==='milestone'&&h['push']({'id':'machine_bound_before_publish','level':'hard','description':'Machine\x20must\x20be\x20published\x20and\x20bound\x20to\x20Service\x20before\x20Service.publish','source':{'layer':'contract','reference':'machine\x20is\x20IMMUTABLE\x20after\x20publish'},'fixSuggestion':'Create\x20and\x20publish\x20Machine\x20before\x20calling\x20Service.publish.\x20Machine\x20cannot\x20be\x20changed\x20after\x20Service\x20is\x20published.'});if(c){h['push']({'id':'mode_key_risk','level':'info','description':'['+c['display_name']+']\x20key\x20risk:\x20'+c['key_risk'],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':c['build_notes']?.[0x0]??'Adopt\x20the\x20mode\x27s\x20guard/allocator\x20priors\x20when\x20materializing\x20objects'});for(let G=0x0;G<(c['build_notes']??[])['length'];G++){h['push']({'id':'mode_build_note_'+G,'level':'info','description':'['+c['display_name']+']\x20'+c['build_notes'][G],'source':{'layer':'industry_mode','reference':c['name']},'fixSuggestion':'Apply\x20this\x20note\x20during\x20object\x20materialization'});}c['risk_constraints']['require_arbitration']&&a['trust']['arbitration']==='none'&&h['push']({'id':'mode_requires_arbitration','level':'soft','description':'Mode\x20\x27'+c['display_name']+'\x27\x20requires\x20arbitration,\x20but\x20intent\x20trust.arbitration\x20is\x20\x27none\x27','source':{'layer':'industry_mode','reference':c['name']+'.risk_constraints.require_arbitration'},'fixSuggestion':'Set\x20guide_confirm.trust.arbitration\x20to\x20a\x20dispute\x20resolution\x20mode,\x20or\x20the\x20plan\x20ships\x20without\x20the\x20mode\x27s\x20safety\x20net'});}const n=calculateModuleScoreBoost(b),o=Math['min'](0x64,0x28+Object['values'](n)['reduce']((H,I)=>H+I,0x0)/0x2),p=Math['min'](0x64,0x32+(n['trust']??0x0)+(n['fund_safety']??0x0)),q=Math['min'](0x64,0x1e+b['length']*0x8),r={'estimatedRiskScore':o,'estimatedTrustScore':p,'estimatedCompletenessScore':q,'keyRisks':[...c?['['+c['display_name']+']\x20'+c['key_risk']]:[],...a['trust']['arbitration']==='none'?['No\x20arbitration\x20configured\x20—\x20disputes\x20have\x20no\x20resolution\x20path']:[],...a['payment']['model']==='upfront'&&a['trust']['refundPolicy']==='no_refund'?['Full\x20upfront\x20+\x20no\x20refund\x20=\x20high\x20user\x20risk']:[]],'strengths':[...b['map'](H=>H['name']+':\x20'+H['description']['slice'](0x0,0x3c)+'...'),...(c?.['expected_benefits']??[])['map'](H=>H['metric']+':\x20'+H['expected_value']+'\x20('+H['evidence']+')')],'moduleBoosts':n};return{'nodes':e,'edges':f,'constraints':h,'evaluationPreview':r,'adoptedModules':b['map'](H=>H['id']),'businessIntent':a};}function calculateModuleScoreBoost(a){const b={};for(const c of a){for(const d of c['evaluationImpact']){const e=d['effect']==='required'?0xf:d['effect']==='boost'?0x8:0x3;b[d['dimension']]=(b[d['dimension']]??0x0)+e;}}return b;}export function validateGraph(a){const b=[],c=[],d=[];for(const e of a['constraints']){if(e['id']==='service_permission_bound'){const f=a['nodes']['some'](h=>h['type']==='service'),g=a['edges']['some'](h=>h['relation']==='requires_permission'&&h['from']['startsWith']('main_service'));f&&!g&&b['push'](e);}if(e['id']==='arbitration_permission_independent'){const h=a['nodes']['find'](j=>j['id']==='main_service'),i=a['nodes']['find'](j=>j['id']==='main_arbitration');if(h&&i){const j=a['edges']['find'](l=>l['from']==='main_service'&&l['relation']==='requires_permission')?.['to'],k=a['edges']['find'](l=>l['from']==='main_arbitration'&&l['relation']==='requires_permission')?.['to'];j&&k&&j===k&&b['push'](e);}}if(e['level']==='soft')c['push'](e);else e['level']==='info'&&d['push'](e);}return{'valid':b['length']===0x0,'hardViolations':b,'softViolations':c,'infoNotes':d};}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ServicePanoramaInput } from "../../schema/query/bi.js";
|
|
2
2
|
import { type BusinessReport } from "./reverse-mapping.js";
|
|
3
3
|
import { type SupplyChainGraph } from "../../knowledge/supply-chain.js";
|
|
4
|
+
import { type ExplorationBlock } from "../../graph/onchain/exploration.js";
|
|
4
5
|
type ProjectInput = ServicePanoramaInput;
|
|
5
6
|
export interface PanoramaSale {
|
|
6
7
|
name: string;
|
|
@@ -49,6 +50,24 @@ export interface PanoramaGuardSummary {
|
|
|
49
50
|
relies: string[];
|
|
50
51
|
relies_logic_and: boolean | null;
|
|
51
52
|
}
|
|
53
|
+
export interface PanoramaSharing {
|
|
54
|
+
who: string;
|
|
55
|
+
entity: string | null;
|
|
56
|
+
mode: "rate" | "amount" | "surplus";
|
|
57
|
+
value: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface PanoramaIncomeRecipient {
|
|
60
|
+
address: string;
|
|
61
|
+
kind: "treasury" | "account";
|
|
62
|
+
description: string | null;
|
|
63
|
+
permission: string | null;
|
|
64
|
+
balance: string | null;
|
|
65
|
+
balance_display: string | null;
|
|
66
|
+
balance_tip: string | null;
|
|
67
|
+
external_deposit_guard_count: number | null;
|
|
68
|
+
external_withdraw_guard_count: number | null;
|
|
69
|
+
via: string;
|
|
70
|
+
}
|
|
52
71
|
export interface PanoramaPermissionSummary {
|
|
53
72
|
address: string;
|
|
54
73
|
description: string | null;
|
|
@@ -65,16 +84,32 @@ export interface PanoramaPermissionSummary {
|
|
|
65
84
|
tags: string[];
|
|
66
85
|
updated_timestamp_ms: string | null;
|
|
67
86
|
}
|
|
68
|
-
export interface
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
export interface PanoramaOrderStats {
|
|
88
|
+
scope_count: number;
|
|
89
|
+
scoped: boolean;
|
|
90
|
+
amount_sum_raw: string | null;
|
|
91
|
+
amount_sum_display: string | null;
|
|
92
|
+
amount_sum_tip: string | null;
|
|
93
|
+
amount_known_count: number;
|
|
94
|
+
disputed_order_count: number;
|
|
95
|
+
allocation_pending_count: number;
|
|
96
|
+
allocation_allocated_count: number;
|
|
97
|
+
allocation_none_count: number;
|
|
98
|
+
first_created_ms: number | null;
|
|
99
|
+
last_created_ms: number | null;
|
|
100
|
+
}
|
|
101
|
+
export interface PanoramaDrilldown {
|
|
102
|
+
total_count: number;
|
|
103
|
+
analyzed_count: number;
|
|
104
|
+
stats_scope_count: number;
|
|
105
|
+
prompt: string;
|
|
75
106
|
}
|
|
76
107
|
export interface PanoramaRecentOrders {
|
|
77
108
|
count: number;
|
|
109
|
+
window_saturated: boolean;
|
|
110
|
+
preview_truncated: boolean;
|
|
111
|
+
stats: PanoramaOrderStats;
|
|
112
|
+
drilldown?: PanoramaDrilldown;
|
|
78
113
|
items: {
|
|
79
114
|
order: string;
|
|
80
115
|
time: number;
|
|
@@ -113,6 +148,8 @@ export interface ServicePanoramaResult {
|
|
|
113
148
|
setting_lock_duration: string | null;
|
|
114
149
|
customer_required: string[];
|
|
115
150
|
compensation_fund: string | null;
|
|
151
|
+
compensation_fund_display: string;
|
|
152
|
+
compensation_fund_tip: string;
|
|
116
153
|
sales: PanoramaSale[];
|
|
117
154
|
machine: string | null;
|
|
118
155
|
buy_guard: string | null;
|
|
@@ -128,8 +165,11 @@ export interface ServicePanoramaResult {
|
|
|
128
165
|
guard: string;
|
|
129
166
|
sharing_count: number;
|
|
130
167
|
max: string | null;
|
|
168
|
+
sharing: PanoramaSharing[];
|
|
169
|
+
guard_summary: PanoramaGuardSummary | null;
|
|
131
170
|
}[];
|
|
132
171
|
} | null;
|
|
172
|
+
income_recipients: PanoramaIncomeRecipient[];
|
|
133
173
|
payment_token: {
|
|
134
174
|
coin_type: string | null;
|
|
135
175
|
guidance: string;
|
|
@@ -146,7 +186,6 @@ export interface ServicePanoramaResult {
|
|
|
146
186
|
machine_graph: PanoramaMachineGraph | null;
|
|
147
187
|
buy_guard: PanoramaGuardSummary | null;
|
|
148
188
|
permission: PanoramaPermissionSummary | null;
|
|
149
|
-
allocator_guards: PanoramaGuardSummary[];
|
|
150
189
|
related: {
|
|
151
190
|
groups: {
|
|
152
191
|
type_label: string;
|
|
@@ -155,14 +194,22 @@ export interface ServicePanoramaResult {
|
|
|
155
194
|
type_label: string;
|
|
156
195
|
name: string | null;
|
|
157
196
|
time: number | null;
|
|
197
|
+
via: string | null;
|
|
198
|
+
explanation?: {
|
|
199
|
+
description: string | null;
|
|
200
|
+
table_refs: string[];
|
|
201
|
+
references_this_service: boolean;
|
|
202
|
+
submission_slots: number;
|
|
203
|
+
note: string;
|
|
204
|
+
} | null;
|
|
158
205
|
}[];
|
|
159
206
|
}[];
|
|
160
207
|
};
|
|
161
208
|
supply_chain: SupplyChainGraph | null;
|
|
162
|
-
trust: PanoramaTrust | null;
|
|
163
209
|
business_report: BusinessReport | null;
|
|
164
210
|
recent_orders: PanoramaRecentOrders | null;
|
|
165
211
|
data_gaps: string[];
|
|
212
|
+
exploration?: ExplorationBlock;
|
|
166
213
|
}
|
|
167
214
|
export declare function handleServicePanorama(v: ProjectInput): Promise<ServicePanoramaResult>;
|
|
168
215
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,fetchServiceOrders}from'../../graph/onchain/sdk-batch.js';import{formatChainValue}from'../../knowledge/fund-layer.js';import{buildMachineGraph}from'./machine-nodes.js';import{computeServiceTrustSummary}from'../../tools/handlers/trust.js';function balanceStr(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a['toString']();return String(a);}function ownerAddr(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];}return null;}function requireField(a,b){if(a===undefined||a===null)throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeGuard(a){if(!a)return null;const b=a,c=Array['isArray'](b['table'])?b['table']:[],d=c['filter'](e=>e?.['b_submission']===!![])['length'];return{'address':b['object']??'','description':b['description']??null,'rep':typeof b['rep']==='boolean'?b['rep']:null,'table_entry_count':c['length'],'submission_slot_count':d,'relies':Array['isArray'](b['relies'])?b['relies']['filter'](e=>typeof e==='string'):[],'relies_logic_and':typeof b['relies_logic_and']==='boolean'?b['relies_logic_and']:null};}function summarizePermission(a,b){if(!a)return null;const c=a,d=Array['isArray'](c['admin'])?c['admin']:[],e=d[0x0],f=typeof e==='string'?e:typeof e?.['account']==='string'?e['account']:c['builder']??null;return{'address':c['object']??'','description':c['description']??null,'builder':c['builder']??null,'owner':f,'owner_name':b?.['name']??null,'admin_count':d['length'],'entity_count':typeof c['entity_count']==='number'?c['entity_count']:null,'perm_remark':Array['isArray'](c['perm_remark'])?c['perm_remark']['map'](g=>({'index':String(g?.['index']??''),'remark':typeof g?.['remark']==='string'?g['remark']:''})):[],'um':c['um']??null,'tags':b?.['tags']??[],'updated_timestamp_ms':b?.['updated_at_ms']!=null?String(b['updated_at_ms']):null};}async function markOf(a){if(!a)return{'name':null,'tags':[],'updated_at_ms':null};try{const b=await LocalMark['Instance']()['get'](a);if(b)return{'name':b['name']??null,'tags':Array['isArray'](b['tags'])?b['tags']:[],'updated_at_ms':typeof b['updatedAt']==='number'?b['updatedAt']:null};}catch{}try{const c=await LocalMark['Instance']()['list']({'address':a}),d=c?.[0x0];if(d)return{'name':d['name']??null,'tags':Array['isArray'](d['tags'])?d['tags']:[],'updated_at_ms':typeof d['updatedAt']==='number'?d['updatedAt']:null};}catch{}return{'name':null,'tags':[],'updated_at_ms':null};}async function markOfMany(a){const b=[...new Set(a['filter'](e=>!!e))],c=await Promise['all'](b['map'](e=>markOf(e))),d=new Map();for(let e=0x0;e<b['length'];e++)d['set'](b[e],c[e]);return d;}export async function handleServicePanorama(b){const c=requireField(b['service_address'],'service_address'),d=b['context_network']??undefined;let f=d??await Config['Instance']()['network_get']();const h=[];let j=c;if(!/^0x[0-9a-fA-F]{32,64}$/['test'](c)){const S=await LocalMark['Instance']()['get_address'](c);if(!S)throw new Error('Cannot\x20resolve\x20service\x20\x27'+c+'\x27\x20—\x20not\x20a\x20valid\x20address\x20and\x20no\x20LocalMark\x20entry\x20found.\x20'+'Pass\x20the\x200x\x20Service\x20object\x20address\x20directly\x20or\x20register\x20the\x20name\x20via\x20local_mark_operation.');j=S;}let k=await query_serviceContext({'service':j,'include_machine_nodes':!![],'network':f});if(!k?.['service']&&d){const T=await Config['Instance']()['network_get']();T&&T!==f&&(f=T,k=await query_serviceContext({'service':j,'include_machine_nodes':!![],'network':f}));}const l=k['service'];j=l['object']??j;const m=new Set(),n=U=>{if(U)m['add'](U);};n(j),n(l['machine']),n(l['permission']),n(l['um']);for(const U of l['arbitrations']??[])n(U);for(const V of l['rewards']??[])n(V);for(const W of l['repositories']??[])n(W);const p=k['permission'];if(p){const X=Array['isArray'](p['admin'])?p['admin']:[];X[0x0]&&n(typeof X[0x0]==='string'?X[0x0]:X[0x0]?.['account']);if(p['builder'])n(p['builder']);}const q=await markOfMany([...m]),u=q['get'](j)??{'name':null,'tags':[],'updated_at_ms':null},w=u['name'],x=Y=>Y?q['get'](Y)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let y=null;const z=k['machine'],A=k['machine_nodes']??[];if(z||A['length']>0x0){const {nodes:Y,edges:Z}=buildMachineGraph(A);y={'address':z?.['object']??l['machine']??'','name':x(z?.['object']??l['machine'])['name'],'description':z?.['description']??null,'published':typeof z?.['bPublished']==='boolean'?z['bPublished']:null,'paused':typeof z?.['bPaused']==='boolean'?z['bPaused']:null,'node_count':typeof z?.['node_count']==='number'?z['node_count']:null,'consensus_repositories':Array['isArray'](z?.['consensus_repositories'])?z['consensus_repositories']:[],'nodes':Y,'edges':Z};}let B=null;try{const a0=await query_object_last_updated({'object':j,'network':f});a0?.['timestamp_ms']&&(B={'timestamp_ms':a0['timestamp_ms'],'digest':a0['digest']??null,'sender':a0['sender']??null});}catch{h['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let C=null;try{C=await computeServiceTrustSummary({'service':j,'depth':'evaluate','network':f});}catch{h['push']('trust:\x20evaluation\x20failed\x20(non-blocking)');}let D=null;try{D=await resolveSupplyChainGraph(j,f);}catch{h['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let E=null;try{const a1=[l];for(const a2 of Object['values'](k['referenced']??{})){if(a2&&a2['object']!==j)a1['push'](a2);}E=generateBusinessReport({'objects':a1,'machine_nodes':A['map'](a3=>({'name':a3['name']}))});}catch{h['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const F=l?.['type_raw']??l?.['type']??'',G=F['match'](/<(.+)>$/),H=G?G[0x1]:null,I=(a3,a4)=>{const a5=[];return a3?a5['push']('Pricing\x20&\x20settlement\x20coin:\x20'+a3+'\x20—\x20the\x20Service\x27s\x20generic\x20T,\x20FIXED\x20at\x20creation\x20(immutable).\x20Sales\x20prices\x20and\x20order\x20amounts\x20are\x20denominated\x20in\x20this\x20exact\x20token;\x20buyers\x20must\x20hold\x20it\x20to\x20order.'):a5['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),a5['push']('To\x20price\x20in\x20a\x20different\x20token,\x20publish\x20a\x20NEW\x20Service\x20with\x20type_parameter\x20set\x20to\x20that\x20token\x27s\x20full\x20type\x20—\x20this\x20one\x20keeps\x20settling\x20in\x20its\x20coin.'),/testnet/i['test'](a4)?a5['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):a5['push']('Mainnet\x20accepts\x20bridged\x20tokens\x20(USDT\x20/\x20USDC\x20/\x20ETH\x20/\x20WBTC\x20/\x20WOW):\x20buyers\x20bridge\x20them\x20from\x20Ethereum\x20via\x20the\x20cross-chain\x20bridge.\x20Query\x20wowok_buildin_info\x20info=\x27mainnet\x20bridge\x20tokens\x27\x20for\x20each\x20token\x27s\x20exact\x20type\x20tag\x20(wowTypeTag)\x20to\x20use\x20in\x20type_parameter\x20when\x20publishing.'),a5['join']('\x20');},J=async a3=>{if(a3===null||a3===undefined||a3==='')return{'display':'','tip':''};if(!H)return{'display':a3,'tip':''};try{const a4=await formatChainValue(a3,H,f);if(a4['precision_known'])return{'display':a4['symbol']?a4['display']+'\x20'+a4['symbol']:a4['display'],'tip':a4['text']};return{'display':a3,'tip':''};}catch{return{'display':a3,'tip':''};}};let K=null;try{const a3=await fetchServiceOrders(j,f,!![]),a4=Array['isArray'](a3?.['items'])?a3['items']:[],a5=a4['map'](ac=>typeof ac?.['who']==='string'?ac['who']:'')['filter'](ac=>ac!==''),a6=new Map();try{if(a5['length']>0x0){const ac=await batchQueryObjectsByIds(a5,f,!![]);for(const ad of ac){ad&&ad['type']===ObjectType['Order']&&a6['set'](ad['object'],ad);}}}catch{h['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const a7=new Map(),a8=new Map(),a9=new Map();try{const ae=new Set();for(const af of a6['values']()){if(af?.['progress'])ae['add'](af['progress']);if(af?.['allocation'])ae['add'](af['allocation']);}if(ae['size']>0x0){const ag=await batchQueryObjectsByIds(Array['from'](ae),f,!![]);for(const ah of ag){if(!ah?.['object'])continue;if(ah['type']===ObjectType['Progress']){const ai=ah?.['current'];a7['set'](ah['object'],typeof ai==='string'&&ai!==''?ai:null),a8['set'](ah['object'],Number(ah?.['current_time'])||null);}else{if(ah['type']===ObjectType['Allocation']){const aj=Number(ah?.['balance']??0x0);a9['set'](ah['object'],Number['isFinite'](aj)&&aj===0x0?'allocated':'pending');}}}}}catch{h['push']('recent_orders:\x20progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const aa=new Map();try{const ak=Array['from'](new Set(a4['map'](am=>typeof am?.['who']==='string'?am['who']:'')['filter'](Boolean))),al=await Promise['allSettled'](ak['map'](am=>query_object_last_updated({'object':am,'network':f})));for(let am=0x0;am<ak['length'];am++){const an=al[am];aa['set'](ak[am],an['status']==='fulfilled'&&an['value']?.['timestamp_ms']?Number(an['value']['timestamp_ms'])||null:null);}}catch{h['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const ab=await Promise['all'](a4['map'](async ao=>{const ap=typeof ao?.['who']==='string'?ao['who']:'',aq=a6['get'](ap),ar=aq?.['amount']!==null&&aq?.['amount']!==undefined?String(aq['amount']):'',as=await J(ar);return{'order':ap,'time':typeof ao?.['time']==='number'?ao['time']:0x0,'updated_ms':aa['get'](ap)??null,'amount':ar,'amount_display':as['display'],'amount_tip':as['tip'],'progress':aq?.['progress']??null,'allocation':aq?.['allocation']??null,'disputes':Array['isArray'](aq?.['dispute'])?aq['dispute']:[],'agent':Array['isArray'](aq?.['agent'])?aq['agent']:[],'owner':ownerAddr(aq?.['builder']??aq?.['owner']),'claimed_by':aq?.['claimed_by']??null,'required_info':aq?.['required_info']??null,'progress_next':aq?.['progress']?a7['get'](aq['progress'])??null:null,'progress_since':aq?.['progress']?a8['get'](aq['progress'])??null:null,'allocation_state':aq?.['allocation']?a9['get'](aq['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](aq?.['items'])?aq['items']:[])['map'](async at=>({'name':String(at?.['name']??''),'price_display':(await J(at?.['price']!==null&&at?.['price']!==undefined?String(at['price']):'0'))['display'],'quantity':String(at?.['quantity']??'0'),'wip_hash':String(at?.['wip_hash']??'')})))};}));K={'count':a4['length'],'items':ab['filter'](ao=>ao['order']!=='')['slice'](-0x14)['reverse']()};}catch{h['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}const L=[];try{const ao=await query_affiliations({'address':j,'no_cache':!![],'network':f}),ap=new Set(),aq=new Map();for(const as of ao?.['entries']??[]){const at=typeof as?.['who']==='string'?as['who']:'';if(!at||ap['has'](at))continue;ap['add'](at);const au=objectTypeFromAddress(at);if(!au)continue;if(au===ObjectType['Order'])continue;const av=String(au);let aw=aq['get'](av);!aw&&(aw=[],aq['set'](av,aw)),aw['push']({'address':at,'type_label':av,'name':x(at)['name'],'time':typeof as?.['time']==='number'?as['time']:null});}const ar=['Progress','Allocation','Payment','Guard'];for(const ax of ar){const ay=aq['get'](ax);ay&&ay['length']>0x0&&(L['push']({'type_label':ax,'items':ay}),aq['delete'](ax));}for(const [az,aA]of aq){if(aA['length']>0x0)L['push']({'type_label':az,'items':aA});}}catch{h['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const M=[];for(const aB of k['allocator_guards']??[]){const aC=summarizeGuard(aB);if(aC)M['push'](aC);}const N=[];for(const aD of Array['isArray'](l['sales'])?l['sales']:[]){const aE=balanceStr(aD?.['price']),aF=await J(aE);N['push']({'name':typeof aD?.['name']==='string'?aD['name']:'','price':aE,'price_display':aF['display'],'price_tip':aF['tip'],'stock':balanceStr(aD?.['stock']),'suspension':aD?.['suspension']===!![],'wip':typeof aD?.['wip']==='string'?aD['wip']:'','wip_hash':typeof aD?.['wip_hash']==='string'?aD['wip_hash']:''});}const O=l['order_allocators']?{'description':l['order_allocators']['description']??'','threshold':balanceStr(l['order_allocators']['threshold']),'allocators':(l['order_allocators']['allocators']??[])['map'](aG=>({'guard':aG['guard'],'sharing_count':Array['isArray'](aG['sharing'])?aG['sharing']['length']:0x0,'max':balanceStr(aG['max']??null)}))}:null,P=summarizePermission(k['permission'],x(l['permission'])),Q=P?.['owner']??B?.['sender']??null,R=Q?await markOf(Q):null;return{'action':'service_panorama','network':f,'service':{'address':j,'name':w,'description':l['description']??'','location':l['location']??'','published':l['bPublished']===!![],'paused':l['bPaused']===!![],'paused_time':typeof l['paused_time']==='number'?l['paused_time']:null,'setting_lock_duration':balanceStr(l['setting_lock_duration']),'customer_required':Array['isArray'](l['customer_required'])?l['customer_required']:[],'compensation_fund':balanceStr(l['compensation_fund']),'sales':N,'machine':l['machine']??null,'buy_guard':l['buy_guard']??null,'permission':l['permission']??'','um':l['um']??null,'arbitrations':Array['isArray'](l['arbitrations'])?l['arbitrations']:[],'rewards':Array['isArray'](l['rewards'])?l['rewards']:[],'repositories':Array['isArray'](l['repositories'])?l['repositories']:[],'order_allocators':O,'payment_token':{'coin_type':H,'guidance':I(H,f)},'onchain_last_updated':B,'tags':u['tags']??[],'owner':Q,'owner_name':R?.['name']??null},'machine_graph':y,'buy_guard':summarizeGuard(k['buy_guard']),'permission':P,'allocator_guards':M,'related':{'groups':L},'supply_chain':D,'trust':C,'business_report':E,'recent_orders':K,'data_gaps':h};}
|
|
1
|
+
import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,fetchServiceOrders,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{projectExploration}from'../../graph/onchain/exploration.js';import{buildMachineGraph}from'./machine-nodes.js';import{formatMoneyAnnotation}from'./facet-money.js';function balanceStr(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a['toString']();return String(a);}function ownerAddr(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];}return null;}function requireField(a,b){if(a===undefined||a===null)throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeGuard(a){if(!a)return null;const b=a,c=Array['isArray'](b['table'])?b['table']:[],d=c['filter'](e=>e?.['b_submission']===!![])['length'];return{'address':b['object']??'','description':b['description']??null,'rep':typeof b['rep']==='boolean'?b['rep']:null,'table_entry_count':c['length'],'submission_slot_count':d,'relies':Array['isArray'](b['relies'])?b['relies']['filter'](e=>typeof e==='string'):[],'relies_logic_and':typeof b['relies_logic_and']==='boolean'?b['relies_logic_and']:null};}function summarizePermission(a,b){if(!a)return null;const c=a,d=Array['isArray'](c['admin'])?c['admin']:[],e=d[0x0],f=typeof e==='string'?e:typeof e?.['account']==='string'?e['account']:c['builder']??null;return{'address':c['object']??'','description':c['description']??null,'builder':c['builder']??null,'owner':f,'owner_name':b?.['name']??null,'admin_count':d['length'],'entity_count':typeof c['entity_count']==='number'?c['entity_count']:null,'perm_remark':Array['isArray'](c['perm_remark'])?c['perm_remark']['map'](g=>({'index':String(g?.['index']??''),'remark':typeof g?.['remark']==='string'?g['remark']:''})):[],'um':c['um']??null,'tags':b?.['tags']??[],'updated_timestamp_ms':b?.['updated_at_ms']!=null?String(b['updated_at_ms']):null};}async function markOf(a){if(!a)return{'name':null,'tags':[],'updated_at_ms':null};try{const b=await LocalMark['Instance']()['get'](a);if(b)return{'name':b['name']??null,'tags':Array['isArray'](b['tags'])?b['tags']:[],'updated_at_ms':typeof b['updatedAt']==='number'?b['updatedAt']:null};}catch{}try{const c=await LocalMark['Instance']()['list']({'address':a}),d=c?.[0x0];if(d)return{'name':d['name']??null,'tags':Array['isArray'](d['tags'])?d['tags']:[],'updated_at_ms':typeof d['updatedAt']==='number'?d['updatedAt']:null};}catch{}return{'name':null,'tags':[],'updated_at_ms':null};}async function markOfMany(a){const b=[...new Set(a['filter'](e=>!!e))],c=await Promise['all'](b['map'](e=>markOf(e))),d=new Map();for(let e=0x0;e<b['length'];e++)d['set'](b[e],c[e]);return d;}export async function handleServicePanorama(b){const c=requireField(b['service_address'],'service_address'),d=b['context_network']??undefined;let h=d??await Config['Instance']()['network_get']();const j=[];let k=c;if(!/^0x[0-9a-fA-F]{32,64}$/['test'](c)){const a5=await LocalMark['Instance']()['get_address'](c);if(!a5)throw new Error('Cannot\x20resolve\x20service\x20\x27'+c+'\x27\x20—\x20not\x20a\x20valid\x20address\x20and\x20no\x20LocalMark\x20entry\x20found.\x20'+'Pass\x20the\x200x\x20Service\x20object\x20address\x20directly\x20or\x20register\x20the\x20name\x20via\x20local_mark_operation.');k=a5;}let l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h});if(!l?.['service']&&d){const a6=await Config['Instance']()['network_get']();a6&&a6!==h&&(h=a6,l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h}));}const m=l['service'];k=m['object']??k;const q=new Set(),w=a7=>{if(a7)q['add'](a7);};w(k),w(m['machine']),w(m['permission']),w(m['um']);for(const a7 of m['arbitrations']??[])w(a7);for(const a8 of m['rewards']??[])w(a8);for(const a9 of m['repositories']??[])w(a9);const x=l['permission'];if(x){const aa=Array['isArray'](x['admin'])?x['admin']:[];aa[0x0]&&w(typeof aa[0x0]==='string'?aa[0x0]:aa[0x0]?.['account']);if(x['builder'])w(x['builder']);}const y=await markOfMany([...q]),z=y['get'](k)??{'name':null,'tags':[],'updated_at_ms':null},A=z['name'],B=ab=>ab?y['get'](ab)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let C=null;const D=l['machine'],E=l['machine_nodes']??[];if(D||E['length']>0x0){const {nodes:ab,edges:ac}=buildMachineGraph(E);C={'address':D?.['object']??m['machine']??'','name':B(D?.['object']??m['machine'])['name'],'description':D?.['description']??null,'published':typeof D?.['bPublished']==='boolean'?D['bPublished']:null,'paused':typeof D?.['bPaused']==='boolean'?D['bPaused']:null,'node_count':typeof D?.['node_count']==='number'?D['node_count']:null,'consensus_repositories':Array['isArray'](D?.['consensus_repositories'])?D['consensus_repositories']:[],'nodes':ab,'edges':ac};}let F=null;try{const ad=await query_object_last_updated({'object':k,'network':h});ad?.['timestamp_ms']&&(F={'timestamp_ms':ad['timestamp_ms'],'digest':ad['digest']??null,'sender':ad['sender']??null});}catch{j['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let G=null;try{G=await resolveSupplyChainGraph(k,h);}catch{j['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let H=null;try{const ae=[m];for(const af of Object['values'](l['referenced']??{})){if(af&&af['object']!==k)ae['push'](af);}H=generateBusinessReport({'objects':ae,'machine_nodes':E['map'](ag=>({'name':ag['name']}))});}catch{j['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const I=m?.['type_raw']??m?.['type']??'',J=I['match'](/<(.+)>$/),K=J?J[0x1]:null,L=(ag,ah)=>{const ai=[];return ag?ai['push']('Pricing\x20&\x20settlement\x20coin:\x20'+ag+'\x20—\x20the\x20Service\x27s\x20generic\x20T,\x20FIXED\x20at\x20creation\x20(immutable).\x20Sales\x20prices\x20and\x20order\x20amounts\x20are\x20denominated\x20in\x20this\x20exact\x20token;\x20buyers\x20must\x20hold\x20it\x20to\x20order.'):ai['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),ai['push']('To\x20price\x20in\x20a\x20different\x20token,\x20publish\x20a\x20NEW\x20Service\x20with\x20type_parameter\x20set\x20to\x20that\x20token\x27s\x20full\x20type\x20—\x20this\x20one\x20keeps\x20settling\x20in\x20its\x20coin.'),/testnet/i['test'](ah)?ai['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):ai['push']('Mainnet\x20accepts\x20bridged\x20tokens\x20(USDT\x20/\x20USDC\x20/\x20ETH\x20/\x20WBTC\x20/\x20WOW):\x20buyers\x20bridge\x20them\x20from\x20Ethereum\x20via\x20the\x20cross-chain\x20bridge.\x20Query\x20wowok_buildin_info\x20info=\x27mainnet\x20bridge\x20tokens\x27\x20for\x20each\x20token\x27s\x20exact\x20type\x20tag\x20(wowTypeTag)\x20to\x20use\x20in\x20type_parameter\x20when\x20publishing.'),ai['join']('\x20');},M=ag=>formatMoneyAnnotation(ag,K,h),N=0x3,O=0x32;let P=null;try{const ag=await fetchServiceOrders(k,h,!![]),ah=Array['isArray'](ag?.['items'])?ag['items']:[],ai=ah['slice'](-O),aj=ah['slice'](-N),ak=ai['map'](aI=>typeof aI?.['who']==='string'?aI['who']:'')['filter'](aI=>aI!==''),al=aj['map'](aI=>typeof aI?.['who']==='string'?aI['who']:'')['filter'](aI=>aI!==''),am=new Map();try{if(ak['length']>0x0){const aI=await batchQueryObjectsByIds(ak,h,!![]);for(const aJ of aI){aJ&&aJ['type']===ObjectType['Order']&&am['set'](aJ['object'],aJ);}}}catch{j['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const an=new Map();try{const aK=new Set();for(const aL of am['values']()){if(aL?.['allocation'])aK['add'](aL['allocation']);}if(aK['size']>0x0){const aM=await batchQueryObjectsByIds(Array['from'](aK),h,!![]);for(const aN of aM){if(!aN?.['object'])continue;if(aN['type']===ObjectType['Allocation']){const aO=Number(aN?.['balance']??0x0);an['set'](aN['object'],Number['isFinite'](aO)&&aO===0x0?'allocated':'pending');}}}}catch{j['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const ao=new Map(),ap=new Map();try{const aP=new Set();for(const aQ of al){const aR=am['get'](aQ);if(aR?.['progress'])aP['add'](aR['progress']);}if(aP['size']>0x0){const aS=await batchQueryObjectsByIds(Array['from'](aP),h,!![]);for(const aT of aS){if(!aT?.['object'])continue;if(aT['type']===ObjectType['Progress']){const aU=aT?.['current'];ao['set'](aT['object'],typeof aU==='string'&&aU!==''?aU:null),ap['set'](aT['object'],Number(aT?.['current_time'])||null);}}}}catch{j['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}const aq=new Map();try{const aV=al,aW=await Promise['allSettled'](aV['map'](aX=>query_object_last_updated({'object':aX,'network':h})));for(let aX=0x0;aX<aV['length'];aX++){const aY=aW[aX];aq['set'](aV[aX],aY['status']==='fulfilled'&&aY['value']?.['timestamp_ms']?Number(aY['value']['timestamp_ms'])||null:null);}}catch{j['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const ar=await Promise['all'](aj['map'](async aZ=>{const b0=typeof aZ?.['who']==='string'?aZ['who']:'',b1=am['get'](b0),b2=b1?.['amount']!==null&&b1?.['amount']!==undefined?String(b1['amount']):'',b3=await M(b2);return{'order':b0,'time':typeof aZ?.['time']==='number'?aZ['time']:0x0,'updated_ms':aq['get'](b0)??null,'amount':b2,'amount_display':b3['display'],'amount_tip':b3['tip'],'progress':b1?.['progress']??null,'allocation':b1?.['allocation']??null,'disputes':Array['isArray'](b1?.['dispute'])?b1['dispute']:[],'agent':Array['isArray'](b1?.['agent'])?b1['agent']:[],'owner':ownerAddr(b1?.['builder']??b1?.['owner']),'claimed_by':b1?.['claimed_by']??null,'required_info':b1?.['required_info']??null,'progress_next':b1?.['progress']?ao['get'](b1['progress'])??null:null,'progress_since':b1?.['progress']?ap['get'](b1['progress'])??null:null,'allocation_state':b1?.['allocation']?an['get'](b1['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](b1?.['items'])?b1['items']:[])['map'](async b4=>({'name':String(b4?.['name']??''),'price_display':(await M(b4?.['price']!==null&&b4?.['price']!==undefined?String(b4['price']):null))['display'],'quantity':String(b4?.['quantity']??'0'),'wip_hash':String(b4?.['wip_hash']??'')})))};})),as=ar['filter'](aZ=>aZ['order']!==''),at=ak['map'](aZ=>am['get'](aZ))['filter'](aZ=>!!aZ);let au=0x0n,av=0x0,aw=0x0,ax=0x0,ay=0x0,az=0x0,aA=null,aB=null;for(const aZ of at){const b0=aZ?.['amount']!==null&&aZ?.['amount']!==undefined?String(aZ['amount']):'';/^\d+$/['test'](b0)&&(au+=BigInt(b0),av++);if(Array['isArray'](aZ?.['dispute'])&&aZ['dispute']['length']>0x0)aw++;const b1=aZ?.['allocation']?an['get'](aZ['allocation'])??'pending':'none';if(b1==='pending')ax++;else{if(b1==='allocated')ay++;else az++;}}for(const b2 of ai){if(typeof b2?.['time']==='number'){if(aA===null||b2['time']<aA)aA=b2['time'];if(aB===null||b2['time']>aB)aB=b2['time'];}}const aC=av>0x0?au['toString']():null,aD=aC!==null?await M(aC):null,aE=ah['length'],aF=ag?.['ring_saturated']??ringWindowSaturated(aE),aG=as['length'],aH='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+k+'\x20('+h+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20orders\x20live\x20in\x20the\x20Service\x27s\x20FIFO\x20tx-linker\x20window\x20holding\x20at\x20most\x205200\x20newest\x20entries\x20—\x20the\x20retained\x20count\x20is\x20a\x20lower\x20bound\x20when\x20the\x20window\x20is\x20saturated\x20(currently\x20'+aE+(aF?',\x20saturated':'')+').\x20')+'For\x20each\x20order\x20call\x20object_panorama\x20with\x20the\x20order\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20reverse-index\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20order:\x20'+'order\x20address\x20chip\x20(first\x20column)\x20|\x20created\x20+\x20last-updated\x20(local\x20dates)\x20|\x20amount\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20fund\x20state\x20(none\x20/\x20pending\x20/\x20allocated)\x20|\x20current\x20machine\x20node\x20|\x20disputes\x20(each\x20dispute\x20case\x20as\x20its\x20own\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20—\x20an\x20order\x27s\x20progress,\x20allocation\x20and\x20arb\x20cases\x20are\x20its\x20children\x20and\x20are\x20never\x20split\x20into\x20a\x20separate\x20flat\x20list)\x20|\x20buyer\x20address\x20chip.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(amount\x20distribution,\x20stuck\x20or\x20paused\x20orders,\x20dispute\x20rate).\x20Orders\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Service\x20itself.';P={'count':aE,'window_saturated':aF,'preview_truncated':aE>aG,'stats':{'scope_count':at['length'],'scoped':at['length']<aE,'amount_sum_raw':aC,'amount_sum_display':aD?.['display']??null,'amount_sum_tip':aD?.['tip']??null,'amount_known_count':av,'disputed_order_count':aw,'allocation_pending_count':ax,'allocation_allocated_count':ay,'allocation_none_count':az,'first_created_ms':aA,'last_created_ms':aB},...aE>aG?{'drilldown':{'total_count':aE,'analyzed_count':aG,'stats_scope_count':at['length'],'prompt':aH}}:{},'items':as};}catch{j['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}const Q=[];try{const b3=await query_affiliations({'address':k,'no_cache':!![],'network':h}),b4=new Set(),b5=new Map();for(const b7 of b3?.['entries']??[]){const b8=typeof b7?.['who']==='string'?b7['who']:'';if(!b8||b4['has'](b8))continue;b4['add'](b8);const b9=objectTypeFromAddress(b8);if(!b9)continue;if(b9===ObjectType['Order'])continue;const ba=String(b9);let bb=b5['get'](ba);!bb&&(bb=[],b5['set'](ba,bb)),bb['push']({'address':b8,'type_label':ba,'name':B(b8)['name'],'time':typeof b7?.['time']==='number'?b7['time']:null,'via':typeof b7?.['table']==='string'?b7['table']:null});}const b6=['Progress','Allocation','Payment','Guard'];for(const bc of b6){const bd=b5['get'](bc);bd&&bd['length']>0x0&&(Q['push']({'type_label':bc,'items':bd}),b5['delete'](bc));}for(const [be,bf]of b5){if(bf['length']>0x0)Q['push']({'type_label':be,'items':bf});}}catch{j['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const R=new Set(),S=bg=>{typeof bg==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bg)&&R['add'](bg['toLowerCase']());};S(m['buy_guard']);for(const bg of E){for(const bh of bg?.['pairs']??[]){for(const bi of bh?.['forwards']??[])S(bi?.['guard']);}}for(const bj of m['order_allocators']?.['allocators']??[])S(bj?.['guard']);for(const bk of l['allocator_guards']??[])S(bk?.['object']);for(const bl of Object['values'](l['referenced']??{})){const bm=bl;if(!bm||typeof bm!=='object')continue;if(bm['type']===ObjectType['Reward']){for(const bn of bm['guards']??[])S(bn?.['guard']);}if(bm['type']===ObjectType['Treasury']){for(const bo of bm['external_withdraw_guard']??[])S(bo?.['guard']);for(const bp of bm['external_deposit_guard']??[])S(bp?.['guard']);}(bm['type']===ObjectType['Arbitration']||bm['type']===ObjectType['Arb'])&&S(bm['voting_guard']);}const T=Q['find'](bq=>bq['type_label']===String(ObjectType['Guard']));if(T){T['items']=T['items']['filter'](bq=>!R['has'](bq['address']['toLowerCase']()));if(T['items']['length']===0x0)Q['splice'](Q['indexOf'](T),0x1);else{const bq=T['items'];try{const br=await batchQueryObjectsByIds(bq['map'](bt=>bt['address']),h,!![]),bs=new Map();for(const bt of br){if(bt?.['object'])bs['set'](String(bt['object'])['toLowerCase'](),bt);}for(const bu of bq){const bv=bs['get'](bu['address']['toLowerCase']());if(!bv){bu['explanation']=null;continue;}const bw=Array['isArray'](bv['table'])?bv['table']:[],bx=[];let by=0x0;for(const bA of bw){if(bA?.['b_submission']===!![]){by++;continue;}bA?.['value_type']==='Address'&&typeof bA?.['value']==='string'&&bA['value']['startsWith']('0x')&&bx['push'](bA['value']);}const bz=bx['some'](bB=>bB['toLowerCase']()===k['toLowerCase']());bu['explanation']={'description':typeof bv['description']==='string'?bv['description']:null,'table_refs':bx,'references_this_service':bz,'submission_slots':by,'note':bz?'One-off\x20verification\x20guard:\x20NOT\x20mounted\x20on\x20any\x20host\x20field;\x20its\x20table\x20carries\x20this\x20Service\x20as\x20an\x20on-chain\x20constant\x20(the\x20affiliation\x20is\x20written\x20at\x20creation).\x20It\x20acts\x20only\x20when\x20submitted\x20inside\x20a\x20passport\x20at\x20runtime.':'Guard\x20surfaced\x20by\x20the\x20affiliation\x20window\x20only;\x20not\x20mounted\x20on\x20any\x20host\x20field\x20reachable\x20from\x20this\x20panorama.\x20It\x20acts\x20only\x20when\x20referenced\x20at\x20runtime\x20(passport\x20submission\x20or\x20a\x20host\x20outside\x20this\x20view).'};}}catch{j['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const U=new Map();for(const bB of l['allocator_guards']??[]){const bC=bB;if(bC?.['object'])U['set'](String(bC['object'])['toLowerCase'](),bC);}const V=[];for(const bD of Array['isArray'](m['sales'])?m['sales']:[]){const bE=balanceStr(bD?.['price']),bF=await M(bE);V['push']({'name':typeof bD?.['name']==='string'?bD['name']:'','price':bE,'price_display':bF['display'],'price_tip':bF['tip'],'stock':balanceStr(bD?.['stock']),'suspension':bD?.['suspension']===!![],'wip':typeof bD?.['wip']==='string'?bD['wip']:'','wip_hash':typeof bD?.['wip_hash']==='string'?bD['wip_hash']:''});}const W=bG=>bG===0x0?'amount':bG===0x2?'surplus':'rate',X=bG=>{const bH=bG?.['who'];if(bH&&typeof bH==='object'&&'Entity'in bH){const bI=bH['Entity'],bJ=typeof bI==='string'?bI:typeof bI?.['name_or_address']==='string'?bI['name_or_address']:null;return{'who':bJ?'Entity\x20'+bJ:'Entity','entity':bJ&&/^0x[0-9a-fA-F]{6,64}$/['test'](bJ)?bJ:null,'mode':W(bG?.['mode']),'value':balanceStr(bG?.['sharing'])};}if(bH&&typeof bH==='object'&&'GuardIdentifier'in bH)return{'who':'Guard\x20identifier\x20#'+bH['GuardIdentifier'],'entity':null,'mode':W(bG?.['mode']),'value':balanceStr(bG?.['sharing'])};return{'who':'Signer','entity':null,'mode':W(bG?.['mode']),'value':balanceStr(bG?.['sharing'])};},Y=m['order_allocators']?{'description':m['order_allocators']['description']??'','threshold':balanceStr(m['order_allocators']['threshold']),'allocators':(m['order_allocators']['allocators']??[])['map'](bG=>({'guard':bG['guard'],'sharing_count':Array['isArray'](bG['sharing'])?bG['sharing']['length']:0x0,'sharing':(Array['isArray'](bG['sharing'])?bG['sharing']:[])['map'](X),'max':balanceStr(bG['max']??null),'guard_summary':summarizeGuard(U['get'](String(bG['guard']??'')['toLowerCase']()))}))}:null,Z=[];{const bG=new Map();for(const bH of m['order_allocators']?.['allocators']??[]){for(const bI of Array['isArray'](bH['sharing'])?bH['sharing']:[]){const bJ=X(bI);if(bJ['entity']){const bK=bJ['entity']['toLowerCase'](),bL=bG['get'](bK)??{'raw':bJ['entity'],'guards':[]};bL['guards']['push'](bH['guard']??''),bG['set'](bK,bL);}}}if(bG['size']>0x0)try{const bM=await batchQueryObjectsByIds([...bG['keys']()],h,!![]),bN=new Map();for(const bO of bM){if(bO?.['object'])bN['set'](String(bO['object'])['toLowerCase'](),bO);}for(const [bP,bQ]of bG){const bR=bN['get'](bP),bS='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+bQ['guards'][0x0];if(bR&&bR['permission']!==undefined){const bT=balanceStr(bR['balance']),bU=await M(bT);Z['push']({'address':String(bR['object']),'kind':'treasury','description':typeof bR['description']==='string'?bR['description']:null,'permission':typeof bR['permission']==='string'?bR['permission']:null,'balance':bT,'balance_display':bU['display'],'balance_tip':bU['tip'],'external_deposit_guard_count':Array['isArray'](bR['external_deposit_guard'])?bR['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](bR['external_withdraw_guard'])?bR['external_withdraw_guard']['length']:null,'via':bS});}else Z['push']({'address':bQ['raw'],'kind':'account','description':null,'permission':null,'balance':null,'balance_display':null,'balance_tip':null,'external_deposit_guard_count':null,'external_withdraw_guard_count':null,'via':bS});}}catch{j['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a0=summarizePermission(l['permission'],B(m['permission'])),a1=a0?.['owner']??F?.['sender']??null,a2=a1?await markOf(a1):null,a3=await M(balanceStr(m['compensation_fund'])),a4=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':j});return{'action':'service_panorama','network':h,'service':{'address':k,'name':A,'description':m['description']??'','location':m['location']??'','published':m['bPublished']===!![],'paused':m['bPaused']===!![],'paused_time':typeof m['paused_time']==='number'?m['paused_time']:typeof m['paused_time']==='string'&&/^\d+$/['test'](m['paused_time'])?Number(m['paused_time']):null,'setting_lock_duration':balanceStr(m['setting_lock_duration']),'customer_required':Array['isArray'](m['customer_required'])?m['customer_required']:[],'compensation_fund':balanceStr(m['compensation_fund']),'compensation_fund_display':a3['display'],'compensation_fund_tip':a3['tip'],'sales':V,'machine':m['machine']??null,'buy_guard':m['buy_guard']??null,'permission':m['permission']??'','um':m['um']??null,'arbitrations':Array['isArray'](m['arbitrations'])?m['arbitrations']:[],'rewards':Array['isArray'](m['rewards'])?m['rewards']:[],'repositories':Array['isArray'](m['repositories'])?m['repositories']:[],'order_allocators':Y,'income_recipients':Z,'payment_token':{'coin_type':K,'guidance':L(K,h)},'onchain_last_updated':F,'tags':z['tags']??[],'owner':a1,'owner_name':a2?.['name']??null},'machine_graph':C,'buy_guard':summarizeGuard(l['buy_guard']),'permission':a0,'related':{'groups':Q},'supply_chain':G,'business_report':H,'recent_orders':P,'data_gaps':j,...a4['open_questions']['length']>0x0?{'exploration':a4}:{}};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{describe,expect,it}from'vitest';import{ENTRYPOINT}from'@wowok/wowok';import{FakeDataPlane}from'../../graph/onchain/dataplane.js';import{expandTopology}from'../../graph/onchain/expand.js';import{FULL,fullServiceState}from'../../graph/onchain/fixtures.js';import{EVALUATION_SERVICE_INTENTS,resolveExpansionStrategy,withEvaluationBundle}from'../../graph/onchain/strategy.js';import{registerGraphServiceEvaluations}from'../../evaluation/builtins/graph-service.js';import{handleOnchainTopology}from'./topology-query.js';const NET='mainnet';describe('onchain_topology\x20evaluation\x20projection\x20(Task\x2016)',()=>{it('TR-16.1:\x20full\x20shop\x20—\x20evaluation\x20section\x20with\x20real\x20arbitration\x20conclusion\x20+\x20coverage',async()=>{registerGraphServiceEvaluations();const a=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['svc'],'context_network':NET},new FakeDataPlane(fullServiceState()));expect(a['evaluation'])['toBeDefined']();const b=a['evaluation'];expect(Number['isInteger'](b['completeness']))['toBe'](!![]),expect(b['completeness'])['toBeGreaterThan'](0x0),expect(b['completeness'])['toBeLessThanOrEqual'](0x64),expect(b['coverage']['length'])['toBeGreaterThan'](0x0),expect(b['target'])['toBe'](FULL['svc']['toLowerCase']()),expect(b['unverified'])['toEqual']([]);const c=b['trust']['breakdown']['find'](d=>d['rule_id']==='trust_arbitration');expect(c?.['score'])['toBe'](0x64),expect(c?.['matched']?.['length']??0x0)['toBeGreaterThan'](0x0),expect(a['summary'])['toContain']('Evaluation:\x20trust\x20'+b['trust']['total']+'/100,\x20risk\x20'+b['risk']['total']+'/100');}),it('TR-16.2:\x20single\x20expansion\x20—\x20evaluation\x20adds\x20zero\x20fetches,\x20the\x20probe\x20is\x20a\x20dedup\x20hit',async()=>{registerGraphServiceEvaluations();const a=withEvaluationBundle(resolveExpansionStrategy({'defaultIntents':[...EVALUATION_SERVICE_INTENTS]})),b=new FakeDataPlane(fullServiceState()),c=await expandTopology(b,{'network':ENTRYPOINT['Mainnet'],'seed':FULL['svc'],'budget':a['budget'],'edges':a['edges']}),d=new FakeDataPlane(fullServiceState()),e=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['svc'],'context_network':NET},d);expect(d['batches']['objects'])['toBe'](b['batches']['objects']),expect(e['stats']['rpc']['batches'])['toBe'](c['rpcReport']['batches']),expect(d['dedupHits'])['toBe'](b['dedupHits']);}),it('wiring:\x20no-intent\x20Service\x20seed\x20defaults\x20to\x20the\x20evaluation\x20bundle\x20with\x20its\x20shaping',async()=>{registerGraphServiceEvaluations();const a=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['svc'],'context_network':NET},new FakeDataPlane(fullServiceState()));expect(a['strategy']['intents'])['toEqual']([...EVALUATION_SERVICE_INTENTS]),expect(a['strategy']['trace']['some'](b=>b['startsWith']('intent\x20(default):\x20')))['toBe'](!![]),expect(a['strategy']['trace']['some'](b=>b['startsWith']('evaluation\x20bundle:')))['toBe'](!![]);}),it('wiring:\x20role-default\x20intents\x20UNION\x20onto\x20the\x20evaluation\x20floor,\x20never\x20replace\x20it',async()=>{registerGraphServiceEvaluations();const a=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['svc'],'role':'customer','context_network':NET},new FakeDataPlane(fullServiceState()));for(const c of EVALUATION_SERVICE_INTENTS)expect(a['strategy']['intents'])['toContain'](c);expect(a['strategy']['intents'])['toContain']('order_health'),expect(a['strategy']['intents'])['toContain']('counterparty'),expect(a['strategy']['trace']['some'](d=>d['startsWith']('evaluation\x20bundle:')))['toBe'](!![]);const b=a['facets']?.['items']['find'](d=>d['id']==='arbitration');expect(b?.['state'])['toBe']('present'),expect(a['evaluation']['unverified'])['not']['toContain']('risk_trust');}),it('wiring:\x20an\x20explicit\x20intent\x20wins\x20over\x20the\x20default\x20and\x20skips\x20the\x20bundle\x20shaping',async()=>{registerGraphServiceEvaluations();const a=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['svc'],'intent':'workflow','context_network':NET},new FakeDataPlane(fullServiceState()));expect(a['strategy']['intents'])['toEqual'](['workflow']),expect(a['strategy']['trace']['some'](b=>b['startsWith']('intent\x20(explicit):\x20workflow')))['toBe'](!![]),expect(a['strategy']['trace']['some'](b=>b['startsWith']('evaluation\x20bundle:')))['toBe'](![]),expect(a['evaluation'])['toBeDefined']();}),it('wiring:\x20an\x20explicit\x20intent\x20on\x20a\x20non-Service\x20seed\x20keeps\x20the\x20kernel\x20default\x20posture;\x20gap\x20dims\x20are\x20excluded\x20honestly',async()=>{registerGraphServiceEvaluations();const a=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['mac'],'intent':'full_map','context_network':NET},new FakeDataPlane(fullServiceState()));expect(a['strategy']['intents'])['toEqual'](['full_map']),expect(a['evaluation'])['toBeDefined'](),expect(a['evaluation']['unverified']['length'])['toBeGreaterThan'](0x0);}),it('wiring:\x20a\x20no-intent\x20trust-evaluation\x20call\x20on\x20a\x20non-Service\x20focus\x20is\x20refused\x20before\x20any\x20traversal',async()=>{registerGraphServiceEvaluations(),await expect(handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['mac'],'context_network':NET}))['rejects']['toThrow'](/not a Service/);}),it('analyze=false\x20drops\x20the\x20evaluation\x20section\x20(no\x20findings-less\x20all-clear)',async()=>{registerGraphServiceEvaluations();const a=await handleOnchainTopology({'query_type':'onchain_topology','focus':FULL['svc'],'analyze':![],'context_network':NET},new FakeDataPlane(fullServiceState()));expect(a['evaluation'])['toBeUndefined'](),expect(a['findings'])['toEqual']([]);});});
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type DataPlane, type ExpansionStrategy, type FindingKind, type TopologyGraph } from "../../graph/onchain/index.js";
|
|
2
2
|
import type { OnchainTopologyInput, OnchainTopologyResult } from "../../schema/query/bi.js";
|
|
3
|
+
import { type GraphServiceEvaluation } from "../../evaluation/builtins/graph-service.js";
|
|
4
|
+
import type { UserInjection } from "../../evaluation/types.js";
|
|
5
|
+
import { type ResolvedFacetProfile } from "../../persona/facet-profile.js";
|
|
3
6
|
export interface TopologyShapeOptions {
|
|
4
7
|
analyze?: boolean;
|
|
5
8
|
analyzerKinds?: FindingKind[];
|
|
@@ -9,6 +12,14 @@ export interface TopologyShapeOptions {
|
|
|
9
12
|
interestRole?: string;
|
|
10
13
|
interestObserver?: string;
|
|
11
14
|
interestDrive?: import("../../evaluation/game-strategy.js").PersonaDrive;
|
|
15
|
+
injection?: UserInjection;
|
|
16
|
+
facetProfile?: ResolvedFacetProfile;
|
|
12
17
|
}
|
|
13
|
-
export declare function buildOnchainTopologyResult(graph: TopologyGraph, seed: string, opts?: TopologyShapeOptions): OnchainTopologyResult
|
|
14
|
-
export declare function handleOnchainTopology(v: OnchainTopologyInput, planeOverride?: DataPlane): Promise<OnchainTopologyResult>;
|
|
18
|
+
export declare function buildOnchainTopologyResult(graph: TopologyGraph, seed: string, opts?: TopologyShapeOptions): Promise<OnchainTopologyResult>;
|
|
19
|
+
export declare function handleOnchainTopology(v: OnchainTopologyInput, planeOverride?: DataPlane, evaluationInjection?: UserInjection): Promise<OnchainTopologyResult>;
|
|
20
|
+
export interface GraphServiceEvaluateOptions {
|
|
21
|
+
injection?: UserInjection;
|
|
22
|
+
no_cache?: boolean;
|
|
23
|
+
context_network?: "testnet" | "mainnet" | "localnet";
|
|
24
|
+
}
|
|
25
|
+
export declare function evaluateServiceFromGraph(focus: string, opts?: GraphServiceEvaluateOptions): Promise<GraphServiceEvaluation>;
|