@wowok/agent-mcp 3.1.3 → 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/severity.d.ts +7 -0
- package/dist/config/severity.js +1 -0
- package/dist/customer/order-monitor.d.ts +3 -1
- package/dist/customer/order-monitor.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/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/game-strategy.d.ts +2 -2
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/match-operation.d.ts +2 -2
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/standards.d.ts +3 -25
- package/dist/evaluation/standards.js +1 -1
- package/dist/evaluation/types.d.ts +2 -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/industry-audit.spec.d.ts +1 -0
- package/dist/extensions/industry-audit.spec.js +1 -0
- package/dist/extensions/industry-layers.d.ts +8 -0
- 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 +3 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/edge-schema.d.ts +1 -0
- package/dist/graph/onchain/edge-schema.js +1 -1
- 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/graph-policy.spec.d.ts +1 -0
- package/dist/graph/onchain/graph-policy.spec.js +1 -0
- package/dist/graph/onchain/index.d.ts +6 -0
- 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/names.js +1 -1
- package/dist/graph/onchain/names.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.js +1 -1
- package/dist/graph/onchain/proposal-graph.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/types.d.ts +11 -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 -1
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/allocation-templates.js +1 -1
- package/dist/knowledge/arb-risk.d.ts +6 -5
- 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 -1
- package/dist/knowledge/arbitration-risk.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +289 -0
- package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
- 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 -5
- 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 -5
- package/dist/knowledge/contact-risk.js +1 -1
- package/dist/knowledge/demand-risk.d.ts +6 -5
- 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-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-risk.d.ts +4 -1
- 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 +10 -2
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- 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 -1
- 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 +6 -3
- 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 -6
- 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 -7
- package/dist/knowledge/permission-risk.js +1 -1
- package/dist/knowledge/permission-templates.js +1 -1
- package/dist/knowledge/personal-risk.d.ts +6 -5
- 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 -1
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/progress-templates.js +1 -1
- package/dist/knowledge/proof-risk.d.ts +6 -5
- package/dist/knowledge/proof-risk.js +1 -1
- package/dist/knowledge/puzzle-projections.js +1 -1
- 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 -5
- package/dist/knowledge/registrar-risk.js +1 -1
- package/dist/knowledge/repository-risk.d.ts +7 -6
- package/dist/knowledge/repository-risk.js +1 -1
- package/dist/knowledge/resource-risk.d.ts +6 -5
- 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 +4 -1
- package/dist/knowledge/reward-risk.js +1 -1
- package/dist/knowledge/rule-node-analyzers.spec.js +1 -1
- package/dist/knowledge/rule-outcome.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 -1
- 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 +4 -1
- package/dist/knowledge/treasury-risk.js +1 -1
- package/dist/knowledge/treasury-templates.js +1 -1
- package/dist/knowledge/util-risk.d.ts +6 -5
- 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/index.js +1 -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/types.d.ts +2 -0
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/facet-money.d.ts +11 -0
- package/dist/playbooks/service-build/facet-money.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.d.ts +17 -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 +42 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +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 +2 -1
- 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 +53 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -1
- 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/machine.js +1 -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/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 +5 -5
- 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/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/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.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/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 +27 -11
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +5 -5
- package/dist/schema/goal/planning.d.ts +15 -15
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.js +1 -1
- package/dist/schema/interaction/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 +33 -33
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +4708 -0
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +232 -25
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +35 -35
- 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-query-impl/index.d.ts +9 -0
- package/dist/schema-query-impl/index.js +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.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 +22 -10
- package/dist/schemas/goal_operation.schema.json +8 -8
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +7 -1
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.schema.json +24 -12
- package/dist/schemas/onchain_events.output.json +1 -1
- package/dist/schemas/onchain_operations.output.json +4 -2
- package/dist/schemas/onchain_operations.schema.json +189 -139
- 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 +11 -9
- package/dist/schemas/onchain_table_data.output.json +27 -17
- 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 +343 -63
- package/dist/schemas/query_toolkit.schema.json +1 -1
- package/dist/schemas/workflow_operation.schema.json +4 -2
- 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/config.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.js +1 -1
- package/dist/tools/registry/onchain.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/package.json +9 -4
- package/dist/knowledge/baselines/evaluation-baselines.json +0 -79
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IndustryTemplate } from "./template-loader.js";
|
|
2
|
+
export type TemplateRiskLevel = "low" | "medium" | "high" | "critical";
|
|
3
|
+
export interface TemplateScanFinding {
|
|
4
|
+
rule_id?: string;
|
|
5
|
+
severity: TemplateRiskLevel;
|
|
6
|
+
title: string;
|
|
7
|
+
detail: string;
|
|
8
|
+
suggestion: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TemplateScanResult {
|
|
11
|
+
template_id: string;
|
|
12
|
+
risk_level: TemplateRiskLevel;
|
|
13
|
+
passed: boolean;
|
|
14
|
+
findings: TemplateScanFinding[];
|
|
15
|
+
red_flags: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare function scanTemplate(t: IndustryTemplate): TemplateScanResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ENTRYPOINT}from'@wowok/wowok';import{buildViewport,runNodeAnalyzers}from'../graph/onchain/index.js';import{makeProposalNode}from'../graph/onchain/proposal-graph.js';import{machineRuleNodeAnalyzer,allocationRuleNodeAnalyzer}from'./rule-node-analyzers.js';const DISPUTE_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function staticChecks(a){const b=[];for(const e of a['machine_shape']){DISPUTE_NODE_REGEX['test'](e['name'])&&b['push']({'rule_id':'R-M1-11','severity':'critical','title':'Machine\x20node\x20\x27'+e['name']+'\x27\x20models\x20dispute/refund\x20flow','detail':'Disputes\x20are\x20independent\x20of\x20the\x20Machine\x20workflow;\x20refunds\x20route\x20via\x20Allocators\x20triggered\x20by\x20business\x20states.','suggestion':'Remove\x20the\x20node;\x20route\x20refunds\x20via\x20Allocator\x20states\x20(cancelled/returned)\x20and\x20disputes\x20via\x20the\x20Arbitration\x20object.'});}a['machine_shape']['length']===0x0&&b['push']({'rule_id':'R-M1-01','severity':'critical','title':'machine_shape\x20is\x20empty','detail':'No\x20entry\x20node\x20—\x20the\x20Machine\x20cannot\x20start.','suggestion':'Add\x20at\x20least\x20one\x20entry\x20node\x20representing\x20the\x20escrowed\x20state.'});const c=a['guards']['some'](f=>f['template_id']['includes']('refund')||f['template_id']['includes']('cancel'))||/refund/i['test'](a['allocator']['description']);!c&&b['push']({'rule_id':'R1','severity':'high','title':'No\x20refund\x20path\x20detected','detail':'No\x20refund/cancel\x20guard\x20and\x20no\x20refund\x20route\x20in\x20the\x20allocator\x20description.','suggestion':'Add\x20a\x20refund/cancel\x20guard\x20or\x20an\x20allocator\x20refund\x20route\x20before\x20publishing.'});const d=a['guards']['some'](f=>f['host']==='arbitration')||a['trust_mechanisms']['some'](f=>f['startsWith']('R2'));return!d&&b['push']({'rule_id':'R2','severity':'high','title':'No\x20independent\x20Arbitration\x20reference\x20detected','detail':'The\x20template\x20carries\x20no\x20arbitration-hosted\x20guard\x20and\x20no\x20R2\x20trust\x20mechanism.','suggestion':'Mount\x20an\x20independent\x20Arbitration\x20object\x20with\x20its\x20own\x20Permission.'}),a['keeper_dependencies']['length']===0x0&&b['push']({'rule_id':'R9','severity':'medium','title':'No\x20keeper\x20dependencies\x20declared','detail':'Time-driven\x20transitions\x20only\x20ALLOW\x20advancement\x20—\x20someone\x20must\x20run\x20the\x20keepers.','suggestion':'Declare\x20the\x20keeper\x20operations\x20(timeouts,\x20window\x20expiries,\x20settlement\x20triggers).'}),b;}const BRANCH_STATE_REGEX=/(cancel|return|withdraw|exit|expired)/i,ALWAYS_FIRE_ADVISORIES=new Set(['R-A-5-03']);function syntheticMachine(a){const b=a['machine_shape']['map'](e=>({'name':e['name'],'description':e['role']})),c=[],d=e=>[{'name':e,'weight':0x1,'named_operator':'order_holder'}];b['length']>0x0&&c['push']({'prev_node':'','next_node':b[0x0]['name'],'threshold':0x1,'forwards':d('enter_'+b[0x0]['name'])});for(let e=0x0;e<b['length']-0x1;e++){const f=b[e]['name'],g=b[e+0x1]['name'];if(BRANCH_STATE_REGEX['test'](g))continue;c['push']({'prev_node':f,'next_node':g,'threshold':0x1,'forwards':d(f+'_to_'+g)});}if(b['length']>0x0)for(const h of b){BRANCH_STATE_REGEX['test'](h['name'])&&c['push']({'prev_node':b[0x0]['name'],'next_node':h['name'],'threshold':0x1,'forwards':d('to_'+h['name'])});}return{'nodes':b,'pairs':c};}function singleNodeGraph(a){return{'network':ENTRYPOINT['Testnet'],'seed':a['id'],'builtAt':Date['now'](),'nodes':new Map([[a['id'],a]]),'edges':[],'out':new Map(),'inc':new Map(),'gaps':[],'truncations':[],'rpcReport':{'batches':0x0,'byChannel':{'objects':0x0,'keyedFields':0x0,'tables':0x0,'events':0x0},'dedupHits':0x0},'budgetExhausted':{}};}function analyzerFindings(a){const b=makeProposalNode('machine',syntheticMachine(a)),c=makeProposalNode('allocation',{}),d=[];for(const e of[b,c]){const g=singleNodeGraph(e),h=buildViewport(g,g['seed'],'neutral');for(const i of runNodeAnalyzers(h,[machineRuleNodeAnalyzer,allocationRuleNodeAnalyzer])){if(i['ruleId']&&ALWAYS_FIRE_ADVISORIES['has'](i['ruleId']))continue;d['push'](i);}}return d;}const SEVERITY_ORDER={'low':0x0,'medium':0x1,'high':0x2,'critical':0x3};export function scanTemplate(a){const b=[...staticChecks(a)];for(const e of analyzerFindings(a)){const g=e['severity']==='info'?'low':e['severity'];b['push']({'rule_id':e['ruleId'],'severity':g,'title':e['title'],'detail':e['detail'],'suggestion':e['suggestion']});}b['sort']((h,i)=>SEVERITY_ORDER[i['severity']]-SEVERITY_ORDER[h['severity']]);const c=b['length']>0x0?b[0x0]['severity']:'low',d=b['filter'](h=>h['severity']==='critical')['map'](h=>''+(h['rule_id']?h['rule_id']+':\x20':'')+h['title']);return{'template_id':a['id'],'risk_level':c,'passed':d['length']===0x0,'findings':b,'red_flags':d};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{describe,expect,it}from'vitest';import{scanTemplate}from'./template-scanner.js';import{BUILTIN_TEMPLATES,getBuiltinTemplate}from'./builtin-templates.js';function asLoaded(a,b={}){return{...a,'body':'','source_path':'<builtin:'+a['id']+'>',...b};}const base=()=>getBuiltinTemplate('retail/scale-marketplace');describe('scanTemplate\x20—\x20builtin\x20catalog\x20passes',()=>{it('all\x2012\x20built-in\x20templates\x20pass\x20(no\x20CRITICAL\x20findings)',()=>{for(const a of BUILTIN_TEMPLATES){const b=scanTemplate(asLoaded(a));expect(b['template_id'])['toBe'](a['id']),expect(b['passed'],a['id']+'\x20blocked:\x20'+b['red_flags']['join'](';\x20')+'\x20/\x20'+b['findings']['map'](c=>(c['rule_id']??'?')+':'+c['title'])['join'](';\x20'))['toBe'](!![]),expect(b['red_flags'])['toEqual']([]),expect(b['findings']['every'](c=>c['severity']!=='critical'))['toBe'](!![]);}}),it('the\x20synthetic\x20draft\x20machine\x20trips\x20no\x20machine/allocation\x20rule\x20false\x20positives',()=>{for(const a of BUILTIN_TEMPLATES){const b=scanTemplate(asLoaded(a)),c=b['findings']['filter'](d=>d['rule_id']?.['startsWith']('R-M')||d['rule_id']?.['startsWith']('R-A'));expect(c,a['id']+':\x20'+c['map'](d=>d['rule_id'])['join'](','))['toEqual']([]);}});}),describe('scanTemplate\x20—\x20static\x20checks\x20fire\x20on\x20mutations',()=>{const a=()=>getBuiltinTemplate('retail/scale-marketplace');it('R-M1-11:\x20a\x20dispute/refund\x20Machine\x20node\x20is\x20CRITICAL\x20and\x20blocks',()=>{const b=asLoaded(a(),{'machine_shape':[...a()['machine_shape'],{'name':'disputed','role':'Dispute\x20handled\x20inside\x20the\x20Machine'}]}),c=scanTemplate(b);expect(c['passed'])['toBe'](![]),expect(c['risk_level'])['toBe']('critical');const d=c['findings']['find'](e=>e['rule_id']==='R-M1-11');expect(d)['toBeDefined'](),expect(d['severity'])['toBe']('critical'),expect(c['red_flags']['some'](e=>e['includes']('R-M1-11')))['toBe'](!![]);}),it('R-M1-01:\x20an\x20empty\x20machine_shape\x20is\x20CRITICAL\x20and\x20blocks',()=>{const b=scanTemplate(asLoaded(a(),{'machine_shape':[]}));expect(b['passed'])['toBe'](![]),expect(b['findings']['some'](c=>c['rule_id']==='R-M1-01'&&c['severity']==='critical'))['toBe'](!![]);}),it('R1:\x20missing\x20refund\x20path\x20raises\x20a\x20high\x20finding\x20(but\x20does\x20not\x20block)',()=>{const b=a(),c=asLoaded(b,{'guards':b['guards']['filter'](f=>!f['template_id']['includes']('refund')&&!f['template_id']['includes']('cancel')),'allocator':{...b['allocator'],'description':'Settlement\x20split\x20among\x20participants\x20at\x20the\x20release\x20point'}}),d=scanTemplate(c),e=d['findings']['find'](g=>g['rule_id']==='R1');expect(e)['toBeDefined'](),expect(e['severity'])['toBe']('high'),expect(d['passed'])['toBe'](!![]),expect(d['risk_level'])['toBe']('high');}),it('R2:\x20missing\x20independent\x20Arbitration\x20reference\x20raises\x20a\x20high\x20finding',()=>{const b=a(),c=asLoaded(b,{'guards':b['guards']['filter'](e=>e['host']!=='arbitration'),'trust_mechanisms':b['trust_mechanisms']['filter'](e=>!e['startsWith']('R2'))}),d=scanTemplate(c);expect(d['findings']['some'](e=>e['rule_id']==='R2'&&e['severity']==='high'))['toBe'](!![]);}),it('R9:\x20no\x20keeper\x20declarations\x20raises\x20a\x20medium\x20finding',()=>{const b=scanTemplate(asLoaded(a(),{'keeper_dependencies':[]})),c=b['findings']['find'](d=>d['rule_id']==='R9');expect(c)['toBeDefined'](),expect(c['severity'])['toBe']('medium');});}),describe('scanTemplate\x20—\x20result\x20shape',()=>{it('findings\x20are\x20sorted\x20by\x20severity\x20descending;\x20risk_level\x20is\x20the\x20highest',()=>{const a=base(),b=asLoaded(a,{'machine_shape':[...a['machine_shape'],{'name':'refunded','role':'Refund\x20node'}],'keeper_dependencies':[]}),c=scanTemplate(b),d={'low':0x0,'medium':0x1,'high':0x2,'critical':0x3};for(let e=0x1;e<c['findings']['length'];e++){expect(d[c['findings'][e]['severity']])['toBeLessThanOrEqual'](d[c['findings'][e-0x1]['severity']]);}expect(c['risk_level'])['toBe'](c['findings'][0x0]['severity']);}),it('a\x20clean\x20scan\x20reports\x20risk_level\x20from\x20its\x20highest\x20non-critical\x20finding',()=>{const a=scanTemplate(asLoaded(getBuiltinTemplate('freelance/enterprise-talent-market')));expect(a['passed'])['toBe'](!![]),expect(['low','medium','high'])['toContain'](a['risk_level']);});});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const TOOLS_REFERENCE=[{'name':'onchain_operations','summary':'On-chain\x20object\x20creation,\x20modification,\x20and\x20publish\x20for\x20all\x2016\x20Wowok\x20object\x20types.','actions':['service','machine','guard','permission','reward','arb','progress','treasury','demand','repository','contact','order','allocation','personal','payment','proof','gen_passport','gen_proof'],'common_params':{'operation_type':'Object\x20type\x20to\x20create/modify\x20(string\x20enum).','data':'Operation\x20payload\x20—\x20shape\x20varies\x20by\x20operation_type.','object':'Object\x20name\x20or\x20address\x20(for\x20modify-by-id).','namedNew':'New\x20object\x20spec\x20(name,\x20description,\x20tags)\x20for\x20create.','env':'Execution\x20environment\x20(account,\x20network,\x20gas_budget).'},'prerequisites':['account_operation\x20(for\x20account\x20setup)'],'follow_ups':['query_toolkit\x20(verify\x20result)','local_mark_operation\x20(tag\x20object)'],'notes':['publish=true\x20is\x20irreversible\x20—\x20use\x20confirm_gate.','Service/Machine\x20require\x20publish\x20after\x20create\x20before\x20they\x20are\x20visible\x20on-chain.','Use\x20schema_query\x20with\x20action=\x27list_operations\x27\x20to\x20see\x20all\x20operation\x20schemas.','NETWORK:\x20omit\x20env.network\x20—\x20the\x20runtime\x20resolves\x20the\x20user\x27s\x20CURRENT\x20network\x20(client\x20UI\x20selection);\x20the\x20confirmation\x20card\x20echoes\x20the\x20actual\x20network.\x20Never\x20guess\x20or\x20hardcode\x20a\x20network.']},{'name':'account_operation','summary':'Local\x20wallet\x20management\x20—\x20generate,\x20suspend,\x20resume,\x20faucet,\x20sign\x20data.','actions':['gen','resume','suspend','faucet','operate','sign','list','info'],'common_params':{'name':'Account\x20name\x20(local\x20identifier).','network':'mainnet\x20|\x20testnet\x20(determines\x20RPC).'},'prerequisites':[],'follow_ups':['onchain_operations\x20(use\x20account\x20for\x20signing)'],'notes':['100%\x20LOCAL\x20—\x20keys\x20never\x20leave\x20the\x20device.','faucet\x20only\x20works\x20on\x20testnet.']},{'name':'local_mark_operation','summary':'Local\x20address\x20book\x20—\x20map\x20human-readable\x20names\x20to\x20blockchain\x20addresses\x20with\x20tags.','actions':['add','remove','update','list','query'],'common_params':{'name':'Local\x20name.','address':'Blockchain\x20address.','tags':'Tag\x20array.'},'notes':['100%\x20LOCAL\x20—\x20never\x20on-chain.','Names\x20are\x20accepted\x20by\x20most\x20on-chain\x20query/panorama\x20tools\x20in\x20place\x20of\x20raw\x20addresses.']},{'name':'local_info_operation','summary':'Local\x20private\x20data\x20management\x20—\x20delivery\x20addresses,\x20phone\x20numbers,\x20contacts.','actions':['add','remove','update','list'],'notes':['100%\x20LOCAL\x20—\x20sensitive\x20data,\x20never\x20on-chain.']},{'name':'local_history_operation','summary':'Local\x20Explorer\x20visit\x20history\x20—\x20recently\x20viewed\x20objects,\x20newest\x20first.','actions':['list\x20(default)','add\x20(upsert\x20by\x20key)','remove\x20(by\x20keys)','clear'],'common_params':{'add':'Record\x20visits:\x20{op:\x27add\x27,\x20data:[{key,\x20address,\x20object_type?,\x20network,\x20time}]}.','remove':'Delete\x20entries:\x20{op:\x27remove\x27,\x20keys:[...]}.','clear':'Erase\x20all\x20history:\x20{op:\x27clear\x27}.'},'notes':['100%\x20LOCAL\x20—\x20visit\x20records\x20never\x20leave\x20the\x20device;\x20display\x20names\x20are\x20never\x20stored\x20(resolved\x20live\x20at\x20render).','Omit\x20every\x20operation\x20field\x20to\x20list\x20history\x20(newest\x20first,\x20auto-pruned\x20to\x20last\x2030\x20days\x20/\x20300\x20entries).','detail\x20visits\x20keep\x20the\x20object\x20type\x20tag;\x20each\x20entry\x20stores\x20the\x20stable\x20object\x20key\x20+\x20canonical\x200x\x20address\x20+\x20network\x20+\x20timestamp.']},{'name':'wip_file','summary':'Witness\x20Immutable\x20Promise\x20file\x20operations\x20—\x20generate,\x20verify,\x20sign,\x20convert.','actions':['generate','verify','sign','wip2html'],'notes':['WIP\x20hash\x20must\x20be\x20non-empty\x20—\x20compute\x20actual\x20hash\x20before\x20calling.']},{'name':'messenger_operation','summary':'Encrypted\x20messenger\x20—\x20watch/send\x20messages,\x20WTS,\x20friendslist,\x20blacklist,\x20guardlist.','actions':['watch_conversations','send_message','send_file','send_required_info','watch_messages','save_attachment','generate_wts','verify_wts','sign_wts','wts2html','proof_message','blacklist','friendslist','guardlist','settings','mark_messages_as_viewed','mark_conversation_as_viewed','pull_messages'],'notes':['Requires\x20messenger-enabled\x20account.','30s\x20timeout\x20—\x20network\x20operations.','Attachment\x20messages\x20return\x20byte-free\x20descriptors\x20(msg.attachment;\x20plaintext\x20is\x20undefined).\x20Use\x20save_attachment\x20{messageId}\x20to\x20persist\x20the\x20file\x20(e.g.\x20before\x20verify_wts);\x20bytes\x20are\x20never\x20embedded\x20in\x20message\x20outputs.','send_required_info\x20assembles\x20selected\x20LocalInfo\x20fields\x20into\x20one\x20E2E\x20message\x20(\x27field:\x20value\x27\x20lines)\x20—\x20the\x20dedicated\x20path\x20for\x20delivering\x20customer_required\x20info.','pull_messages\x20supports\x20allAccounts/accounts\x20for\x20one\x20bounded-concurrency\x20fan-out\x20across\x20accounts.']},{'name':'guard2file','summary':'Export\x20a\x20Guard\x20object\x27s\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'machineNode2file','summary':'Export\x20a\x20Machine\x20object\x27s\x20node\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'query_toolkit','summary':'Query\x20toolkit\x20covering\x20local\x20device\x20data,\x20on-chain\x20blockchain\x20data,\x20and\x20one-call\x20business-intelligence\x20panoramas/review\x20packs.','actions':['local_mark_list','account_list','local_info_list','local_names','token_list','account_balance','onchain_personal_profile','onchain_objects','onchain_received','onchain_transaction','onchain_block','onchain_object_history','onchain_address_activity','address_profile','address_profiles','migration_preflight','token_value_convert','onchain_last_updated','service_panorama','machine_panorama','object_panorama','review_pack','assemble_context','reverse_map','participation_radar','onchain_topology'],'notes':['Read-only\x20—\x20safe\x20to\x20call\x20without\x20confirmation.','local_names\x20resolves\x20a\x20batch\x20of\x20addresses\x20to\x20account/local_mark\x20names\x20(canonical\x20name\x20source\x20for\x20display);\x20address_profile(s)\x20is\x20the\x20one-stop\x20\x27who/what\x20is\x20this\x20address\x27\x20query\x20(classification\x20+\x20reputation\x20+\x20memberships\x20+\x20reverse\x20bindings;\x20batch\x20up\x20to\x2050);\x20migration_preflight\x20detects\x20existing\x20builds\x20on\x20another\x20network\x20and\x20returns\x20the\x20testnet→mainnet\x20migration\x20checklist.','BI\x20query\x20types\x20(one-call\x20panoramas):\x20service_panorama\x20(full\x20Service\x20context:\x20workflow\x20graph\x20+\x20guards\x20+\x20trust\x20+\x20supply\x20chain\x20+\x20BusinessReport\x20+\x20recent\x20orders),\x20machine_panorama\x20(head\x20+\x20fields\x20+\x20workflow\x20graph\x20+\x20Progress\x20list),\x20object_panorama\x20(Progress/Demand/Order/Arb/Repository\x20detail\x20pages),\x20review_pack\x20(typed\x20ReviewPack\x20for\x20the\x20client\x27s\x20ReviewPackRenderer),\x20assemble_context\x20(semantic\x20context\x20from\x20on-chain\x20objects),\x20reverse_map\x20(deterministic\x20L4→L1\x20business\x20report\x20—\x20merchant\x20profile\x20/\x20user\x20risk\x20/\x20game\x20theory),\x20participation_radar\x20(in-flight\x20order\x20participation\x20analysis\x20for\x20ONE\x20account).','onchain_topology\x20=\x20graph\x20evaluation\x20of\x20ONE\x20object\x20(trust\x20+\x20risk\x20+\x20completeness\x20+\x20coverage\x20+\x20unverified\x20over\x20its\x20workflow/guard/fund\x20topology)\x20—\x20the\x20unified\x20read-side\x20trust/risk\x20surface;\x20use\x20when\x20the\x20user\x20asks\x20\x27is\x20this\x20service\x20trustworthy?\x27\x20or\x20\x27should\x20I\x20buy?\x27.']},{'name':'onchain_table_data','summary':'Dynamic\x20table\x20data\x20queries\x20—\x20paginated\x20table\x20queries\x20and\x20specific\x20table\x20item\x20lookups.','actions':['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_affiliations_of_object','onchain_table_item_generic'],'notes':['Read-only\x20—\x20safe\x20for\x20exploration.','object_linker\x20core\x20(0xaae)\x20=\x20default\x20reverse\x20lookup\x20(bounded\x20core\x20objects);\x20object_linker\x20tx\x20(0xaaf)\x20=\x20operational\x20reverse\x20lookup\x20(orders/progress,\x20lossy\x20FIFO).','entity_order\x20(0xaa8)\x20=\x20global\x20entity->orders\x20reverse\x20index;\x20onchain_orders_of_user\x20resolves\x20each\x20order\x20to\x20its\x20full\x20on-chain\x20Order\x20object\x20with\x20role\x20attributes\x20(is_owner/is_agent).']},{'name':'onchain_events','summary':'Watch\x20on-chain\x20events\x20by\x20type\x20—\x20arbitration,\x20order,\x20progress,\x20demand,\x20entity.','notes':['Read-only\x20—\x20use\x20cursor\x20for\x20pagination.']},{'name':'wowok_buildin_info','summary':'Protocol\x20info\x20—\x20constants,\x20built-in\x20permissions,\x20common\x20mistakes,\x20guard\x20instructions,\x20network,\x20value\x20types,\x20bridge\x20tokens.','actions':['constants','built-in\x20permissions','common\x20mistakes','guard\x20instructions','current\x20network','value\x20types','mainnet\x20bridge\x20tokens'],'notes':['Read-only\x20—\x20authoritative\x20protocol\x20reference.','Use\x20\x27common\x20mistakes\x27\x20before\x20submitting\x20an\x20operation\x20to\x20learn\x20known\x20field-name/unit/workflow\x20pitfalls.']},{'name':'schema_query','summary':'Look\x20up\x20JSON\x20Schemas\x20for\x20MCP\x20tools\x20and\x20on-chain\x20operations\x20—\x20the\x20authoritative\x20reference.\x20Also\x20serves\x20sunk\x20knowledge:\x20tool\x20reference,\x20Guard\x20design\x20patterns,\x20safety\x20rules.','actions':['list','get','get_output','get_field','search','list_operations','get_guard_templates','get_tool_reference','get_guard_design_patterns','get_safety_rules'],'notes':['Always\x20check\x20schema\x20before\x20calling\x20an\x20unfamiliar\x20tool.','get_field\x20takes\x20a\x20dot-path\x20(field_path)\x20for\x20single-field\x20lookup.','get_tool_reference/get_guard_design_patterns/get_safety_rules\x20expose\x20the\x20knowledge\x20sunk\x20from\x20the\x20wowok-tools/guard/safety\x20skills\x20—\x20no\x20skills\x20installation\x20required.']},{'name':'bridge_operation','summary':'Cross-chain\x20bridge\x20between\x20WOW\x20and\x20EVM\x20(Ethereum\x20mainnet).\x20Mainnet\x20only.','actions':['cross_chain_wow_to_evm','cross_chain_evm_to_wow','withdraw','query_active_evm_account','query_supported_evm_chains','query_supported_tokens','query_transfer_list','query_transfer_status','manage_evm_rpc'],'notes':['Only\x20WOW\x20mainnet\x20provides\x20cross-chain\x20functionality.']},{'name':'config_operation','summary':'Runtime\x20service\x20toggles\x20—\x20enable/disable\x20Phase\x202\x20services\x20without\x20restart.','actions':['list','toggle','enable','disable','reset','info'],'notes':['GLM5:\x20harness\x20is\x20default\x20ON\x20with\x20tiered\x20enforcement\x20(off/lightweight/full).']},{'name':'evaluation_operation','summary':'Pluggable\x20business\x20evaluations\x20—\x20match\x20/\x20compose\x20/\x20game\x20(node\x20+\x20path)\x20/\x20evidence\x20review\x20/\x20discovery\x20/\x20market\x20/\x20arbitration\x20score\x20with\x20user\x20injection.','actions':['demand_match','service_match','capability_gap','compose_service','node_game','arb_game','path_reasoning','evidence_review','discover_services','discover_demands','market_metrics','market_operations','anti_cheat','match_discover','arbitration_score','account_events'],'notes':['Read-only;\x20the\x20role\x20decides\x20and\x20acts\x20via\x20onchain_operations.','path_reasoning\x20=\x20path-level\x20game\x20(full-route\x20enumeration\x20+\x20ranking);\x20node_game\x20=\x20single-node\x20best\x20move.','evidence_review\x20=\x20deterministic\x20off-chain\x20evidence\x20closure\x20gate\x20(auto_pass/auto_reject/manual_review).','discover_services\x20=\x20active\x20supply\x20discovery\x20(GraphQL\x20transport\x20required):\x20enumerate\x20all\x20shared\x20Services,\x20location-gate\x20by\x20sensitivity\x20(strict/near/logistics),\x20ranked\x20+\x20consent-gated\x20scope\x20expansion.\x20Passive\x20side\x20=\x20post\x20a\x20Demand\x20(DemandPresenter).','match_discover\x20=\x20one-shot\x20intent→service\x20orchestration\x20(enumerate\x20+\x20location\x20gate\x20+\x206-dimension\x20scoring);\x20discover_demands\x20=\x20supplier-side\x20demand\x20enumeration;\x20market_metrics/market_operations\x20=\x20market\x20measurement\x20(GraphQL\x20required).','arbitration_score\x20=\x20dual-perspective\x20arbitration\x20trust\x20(user-trust\x20+\x20merchant-fairness,\x20combined\x200-100);\x20anti_cheat\x20=\x20fake-review/wash-order\x20detection;\x20account_events\x20=\x20account\x20attention\x20feed\x20(read-only).']},{'name':'watch_operation','summary':'Identity-centric\x20on-chain\x20console\x20—\x20resolve\x20who\x20the\x20account\x20is\x20against\x20an\x20object,\x20expand\x20its\x20relations,\x20and\x20enumerate\x20actionable\x20operations.','actions':['focus','expand','actions'],'notes':['Read-only;\x20distinct\x20from\x20query_toolkit\x20/\x20onchain_table_data\x20(pure\x20data,\x20no\x20identity).','focus\x20=\x20identity\x20resolution\x20(manifest\x20on-chain\x20role\x20⊕\x20persona)\x20+\x20base\x20data;\x20neutral\x20→\x20objective\x20narration,\x20operative\x20role\x20→\x20game\x20reasoning.','expand\x20=\x20direct\x20relations\x20+\x20Service\x20transparent\x20sub-order\x20purchasing\x20graph\x20(frozen\x20forward\x20guards\x20→\x20purchased\x20sub-services\x20+\x20proofs).','actions\x20=\x20actionable\x20operations\x20with\x20executability\x20judgment\x20(order-holder\x20/\x20permission-index\x20/\x20named-operator\x20paths).']},{'name':'persona_operation','summary':'User\x20identity\x20setting\x20(persona)\x20—\x20preferences,\x20strategy,\x20rules,\x20spec;\x20long-term\x20+\x20current\x20layers\x20+\x20strategy→lever\x20mapping\x20+\x20region\x20hint.','actions':['get','list','set','analyze','apply','sync','remove','strategy','region_hint','distill'],'notes':['Read/write\x20local\x20state;\x20account\x20persona\x20overrides\x20system;\x20current\x20overrides\x20long-term.','strategy\x20resolves\x20merchant\x20strategy\x20statements\x20into\x20deterministic\x20infrastructure\x20levers\x20(discount/reward/buy_guard/machine_design).','region_hint\x20reads\x20the\x20local\x20delivery\x20address\x20as\x20a\x20matching\x20hint;\x20`propose`\x20returns\x20a\x20consent-gated\x20save\x20proposal\x20(never\x20auto-writes).','distill\x20turns\x20one\x20goal\x27s\x20memory\x20(outcome,\x20process\x20problems/feedback,\x20objects)\x20into\x20a\x20CURRENT-layer\x20proposal\x20—\x20never\x20auto-writes;\x20persist\x20via\x20set/apply\x20after\x20user\x20confirmation.\x20Industry\x20pack.json\x20files\x20are\x20read-only\x20knowledge\x20and\x20never\x20receive\x20user\x20data.']},{'name':'employee_operation','summary':'Merchant\x20employee\x20organizational\x20profile\x20(LOCAL)\x20+\x20reaction\x20KPI\x20+\x20liability\x20resolution\x20+\x20incentive\x20suggestion.','actions':['set','get','remove','assess_kpi','resolve_liability','suggest_incentive'],'notes':['LOCAL\x20ONLY\x20—\x20on-chain\x20authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).','assess_kpi:\x20node\x20reaction\x20speed\x20vs\x20budget\x20(explicit\x20>\x20stored\x20profile\x20>\x2048h\x20default).\x20Timestamps\x20explicit\x20OR\x20auto-derived\x20from\x20the\x20progress\x20object\x27s\x20monitored\x20ProgressEvents\x20via\x20`progress`;\x20explicit\x20values\x20override\x20derived.','resolve_liability:\x20internal\x20cost\x20split\x20(merchant/employee,\x20hybrid\x20threshold);\x20outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s;\x20order\x20user\x20must\x20be\x20compensated\x20before\x20the\x20workflow\x20resumes.','suggest_incentive:\x20KPIs\x20+\x20WIP\x20acceptance\x20+\x20liability\x20→\x20Reward\x20suggestion\x20(reward_grant/compensation_offset/correction_notice/none).\x20Suggestion\x20ONLY\x20—\x20merchant\x20confirms\x20and\x20executes\x20the\x20on-chain\x20ops\x20separately.']},{'name':'keeper_operation','summary':'Who-benefits-who-pushes\x20keeper:\x20scans\x20the\x20monitor\x20scope\x20for\x20actionable\x20state\x20(unclaimed\x20payments,\x20advanceable\x20workflow\x20nodes),\x20routes\x20tasks\x20to\x20beneficiaries;\x20manual\x20dismiss/execute\x20+\x20standing\x20auto-execute\x20rules.','actions':['tasks','dismiss','execute','rules','rule_set','rule_remove','config','config_set','scan','status'],'notes':['The\x20chain\x20has\x20NO\x20time-triggered\x20execution\x20—\x20the\x20keeper\x20scans\x20on\x20the\x20monitor\x20loop\x20cadence\x20and\x20surfaces\x20tasks\x20to\x20their\x20beneficiary.','execute\x20runs\x20the\x20on-chain\x20op\x20for\x20one\x20task\x20(user\x20decision);\x20rule_set\x20authorizes\x20auto-execution\x20per\x20detector\x20kind\x20(bounded\x20by\x20config\x20budget/cooldown).','Detectors\x20v1:\x20payment_unclaimed\x20(funds\x20sitting\x20claimable),\x20progress_actionable\x20(a\x20workflow\x20node\x20the\x20beneficiary\x20can\x20advance).']},{'name':'intent_radar','summary':'User\x20business\x20intent\x20×\x20chain\x20event\x20matching\x20—\x20persist\x20intents,\x20score\x20events\x20against\x20them.','actions':['save','list','remove','match'],'notes':['Read-only\x20w.r.t.\x20chain;\x20industry/keywords\x20resolved\x20once\x20at\x20save;\x20events\x20supplied\x20or\x20auto-pulled.']},{'name':'goal_operation','summary':'GoalEngine\x20(K3\x2024)\x20—\x20record\x20a\x20user\x20goal\x20and\x20drive\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20(RECOGNIZE→…→COMPLETE)\x20with\x20monitor\x20auto-binding\x20and\x20plan-approval\x20confirm-gate\x20downgrade;\x20also\x20hosts\x20the\x20C1-C4\x20planning\x20pipeline\x20+\x20merchant\x20onboarding\x20wizard.','actions':['create','list','get','approve','advance','pause','complete','abandon','delete','analyze_intent','aggregate_risks','trace_substeps','merchant_guide'],'common_params':{'id':'Goal\x20id\x20(goal_…)\x20—\x20required\x20for\x20get/approve/advance/pause/complete/abandon/delete.','intent_text':'create:\x20raw\x20user\x20intent;\x20goal_type\x20auto-classified\x20(override\x20with\x20goal_type).','account':'create:\x20bind\x20a\x20local\x20account\x20(preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).','stage':'advance:\x20forward-only\x20target\x20stage;\x20\x27paused\x27\x20holds\x20from\x20anywhere.','objects':'advance:\x20ACT-station\x20objects\x20[{type,\x20object}]\x20(deduped).','force':'complete:\x20skip\x20on-chain\x20completion\x20verification\x20(audited\x20as\x20outcome.forced).'},'follow_ups':['monitor_events\x20(goal\x20progress\x20surfaces\x20in\x20the\x20todo\x20stream)','onchain_operations\x20(execute\x20plan\x20steps\x20with\x20env.plan_approval)'],'notes':['Near-duplicate\x20create\x20ADOPTS\x20the\x20active\x20same-type\x20same-account\x20goal\x20(intent\x20Jaccard\x20≥\x200.6)\x20instead\x20of\x20forking.','approve\x20registers\x20a\x20plan\x20approval:\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>\x20auto-pass\x20fail-open\x20ConfirmGate\x20levels\x20(standard/none);\x20fail-closed\x20levels\x20(irreversible/publish/amount)\x20always\x20still\x20ask.','Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20(reason=\x27goal\x27,\x20goal_id-stamped)\x20for\x20the\x20goal\x27s\x20objects;\x20demand\x20goals\x20also\x20open\x20a\x20radar\x20intent.\x20complete/abandon\x20tear\x20down\x20ONLY\x20this\x20goal\x27s\x20bindings.','complete\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20(read-only);\x20force=true\x20bypasses\x20and\x20is\x20audited.','delete\x20removes\x20a\x20terminal\x20goal\x20entirely\x20(record\x20+\x20TaskProcess\x20dir);\x20force=true\x20extends\x20it\x20to\x20non-terminal\x20goals\x20(monitor\x20teardown\x20first).','C1-C4\x20planning\x20pipeline\x20(GLM5-31\x20§V3/V4):\x20analyze_intent\x20(intent\x20→\x20objects\x20+\x20puzzle\x20snapshots)\x20→\x20aggregate_risks\x20(puzzles\x20OR\x20intent\x20→\x20calibrated\x20risks\x20+\x20RISK_BLOCKED\x20status)\x20→\x20trace_substeps\x20(substep\x20records\x20→\x20DAG\x20coherence\x20+\x20D-10\x20verdict);\x20merchant_guide\x20=\x2010-step\x20onboarding\x20wizard\x20(stateless\x20guide_state,\x20never\x20executes\x20on-chain\x20—\x20materialize\x20via\x20onchain_operations).\x20All\x20four\x20are\x20pure\x20transformations.']},{'name':'monitor_events','summary':'Persistent\x20monitor\x20event\x20store\x20(shared\x20with\x20the\x20client\x20Monitor\x20page)\x20—\x20paginated\x20events\x20with\x20read\x20flags;\x20mark\x20read/unread.','actions':['query','mark_read','mark_all_read'],'notes':['Events\x20captured\x20by\x20the\x20resident\x20MonitorLoop\x20(client\x20sidecar,\x20or\x20stdio\x20MCP\x20server\x20with\x20MONITOR_LOOP=1)\x20across\x209\x20modules,\x20stored\x20APPEND-ONLY\x20in\x20SQLite\x20(survives\x20restarts)\x20with\x20per-event\x20read\x20flags.','query\x20=\x20paginated\x20newest-first\x20with\x20module/event_type/since/until\x20filters\x20+\x20module_counts/unread_by_module/total_unread;\x20relevant_only\x20(default\x20true)\x20restricts\x20to\x20scope-closure/focus/filter\x20hits\x20(de-noised\x20todo\x20stream);\x20with_reason\x20attaches\x20the\x20relevance\x20annotation\x20+\x20delivered\x20flag;\x20mark_read\x20=\x20idempotent\x20per-event\x20(\x27<eventSeq>:<txDigest>\x27);\x20mark_all_read\x20=\x20optionally\x20module-scoped.','Cross-process:\x20read\x20state\x20is\x20SHARED\x20with\x20the\x20client\x20app\x20(same\x20SQLite\x20store)\x20—\x20marking\x20read\x20here\x20clears\x20the\x20client\x20Monitor\x20unread\x20badge\x20and\x20vice\x20versa.']},{'name':'monitor_subscription','summary':'Monitor\x20subscription\x20config\x20—\x20scope-closure\x20rules,\x20focus\x20objects,\x20per-type\x20todo\x20switches,\x20conditional\x20filters;\x20scope\x20preview\x20+\x20filter\x20dry-run.','actions':['get','save','reset','scope_preview','test_filter'],'notes':['Single\x20configuration\x20entry\x20point\x20for\x20monitor\x20v4\x20(client\x20settings\x20panel\x20and\x20agents\x20share\x20it);\x20save/reset\x20merge\x20+\x20clamp\x20loop\x20params,\x20then\x20trigger\x20an\x20immediate\x20scope\x20re-resolve\x20and\x20schedule\x20a\x20backfill\x20when\x20the\x20closure\x20changed.','scope_preview\x20lists\x20the\x20resolved\x20closure\x20grouped\x20by\x20layer\x20(accounts/permissions/managed_objects/services/orders/order_children/focus)\x20with\x20pagination\x20—\x20inspect\x20before\x20tuning\x20rule\x20switches.','test_filter\x20dry-runs\x20a\x20filter\x20draft\x20over\x20the\x20most\x20recent\x20captured\x20events\x20(default\x20200,\x20max\x201000)\x20returning\x20matched/scanned\x20counts\x20+\x20up\x20to\x205\x20samples\x20—\x20preview\x20noise\x20BEFORE\x20saving.','Capture\x20is\x20unaffected\x20by\x20delivery\x20switches\x20EXCEPT\x20NewPaymentEvent\x20(captured\x20only\x20when\x20switched\x20ON).']},{'name':'industry_pack_operation','summary':'Industry\x20knowledge\x20pack\x20lifecycle\x20—\x20scaffold\x20(merged\x20v2\x20template),\x20scan/register,\x20layer\x20get,\x20diff,\x20reset-to-template,\x20plus\x20industry-dir\x20file\x20operations\x20and\x20the\x20industry\x20mode\x20registry\x20(GLM6/92\x20§E).','actions':['scaffold','list','scan','resolve','list_files','read_file','write_file','get','diff','reset','delete_file','create_file','create_dir','copy','move','rename','recommend_industry','list_modes','derive_user_mode','evolve_user_mode','register_user_mode','unregister_user_mode','register_custom_metric','register_custom_constraint','list_metrics_constraints'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20+\x20in-memory\x20registry;\x20never\x20mutates\x20chain\x20state.','Merged\x20v2\x20layout:\x20pack.json\x20(annotated\x20with\x20_schema/_doc\x20comment\x20fields\x20+\x20personae)\x20+\x20playbook.md;\x20legacy\x20split-file\x20layouts\x20still\x20read\x20for\x20backward\x20compatibility.','reset\x20restores\x20a\x20file\x20or\x20entire\x20pack\x20folder\x20to\x20its\x20pristine\x20annotated\x20template\x20—\x20user\x20edits\x20beyond\x20the\x20target\x20are\x20preserved.','Mode\x20registry\x20(GLM6/92\x20§E):\x20recommend_industry\x20(top-3\x20similar\x20industries\x20+\x20verified\x20reference\x20examples),\x20list_modes,\x20derive_user_mode\x20(customize\x20a\x20builtin),\x20evolve_user_mode,\x20register_user_mode\x20(fully\x20custom;\x20R-M1-11\x20enforced\x20on\x20machine_shape),\x20unregister_user_mode,\x20register_custom_metric\x20/\x20register_custom_constraint\x20(extend\x20evaluation\x20registries),\x20list_metrics_constraints.']},{'name':'strategy_review_operation','summary':'Posture-weighted\x20operating\x20scorecard\x20for\x20one\x20(account,\x20industry):\x20collect\x20evidence\x20into\x20append-only\x20local\x20snapshots,\x20assemble\x20periodic\x20reviews\x20with\x20deterministic\x20pricing/posture\x20advice\x20and\x20current-layer-only\x20persona\x20proposals\x20(never\x20auto-applied).','actions':['collect','review','list_snapshots'],'notes':['Chain\x20reads\x20+\x20local\x20SQLite\x20KV\x20snapshots\x20only;\x20never\x20mutates\x20chain\x20state\x20and\x20never\x20writes\x20the\x20persona.','collect\x20gathers\x2013\x20catalog\x20metrics\x20from\x206\x20evidence\x20sources\x20(journey\x20funnel/order\x20flow/market\x20metrics/discovery\x20competitor\x20count/arbitration\x20trust/account\x20attention);\x20source\x20failures\x20degrade\x20metrics\x20to\x20unavailable/error,\x20never\x20zero-filled;\x20snapshot\x20append\x20failure\x20is\x20fail-soft\x20(stored:false).','review\x20does\x20NOT\x20persist:\x20fresh\x20collection\x20+\x20delta\x20against\x20latest\x20stored\x20snapshot;\x200–100\x20score\x20renormalized\x20over\x20available\x20anchored\x20metrics\x20under\x20volume/balanced/margin\x20weights;\x20cadence\x20from\x20the\x20industry\x20catalog\x20(weekly/two-week/monthly);\x20≤2\x20proposals,\x20each\x20target_layer=\x27current\x27\x20with\x20apply_via\x20persona_operation\x20apply\x20—\x20the\x20user\x20must\x20apply\x20explicitly.','Posture\x20resolution:\x20explicit\x20posture\x20arg\x20→\x20merchant\x20posture\x20in\x20the\x20effective\x20persona\x20→\x20balanced.']},{'name':'workspace_operation','summary':'Local\x20workspace\x20directory\x20(`.wowok/workspace`)\x20—\x20generated\x20review\x20files\x20(machine/guard/wts/wip\x20JSON)\x20and\x20user\x20documents:\x20list/read/write\x20+\x20file\x20operations.','actions':['resolve','list','read','write','delete','create_file','create_dir','copy','move','rename'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20operations\x20confined\x20to\x20the\x20workspace\x20root;\x20never\x20mutates\x20chain\x20state.','read\x20is\x20the\x20supported\x20way\x20to\x20load\x20a\x20generated\x20JSON\x20as\x20AI\x20context\x20before\x20editing/submitting.']},{'name':'workflow_operation','summary':'Local-account\x20workflow\x20view\x20—\x20list\x20active\x20Progress\x20that\x20at\x20least\x20one\x20local\x20account\x20can\x20advance\x20(permission\x20+\x20guard\x20+\x20executable\x20accounts),\x20advance/hold/unhold\x20a\x20forward,\x20and\x20view\x20a\x20progress\x27s\x20on-chain\x20operation\x20history.','actions':['list','operate','history'],'notes':['list:\x20permission-aware\x20—\x20a\x20forward\x20is\x20executable\x20when\x20(a)\x20namedOperator=\x27\x27\x20and\x20account\x20is\x20order\x20holder,\x20(b)\x20namedOperator=name\x20and\x20account\x20is\x20in\x20progress.namedOperator[name],\x20or\x20(c)\x20permissionIndex\x20set\x20and\x20account\x20is\x20in\x20permission.admin/table.','operate:\x20delegates\x20to\x20the\x20on-chain\x20progress\x20operation\x20(guard-aware);\x20op\x20∈\x20next/hold/unhold/adminUnhold.','history:\x20incrementally\x20syncs\x20a\x20progress\x27s\x20ON-CHAIN\x20Progress.history\x20(append-only\x20u64\x20index)\x20into\x20the\x20local\x20SQLite\x20mirror\x20via\x20a\x20per-progress\x20cursor\x20(only\x20new\x20records\x20pulled),\x20returns\x20the\x20migration\x20timeline\x20newest-first\x20with\x20each\x20migration\x27s\x20session\x20snapshot\x20(forwards\x20/\x20operator\x20/\x20weight\x20/\x20time);\x20runs\x2090-day\x20retention\x20cleanup\x20by\x20default.']},{'name':'permission_operation','summary':'Local-account\x20Permission\x20overview\x20—\x20list\x20Permissions\x20related\x20to\x20local\x20accounts\x20(via\x20entity_permission\x20index)\x20with\x20owner/admin/entity\x20breakdown\x20+\x20related\x20objects\x20via\x20object-linker\x20indexes.','actions':['list'],'notes':['Read-only;\x20reverse-looks-up\x20local\x20accounts\x20via\x20entity_permission\x20@0xaad,\x20then\x20merges/dedups\x20permissions.','Related\x20objects\x20resolved\x20via\x20object-linker\x20reverse\x20indexes\x20(0xaae\x20core\x20/\x200xaaf\x20tx)\x20binding\x20edges,\x20grouped\x20by\x20type\x20via\x20first-byte\x20address\x20tag.','Latest\x20update\x20time\x20derived\x20from\x20the\x20Permission\x27s\x20previousTransaction.']},{'name':'ask_user','summary':'Structured\x20user\x20elicitation\x20—\x20ask\x20the\x20user\x20to\x20choose\x20between\x202-8\x20concrete\x20options\x20and\x20receive\x20a\x20validated\x20structured\x20answer\x20(MCP\x202.0\x20elicitation\x20/\x20desktop\x20option\x20card).','common_params':{'question':'The\x20single\x20decision\x20needed\x20from\x20the\x20user\x20(1-1000\x20chars).','options':'2-8\x20self-contained\x20{id,label,description?}\x20choices.','recommended_id':'id\x20of\x20the\x20professionally\x20recommended\x20option\x20(optional).','multi_select':'true\x20when\x20options\x20are\x20combinable\x20(boolean\x20toggle\x20per\x20option).','allow_freeform':'true\x20to\x20permit\x20an\x20additional\x20free-text\x20answer.','context':'Optional\x20short\x20explanation\x20of\x20why\x20the\x20decision\x20is\x20needed.'},'notes':['Use\x20when\x20a\x20business\x20decision\x20belongs\x20to\x20the\x20user\x20and\x20continuing\x20requires\x20it;\x20never\x20guess\x20or\x20silently\x20default\x20an\x20unanswered\x20choice.','Desktop\x20clients\x20render\x20an\x20option\x20card;\x20MCP\x202.0\x20transports\x20fulfil\x20via\x20elicitation/create;\x20unsupported\x20clients\x20should\x20fall\x20back\x20to\x20a\x20numbered\x20prose\x20question.','action\x20decline/cancel\x20means\x20STOP\x20and\x20ask\x20how\x20to\x20proceed\x20in\x20plain\x20text\x20—\x20do\x20not\x20execute\x20a\x20default\x20path.','Not\x20a\x20safety\x20confirmation\x20—\x20irreversible/publish/amount\x20gates\x20remain\x20handled\x20by\x20confirm_gate.']}];export function getToolReference(a){return TOOLS_REFERENCE['find'](b=>b['name']===a);}export function searchToolReference(a){const b=a['toLowerCase']();return TOOLS_REFERENCE['filter'](c=>{if(c['name']['toLowerCase']()['includes'](b))return!![];if(c['summary']['toLowerCase']()['includes'](b))return!![];if(c['actions']?.['some'](d=>d['toLowerCase']()['includes'](b)))return!![];return![];});}export function getToolSequence(a){const b=getToolReference(a);if(!b)return undefined;return{'prerequisites':b['prerequisites']??[],'tool':b['name'],'follow_ups':b['follow_ups']??[]};}
|
|
1
|
+
export const TOOLS_REFERENCE=[{'name':'onchain_operations','summary':'On-chain\x20object\x20creation,\x20modification,\x20and\x20publish\x20for\x20all\x2016\x20Wowok\x20object\x20types.','actions':['service','machine','guard','permission','reward','arb','progress','treasury','demand','repository','contact','order','allocation','personal','payment','proof','gen_passport','gen_proof'],'common_params':{'operation_type':'Object\x20type\x20to\x20create/modify\x20(string\x20enum).','data':'Operation\x20payload\x20—\x20shape\x20varies\x20by\x20operation_type.','object':'Object\x20name\x20or\x20address\x20(for\x20modify-by-id).','namedNew':'New\x20object\x20spec\x20(name,\x20description,\x20tags)\x20for\x20create.','env':'Execution\x20environment\x20(account,\x20network,\x20gas_budget).'},'prerequisites':['account_operation\x20(for\x20account\x20setup)'],'follow_ups':['query_toolkit\x20(verify\x20result)','local_mark_operation\x20(tag\x20object)'],'notes':['publish=true\x20is\x20irreversible\x20—\x20use\x20confirm_gate.','Service/Machine\x20require\x20publish\x20after\x20create\x20before\x20they\x20are\x20visible\x20on-chain.','Use\x20schema_query\x20with\x20action=\x27list_operations\x27\x20to\x20see\x20all\x20operation\x20schemas.','NETWORK:\x20by\x20default\x20omit\x20env.network\x20—\x20the\x20operation\x20runs\x20on\x20the\x20user\x27s\x20CURRENT\x20network\x20(the\x20app\x27s\x20active\x20selection);\x20the\x20confirmation\x20card\x20echoes\x20the\x20actual\x20network.\x20Never\x20guess\x20or\x20invent\x20a\x20network\x20on\x20your\x20own\x20initiative.','NETWORK\x20SWITCH\x20(explicit\x20user\x20intent\x20only):\x20when\x20the\x20user\x27s\x20request\x20clearly\x20targets\x20a\x20DIFFERENT\x20network\x20(e.g.\x20\x22create\x20this\x20permission\x20on\x20testnet\x22\x20while\x20the\x20app\x20is\x20on\x20mainnet),\x20set\x20env.network\x20to\x20that\x20network\x20in\x20THIS\x20call\x20—\x20the\x20client\x20pops\x20a\x20mandatory\x20network-switch\x20confirmation\x20card;\x20only\x20after\x20the\x20user\x20approves\x20does\x20the\x20call\x20(and\x20the\x20whole\x20app)\x20run\x20on\x20the\x20new\x20network.\x20If\x20the\x20user\x20declines,\x20do\x20NOT\x20retry\x20on\x20that\x20network\x20—\x20continue\x20on\x20the\x20current\x20one.\x20Read-only\x20queries\x20(query_toolkit\x20context_network)\x20never\x20need\x20this\x20—\x20they\x20select\x20a\x20network\x20per\x20call\x20without\x20switching.']},{'name':'account_operation','summary':'Local\x20wallet\x20management\x20—\x20generate,\x20suspend,\x20resume,\x20faucet,\x20sign\x20data.','actions':['gen','resume','suspend','faucet','operate','sign','list','info'],'common_params':{'name':'Account\x20name\x20(local\x20identifier).','network':'mainnet\x20|\x20testnet\x20(determines\x20RPC).'},'prerequisites':[],'follow_ups':['onchain_operations\x20(use\x20account\x20for\x20signing)'],'notes':['100%\x20LOCAL\x20—\x20keys\x20never\x20leave\x20the\x20device.','faucet\x20only\x20works\x20on\x20testnet.']},{'name':'local_mark_operation','summary':'Local\x20address\x20book\x20—\x20map\x20human-readable\x20names\x20to\x20blockchain\x20addresses\x20with\x20tags.','actions':['add','remove','update','list','query'],'common_params':{'name':'Local\x20name.','address':'Blockchain\x20address.','tags':'Tag\x20array.'},'notes':['100%\x20LOCAL\x20—\x20never\x20on-chain.','Names\x20are\x20accepted\x20by\x20most\x20on-chain\x20query/panorama\x20tools\x20in\x20place\x20of\x20raw\x20addresses.']},{'name':'local_info_operation','summary':'Local\x20private\x20data\x20management\x20—\x20delivery\x20addresses,\x20phone\x20numbers,\x20contacts.','actions':['add','remove','update','list'],'notes':['100%\x20LOCAL\x20—\x20sensitive\x20data,\x20never\x20on-chain.']},{'name':'local_history_operation','summary':'Local\x20Explorer\x20visit\x20history\x20—\x20recently\x20viewed\x20objects,\x20newest\x20first.','actions':['list\x20(default)','add\x20(upsert\x20by\x20key)','remove\x20(by\x20keys)','clear'],'common_params':{'add':'Record\x20visits:\x20{op:\x27add\x27,\x20data:[{key,\x20address,\x20object_type?,\x20network,\x20time}]}.','remove':'Delete\x20entries:\x20{op:\x27remove\x27,\x20keys:[...]}.','clear':'Erase\x20all\x20history:\x20{op:\x27clear\x27}.'},'notes':['100%\x20LOCAL\x20—\x20visit\x20records\x20never\x20leave\x20the\x20device;\x20display\x20names\x20are\x20never\x20stored\x20(resolved\x20live\x20at\x20render).','Omit\x20every\x20operation\x20field\x20to\x20list\x20history\x20(newest\x20first,\x20auto-pruned\x20to\x20last\x2030\x20days\x20/\x20300\x20entries).','detail\x20visits\x20keep\x20the\x20object\x20type\x20tag;\x20each\x20entry\x20stores\x20the\x20stable\x20object\x20key\x20+\x20canonical\x200x\x20address\x20+\x20network\x20+\x20timestamp.']},{'name':'wip_file','summary':'Witness\x20Immutable\x20Promise\x20file\x20operations\x20—\x20generate,\x20verify,\x20sign,\x20convert.','actions':['generate','verify','sign','wip2html'],'notes':['WIP\x20hash\x20must\x20be\x20non-empty\x20—\x20compute\x20actual\x20hash\x20before\x20calling.']},{'name':'messenger_operation','summary':'Encrypted\x20messenger\x20—\x20watch/send\x20messages,\x20WTS,\x20friendslist,\x20blacklist,\x20guardlist.','actions':['watch_conversations','send_message','send_file','send_required_info','watch_messages','save_attachment','generate_wts','verify_wts','sign_wts','wts2html','proof_message','blacklist','friendslist','guardlist','settings','mark_messages_as_viewed','mark_conversation_as_viewed','pull_messages'],'notes':['Requires\x20messenger-enabled\x20account.','30s\x20timeout\x20—\x20network\x20operations.','Attachment\x20messages\x20return\x20byte-free\x20descriptors\x20(msg.attachment;\x20plaintext\x20is\x20undefined).\x20Use\x20save_attachment\x20{messageId}\x20to\x20persist\x20the\x20file\x20(e.g.\x20before\x20verify_wts);\x20bytes\x20are\x20never\x20embedded\x20in\x20message\x20outputs.','send_required_info\x20assembles\x20selected\x20LocalInfo\x20fields\x20into\x20one\x20E2E\x20message\x20(\x27field:\x20value\x27\x20lines)\x20—\x20the\x20dedicated\x20path\x20for\x20delivering\x20customer_required\x20info.','pull_messages\x20supports\x20allAccounts/accounts\x20for\x20one\x20bounded-concurrency\x20fan-out\x20across\x20accounts.']},{'name':'guard2file','summary':'Export\x20a\x20Guard\x20object\x27s\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'machineNode2file','summary':'Export\x20a\x20Machine\x20object\x27s\x20node\x20definition\x20to\x20local\x20JSON/Markdown\x20for\x20editing.','notes':['Read-only\x20—\x20use\x20query_toolkit\x20for\x20on-chain\x20queries.']},{'name':'query_toolkit','summary':'Query\x20toolkit\x20covering\x20local\x20device\x20data,\x20on-chain\x20blockchain\x20data,\x20and\x20one-call\x20business-intelligence\x20panoramas/review\x20packs.','actions':['local_mark_list','account_list','local_info_list','local_names','token_list','account_balance','onchain_personal_profile','onchain_objects','onchain_received','onchain_transaction','onchain_block','onchain_object_history','onchain_address_activity','address_profile','address_profiles','migration_preflight','token_value_convert','onchain_last_updated','service_panorama','machine_panorama','object_panorama','review_pack','assemble_context','reverse_map','participation_radar','onchain_topology'],'notes':['Read-only\x20—\x20safe\x20to\x20call\x20without\x20confirmation.','local_names\x20resolves\x20a\x20batch\x20of\x20addresses\x20to\x20account/local_mark\x20names\x20(canonical\x20name\x20source\x20for\x20display);\x20address_profile(s)\x20is\x20the\x20one-stop\x20\x27who/what\x20is\x20this\x20address\x27\x20query\x20(classification\x20+\x20reputation\x20+\x20memberships\x20+\x20reverse\x20bindings;\x20batch\x20up\x20to\x2050);\x20migration_preflight\x20detects\x20existing\x20builds\x20on\x20another\x20network\x20and\x20returns\x20the\x20testnet→mainnet\x20migration\x20checklist.','BI\x20query\x20types\x20(one-call\x20panoramas):\x20service_panorama\x20(full\x20Service\x20context:\x20workflow\x20graph\x20+\x20guards\x20+\x20trust\x20+\x20supply\x20chain\x20+\x20BusinessReport\x20+\x20recent\x20orders),\x20machine_panorama\x20(head\x20+\x20fields\x20+\x20workflow\x20graph\x20+\x20Progress\x20list),\x20object_panorama\x20(Progress/Demand/Order/Arb/Repository\x20detail\x20pages),\x20review_pack\x20(typed\x20ReviewPack\x20for\x20the\x20client\x27s\x20ReviewPackRenderer),\x20assemble_context\x20(semantic\x20context\x20from\x20on-chain\x20objects),\x20reverse_map\x20(deterministic\x20L4→L1\x20business\x20report\x20—\x20merchant\x20profile\x20/\x20user\x20risk\x20/\x20game\x20theory),\x20participation_radar\x20(in-flight\x20order\x20participation\x20analysis\x20for\x20ONE\x20account).','onchain_topology\x20=\x20graph\x20evaluation\x20of\x20ONE\x20object\x20(trust\x20+\x20risk\x20+\x20completeness\x20+\x20coverage\x20+\x20unverified\x20over\x20its\x20workflow/guard/fund\x20topology)\x20—\x20the\x20unified\x20read-side\x20trust/risk\x20surface;\x20use\x20when\x20the\x20user\x20asks\x20\x27is\x20this\x20service\x20trustworthy?\x27\x20or\x20\x27should\x20I\x20buy?\x27.']},{'name':'onchain_table_data','summary':'Dynamic\x20table\x20data\x20queries\x20—\x20paginated\x20table\x20queries\x20and\x20specific\x20table\x20item\x20lookups.','actions':['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_affiliations_of_object','onchain_table_item_generic'],'notes':['Read-only\x20—\x20safe\x20for\x20exploration.','object_linker\x20core\x20(0xaae)\x20=\x20default\x20reverse\x20lookup\x20(bounded\x20core\x20objects);\x20object_linker\x20tx\x20(0xaaf)\x20=\x20operational\x20reverse\x20lookup\x20(orders/progress,\x20lossy\x20FIFO).','entity_order\x20(0xaa8)\x20=\x20global\x20entity->orders\x20reverse\x20index;\x20onchain_orders_of_user\x20resolves\x20each\x20order\x20to\x20its\x20full\x20on-chain\x20Order\x20object\x20with\x20role\x20attributes\x20(is_owner/is_agent).']},{'name':'onchain_events','summary':'Watch\x20on-chain\x20events\x20by\x20type\x20—\x20arbitration,\x20order,\x20progress,\x20demand,\x20entity.','notes':['Read-only\x20—\x20use\x20cursor\x20for\x20pagination.']},{'name':'wowok_buildin_info','summary':'Protocol\x20info\x20—\x20constants,\x20built-in\x20permissions,\x20common\x20mistakes,\x20guard\x20instructions,\x20network,\x20value\x20types,\x20bridge\x20tokens.','actions':['constants','built-in\x20permissions','common\x20mistakes','guard\x20instructions','current\x20network','value\x20types','mainnet\x20bridge\x20tokens'],'notes':['Read-only\x20—\x20authoritative\x20protocol\x20reference.','Use\x20\x27common\x20mistakes\x27\x20before\x20submitting\x20an\x20operation\x20to\x20learn\x20known\x20field-name/unit/workflow\x20pitfalls.']},{'name':'schema_query','summary':'Look\x20up\x20JSON\x20Schemas\x20for\x20MCP\x20tools\x20and\x20on-chain\x20operations\x20—\x20the\x20authoritative\x20reference.\x20Also\x20serves\x20sunk\x20knowledge:\x20tool\x20reference,\x20Guard\x20design\x20patterns,\x20safety\x20rules.','actions':['list','get','get_output','get_field','search','list_operations','get_guard_templates','get_tool_reference','get_guard_design_patterns','get_safety_rules'],'notes':['Always\x20check\x20schema\x20before\x20calling\x20an\x20unfamiliar\x20tool.','get_field\x20takes\x20a\x20dot-path\x20(field_path)\x20for\x20single-field\x20lookup.','get_tool_reference/get_guard_design_patterns/get_safety_rules\x20expose\x20the\x20knowledge\x20sunk\x20from\x20the\x20wowok-tools/guard/safety\x20skills\x20—\x20no\x20skills\x20installation\x20required.']},{'name':'bridge_operation','summary':'Cross-chain\x20bridge\x20between\x20WOW\x20and\x20EVM\x20(Ethereum\x20mainnet).\x20Mainnet\x20only.','actions':['cross_chain_wow_to_evm','cross_chain_evm_to_wow','withdraw','query_active_evm_account','query_supported_evm_chains','query_supported_tokens','query_transfer_list','query_transfer_status','manage_evm_rpc'],'notes':['Only\x20WOW\x20mainnet\x20provides\x20cross-chain\x20functionality.']},{'name':'config_operation','summary':'Runtime\x20service\x20toggles\x20—\x20enable/disable\x20Phase\x202\x20services\x20without\x20restart.','actions':['list','toggle','enable','disable','reset','info'],'notes':['GLM5:\x20harness\x20is\x20default\x20ON\x20with\x20tiered\x20enforcement\x20(off/lightweight/full).']},{'name':'evaluation_operation','summary':'Pluggable\x20business\x20evaluations\x20—\x20match\x20/\x20compose\x20/\x20game\x20(node\x20+\x20path)\x20/\x20evidence\x20review\x20/\x20discovery\x20/\x20market\x20/\x20arbitration\x20score\x20with\x20user\x20injection.','actions':['demand_match','service_match','capability_gap','compose_service','node_game','arb_game','path_reasoning','evidence_review','discover_services','discover_demands','market_metrics','market_operations','anti_cheat','match_discover','arbitration_score','account_events'],'notes':['Read-only;\x20the\x20role\x20decides\x20and\x20acts\x20via\x20onchain_operations.','path_reasoning\x20=\x20path-level\x20game\x20(full-route\x20enumeration\x20+\x20ranking);\x20node_game\x20=\x20single-node\x20best\x20move.','evidence_review\x20=\x20deterministic\x20off-chain\x20evidence\x20closure\x20gate\x20(auto_pass/auto_reject/manual_review).','discover_services\x20=\x20active\x20supply\x20discovery\x20(GraphQL\x20transport\x20required):\x20enumerate\x20all\x20shared\x20Services,\x20location-gate\x20by\x20sensitivity\x20(strict/near/logistics),\x20ranked\x20+\x20consent-gated\x20scope\x20expansion.\x20Passive\x20side\x20=\x20post\x20a\x20Demand\x20(DemandPresenter).','match_discover\x20=\x20one-shot\x20intent→service\x20orchestration\x20(enumerate\x20+\x20location\x20gate\x20+\x206-dimension\x20scoring);\x20discover_demands\x20=\x20supplier-side\x20demand\x20enumeration;\x20market_metrics/market_operations\x20=\x20market\x20measurement\x20(GraphQL\x20required).','arbitration_score\x20=\x20dual-perspective\x20arbitration\x20trust\x20(user-trust\x20+\x20merchant-fairness,\x20combined\x200-100);\x20anti_cheat\x20=\x20fake-review/wash-order\x20detection;\x20account_events\x20=\x20account\x20attention\x20feed\x20(read-only).']},{'name':'watch_operation','summary':'Identity-centric\x20on-chain\x20console\x20—\x20resolve\x20who\x20the\x20account\x20is\x20against\x20an\x20object,\x20expand\x20its\x20relations,\x20and\x20enumerate\x20actionable\x20operations.','actions':['focus','expand','actions'],'notes':['Read-only;\x20distinct\x20from\x20query_toolkit\x20/\x20onchain_table_data\x20(pure\x20data,\x20no\x20identity).','focus\x20=\x20identity\x20resolution\x20(manifest\x20on-chain\x20role\x20⊕\x20persona)\x20+\x20base\x20data;\x20neutral\x20→\x20objective\x20narration,\x20operative\x20role\x20→\x20game\x20reasoning.','expand\x20=\x20direct\x20relations\x20+\x20Service\x20transparent\x20sub-order\x20purchasing\x20graph\x20(frozen\x20forward\x20guards\x20→\x20purchased\x20sub-services\x20+\x20proofs).','actions\x20=\x20actionable\x20operations\x20with\x20executability\x20judgment\x20(order-holder\x20/\x20permission-index\x20/\x20named-operator\x20paths).']},{'name':'persona_operation','summary':'User\x20identity\x20setting\x20(persona)\x20—\x20preferences,\x20strategy,\x20rules,\x20spec;\x20long-term\x20+\x20current\x20layers\x20+\x20strategy→lever\x20mapping\x20+\x20region\x20hint.','actions':['get','list','set','analyze','apply','sync','remove','strategy','region_hint','distill'],'notes':['Read/write\x20local\x20state;\x20account\x20persona\x20overrides\x20system;\x20current\x20overrides\x20long-term.','strategy\x20resolves\x20merchant\x20strategy\x20statements\x20into\x20deterministic\x20infrastructure\x20levers\x20(discount/reward/buy_guard/machine_design).','region_hint\x20reads\x20the\x20local\x20delivery\x20address\x20as\x20a\x20matching\x20hint;\x20`propose`\x20returns\x20a\x20consent-gated\x20save\x20proposal\x20(never\x20auto-writes).','distill\x20turns\x20one\x20goal\x27s\x20memory\x20(outcome,\x20process\x20problems/feedback,\x20objects)\x20into\x20a\x20CURRENT-layer\x20proposal\x20—\x20never\x20auto-writes;\x20persist\x20via\x20set/apply\x20after\x20user\x20confirmation.\x20Industry\x20pack.json\x20files\x20are\x20read-only\x20knowledge\x20and\x20never\x20receive\x20user\x20data.']},{'name':'employee_operation','summary':'Merchant\x20employee\x20organizational\x20profile\x20(LOCAL)\x20+\x20reaction\x20KPI\x20+\x20liability\x20resolution\x20+\x20incentive\x20suggestion.','actions':['set','get','remove','assess_kpi','resolve_liability','suggest_incentive'],'notes':['LOCAL\x20ONLY\x20—\x20on-chain\x20authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).','assess_kpi:\x20node\x20reaction\x20speed\x20vs\x20budget\x20(explicit\x20>\x20stored\x20profile\x20>\x2048h\x20default).\x20Timestamps\x20explicit\x20OR\x20auto-derived\x20from\x20the\x20progress\x20object\x27s\x20monitored\x20ProgressEvents\x20via\x20`progress`;\x20explicit\x20values\x20override\x20derived.','resolve_liability:\x20internal\x20cost\x20split\x20(merchant/employee,\x20hybrid\x20threshold);\x20outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s;\x20order\x20user\x20must\x20be\x20compensated\x20before\x20the\x20workflow\x20resumes.','suggest_incentive:\x20KPIs\x20+\x20WIP\x20acceptance\x20+\x20liability\x20→\x20Reward\x20suggestion\x20(reward_grant/compensation_offset/correction_notice/none).\x20Suggestion\x20ONLY\x20—\x20merchant\x20confirms\x20and\x20executes\x20the\x20on-chain\x20ops\x20separately.']},{'name':'keeper_operation','summary':'Who-benefits-who-pushes\x20keeper:\x20scans\x20the\x20monitor\x20scope\x20for\x20actionable\x20state\x20(unclaimed\x20payments,\x20advanceable\x20workflow\x20nodes),\x20routes\x20tasks\x20to\x20beneficiaries;\x20manual\x20dismiss/execute\x20+\x20standing\x20auto-execute\x20rules.','actions':['tasks','dismiss','execute','rules','rule_set','rule_remove','config','config_set','scan','status'],'notes':['The\x20chain\x20has\x20NO\x20time-triggered\x20execution\x20—\x20the\x20keeper\x20scans\x20on\x20the\x20monitor\x20loop\x20cadence\x20and\x20surfaces\x20tasks\x20to\x20their\x20beneficiary.','execute\x20runs\x20the\x20on-chain\x20op\x20for\x20one\x20task\x20(user\x20decision);\x20rule_set\x20authorizes\x20auto-execution\x20per\x20detector\x20kind\x20(bounded\x20by\x20config\x20budget/cooldown).','Detectors\x20v1:\x20payment_unclaimed\x20(funds\x20sitting\x20claimable),\x20progress_actionable\x20(a\x20workflow\x20node\x20the\x20beneficiary\x20can\x20advance).']},{'name':'intent_radar','summary':'User\x20business\x20intent\x20×\x20chain\x20event\x20matching\x20—\x20persist\x20intents,\x20score\x20events\x20against\x20them.','actions':['save','list','remove','match'],'notes':['Read-only\x20w.r.t.\x20chain;\x20industry/keywords\x20resolved\x20once\x20at\x20save;\x20events\x20supplied\x20or\x20auto-pulled.']},{'name':'goal_operation','summary':'GoalEngine\x20(K3\x2024)\x20—\x20record\x20a\x20user\x20goal\x20and\x20drive\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20(RECOGNIZE→…→COMPLETE)\x20with\x20monitor\x20auto-binding\x20and\x20plan-approval\x20confirm-gate\x20downgrade;\x20also\x20hosts\x20the\x20C1-C4\x20planning\x20pipeline\x20+\x20merchant\x20onboarding\x20wizard.','actions':['create','list','get','approve','advance','pause','complete','abandon','delete','analyze_intent','aggregate_risks','trace_substeps','merchant_guide'],'common_params':{'id':'Goal\x20id\x20(goal_…)\x20—\x20required\x20for\x20get/approve/advance/pause/complete/abandon/delete.','intent_text':'create:\x20raw\x20user\x20intent;\x20goal_type\x20auto-classified\x20(override\x20with\x20goal_type).','account':'create:\x20bind\x20a\x20local\x20account\x20(preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).','stage':'advance:\x20forward-only\x20target\x20stage;\x20\x27paused\x27\x20holds\x20from\x20anywhere.','objects':'advance:\x20ACT-station\x20objects\x20[{type,\x20object}]\x20(deduped).','force':'complete:\x20skip\x20on-chain\x20completion\x20verification\x20(audited\x20as\x20outcome.forced).'},'follow_ups':['monitor_events\x20(goal\x20progress\x20surfaces\x20in\x20the\x20todo\x20stream)','onchain_operations\x20(execute\x20plan\x20steps\x20with\x20env.plan_approval)'],'notes':['Near-duplicate\x20create\x20ADOPTS\x20the\x20active\x20same-type\x20same-account\x20goal\x20(intent\x20Jaccard\x20≥\x200.6)\x20instead\x20of\x20forking.','approve\x20registers\x20a\x20plan\x20approval:\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>\x20auto-pass\x20fail-open\x20ConfirmGate\x20levels\x20(standard/none);\x20fail-closed\x20levels\x20(irreversible/publish/amount)\x20always\x20still\x20ask.','Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20(reason=\x27goal\x27,\x20goal_id-stamped)\x20for\x20the\x20goal\x27s\x20objects;\x20demand\x20goals\x20also\x20open\x20a\x20radar\x20intent.\x20complete/abandon\x20tear\x20down\x20ONLY\x20this\x20goal\x27s\x20bindings.','complete\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20(read-only);\x20force=true\x20bypasses\x20and\x20is\x20audited.','delete\x20removes\x20a\x20terminal\x20goal\x20entirely\x20(record\x20+\x20TaskProcess\x20dir);\x20force=true\x20extends\x20it\x20to\x20non-terminal\x20goals\x20(monitor\x20teardown\x20first).','C1-C4\x20planning\x20pipeline\x20(GLM5-31\x20§V3/V4):\x20analyze_intent\x20(intent\x20→\x20objects\x20+\x20puzzle\x20snapshots)\x20→\x20aggregate_risks\x20(puzzles\x20OR\x20intent\x20→\x20calibrated\x20risks\x20+\x20RISK_BLOCKED\x20status)\x20→\x20trace_substeps\x20(substep\x20records\x20→\x20DAG\x20coherence\x20+\x20D-10\x20verdict);\x20merchant_guide\x20=\x2010-step\x20onboarding\x20wizard\x20(stateless\x20guide_state,\x20never\x20executes\x20on-chain\x20—\x20materialize\x20via\x20onchain_operations).\x20All\x20four\x20are\x20pure\x20transformations.']},{'name':'monitor_events','summary':'Persistent\x20monitor\x20event\x20store\x20(shared\x20with\x20the\x20client\x20Monitor\x20page)\x20—\x20paginated\x20events\x20with\x20read\x20flags;\x20mark\x20read/unread.','actions':['query','mark_read','mark_all_read'],'notes':['Events\x20captured\x20by\x20the\x20resident\x20MonitorLoop\x20(client\x20sidecar,\x20or\x20stdio\x20MCP\x20server\x20with\x20MONITOR_LOOP=1)\x20across\x209\x20modules,\x20stored\x20APPEND-ONLY\x20in\x20SQLite\x20(survives\x20restarts)\x20with\x20per-event\x20read\x20flags.','query\x20=\x20paginated\x20newest-first\x20with\x20module/event_type/since/until\x20filters\x20+\x20module_counts/unread_by_module/total_unread;\x20relevant_only\x20(default\x20true)\x20restricts\x20to\x20scope-closure/focus/filter\x20hits\x20(de-noised\x20todo\x20stream);\x20with_reason\x20attaches\x20the\x20relevance\x20annotation\x20+\x20delivered\x20flag;\x20mark_read\x20=\x20idempotent\x20per-event\x20(\x27<eventSeq>:<txDigest>\x27);\x20mark_all_read\x20=\x20optionally\x20module-scoped.','Cross-process:\x20read\x20state\x20is\x20SHARED\x20with\x20the\x20client\x20app\x20(same\x20SQLite\x20store)\x20—\x20marking\x20read\x20here\x20clears\x20the\x20client\x20Monitor\x20unread\x20badge\x20and\x20vice\x20versa.']},{'name':'monitor_subscription','summary':'Monitor\x20subscription\x20config\x20—\x20scope-closure\x20rules,\x20focus\x20objects,\x20per-type\x20todo\x20switches,\x20conditional\x20filters;\x20scope\x20preview\x20+\x20filter\x20dry-run.','actions':['get','save','reset','scope_preview','test_filter'],'notes':['Single\x20configuration\x20entry\x20point\x20for\x20monitor\x20v4\x20(client\x20settings\x20panel\x20and\x20agents\x20share\x20it);\x20save/reset\x20merge\x20+\x20clamp\x20loop\x20params,\x20then\x20trigger\x20an\x20immediate\x20scope\x20re-resolve\x20and\x20schedule\x20a\x20backfill\x20when\x20the\x20closure\x20changed.','scope_preview\x20lists\x20the\x20resolved\x20closure\x20grouped\x20by\x20layer\x20(accounts/permissions/managed_objects/services/orders/order_children/focus)\x20with\x20pagination\x20—\x20inspect\x20before\x20tuning\x20rule\x20switches.','test_filter\x20dry-runs\x20a\x20filter\x20draft\x20over\x20the\x20most\x20recent\x20captured\x20events\x20(default\x20200,\x20max\x201000)\x20returning\x20matched/scanned\x20counts\x20+\x20up\x20to\x205\x20samples\x20—\x20preview\x20noise\x20BEFORE\x20saving.','Capture\x20is\x20unaffected\x20by\x20delivery\x20switches\x20EXCEPT\x20NewPaymentEvent\x20(captured\x20only\x20when\x20switched\x20ON).']},{'name':'industry_pack_operation','summary':'Industry\x20knowledge\x20pack\x20lifecycle\x20—\x20scaffold\x20(merged\x20v2\x20template),\x20scan/register,\x20layer\x20get,\x20diff,\x20reset-to-template,\x20plus\x20industry-dir\x20file\x20operations\x20and\x20the\x20industry\x20mode\x20registry\x20(GLM6/92\x20§E).','actions':['scaffold','list','scan','resolve','list_files','read_file','write_file','get','diff','reset','delete_file','create_file','create_dir','copy','move','rename','recommend_industry','list_modes','derive_user_mode','evolve_user_mode','register_user_mode','unregister_user_mode','register_custom_metric','register_custom_constraint','list_metrics_constraints'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20+\x20in-memory\x20registry;\x20never\x20mutates\x20chain\x20state.','Merged\x20v2\x20layout:\x20pack.json\x20(annotated\x20with\x20_schema/_doc\x20comment\x20fields\x20+\x20personae)\x20+\x20playbook.md;\x20legacy\x20split-file\x20layouts\x20still\x20read\x20for\x20backward\x20compatibility.','reset\x20restores\x20a\x20file\x20or\x20entire\x20pack\x20folder\x20to\x20its\x20pristine\x20annotated\x20template\x20—\x20user\x20edits\x20beyond\x20the\x20target\x20are\x20preserved.','Mode\x20registry\x20(GLM6/92\x20§E):\x20recommend_industry\x20(top-3\x20similar\x20industries\x20+\x20verified\x20reference\x20examples),\x20list_modes,\x20derive_user_mode\x20(customize\x20a\x20builtin),\x20evolve_user_mode,\x20register_user_mode\x20(fully\x20custom;\x20R-M1-11\x20enforced\x20on\x20machine_shape),\x20unregister_user_mode,\x20register_custom_metric\x20/\x20register_custom_constraint\x20(extend\x20evaluation\x20registries),\x20list_metrics_constraints.']},{'name':'benchmark_migration_operation','summary':'MD\x20industry-archetype\x20templates\x20(hot-loaded\x20from\x20.wowok/industry/<industry>/templates/,\x2012\x20built-ins:\x206\x20industries\x20x\x20leader\x20+\x20challenger)\x20+\x20pre-deploy\x20risk\x20scan\x20+\x20one-click\x20competitor\x20migration\x20(import\x20→\x20review\x20→\x20apply\x20via\x20the\x20merchant-guide\x20pipeline).','actions':['template_list','template_get','template_generate','template_scan','migration_import','migration_review','migration_apply'],'common_params':{'template_id':'Template\x20id\x20\x27<industry>/<variant>\x27\x20(required\x20for\x20template_get\x20/\x20template_generate\x20/\x20template_scan\x20/\x20migration_apply),\x20e.g.\x20\x27retail/scale-marketplace\x27.','industry':'Industry\x20filter\x20for\x20template_list;\x20industry\x20hint\x20for\x20migration_import.','description':'Business/competitor\x20description\x20(required\x20for\x20migration_import;\x20optional\x20intent\x20text\x20for\x20template_generate).','url':'Competitor\x20store/profile\x20URL\x20for\x20migration_import\x20(recorded\x20as\x20provenance\x20only).','fee_overrides':'Template\x20fee-parameter\x20overrides\x20for\x20template_generate.','log':'A\x20prior\x20MigrationLog\x20(required\x20for\x20migration_review).','network':'testnet\x20|\x20mainnet\x20for\x20migration_import\x20/\x20migration_apply\x20(default\x20testnet).'},'notes':['Deterministic\x20knowledge\x20lookups\x20+\x20planning;\x20never\x20mutates\x20chain\x20state\x20—\x20template_generate\x20/\x20migration_apply\x20emit\x20creation\x20plans\x20only\x20(materialize\x20via\x20onchain_operations).','Templates\x20are\x20zod-validated\x20MD\x20files\x20hot-loaded\x20from\x20.wowok/industry/<industry>/templates/\x20(the\x20client\x20industry-drawer\x20tree;\x20root\x20env-overridable\x20via\x20WOWOK_TEMPLATES_DIR);\x20the\x2012\x20built-in\x20archetypes\x20are\x20seeded\x20idempotently\x20and\x20user\x20edits\x20are\x20never\x20overwritten.','template_scan\x20runs\x20the\x20pre-deploy\x20risk\x20scan\x20(synthetic\x20draft\x20topology\x20through\x20the\x20same\x20rule\x20surface\x20as\x20on-chain\x20analyze\x20+\x20static\x20R1-R10\x20checks);\x20CRITICAL\x20findings\x20block\x20template_generate\x20/\x20migration_apply.','migration_import\x20returns\x20a\x20MigrationLog\x20with\x20mapped\x20/\x20unmapped\x20/\x20manual_review\x20entries,\x20WoWok\x20advantages,\x20customizable\x20business-module\x20ids,\x20a\x20merchant-vs-supplier\x20role\x20assessment\x20and\x20a\x20dry-run\x20risk\x20check.','migration_review\x20surfaces\x20counts\x20+\x20risk\x20status\x20for\x20user\x20confirmation\x20before\x20migration_apply.','mainnet\x20requires\x20explicit\x20user\x20confirmation;\x20the\x20default\x20network\x20is\x20testnet.']},{'name':'strategy_review_operation','summary':'Posture-weighted\x20operating\x20scorecard\x20for\x20one\x20(account,\x20industry):\x20collect\x20evidence\x20into\x20append-only\x20local\x20snapshots,\x20assemble\x20periodic\x20reviews\x20with\x20deterministic\x20pricing/posture\x20advice\x20and\x20current-layer-only\x20persona\x20proposals\x20(never\x20auto-applied).','actions':['collect','review','list_snapshots'],'notes':['Chain\x20reads\x20+\x20local\x20SQLite\x20KV\x20snapshots\x20only;\x20never\x20mutates\x20chain\x20state\x20and\x20never\x20writes\x20the\x20persona.','collect\x20gathers\x2013\x20catalog\x20metrics\x20from\x206\x20evidence\x20sources\x20(journey\x20funnel/order\x20flow/market\x20metrics/discovery\x20competitor\x20count/arbitration\x20trust/account\x20attention);\x20source\x20failures\x20degrade\x20metrics\x20to\x20unavailable/error,\x20never\x20zero-filled;\x20snapshot\x20append\x20failure\x20is\x20fail-soft\x20(stored:false).','review\x20does\x20NOT\x20persist:\x20fresh\x20collection\x20+\x20delta\x20against\x20latest\x20stored\x20snapshot;\x200–100\x20score\x20renormalized\x20over\x20available\x20anchored\x20metrics\x20under\x20volume/balanced/margin\x20weights;\x20cadence\x20from\x20the\x20industry\x20catalog\x20(weekly/two-week/monthly);\x20≤2\x20proposals,\x20each\x20target_layer=\x27current\x27\x20with\x20apply_via\x20persona_operation\x20apply\x20—\x20the\x20user\x20must\x20apply\x20explicitly.','Posture\x20resolution:\x20explicit\x20posture\x20arg\x20→\x20merchant\x20posture\x20in\x20the\x20effective\x20persona\x20→\x20balanced.']},{'name':'workspace_operation','summary':'Local\x20workspace\x20directory\x20(`.wowok/workspace`)\x20—\x20generated\x20review\x20files\x20(machine/guard/wts/wip\x20JSON)\x20and\x20user\x20documents:\x20list/read/write\x20+\x20file\x20operations.','actions':['resolve','list','read','write','delete','create_file','create_dir','copy','move','rename'],'notes':['LOCAL\x20ONLY\x20—\x20filesystem\x20operations\x20confined\x20to\x20the\x20workspace\x20root;\x20never\x20mutates\x20chain\x20state.','read\x20is\x20the\x20supported\x20way\x20to\x20load\x20a\x20generated\x20JSON\x20as\x20AI\x20context\x20before\x20editing/submitting.']},{'name':'workflow_operation','summary':'Local-account\x20workflow\x20view\x20—\x20list\x20active\x20Progress\x20that\x20at\x20least\x20one\x20local\x20account\x20can\x20advance\x20(permission\x20+\x20guard\x20+\x20executable\x20accounts),\x20advance/hold/unhold\x20a\x20forward,\x20and\x20view\x20a\x20progress\x27s\x20on-chain\x20operation\x20history.','actions':['list','operate','history'],'notes':['list:\x20permission-aware\x20—\x20a\x20forward\x20is\x20executable\x20when\x20(a)\x20namedOperator=\x27\x27\x20and\x20account\x20is\x20order\x20holder,\x20(b)\x20namedOperator=name\x20and\x20account\x20is\x20in\x20progress.namedOperator[name],\x20or\x20(c)\x20permissionIndex\x20set\x20and\x20account\x20is\x20in\x20permission.admin/table.','operate:\x20delegates\x20to\x20the\x20on-chain\x20progress\x20operation\x20(guard-aware);\x20op\x20∈\x20next/hold/unhold/adminUnhold.','history:\x20incrementally\x20syncs\x20a\x20progress\x27s\x20ON-CHAIN\x20Progress.history\x20(append-only\x20u64\x20index)\x20into\x20the\x20local\x20SQLite\x20mirror\x20via\x20a\x20per-progress\x20cursor\x20(only\x20new\x20records\x20pulled),\x20returns\x20the\x20migration\x20timeline\x20newest-first\x20with\x20each\x20migration\x27s\x20session\x20snapshot\x20(forwards\x20/\x20operator\x20/\x20weight\x20/\x20time);\x20runs\x2090-day\x20retention\x20cleanup\x20by\x20default.']},{'name':'permission_operation','summary':'Local-account\x20Permission\x20overview\x20—\x20list\x20Permissions\x20related\x20to\x20local\x20accounts\x20(via\x20entity_permission\x20index)\x20with\x20owner/admin/entity\x20breakdown\x20+\x20related\x20objects\x20via\x20object-linker\x20indexes.','actions':['list'],'notes':['Read-only;\x20reverse-looks-up\x20local\x20accounts\x20via\x20entity_permission\x20@0xaad,\x20then\x20merges/dedups\x20permissions.','Related\x20objects\x20resolved\x20via\x20object-linker\x20reverse\x20indexes\x20(0xaae\x20core\x20/\x200xaaf\x20tx)\x20binding\x20edges,\x20grouped\x20by\x20type\x20via\x20first-byte\x20address\x20tag.','Latest\x20update\x20time\x20derived\x20from\x20the\x20Permission\x27s\x20previousTransaction.']},{'name':'ask_user','summary':'Structured\x20user\x20elicitation\x20—\x20ask\x20the\x20user\x20to\x20choose\x20between\x202-8\x20concrete\x20options\x20and\x20receive\x20a\x20validated\x20structured\x20answer\x20(MCP\x202.0\x20elicitation\x20/\x20desktop\x20option\x20card).','common_params':{'question':'The\x20single\x20decision\x20needed\x20from\x20the\x20user\x20(1-1000\x20chars).','options':'2-8\x20self-contained\x20{id,label,description?}\x20choices.','recommended_id':'id\x20of\x20the\x20professionally\x20recommended\x20option\x20(optional).','multi_select':'true\x20when\x20options\x20are\x20combinable\x20(boolean\x20toggle\x20per\x20option).','allow_freeform':'true\x20to\x20permit\x20an\x20additional\x20free-text\x20answer.','context':'Optional\x20short\x20explanation\x20of\x20why\x20the\x20decision\x20is\x20needed.'},'notes':['Use\x20when\x20a\x20business\x20decision\x20belongs\x20to\x20the\x20user\x20and\x20continuing\x20requires\x20it;\x20never\x20guess\x20or\x20silently\x20default\x20an\x20unanswered\x20choice.','Desktop\x20clients\x20render\x20an\x20option\x20card;\x20MCP\x202.0\x20transports\x20fulfil\x20via\x20elicitation/create;\x20unsupported\x20clients\x20should\x20fall\x20back\x20to\x20a\x20numbered\x20prose\x20question.','action\x20decline/cancel\x20means\x20STOP\x20and\x20ask\x20how\x20to\x20proceed\x20in\x20plain\x20text\x20—\x20do\x20not\x20execute\x20a\x20default\x20path.','Not\x20a\x20safety\x20confirmation\x20—\x20irreversible/publish/amount\x20gates\x20remain\x20handled\x20by\x20confirm_gate.']}];export function getToolReference(a){return TOOLS_REFERENCE['find'](b=>b['name']===a);}export function searchToolReference(a){const b=a['toLowerCase']();return TOOLS_REFERENCE['filter'](c=>{if(c['name']['toLowerCase']()['includes'](b))return!![];if(c['summary']['toLowerCase']()['includes'](b))return!![];if(c['actions']?.['some'](d=>d['toLowerCase']()['includes'](b)))return!![];return![];});}export function getToolSequence(a){const b=getToolReference(a);if(!b)return undefined;return{'prerequisites':b['prerequisites']??[],'tool':b['name'],'follow_ups':b['follow_ups']??[]};}
|
|
@@ -39,4 +39,4 @@ export declare function getActiveBuiltinPermissions(): BuiltinTreasuryPermission
|
|
|
39
39
|
export declare function getReservedBuiltinPermissions(): BuiltinTreasuryPermissionEntry[];
|
|
40
40
|
export declare function inferSceneFromIntent(intent: string): TreasuryScene | undefined;
|
|
41
41
|
export declare function getTreasuryScenesCount(): number;
|
|
42
|
-
export declare function
|
|
42
|
+
export declare function getGovernedOperationsForPermissionIndex(index: number): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const TREASURY_PERMISSIONS=[{'index':0xfa,'name':'TREASURY_NEW','description':'Create\x20new\x20Treasury','governed_operation':'treasury::new','active':!![]},{'index':0xfb,'name':'TREASURY_DESCRIPTION','description':'Modify\x20Treasury\x20description','governed_operation':'treasury::description_set','active':!![]},{'index':0xfc,'name':'TREASURY_DEPOSIT','description':'Internal\x20deposit\x20(Permission\x20path)','governed_operation':'treasury::deposit','active':!![]},{'index':0xfd,'name':'TREASURY_RECEIVE','description':'Receive\x20CoinWrapper\x20into\x20balance','governed_operation':'treasury::receive','active':!![]},{'index':0xfe,'name':'TREASURY_WITHDRAW','description':'Internal\x20withdraw\x20(Permission\x20path,\x20fixed\x20amount)','governed_operation':'treasury::withdraw','active':!![]},{'index':0xff,'name':'TREASURY_EXTERNAL_DEPOSIT_GUARD','description':'Manage\x20external\x20deposit\x20Guard\x20list\x20(add/remove/clear)','governed_operation':'treasury::external_deposit_guard_add/remove/clear','active':!![]},{'index':0x100,'name':'TREASURY_EXTERNAL_WITHDRAW_GUARD','description':'Manage\x20external\x20withdraw\x20Guard\x20list\x20(add/remove/clear)','governed_operation':'treasury::external_withdraw_guard_add/remove/clear','active':!![]},{'index':0x101,'name':'TREASURY_OWNER_RECEIVE','description':'Owner\x20receive\x20(unwrap\x20received\x20objects,\x20send\x20to\x20Permission\x20owner)','governed_operation':'treasury::owner_receive\x20/\x20owner_receive_object','active':!![]},{'index':0x102,'name':'TREASURY_UM','description':'Set\x20UM\x20(User\x20Manager\x20=\x20Contact\x20object)','governed_operation':'treasury::um_set\x20/\x20um_none','active':!![]},{'index':-0x1,'name':'TREASURY_EXTERNAL_DEPOSIT_RESERVED','description':'RESERVED\x20—\x20external_deposit\x20uses\x20Guard\x20+\x20Passport,\x20does\x20NOT\x20call\x20permission::check','governed_operation':'treasury::external_deposit\x20(Guard\x20path)','active':![]},{'index':-0x1,'name':'TREASURY_EXTERNAL_WITHDRAW_RESERVED','description':'RESERVED\x20—\x20external_withdraw\x20uses\x20Guard\x20+\x20Passport,\x20does\x20NOT\x20call\x20permission::check','governed_operation':'treasury::external_withdraw\x20(Guard\x20path)','active':![]}];export const TREASURY_SCENES=[{'id':'treasury_fund_collection','name':'Team\x20fund\x20collection\x20(internal\x20deposit\x20+\x20receive)','coin_type_category':'generic','permission_index_range':'250-254','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>[0xfa,0xfb,0xfc,0xfd,0xfe]['includes'](a['index'])),'owner_operations':['um_set\x20(258)','owner_receive\x20(257)','permission\x20transfer'],'admin_operations':['description_set\x20(251)'],'permission_index_operations':['treasury::deposit\x20(252)','treasury::receive\x20(253)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Owner-only\x20deposit:\x20TREASURY_DEPOSIT\x20(252)\x20granted\x20to\x20team\x20finance','Receive\x20automation:\x20TREASURY_RECEIVE\x20(253)\x20for\x20CoinWrapper\x20intake','No\x20external\x20Guard:\x20all\x20deposits\x20via\x20Permission\x20path','inflow\x20accumulates\x20total\x20team\x20contributions'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Allocator.sharing.who=Entity\x20→\x20Treasury\x20address\x20(fund\x20inflow)','Treasury.receive\x20(253)\x20converts\x20CoinWrapper\x20to\x20balance'],'recommended_templates':['T-T-01','T-T-06']},{'id':'treasury_external_ops','name':'External\x20deposit\x20/\x20withdraw\x20with\x20Guard\x20protection','coin_type_category':'generic','permission_index_range':'255-256','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>[0xff,0x100]['includes'](a['index'])),'owner_operations':['external_deposit_guard_add/remove/clear\x20(255)','external_withdraw_guard_add/remove/clear\x20(256)'],'admin_operations':[],'permission_index_operations':['treasury::external_deposit_guard_*\x20(255)','treasury::external_withdraw_guard_*\x20(256)'],'external_operations':['treasury::external_deposit\x20(Guard\x20+\x20Passport,\x20no\x20Permission)','treasury::external_withdraw\x20(Guard\x20+\x20Passport,\x20no\x20Permission)'],'guard_list_mutable_after_publish':!![],'common_patterns':['Whitelist\x20external\x20deposit:\x20external_deposit_guard\x20with\x20identifier=None','Capped\x20external\x20withdraw:\x20external_withdraw_guard\x20with\x20identifier=amount\x20field','Pair\x20external\x20ops\x20with\x20Guard\x20for\x20zero-Permission\x20external\x20access','store_from_id\x20tracks\x20order/business\x20ID\x20for\x20audit\x20trail'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Guard\x20object\x20referenced\x20by\x20external_deposit_guard\x20/\x20external_withdraw_guard','Passport\x20object\x20required\x20for\x20every\x20external_deposit\x20/\x20external_withdraw\x20call'],'recommended_templates':['T-T-03','T-T-04']},{'id':'treasury_guard_protection','name':'Guard-protected\x20Treasury\x20(asymmetric\x20identifier\x20design)','coin_type_category':'generic','permission_index_range':'255-256','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>[0xff,0x100]['includes'](a['index'])),'owner_operations':['external_deposit_guard\x20management\x20(255)','external_withdraw_guard\x20management\x20(256)'],'admin_operations':[],'permission_index_operations':['treasury::external_deposit_guard_add\x20(255)','treasury::external_withdraw_guard_add\x20(256)'],'external_operations':['external_deposit\x20via\x20Guard\x20(identifier:\x20Option<u8>\x20—\x20None\x20means\x20no\x20amount\x20limit)','external_withdraw\x20via\x20Guard\x20(identifier:\x20u8\x20—\x20REQUIRED,\x20no\x20None\x20option)'],'guard_list_mutable_after_publish':!![],'common_patterns':['Asymmetric\x20identifier:\x20deposit\x20optional,\x20withdraw\x20required','Deposit\x20amount\x20from\x20Coin\x20itself;\x20withdraw\x20amount\x20from\x20Guard\x20submission','upsert\x20semantics:\x20add\x20updates\x20existing\x20guard,\x20else\x20appends','external_deposit\x20splits\x20coin\x20if\x20value\x20>\x20guard-specified\x20amount'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Guard\x20table\x20item\x20value\x20type\x20must\x20be\x20number\x20(is_number_type)\x20for\x20identifier','Guard\x20table\x20item\x20value\x20type\x20must\x20be\x20address-compatible\x20for\x20store_from_id'],'recommended_templates':['T-T-03']},{'id':'treasury_permission_sharing','name':'Treasury\x20shared\x20with\x20Service\x20via\x20common\x20Permission','coin_type_category':'generic','permission_index_range':'250-258','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>a['active']),'owner_operations':['um_set\x20(258)','owner_receive\x20(257)'],'admin_operations':['description_set\x20(251)'],'permission_index_operations':['treasury::deposit\x20(252)\x20+\x20service::publish\x20(311)\x20on\x20same\x20Permission','treasury::withdraw\x20(254)\x20+\x20service::compensation_fund_withdraw\x20(315)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Shared\x20Permission:\x20Treasury\x20+\x20Service\x20reference\x20same\x20Permission\x20object','Unified\x20admin\x20list:\x20single\x20admin\x20team\x20manages\x20both\x20Service\x20and\x20Treasury','Simplifies\x20key\x20management:\x20one\x20Permission\x20object\x20per\x20business\x20unit'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Service.compensation_fund\x20(parallel\x20design,\x20NOT\x20a\x20Treasury)','Service.order_allocator\x20→\x20Treasury\x20as\x20Entity\x20target'],'recommended_templates':['T-T-04','T-T-05']},{'id':'treasury_um_delegation','name':'UM\x20delegation\x20(User\x20Manager\x20=\x20Contact\x20object)','coin_type_category':'generic','permission_index_range':'258','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>a['index']===0x102),'owner_operations':['um_set\x20(258)','um_none\x20(258)'],'admin_operations':[],'permission_index_operations':['treasury::um_set\x20(258)','treasury::um_none\x20(258)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Owner-only\x20UM:\x20TREASURY_UM\x20(258)\x20restricted\x20to\x20owner\x20(assert_owner)','UM\x20is\x20a\x20Contact\x20object\x20address,\x20not\x20a\x20regular\x20user\x20address','UM\x20≠\x20admin:\x20UM\x20is\x20for\x20contact\x20management,\x20not\x20permission\x20management','um_none\x20revokes\x20UM\x20and\x20disaffiliates\x20from\x20Registrar'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Contact\x20object\x20referenced\x20by\x20Treasury.um','object_linker::affiliation_core\x20/\x20disaffiliation\x20tracks\x20UM-Treasury\x20binding'],'recommended_templates':['T-T-01']},{'id':'treasury_owner_receive','name':'Owner\x20receive\x20(unwrap\x20&\x20forward\x20to\x20Permission\x20owner)','coin_type_category':'generic','permission_index_range':'257','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>a['index']===0x101),'owner_operations':['owner_receive\x20(257)','owner_receive_object\x20(257)'],'admin_operations':[],'permission_index_operations':['treasury::owner_receive\x20(257)','treasury::owner_receive_object\x20(257)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Forward\x20received\x20assets:\x20CoinWrapper\x20unwrapped,\x20sent\x20to\x20Permission.owner','Does\x20NOT\x20write\x20to\x20history\x20(direct\x20forward,\x20no\x20Record\x20entry)','Used\x20when\x20Treasury\x20should\x20not\x20retain\x20received\x20assets','owner_receive_object\x20handles\x20non-coin\x20objects\x20too'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Permission.owner\x20is\x20the\x20recipient\x20(resolved\x20at\x20tx\x20time)','Received\x20objects\x20come\x20from\x20Allocator\x20/\x20Arbitration.fees_transfer\x20/\x20external\x20deposits'],'recommended_templates':['T-T-06']}];export const TREASURY_LEDGER_VERSION='1.0.0';export function getScenesByHostObject(a){return TREASURY_SCENES;}export function findSceneById(a){return TREASURY_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){for(const b of TREASURY_SCENES){if(b['builtin_indexes']['some'](c=>c['index']===a&&c['active']))return b;}return undefined;}export function getBuiltinPermissionByIndex(a){return TREASURY_PERMISSIONS['find'](b=>b['index']===a&&b['active']);}export function isBuiltinTreasuryPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function getActiveBuiltinPermissions(){return TREASURY_PERMISSIONS['filter'](a=>a['active']);}export function getReservedBuiltinPermissions(){return TREASURY_PERMISSIONS['filter'](a=>!a['active']);}export function inferSceneFromIntent(a){const b=a['toLowerCase']();if(b['includes']('um')||b['includes']('delegate')||b['includes']('user\x20manager'))return findSceneById('treasury_um_delegation');if(b['includes']('owner_receive')||b['includes']('owner\x20receive')||b['includes']('forward'))return findSceneById('treasury_owner_receive');if(b['includes']('external')||b['includes']('guard')){if(b['includes']('deposit'))return findSceneById('treasury_external_ops');if(b['includes']('withdraw'))return findSceneById('treasury_external_ops');return findSceneById('treasury_guard_protection');}if(b['includes']('service')||b['includes']('share'))return findSceneById('treasury_permission_sharing');if(b['includes']('deposit')||b['includes']('receive')||b['includes']('fund')||b['includes']('collect'))return findSceneById('treasury_fund_collection');return undefined;}export function getTreasuryScenesCount(){return TREASURY_SCENES['length'];}export function getMoveFunctionsForPermissionIndex(a){const b={0xfa:['treasury::new','treasury::new_with_passport'],0xfb:['treasury::description_set','treasury::description_set_with_passport'],0xfc:['treasury::deposit','treasury::deposit_with_passport'],0xfd:['treasury::receive','treasury::receive_with_passport'],0xfe:['treasury::withdraw','treasury::withdraw_with_passport'],0xff:['treasury::external_deposit_guard_add','treasury::external_deposit_guard_add_with_passport','treasury::external_deposit_guard_remove','treasury::external_deposit_guard_remove_with_passport','treasury::external_deposit_guard_clear','treasury::external_deposit_guard_clear_with_passport'],0x100:['treasury::external_withdraw_guard_add','treasury::external_withdraw_guard_add_with_passport','treasury::external_withdraw_guard_remove','treasury::external_withdraw_guard_remove_with_passport','treasury::external_withdraw_guard_clear','treasury::external_withdraw_guard_clear_with_passport'],0x101:['treasury::owner_receive','treasury::owner_receive_object'],0x102:['treasury::um_set','treasury::um_set_with_passport','treasury::um_none','treasury::um_none_with_passport']};return b[a]??[];}
|
|
1
|
+
export const TREASURY_PERMISSIONS=[{'index':0xfa,'name':'TREASURY_NEW','description':'Create\x20new\x20Treasury','governed_operation':'create\x20a\x20new\x20Treasury','active':!![]},{'index':0xfb,'name':'TREASURY_DESCRIPTION','description':'Modify\x20Treasury\x20description','governed_operation':'edit\x20the\x20Treasury\x20description','active':!![]},{'index':0xfc,'name':'TREASURY_DEPOSIT','description':'Internal\x20deposit\x20(Permission\x20path)','governed_operation':'deposit\x20into\x20the\x20Treasury','active':!![]},{'index':0xfd,'name':'TREASURY_RECEIVE','description':'Receive\x20CoinWrapper\x20into\x20balance','governed_operation':'receive\x20a\x20CoinWrapper\x20into\x20the\x20balance','active':!![]},{'index':0xfe,'name':'TREASURY_WITHDRAW','description':'Internal\x20withdraw\x20(Permission\x20path,\x20fixed\x20amount)','governed_operation':'withdraw\x20a\x20fixed\x20amount\x20from\x20the\x20balance','active':!![]},{'index':0xff,'name':'TREASURY_EXTERNAL_DEPOSIT_GUARD','description':'Manage\x20external\x20deposit\x20Guard\x20list\x20(add/remove/clear)','governed_operation':'manage\x20the\x20external-deposit\x20Guard\x20list\x20(add/remove/clear)','active':!![]},{'index':0x100,'name':'TREASURY_EXTERNAL_WITHDRAW_GUARD','description':'Manage\x20external\x20withdraw\x20Guard\x20list\x20(add/remove/clear)','governed_operation':'manage\x20the\x20external-withdraw\x20Guard\x20list\x20(add/remove/clear)','active':!![]},{'index':0x101,'name':'TREASURY_OWNER_RECEIVE','description':'Owner\x20receive\x20(unwrap\x20received\x20objects,\x20send\x20to\x20Permission\x20owner)','governed_operation':'owner\x20receipt\x20(unwrap\x20received\x20assets\x20and\x20forward\x20to\x20the\x20Permission\x20owner)','active':!![]},{'index':0x102,'name':'TREASURY_UM','description':'Set\x20UM\x20(User\x20Manager\x20=\x20Contact\x20object)','governed_operation':'set\x20or\x20clear\x20the\x20UM\x20(User\x20Manager\x20=\x20Contact\x20object)','active':!![]},{'index':-0x1,'name':'TREASURY_EXTERNAL_DEPOSIT_RESERVED','description':'RESERVED\x20—\x20external\x20deposit\x20goes\x20through\x20Guard\x20+\x20Passport,\x20not\x20the\x20Permission\x20gate','governed_operation':'external\x20deposit\x20(Guard\x20+\x20Passport\x20path)','active':![]},{'index':-0x1,'name':'TREASURY_EXTERNAL_WITHDRAW_RESERVED','description':'RESERVED\x20—\x20external\x20withdraw\x20goes\x20through\x20Guard\x20+\x20Passport,\x20not\x20the\x20Permission\x20gate','governed_operation':'external\x20withdraw\x20(Guard\x20+\x20Passport\x20path)','active':![]}];export const TREASURY_SCENES=[{'id':'treasury_fund_collection','name':'Team\x20fund\x20collection\x20(internal\x20deposit\x20+\x20receive)','coin_type_category':'generic','permission_index_range':'250-254','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>[0xfa,0xfb,0xfc,0xfd,0xfe]['includes'](a['index'])),'owner_operations':['set\x20or\x20clear\x20the\x20UM\x20(258)','owner_receive\x20(257)','permission\x20transfer'],'admin_operations':['edit\x20description\x20(251)'],'permission_index_operations':['deposit\x20into\x20the\x20Treasury\x20(252)','receive\x20a\x20CoinWrapper\x20into\x20the\x20balance\x20(253)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Owner-only\x20deposit:\x20TREASURY_DEPOSIT\x20(252)\x20granted\x20to\x20team\x20finance','Receive\x20automation:\x20TREASURY_RECEIVE\x20(253)\x20for\x20CoinWrapper\x20intake','No\x20external\x20Guard:\x20all\x20deposits\x20via\x20Permission\x20path','inflow\x20accumulates\x20total\x20team\x20contributions'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Allocator.sharing.who=Entity\x20→\x20Treasury\x20address\x20(fund\x20inflow)','Treasury.receive\x20(253)\x20converts\x20CoinWrapper\x20to\x20balance'],'recommended_templates':['T-T-01','T-T-06']},{'id':'treasury_external_ops','name':'External\x20deposit\x20/\x20withdraw\x20with\x20Guard\x20protection','coin_type_category':'generic','permission_index_range':'255-256','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>[0xff,0x100]['includes'](a['index'])),'owner_operations':['external-deposit\x20Guard\x20list:\x20add/remove/clear\x20(255)','external-withdraw\x20Guard\x20list:\x20add/remove/clear\x20(256)'],'admin_operations':[],'permission_index_operations':['external-deposit\x20Guard\x20list\x20management\x20(255)','external-withdraw\x20Guard\x20list\x20management\x20(256)'],'external_operations':['external\x20deposit\x20via\x20Guard\x20+\x20Passport\x20(no\x20Permission\x20index)','external\x20withdraw\x20via\x20Guard\x20+\x20Passport\x20(no\x20Permission\x20index)'],'guard_list_mutable_after_publish':!![],'common_patterns':['Whitelist\x20external\x20deposit:\x20external_deposit_guard\x20with\x20identifier=None','Capped\x20external\x20withdraw:\x20external_withdraw_guard\x20with\x20identifier=amount\x20field','Pair\x20external\x20ops\x20with\x20Guard\x20for\x20zero-Permission\x20external\x20access','store_from_id\x20tracks\x20order/business\x20ID\x20for\x20audit\x20trail'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Guard\x20object\x20referenced\x20by\x20external_deposit_guard\x20/\x20external_withdraw_guard','Passport\x20object\x20required\x20for\x20every\x20external_deposit\x20/\x20external_withdraw\x20call'],'recommended_templates':['T-T-03','T-T-04']},{'id':'treasury_guard_protection','name':'Guard-protected\x20Treasury\x20(asymmetric\x20identifier\x20design)','coin_type_category':'generic','permission_index_range':'255-256','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>[0xff,0x100]['includes'](a['index'])),'owner_operations':['external_deposit_guard\x20management\x20(255)','external_withdraw_guard\x20management\x20(256)'],'admin_operations':[],'permission_index_operations':['add\x20to\x20the\x20external-deposit\x20Guard\x20list\x20(255)','add\x20to\x20the\x20external-withdraw\x20Guard\x20list\x20(256)'],'external_operations':['external_deposit\x20via\x20Guard\x20(identifier:\x20Option<u8>\x20—\x20None\x20means\x20no\x20amount\x20limit)','external_withdraw\x20via\x20Guard\x20(identifier:\x20u8\x20—\x20REQUIRED,\x20no\x20None\x20option)'],'guard_list_mutable_after_publish':!![],'common_patterns':['Asymmetric\x20identifier:\x20deposit\x20optional,\x20withdraw\x20required','Deposit\x20amount\x20from\x20Coin\x20itself;\x20withdraw\x20amount\x20from\x20Guard\x20submission','upsert\x20semantics:\x20add\x20updates\x20existing\x20guard,\x20else\x20appends','external_deposit\x20splits\x20coin\x20if\x20value\x20>\x20guard-specified\x20amount'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Guard\x20table\x20item\x20value\x20type\x20must\x20be\x20numeric\x20for\x20the\x20identifier','Guard\x20table\x20item\x20value\x20type\x20must\x20be\x20address-compatible\x20for\x20store_from_id'],'recommended_templates':['T-T-03']},{'id':'treasury_permission_sharing','name':'Treasury\x20shared\x20with\x20Service\x20via\x20common\x20Permission','coin_type_category':'generic','permission_index_range':'250-258','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>a['active']),'owner_operations':['set\x20or\x20clear\x20the\x20UM\x20(258)','owner_receive\x20(257)'],'admin_operations':['edit\x20description\x20(251)'],'permission_index_operations':['deposit\x20(252)\x20+\x20publish\x20(311)\x20on\x20the\x20same\x20Permission','withdraw\x20(254)\x20+\x20compensation_fund_withdraw\x20(315)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Shared\x20Permission:\x20Treasury\x20+\x20Service\x20reference\x20same\x20Permission\x20object','Unified\x20admin\x20list:\x20single\x20admin\x20team\x20manages\x20both\x20Service\x20and\x20Treasury','Simplifies\x20key\x20management:\x20one\x20Permission\x20object\x20per\x20business\x20unit'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Service.compensation_fund\x20(parallel\x20design,\x20NOT\x20a\x20Treasury)','Service.order_allocator\x20→\x20Treasury\x20as\x20Entity\x20target'],'recommended_templates':['T-T-04','T-T-05']},{'id':'treasury_um_delegation','name':'UM\x20delegation\x20(User\x20Manager\x20=\x20Contact\x20object)','coin_type_category':'generic','permission_index_range':'258','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>a['index']===0x102),'owner_operations':['set\x20the\x20UM\x20(258)','clear\x20the\x20UM\x20(258)'],'admin_operations':[],'permission_index_operations':['set\x20the\x20UM\x20(258)','clear\x20the\x20UM\x20(258)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Owner-only\x20UM:\x20TREASURY_UM\x20(258)\x20restricted\x20to\x20the\x20Treasury\x20owner','UM\x20is\x20a\x20Contact\x20object\x20address,\x20not\x20a\x20regular\x20user\x20address','UM\x20≠\x20admin:\x20UM\x20is\x20for\x20contact\x20management,\x20not\x20permission\x20management','Clearing\x20the\x20UM\x20revokes\x20it\x20and\x20disaffiliates\x20it\x20from\x20the\x20Registrar'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Contact\x20object\x20referenced\x20by\x20Treasury.um','the\x20affiliation\x20/\x20disaffiliation\x20links\x20track\x20the\x20UM-Treasury\x20binding'],'recommended_templates':['T-T-01']},{'id':'treasury_owner_receive','name':'Owner\x20receive\x20(unwrap\x20&\x20forward\x20to\x20Permission\x20owner)','coin_type_category':'generic','permission_index_range':'257','builtin_indexes':TREASURY_PERMISSIONS['filter'](a=>a['index']===0x101),'owner_operations':['owner_receive\x20(257)','owner\x20receipt\x20at\x20object\x20level\x20(257)'],'admin_operations':[],'permission_index_operations':['owner\x20receipt\x20(257)','owner\x20receipt\x20at\x20object\x20level\x20(257)'],'external_operations':[],'guard_list_mutable_after_publish':!![],'common_patterns':['Forward\x20received\x20assets:\x20CoinWrapper\x20unwrapped,\x20sent\x20to\x20Permission.owner','Does\x20NOT\x20write\x20to\x20history\x20(direct\x20forward,\x20no\x20Record\x20entry)','Used\x20when\x20Treasury\x20should\x20not\x20retain\x20received\x20assets','The\x20object-level\x20owner\x20receipt\x20handles\x20non-coin\x20objects\x20too'],'irreversibility':{'deposit':'reversible','withdraw':'irreversible','external_deposit':'reversible','external_withdraw':'irreversible','owner_receive':'irreversible'},'cross_object_collaboration':['Permission.owner\x20is\x20the\x20recipient\x20(resolved\x20at\x20tx\x20time)','Received\x20objects\x20come\x20from\x20Allocator\x20distributions\x20/\x20arbitration\x20fee\x20transfers\x20/\x20external\x20deposits'],'recommended_templates':['T-T-06']}];export const TREASURY_LEDGER_VERSION='1.0.0';export function getScenesByHostObject(a){return TREASURY_SCENES;}export function findSceneById(a){return TREASURY_SCENES['find'](b=>b['id']===a);}export function findSceneByPermissionIndex(a){for(const b of TREASURY_SCENES){if(b['builtin_indexes']['some'](c=>c['index']===a&&c['active']))return b;}return undefined;}export function getBuiltinPermissionByIndex(a){return TREASURY_PERMISSIONS['find'](b=>b['index']===a&&b['active']);}export function isBuiltinTreasuryPermission(a){return getBuiltinPermissionByIndex(a)!==undefined;}export function getActiveBuiltinPermissions(){return TREASURY_PERMISSIONS['filter'](a=>a['active']);}export function getReservedBuiltinPermissions(){return TREASURY_PERMISSIONS['filter'](a=>!a['active']);}export function inferSceneFromIntent(a){const b=a['toLowerCase']();if(b['includes']('um')||b['includes']('delegate')||b['includes']('user\x20manager'))return findSceneById('treasury_um_delegation');if(b['includes']('owner_receive')||b['includes']('owner\x20receive')||b['includes']('forward'))return findSceneById('treasury_owner_receive');if(b['includes']('external')||b['includes']('guard')){if(b['includes']('deposit'))return findSceneById('treasury_external_ops');if(b['includes']('withdraw'))return findSceneById('treasury_external_ops');return findSceneById('treasury_guard_protection');}if(b['includes']('service')||b['includes']('share'))return findSceneById('treasury_permission_sharing');if(b['includes']('deposit')||b['includes']('receive')||b['includes']('fund')||b['includes']('collect'))return findSceneById('treasury_fund_collection');return undefined;}export function getTreasuryScenesCount(){return TREASURY_SCENES['length'];}export function getGovernedOperationsForPermissionIndex(a){const b={0xfa:['create\x20a\x20new\x20Treasury','create\x20a\x20new\x20Treasury\x20via\x20Passport'],0xfb:['edit\x20the\x20Treasury\x20description','edit\x20the\x20Treasury\x20description\x20via\x20Passport'],0xfc:['deposit\x20into\x20the\x20Treasury','deposit\x20into\x20the\x20Treasury\x20via\x20Passport'],0xfd:['receive\x20a\x20CoinWrapper\x20into\x20the\x20balance','receive\x20via\x20Passport'],0xfe:['withdraw\x20a\x20fixed\x20amount','withdraw\x20via\x20Passport'],0xff:['add\x20to\x20the\x20external-deposit\x20Guard\x20list','add\x20via\x20Passport','remove\x20from\x20the\x20external-deposit\x20Guard\x20list','remove\x20via\x20Passport','clear\x20the\x20external-deposit\x20Guard\x20list','clear\x20via\x20Passport'],0x100:['add\x20to\x20the\x20external-withdraw\x20Guard\x20list','add\x20via\x20Passport','remove\x20from\x20the\x20external-withdraw\x20Guard\x20list','remove\x20via\x20Passport','clear\x20the\x20external-withdraw\x20Guard\x20list','clear\x20via\x20Passport'],0x101:['owner\x20receipt\x20(coin\x20level)','owner\x20receipt\x20(object\x20level)'],0x102:['set\x20the\x20UM','set\x20the\x20UM\x20via\x20Passport','clear\x20the\x20UM','clear\x20the\x20UM\x20via\x20Passport']};return b[a]??[];}
|
|
@@ -85,10 +85,10 @@ export type TreasuryOperation = {
|
|
|
85
85
|
op: "add" | "set" | "remove" | "clear";
|
|
86
86
|
guards?: AmountFromWithdrawGuardPuzzle[] | string[];
|
|
87
87
|
} | {
|
|
88
|
-
type: "
|
|
88
|
+
type: "set description";
|
|
89
89
|
description: string;
|
|
90
90
|
} | {
|
|
91
|
-
type: "
|
|
91
|
+
type: "set um";
|
|
92
92
|
um: string | null;
|
|
93
93
|
};
|
|
94
94
|
export interface TreasuryOperationPuzzle {
|
|
@@ -151,7 +151,7 @@ export declare function initPuzzleFromIntent(intent: Partial<TreasuryIntentPuzzl
|
|
|
151
151
|
export declare function checkPuzzleCompleteness(puzzle: TreasuryPuzzle): TreasuryPuzzleCompleteness;
|
|
152
152
|
export interface TreasuryConstraintViolation {
|
|
153
153
|
constraint_id: string;
|
|
154
|
-
severity: "
|
|
154
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
155
155
|
message: string;
|
|
156
156
|
current_value?: string | number;
|
|
157
157
|
limit?: string | number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'create','coin_type':a['coin_type'],'purpose':a['purpose']??'custom','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_T_01_description_length_le_4000':!![],'F_T_02_external_deposit_guard_count_le_100':!![],'F_T_03_external_withdraw_guard_count_le_200':!![],'F_T_04_external_withdraw_guard_identifier_required':!![],'F_T_05_guard_identifier_is_number_type':!![],'F_T_06_store_from_id_address_compatible':!![],'F_T_07_external_deposit_amount_sufficient':!![],'F_T_08_external_withdraw_amount_le_balance':!![],'F_T_09_withdraw_fixed_amount_le_balance':!![],'F_T_10_external_guard_in_list':!![],'F_T_11_coin_type_matches_type_parameter':!![],'F_T_12_um_is_contact_object':!![],'F_T_13_permission_index_matches_move':!![]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else!a['intent']['rule_sentence']&&(b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'}));if(!a['binding'])b['push']('B'),c['push']({'dimension':'B','reason':'Binding\x20not\x20specified\x20(type_parameter\x20+\x20permission)'});else{if(!a['binding']['type_parameter'])b['push']('B'),c['push']({'dimension':'B','reason':'type_parameter\x20(Coin\x20type\x20T)\x20missing'});else!a['binding']['associated_permission']&&(b['push']('B'),c['push']({'dimension':'B','reason':'associated_permission\x20missing'}));}return!a['data_source']&&a['intent']?.['action']==='create'&&(b['push']('C'),c['push']({'dimension':'C','reason':'Data\x20source\x20not\x20specified\x20(permission\x20+\x20coin_source\x20+\x20guards)'})),!a['operations']&&(b['push']('D'),c['push']({'dimension':'D','reason':'Operations\x20not\x20enumerated'})),!a['logic']&&(b['push']('E'),c['push']({'dimension':'E','reason':'Logic\x20flow\x20(access_control\x20+\x20fund_flow\x20+\x20history)\x20not\x20defined'})),!a['constraints']&&(b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'})),{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export const MAX_EXTERNAL_DEPOSIT_GUARD_COUNT=0x64;export const MAX_EXTERNAL_WITHDRAW_GUARD_COUNT=0xc8;export const MAX_DESCRIPTION_LENGTH=0xfa0;export function validateConstraints(a){const b=[];if(a['operations']?.['operations'])for(const c of a['operations']['operations']){c['type']==='
|
|
1
|
+
export function initPuzzleFromIntent(a){const b={};return(a['action']||a['rule_sentence'])&&(b['intent']={'action':a['action']??'create','coin_type':a['coin_type'],'purpose':a['purpose']??'custom','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}),b['constraints']={'F_T_01_description_length_le_4000':!![],'F_T_02_external_deposit_guard_count_le_100':!![],'F_T_03_external_withdraw_guard_count_le_200':!![],'F_T_04_external_withdraw_guard_identifier_required':!![],'F_T_05_guard_identifier_is_number_type':!![],'F_T_06_store_from_id_address_compatible':!![],'F_T_07_external_deposit_amount_sufficient':!![],'F_T_08_external_withdraw_amount_le_balance':!![],'F_T_09_withdraw_fixed_amount_le_balance':!![],'F_T_10_external_guard_in_list':!![],'F_T_11_coin_type_matches_type_parameter':!![],'F_T_12_um_is_contact_object':!![],'F_T_13_permission_index_matches_move':!![]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(action\x20+\x20rule_sentence)'});else!a['intent']['rule_sentence']&&(b['push']('A'),c['push']({'dimension':'A','reason':'rule_sentence\x20is\x20empty'}));if(!a['binding'])b['push']('B'),c['push']({'dimension':'B','reason':'Binding\x20not\x20specified\x20(type_parameter\x20+\x20permission)'});else{if(!a['binding']['type_parameter'])b['push']('B'),c['push']({'dimension':'B','reason':'type_parameter\x20(Coin\x20type\x20T)\x20missing'});else!a['binding']['associated_permission']&&(b['push']('B'),c['push']({'dimension':'B','reason':'associated_permission\x20missing'}));}return!a['data_source']&&a['intent']?.['action']==='create'&&(b['push']('C'),c['push']({'dimension':'C','reason':'Data\x20source\x20not\x20specified\x20(permission\x20+\x20coin_source\x20+\x20guards)'})),!a['operations']&&(b['push']('D'),c['push']({'dimension':'D','reason':'Operations\x20not\x20enumerated'})),!a['logic']&&(b['push']('E'),c['push']({'dimension':'E','reason':'Logic\x20flow\x20(access_control\x20+\x20fund_flow\x20+\x20history)\x20not\x20defined'})),!a['constraints']&&(b['push']('F'),c['push']({'dimension':'F','reason':'Constraints\x20not\x20checked'})),{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export const MAX_EXTERNAL_DEPOSIT_GUARD_COUNT=0x64;export const MAX_EXTERNAL_WITHDRAW_GUARD_COUNT=0xc8;export const MAX_DESCRIPTION_LENGTH=0xfa0;export function validateConstraints(a){const b=[];if(a['operations']?.['operations'])for(const c of a['operations']['operations']){c['type']==='set\x20description'&&c['description']['length']>MAX_DESCRIPTION_LENGTH&&b['push']({'constraint_id':'F-T-01','severity':'high','message':'Description\x20length\x20'+c['description']['length']+'\x20exceeds\x20MAX_DESCRIPTION_LENGTH\x20'+MAX_DESCRIPTION_LENGTH,'current_value':c['description']['length'],'limit':MAX_DESCRIPTION_LENGTH});}a['data_source']&&a['data_source']['external_deposit_guards']['length']>MAX_EXTERNAL_DEPOSIT_GUARD_COUNT&&b['push']({'constraint_id':'F-T-02','severity':'high','message':'external_deposit_guard\x20count\x20'+a['data_source']['external_deposit_guards']['length']+'\x20exceeds\x20'+MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,'current_value':a['data_source']['external_deposit_guards']['length'],'limit':MAX_EXTERNAL_DEPOSIT_GUARD_COUNT});a['data_source']&&a['data_source']['external_withdraw_guards']['length']>MAX_EXTERNAL_WITHDRAW_GUARD_COUNT&&b['push']({'constraint_id':'F-T-03','severity':'high','message':'external_withdraw_guard\x20count\x20'+a['data_source']['external_withdraw_guards']['length']+'\x20exceeds\x20'+MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,'current_value':a['data_source']['external_withdraw_guards']['length'],'limit':MAX_EXTERNAL_WITHDRAW_GUARD_COUNT});if(a['data_source'])for(const d of a['data_source']['external_withdraw_guards']){(d['identifier']===undefined||d['identifier']===null)&&b['push']({'constraint_id':'F-T-04','severity':'high','message':'external_withdraw_guard\x20'+d['guard']+'\x20missing\x20required\x20identifier\x20(u8)'});}if(a['logic']?.['access_control_flow'])for(const e of a['logic']['access_control_flow']){e['permission_index']!==undefined&&(e['permission_index']>0x102&&e['permission_index']<0x3e8&&b['push']({'constraint_id':'F-T-13','severity':'critical','message':'Permission\x20index\x20'+e['permission_index']+'\x20is\x20in\x20the\x20259-999\x20range;\x20active\x20Treasury\x20indexes\x20are\x20250-258.\x20Possible\x20R-T-01\x20residual.','current_value':e['permission_index'],'limit':'250-258'}));}return b;}export function generateConfirmationText(a){const b=[];b['push']('═══\x20Treasury\x20Confirmation\x20═══'),b['push']('');if(a['intent']){b['push']('Action:\x20'+a['intent']['action']);if(a['intent']['coin_type'])b['push']('Coin\x20type:\x20'+a['intent']['coin_type']);b['push']('Purpose:\x20'+a['intent']['purpose']),b['push']('Rule:\x20'+a['intent']['rule_sentence']);if(a['intent']['failure_conditions']['length']>0x0){b['push']('Failure\x20conditions:');for(const d of a['intent']['failure_conditions'])b['push']('\x20\x20-\x20'+d);}b['push']('');}a['binding']&&(b['push']('─\x20Binding\x20──────────────'),b['push']('Host\x20object:\x20'+a['binding']['host_object']),b['push']('Type\x20parameter\x20(T):\x20'+a['binding']['type_parameter']),b['push']('Associated\x20Permission:\x20'+a['binding']['associated_permission']),a['binding']['associated_um']!==undefined&&b['push']('UM:\x20'+(a['binding']['associated_um']??'(none)')),b['push']('Sharing\x20with\x20Allocator:\x20'+a['binding']['sharing_with_allocator']),b['push']('Sharing\x20with\x20Arbitration:\x20'+a['binding']['sharing_with_arbitration']),b['push']('Sharing\x20with\x20Service:\x20'+a['binding']['sharing_with_service']),b['push'](''));if(a['data_source']){b['push']('─\x20Data\x20Source\x20──────────────'),b['push']('Permission:\x20'+a['data_source']['permission_object']),b['push']('Coin\x20source:\x20'+JSON['stringify'](a['data_source']['coin_source']));if(a['data_source']['external_deposit_guards']['length']>0x0){b['push']('External\x20deposit\x20guards\x20('+a['data_source']['external_deposit_guards']['length']+'):');for(const e of a['data_source']['external_deposit_guards']){b['push']('\x20\x20guard='+e['guard']+',\x20identifier='+(e['identifier']??'None')+',\x20store_from_id='+(e['store_from_id']??'None'));}}if(a['data_source']['external_withdraw_guards']['length']>0x0){b['push']('External\x20withdraw\x20guards\x20('+a['data_source']['external_withdraw_guards']['length']+'):');for(const h of a['data_source']['external_withdraw_guards']){b['push']('\x20\x20guard='+h['guard']+',\x20identifier='+h['identifier']+'\x20(required),\x20store_from_id='+(h['store_from_id']??'None'));}}b['push']('');}if(a['operations']&&a['operations']['operations']['length']>0x0){b['push']('─\x20Operations\x20──────────────');for(const i of a['operations']['operations'])b['push']('\x20\x20-\x20'+JSON['stringify'](i));b['push']('');}if(a['logic']){b['push']('─\x20Logic\x20──────────────'),b['push']('Access\x20control\x20flow:');for(const j of a['logic']['access_control_flow']){b['push']('\x20\x20path='+j['path']+',\x20perm_idx='+(j['permission_index']??'N/A')+',\x20guard='+(j['guard_address']??'N/A')+',\x20passport='+j['passport_required']);}b['push']('Fund\x20flow:');for(const k of a['logic']['fund_flow']){b['push']('\x20\x20from='+k['from']+',\x20to='+k['to']+',\x20amount_source='+k['amount_source']);}b['push']('');}const c=validateConstraints(a);if(c['length']>0x0){b['push']('─\x20Constraint\x20Violations\x20──────────────');for(const l of c)b['push']('\x20\x20['+l['severity']+']\x20'+l['constraint_id']+':\x20'+l['message']);b['push']('');}return b['join']('\x0a');}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { type Facts, type FindingExposure } from "../config/rule-engine.js";
|
|
1
2
|
import { type TreasuryScene } from "./treasury-ledger.js";
|
|
2
|
-
export type TreasuryRiskLevel = "
|
|
3
|
+
export type TreasuryRiskLevel = "critical" | "high" | "medium" | "low";
|
|
3
4
|
export type TreasuryRiskCategory = "structural" | "semantic" | "authority" | "lifecycle" | "cross_object";
|
|
4
5
|
export interface TreasuryRisk {
|
|
5
6
|
id: string;
|
|
@@ -11,6 +12,7 @@ export interface TreasuryRisk {
|
|
|
11
12
|
scenario: string;
|
|
12
13
|
mitigation: string;
|
|
13
14
|
evidence?: string;
|
|
15
|
+
exposure?: FindingExposure;
|
|
14
16
|
}
|
|
15
17
|
export type TreasuryStakeholder = "owner" | "admin" | "depositor" | "withdrawer" | "external_operator" | "system";
|
|
16
18
|
export interface TreasuryRiskRule {
|
|
@@ -71,6 +73,7 @@ export interface TreasuryRiskCheckContext {
|
|
|
71
73
|
shared_with_arbitration?: boolean;
|
|
72
74
|
current_permission_indexes_granted?: number[];
|
|
73
75
|
}
|
|
76
|
+
export declare function treasuryRiskFacts(ctx: TreasuryRiskCheckContext): Facts;
|
|
74
77
|
export declare const TREASURY_RISK_VERSION = "1.2.0";
|
|
75
78
|
export declare function getAllTreasuryRiskRules(): TreasuryRiskRule[];
|
|
76
79
|
export interface TreasuryRiskAssessment {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,MAX_DESCRIPTION_LENGTH}from'./treasury-puzzle.js';const R_T_1_01={'id':'R-T-1-01','category':'structural','trigger':'Description\x20length\x20exceeds\x20MAX_DESCRIPTION_LENGTH\x20(4000)','check':a=>{if(!a['description'])return null;if(a['description']['length']>MAX_DESCRIPTION_LENGTH)return{'id':'R-T-1-01','level':'HIGH','category':'structural','title':'Description\x20length\x20exceeds\x20limit','description':'Description\x20length\x20'+a['description']['length']+'\x20exceeds\x20MAX_DESCRIPTION_LENGTH\x20'+MAX_DESCRIPTION_LENGTH,'affected_stakeholders':['owner','admin'],'scenario':'Setting\x20a\x20description\x20longer\x20than\x204000\x20characters','mitigation':'Truncate\x20description\x20to\x20fit\x20within\x204000\x20characters','evidence':'length='+a['description']['length']};return null;}},R_T_1_02={'id':'R-T-1-02','category':'structural','trigger':'external_deposit_guard\x20count\x20exceeds\x20MAX_EXTERNAL_DEPOSIT_GUARD_COUNT\x20(100)','check':a=>{if(!a['external_deposit_guard']||a['external_deposit_guard']['op']!=='add')return null;const b=a['current_external_deposit_guard_count']??0x0,c=a['external_deposit_guard']['guards']['length'];if(b+c>MAX_EXTERNAL_DEPOSIT_GUARD_COUNT)return{'id':'R-T-1-02','level':'HIGH','category':'structural','title':'external_deposit_guard\x20count\x20exceeds\x20limit','description':'Adding\x20'+c+'\x20guards\x20to\x20existing\x20'+b+'\x20would\x20exceed\x20MAX_EXTERNAL_DEPOSIT_GUARD_COUNT\x20'+MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,'affected_stakeholders':['owner'],'scenario':'Adding\x20too\x20many\x20external\x20deposit\x20guards','mitigation':'Remove\x20unused\x20guards\x20before\x20adding\x20new\x20ones,\x20or\x20use\x20\x27set\x27\x20to\x20replace\x20the\x20list','evidence':'current='+b+',\x20adding='+c+',\x20limit='+MAX_EXTERNAL_DEPOSIT_GUARD_COUNT};return null;}},R_T_1_03={'id':'R-T-1-03','category':'structural','trigger':'external_withdraw_guard\x20count\x20exceeds\x20MAX_EXTERNAL_WITHDRAW_GUARD_COUNT\x20(200)','check':a=>{if(!a['external_withdraw_guard']||a['external_withdraw_guard']['op']!=='add')return null;const b=a['current_external_withdraw_guard_count']??0x0,c=a['external_withdraw_guard']['guards']['length'];if(b+c>MAX_EXTERNAL_WITHDRAW_GUARD_COUNT)return{'id':'R-T-1-03','level':'HIGH','category':'structural','title':'external_withdraw_guard\x20count\x20exceeds\x20limit','description':'Adding\x20'+c+'\x20guards\x20to\x20existing\x20'+b+'\x20would\x20exceed\x20MAX_EXTERNAL_WITHDRAW_GUARD_COUNT\x20'+MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,'affected_stakeholders':['owner'],'scenario':'Adding\x20too\x20many\x20external\x20withdraw\x20guards','mitigation':'Remove\x20unused\x20guards\x20before\x20adding\x20new\x20ones,\x20or\x20use\x20\x27set\x27\x20to\x20replace\x20the\x20list','evidence':'current='+b+',\x20adding='+c+',\x20limit='+MAX_EXTERNAL_WITHDRAW_GUARD_COUNT};return null;}},R_T_1_04={'id':'R-T-1-04','category':'structural','trigger':'external_withdraw_guard.identifier\x20is\x20missing\x20(required\x20u8,\x20not\x20Option)','check':a=>{if(!a['external_withdraw_guard'])return null;if(a['external_withdraw_guard']['op']!=='add'&&a['external_withdraw_guard']['op']!=='set')return null;for(const b of a['external_withdraw_guard']['guards']){if(b['identifier']===undefined||b['identifier']===null)return{'id':'R-T-1-04','level':'HIGH','category':'structural','title':'external_withdraw_guard.identifier\x20missing','description':'Guard\x20'+b['guard']+'\x20missing\x20required\x20identifier.\x20AmountFromWithdrawGuard.identifier\x20is\x20u8\x20(not\x20Option<u8>);\x20withdraw\x20amount\x20must\x20come\x20from\x20Guard\x20table.','affected_stakeholders':['owner','external_operator'],'scenario':'Configuring\x20external\x20withdraw\x20guard\x20without\x20amount\x20source','mitigation':'Set\x20identifier\x20to\x20the\x20Guard\x20table\x20index\x20that\x20provides\x20the\x20withdraw\x20amount\x20(must\x20be\x20a\x20number-type\x20field)','evidence':'guard='+b['guard']+',\x20identifier=undefined'};}return null;}},R_T_2_01={'id':'R-T-2-01','category':'semantic','trigger':'External\x20operation\x20(deposit/withdraw)\x20requested\x20without\x20corresponding\x20guard\x20configured','check':a=>{if(a['deposit']?.['by_external_deposit_guard']){const b=a['deposit']['by_external_deposit_guard'];if((a['current_external_deposit_guard_count']??0x0)===0x0)return{'id':'R-T-2-01','level':'MEDIUM','category':'semantic','title':'External\x20deposit\x20guard\x20list\x20is\x20empty','description':'Requesting\x20external_deposit\x20via\x20guard\x20'+b+',\x20but\x20Treasury\x20has\x20no\x20external_deposit_guard\x20configured.\x20Operation\x20will\x20abort\x20with\x20E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND.','affected_stakeholders':['external_operator','owner'],'scenario':'External\x20deposit\x20attempted\x20before\x20guard_add','mitigation':'Call\x20external_deposit_guard_add\x20(Permission\x20index\x20255)\x20first\x20to\x20register\x20guard\x20'+b,'evidence':'guard='+b+',\x20current_count=0'};}if(a['withdraw']?.['amount_by_external_withdraw_guard']){const c=a['withdraw']['amount_by_external_withdraw_guard'];if((a['current_external_withdraw_guard_count']??0x0)===0x0)return{'id':'R-T-2-01','level':'MEDIUM','category':'semantic','title':'External\x20withdraw\x20guard\x20list\x20is\x20empty','description':'Requesting\x20external_withdraw\x20via\x20guard\x20'+c+',\x20but\x20Treasury\x20has\x20no\x20external_withdraw_guard\x20configured.\x20Operation\x20will\x20abort\x20with\x20E_EXTERNAL_WITHDRAW_GUARD_NOT_FOUND.','affected_stakeholders':['external_operator','owner'],'scenario':'External\x20withdraw\x20attempted\x20before\x20guard_add','mitigation':'Call\x20external_withdraw_guard_add\x20(Permission\x20index\x20256)\x20first\x20to\x20register\x20guard\x20'+c,'evidence':'guard='+c+',\x20current_count=0'};}return null;}},R_T_2_02={'id':'R-T-2-02','category':'semantic','trigger':'External\x20operation\x20paired\x20with\x20Permission\x20path\x20(confused\x20access\x20control)','check':a=>{if(a['deposit']?.['by_external_deposit_guard']&&a['current_permission_indexes_granted']?.['includes'](0xfc))return{'id':'R-T-2-02','level':'LOW','category':'semantic','title':'Both\x20Permission\x20deposit\x20and\x20external\x20deposit\x20guard\x20configured','description':'Treasury\x20has\x20both\x20TREASURY_DEPOSIT\x20(252)\x20granted\x20and\x20external_deposit_guard\x20configured.\x20While\x20not\x20an\x20error,\x20mixing\x20access\x20paths\x20complicates\x20audit.','affected_stakeholders':['owner','admin'],'scenario':'Hybrid\x20internal+external\x20deposit\x20setup','mitigation':'Document\x20which\x20path\x20each\x20depositor\x20should\x20use;\x20consider\x20splitting\x20into\x20separate\x20Treasury\x20objects\x20for\x20clarity','evidence':'has_perm_252=true,\x20has_external_deposit_guard=true'};return null;}},R_T_2_03={'id':'R-T-2-03','category':'semantic','trigger':'external_deposit\x20amount\x20exceeds\x20guard-specified\x20value\x20(split-and-refund\x20path)','check':a=>{if(!a['deposit']?.['by_external_deposit_guard']||!a['deposit']?.['coin_balance'])return null;return{'id':'R-T-2-03','level':'LOW','category':'semantic','title':'External\x20deposit\x20may\x20trigger\x20split-and-refund','description':'If\x20coin\x20value\x20('+a['deposit']['coin_balance']+')\x20exceeds\x20guard-specified\x20amount,\x20the\x20excess\x20will\x20be\x20split\x20and\x20refunded\x20to\x20sender.\x20Verify\x20intent.','affected_stakeholders':['external_operator'],'scenario':'External\x20deposit\x20with\x20coin\x20value\x20>\x20guard\x20limit','mitigation':'Pre-split\x20the\x20coin\x20to\x20exact\x20guard-specified\x20amount,\x20or\x20accept\x20the\x20refund\x20behavior','evidence':'coin_balance='+a['deposit']['coin_balance']};}},R_T_2_04={'id':'R-T-2-04','category':'semantic','trigger':'external_withdraw\x20destination\x20is\x20not\x20the\x20transaction\x20sender\x20—\x20guaranteed\x20on-chain\x20abort\x20(treasury\x20code\x2010)\x20when\x20the\x20sender\x20is\x20known;\x20advisory\x20otherwise','check':a=>{if(!a['withdraw']?.['amount_by_external_withdraw_guard'])return null;const b=a['withdraw']['amount_by_external_withdraw_guard'],c=a['withdraw']['recipient'],d=a['sender_address'];if(d){if(c&&c['toLowerCase']()===d['toLowerCase']())return null;return{'id':'R-T-2-04','level':'HIGH','category':'semantic','title':'external_withdraw\x20recipient\x20is\x20not\x20the\x20sender','description':'external_withdraw\x20pays\x20only\x20the\x20transaction\x20sender\x20(Move\x20truth,\x20treasury.move\x20—\x20the\x20guard\x20'+('authorizes\x20release\x20but\x20no\x20predicate\x20can\x20constrain\x20the\x20destination).\x20Recipient\x20'+(c??'(unset)')+'\x20')+('!=\x20sender\x20'+d+';\x20the\x20call\x20will\x20abort\x20with\x20EEXTERNAL_RECIPIENT_NOT_SIGNER\x20(treasury\x20code\x2010).'),'affected_stakeholders':['owner','external_operator'],'scenario':'Guard-driven\x20withdraw\x20to\x20an\x20address\x20other\x20than\x20the\x20signer','mitigation':'Set\x20recipient\x20to\x20the\x20sender\x20address,\x20or\x20use\x20the\x20permissioned\x20withdraw\x20(amount.fixed,\x20index\x20254)\x20to\x20pay\x20another\x20address.','evidence':'guard='+b+',\x20recipient='+(c??'?')+',\x20sender='+d};}return{'id':'R-T-2-04','level':'MEDIUM','category':'semantic','title':'external_withdraw\x20pays\x20only\x20the\x20transaction\x20sender','description':'external_withdraw\x20via\x20guard\x20'+b+'\x20releases\x20funds\x20only\x20to\x20the\x20transaction\x20sender\x20(Move\x20truth,\x20'+'treasury.move,\x20code\x2010).\x20The\x20sender\x20is\x20not\x20known\x20in\x20this\x20analysis,\x20so\x20verify\x20recipient\x20==\x20sender\x20before\x20executing.','affected_stakeholders':['owner','external_operator'],'scenario':'Guard-driven\x20withdraw\x20planned\x20before\x20the\x20signer\x20is\x20resolved','mitigation':'Ensure\x20recipient\x20equals\x20the\x20sender,\x20or\x20use\x20the\x20permissioned\x20withdraw\x20(amount.fixed)\x20for\x20a\x20different\x20destination.','evidence':'guard='+b+',\x20recipient='+(c??'?')};}},R_T_3_01={'id':'R-T-3-01','category':'authority','trigger':'Same\x20address\x20holds\x20both\x20TREASURY_DEPOSIT\x20(252)\x20and\x20TREASURY_WITHDRAW\x20(254)','check':a=>{if(!a['current_permission_indexes_granted'])return null;const b=a['current_permission_indexes_granted']['includes'](0xfc),c=a['current_permission_indexes_granted']['includes'](0xfe);if(b&&c)return{'id':'R-T-3-01','level':'MEDIUM','category':'authority','title':'Deposit\x20and\x20withdraw\x20permissions\x20both\x20present\x20(review\x20separation)','description':'Both\x20TREASURY_DEPOSIT\x20(252)\x20and\x20TREASURY_WITHDRAW\x20(254)\x20are\x20granted.\x20Verify\x20they\x20are\x20assigned\x20to\x20different\x20entities\x20to\x20enforce\x20separation\x20of\x20duties.','affected_stakeholders':['owner','depositor','withdrawer'],'scenario':'Single\x20role\x20can\x20both\x20add\x20and\x20remove\x20funds','mitigation':'Assign\x20252\x20to\x20depositor\x20role,\x20254\x20to\x20withdrawer\x20role;\x20use\x20separate\x20Permission\x20objects\x20if\x20needed','evidence':'has_252=true,\x20has_254=true'};return null;}},R_T_3_02={'id':'R-T-3-02','category':'authority','trigger':'TREASURY_EXTERNAL_DEPOSIT_GUARD\x20(255)\x20granted\x20to\x20non-owner\x20(admin-level\x20risk)','check':a=>{if(!a['current_permission_indexes_granted']?.['includes'](0xff))return null;return{'id':'R-T-3-02','level':'MEDIUM','category':'authority','title':'External\x20deposit\x20guard\x20management\x20permission\x20granted','description':'TREASURY_EXTERNAL_DEPOSIT_GUARD\x20(255)\x20is\x20granted.\x20Managing\x20external_deposit_guard\x20list\x20controls\x20who\x20can\x20externally\x20deposit.\x20Verify\x20assignment\x20scope.','affected_stakeholders':['owner','admin'],'scenario':'Guard\x20management\x20delegated\x20to\x20operator','mitigation':'Restrict\x20255\x20to\x20owner/admin\x20only;\x20guard\x20list\x20changes\x20affect\x20external\x20access\x20policy','evidence':'has_perm_255=true'};}},R_T_3_03={'id':'R-T-3-03','category':'authority','trigger':'TREASURY_EXTERNAL_WITHDRAW_GUARD\x20(256)\x20granted\x20—\x20high-impact\x20permission','check':a=>{if(!a['current_permission_indexes_granted']?.['includes'](0x100))return null;return{'id':'R-T-3-03','level':'HIGH','category':'authority','title':'External\x20withdraw\x20guard\x20management\x20permission\x20granted','description':'TREASURY_EXTERNAL_WITHDRAW_GUARD\x20(256)\x20is\x20granted.\x20Managing\x20external_withdraw_guard\x20list\x20controls\x20who\x20can\x20externally\x20withdraw\x20(irreversible).\x20Tightly\x20restrict.','affected_stakeholders':['owner','withdrawer'],'scenario':'External\x20withdraw\x20guard\x20management\x20delegated','mitigation':'Restrict\x20256\x20to\x20owner\x20only;\x20consider\x20multi-sig\x20for\x20production\x20Treasury','evidence':'has_perm_256=true'};}},R_T_4_01={'id':'R-T-4-01','category':'lifecycle','trigger':'Internal\x20withdraw\x20(fixed\x20amount)\x20—\x20irreversible\x20fund\x20operation','check':a=>{if(!a['withdraw']?.['amount_fixed'])return null;return{'id':'R-T-4-01','level':'CRITICAL','category':'lifecycle','title':'Internal\x20withdraw\x20is\x20irreversible','description':'Fixed\x20withdraw\x20of\x20'+a['withdraw']['amount_fixed']+'\x20to\x20'+(a['withdraw']['recipient']??'recipient')+'.\x20Once\x20executed,\x20funds\x20cannot\x20be\x20recovered\x20without\x20recipient\x20cooperation.','affected_stakeholders':['owner','withdrawer'],'scenario':'Permission-authorized\x20withdraw\x20(254)','mitigation':'1)\x20Verify\x20recipient\x20address\x20twice.\x202)\x20Confirm\x20amount.\x203)\x20Check\x20balance\x20sufficiency.\x204)\x20Record\x20Payment\x20object\x20for\x20audit.','evidence':'amount='+a['withdraw']['amount_fixed']+',\x20recipient='+(a['withdraw']['recipient']??'?')};}},R_T_4_02={'id':'R-T-4-02','category':'lifecycle','trigger':'External\x20withdraw\x20(via\x20guard)\x20—\x20irreversible\x20fund\x20operation','check':a=>{if(!a['withdraw']?.['amount_by_external_withdraw_guard'])return null;return{'id':'R-T-4-02','level':'CRITICAL','category':'lifecycle','title':'External\x20withdraw\x20is\x20irreversible','description':'External\x20withdraw\x20via\x20guard\x20'+a['withdraw']['amount_by_external_withdraw_guard']+'\x20to\x20'+(a['withdraw']['recipient']??'recipient')+'.\x20'+'Amount\x20is\x20determined\x20by\x20the\x20Guard\x20table\x20identifier;\x20the\x20guard\x20only\x20authorizes\x20release\x20and\x20cannot\x20constrain\x20the\x20destination.\x20'+'Move\x20truth:\x20external_withdraw\x20pays\x20only\x20the\x20transaction\x20sender\x20(abort\x20code\x2010);\x20paying\x20another\x20address\x20requires\x20the\x20permissioned\x20withdraw\x20(amount.fixed,\x20index\x20254).','affected_stakeholders':['owner','external_operator','withdrawer'],'scenario':'Guard-authorized\x20external\x20withdraw','mitigation':'1)\x20Verify\x20Guard\x20rules\x20match\x20business\x20intent.\x202)\x20Ensure\x20recipient\x20==\x20transaction\x20sender\x20(or\x20switch\x20to\x20the\x20permissioned\x20fixed\x20withdraw\x20to\x20pay\x20someone\x20else).\x203)\x20Ensure\x20the\x20Guard\x20identifier\x20points\x20to\x20the\x20correct\x20amount\x20field.\x204)\x20Test\x20on\x20testnet\x20first.','evidence':'guard='+a['withdraw']['amount_by_external_withdraw_guard']+',\x20recipient='+(a['withdraw']['recipient']??'?')};}},R_T_4_03={'id':'R-T-4-03','category':'lifecycle','trigger':'UM\x20set\x20or\x20revoked\x20—\x20object-linker\x20core\x20binding\x20change','check':a=>{if(a['um']===undefined)return null;if(a['um']===null)return{'id':'R-T-4-03','level':'LOW','category':'lifecycle','title':'UM\x20revocation','description':'Revoking\x20UM\x20disaffiliates\x20Contact\x20from\x20Treasury\x20via\x20object_linker::disaffiliation_core.\x20Existing\x20contact\x20bindings\x20become\x20orphaned.','affected_stakeholders':['owner'],'scenario':'Owner\x20revokes\x20UM\x20(um_none)','mitigation':'Verify\x20no\x20active\x20business\x20process\x20depends\x20on\x20UM\x20before\x20revoking','evidence':'um=null'};return{'id':'R-T-4-03','level':'LOW','category':'lifecycle','title':'UM\x20delegation','description':'Setting\x20UM\x20to\x20'+a['um']+'.\x20UM\x20(Contact\x20object)\x20gains\x20binding\x20with\x20Treasury\x20via\x20object_linker::affiliation_core.','affected_stakeholders':['owner'],'scenario':'Owner\x20delegates\x20UM\x20(um_set)','mitigation':'Verify\x20UM\x20address\x20is\x20a\x20valid\x20Contact\x20object\x20(not\x20a\x20user\x20wallet)','evidence':'um='+a['um']};}},R_T_4_04={'id':'R-T-4-04','category':'lifecycle','trigger':'Mounting\x20an\x20external\x20deposit/withdraw\x20Guard\x20(add/set)\x20—\x20the\x20Guard\x20becomes\x20a\x20real\x20fund\x20gate;\x20owner\x20due\x20diligence\x20before\x20it\x20goes\x20live','check':a=>{const b=a['external_withdraw_guard'],c=a['external_deposit_guard'],d=b&&(b['op']==='add'||b['op']==='set')?b:null,e=c&&(c['op']==='add'||c['op']==='set')?c:null;if(!d&&!e)return null;if(d){const g=d['guards']['map'](h=>h['guard'])['join'](',\x20');return{'id':'R-T-4-04','level':'MEDIUM','category':'lifecycle','title':'Mounting\x20external\x20withdraw\x20Guards\x20—\x20verify\x20the\x20release\x20gate\x20before\x20going\x20live','description':'Each\x20mounted\x20Guard\x20('+g+')\x20becomes\x20a\x20permission-free\x20release\x20gate\x20on\x20external_withdraw:\x20any\x20external\x20party\x20'+'whose\x20transaction\x20makes\x20the\x20Guard\x20predicate\x20pass\x20can\x20trigger\x20fund\x20release,\x20with\x20no\x20Treasury\x20Permission\x20involved.\x20'+'The\x20withdraw\x20amount\x20is\x20read\x20from\x20the\x20Guard\x20table\x20at\x20the\x20identifier\x20slot\x20—\x20verify\x20the\x20Guard\x20predicate\x20constrains\x20that\x20slot.\x20'+'Move\x20truth:\x20the\x20destination\x20is\x20forced\x20to\x20the\x20transaction\x20sender\x20(abort\x20code\x2010\x20on\x20mismatch),\x20so\x20this\x20gate\x20cannot\x20pay\x20a\x20third\x20party;\x20'+'paying\x20staff\x20or\x20another\x20address\x20must\x20use\x20the\x20permissioned\x20withdraw\x20(amount.fixed,\x20index\x20254).','affected_stakeholders':['owner','external_operator'],'scenario':'Owner\x20mounts\x20external\x20withdraw\x20Guards\x20during\x20Treasury\x20configuration','mitigation':'1)\x20Review\x20the\x20full\x20Guard\x20definition\x20(root\x20and\x20table)\x20and\x20confirm\x20the\x20predicate\x20matches\x20the\x20intended\x20release\x20policy.\x20'+'2)\x20Confirm\x20every\x20mounted\x20entry\x20has\x20the\x20correct\x20identifier\x20for\x20the\x20amount\x20slot.\x20'+'3)\x20Regress\x20on\x20testnet:\x20a\x20recipient\x20other\x20than\x20the\x20sender\x20must\x20abort\x20with\x20code\x2010;\x20a\x20sender\x20self-pull\x20must\x20succeed.\x20'+'4)\x20Keep\x20permission\x20256\x20owner-only.','evidence':'mount=withdraw,\x20guards=['+g+']'};}const f=e['guards']['map'](h=>h['guard'])['join'](',\x20');return{'id':'R-T-4-04','level':'LOW','category':'lifecycle','title':'Mounting\x20external\x20deposit\x20Guards\x20—\x20the\x20Guard\x20becomes\x20a\x20permission-free\x20deposit\x20gate','description':'Each\x20mounted\x20Guard\x20('+f+')\x20becomes\x20a\x20permission-free\x20gate\x20on\x20external_deposit:\x20any\x20external\x20party\x20whose\x20transaction\x20'+'makes\x20the\x20Guard\x20predicate\x20pass\x20can\x20deposit\x20without\x20a\x20Treasury\x20Permission.\x20The\x20deposited\x20Coin\x20is\x20a\x20transaction\x20argument,\x20so\x20value\x20'+'can\x20only\x20come\x20from\x20the\x20transaction\x20sender\x20—\x20the\x20flow\x20direction\x20is\x20safe;\x20store_from_id,\x20when\x20set,\x20only\x20resolves\x20an\x20address\x20for\x20record-keeping.','affected_stakeholders':['owner','external_operator'],'scenario':'Owner\x20mounts\x20external\x20deposit\x20Guards\x20during\x20Treasury\x20configuration','mitigation':'1)\x20Review\x20the\x20Guard\x20definition\x20and\x20confirm\x20the\x20predicate\x20matches\x20the\x20intended\x20deposit\x20policy.\x20'+'2)\x20Confirm\x20store_from_id\x20is\x20used\x20for\x20record-keeping\x20only,\x20not\x20as\x20a\x20destination.\x20'+'3)\x20Regress\x20on\x20testnet\x20first.','evidence':'mount=deposit,\x20guards=['+f+']'};}},R_T_5_01={'id':'R-T-5-01','category':'cross_object','trigger':'Treasury\x20shared\x20with\x20Service\x20via\x20common\x20Permission\x20—\x20verify\x20alignment','check':a=>{if(!a['shared_with_service'])return null;return{'id':'R-T-5-01','level':'MEDIUM','category':'cross_object','title':'Treasury-Service\x20Permission\x20sharing\x20—\x20verify\x20index\x20alignment','description':'Treasury\x20and\x20Service\x20share\x20a\x20Permission\x20object.\x20Ensure\x20Treasury\x20indexes\x20(250-258)\x20and\x20Service\x20indexes\x20(300-320)\x20are\x20assigned\x20to\x20intended\x20entities;\x20cross-object\x20admin\x20changes\x20affect\x20both.','affected_stakeholders':['owner','admin'],'scenario':'Single\x20Permission\x20for\x20both\x20Treasury\x20and\x20Service','mitigation':'Document\x20which\x20entities\x20hold\x20which\x20indexes\x20across\x20both\x20objects;\x20review\x20admin\x20list\x20changes\x20for\x20cross-impact','evidence':'shared_with_service=true'};}},R_T_5_02={'id':'R-T-5-02','category':'cross_object','trigger':'Treasury\x20referenced\x20by\x20Allocator/Arbitration\x20—\x20receive\x20(253)\x20must\x20be\x20granted','check':a=>{if(!a['shared_with_allocator']&&!a['shared_with_arbitration'])return null;const b=a['current_permission_indexes_granted']?.['includes'](0xfd);if(!b)return{'id':'R-T-5-02','level':'HIGH','category':'cross_object','title':'Treasury\x20referenced\x20by\x20Allocator/Arbitration\x20but\x20TREASURY_RECEIVE\x20(253)\x20not\x20granted','description':'Allocator/Arbitration\x20will\x20send\x20CoinWrapper/Payment\x20to\x20Treasury,\x20but\x20no\x20entity\x20has\x20TREASURY_RECEIVE\x20(253)\x20to\x20call\x20treasury::receive\x20and\x20convert\x20to\x20balance.\x20Funds\x20will\x20accumulate\x20as\x20received\x20objects\x20without\x20entering\x20balance.','affected_stakeholders':['owner','system'],'scenario':'Revenue\x20collection\x20setup\x20without\x20receive\x20permission','mitigation':'Grant\x20TREASURY_RECEIVE\x20(253)\x20to\x20a\x20trusted\x20operator\x20(or\x20owner)\x20who\x20will\x20regularly\x20call\x20receive\x20to\x20convert\x20CoinWrapper\x20to\x20balance','evidence':'shared_allocator='+a['shared_with_allocator']+',\x20shared_arbitration='+a['shared_with_arbitration']+',\x20has_253=false'};return null;}},R_T_0_01={'id':'R-T-0-01','category':'structural','trigger':'Permission\x20index\x20in\x20259-260\x20range\x20detected\x20(regression\x20check\x20for\x20R-T-01)','check':a=>{if(!a['current_permission_indexes_granted'])return null;const b=a['current_permission_indexes_granted']['filter'](c=>c===0x103||c===0x104);if(b['length']>0x0)return{'id':'R-T-0-01','level':'CRITICAL','category':'structural','title':'Stale\x20Treasury\x20permission\x20index\x20259/260\x20detected\x20(R-T-01\x20regression)','description':'Permission\x20indexes\x20259/260\x20are\x20no\x20longer\x20valid\x20Treasury\x20indexes\x20(SDK\x20fixed\x20to\x20use\x20255-258\x20matching\x20Move).\x20Found:\x20'+b['join'](',\x20'),'affected_stakeholders':['owner','admin','system'],'scenario':'SDK\x20regression\x20reintroducing\x20off-by-2\x20divergence','mitigation':'Use\x20canonical\x20indexes:\x20255=EXTERNAL_DEPOSIT_GUARD,\x20256=EXTERNAL_WITHDRAW_GUARD,\x20257=OWNER_RECEIVE,\x20258=UM','evidence':'stale_indexes='+b['join'](',')};return null;}},ALL_RULES=[R_T_1_01,R_T_1_02,R_T_1_03,R_T_1_04,R_T_2_01,R_T_2_02,R_T_2_03,R_T_2_04,R_T_3_01,R_T_3_02,R_T_3_03,R_T_4_01,R_T_4_02,R_T_4_03,R_T_4_04,R_T_5_01,R_T_5_02,R_T_0_01];export const TREASURY_RISK_VERSION='1.2.0';export function getAllTreasuryRiskRules(){return[...ALL_RULES];}export function assessTreasuryRisks(a){const b=[];for(const f of ALL_RULES){const g=f['check'](a);if(g)b['push'](g);}const c=b['length']===0x0?'LOW':b['some'](h=>h['level']==='CRITICAL')?'CRITICAL':b['some'](h=>h['level']==='HIGH')?'HIGH':b['some'](h=>h['level']==='MEDIUM')?'MEDIUM':'LOW',d={};for(const h of b){d[h['category']]=(d[h['category']]??0x0)+0x1;}const e={};for(const i of b){for(const j of i['affected_stakeholders']){if(!e[j])e[j]=[];e[j]['push'](i['id']+':\x20'+i['mitigation']);}}return{'summary':'Assessed\x20'+b['length']+'\x20risk(s)\x20across\x20'+Object['keys'](d)['length']+'\x20categories','risks':b,'overall_risk':c,'risks_by_category':d,'stakeholder_advice':e,'needs_human_review':b['some'](k=>k['level']==='CRITICAL'||k['level']==='HIGH')};}
|
|
1
|
+
import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook}from'../config/rule-engine.js';import{MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,MAX_DESCRIPTION_LENGTH}from'./treasury-puzzle.js';export function treasuryRiskFacts(a){const b=a['external_deposit_guard'],c=a['external_withdraw_guard'],d=!!b&&b['op']==='add',e=!!c&&c['op']==='add',f=!!b&&(b['op']==='add'||b['op']==='set'),h=!!c&&(c['op']==='add'||c['op']==='set'),i=d?b['guards']['length']:undefined,j=d?a['current_external_deposit_guard_count']??0x0:undefined,k=e?c['guards']['length']:undefined,l=e?a['current_external_withdraw_guard_count']??0x0:undefined;let m;if(h)for(const C of c['guards']){if(C['identifier']===undefined||C['identifier']===null){m=C['guard'];break;}}const n=a['deposit']?.['by_external_deposit_guard'],o=n?n:undefined,p=o!==undefined&&(a['current_external_deposit_guard_count']??0x0)===0x0,q=a['deposit']?.['coin_balance'],r=a['withdraw'],s=r?.['amount_by_external_withdraw_guard'],t=s?s:undefined,u=r?.['recipient'],v=a['sender_address'],w=!!v,x=!!u&&!!v&&u['toLowerCase']()===v['toLowerCase'](),y=h?c['guards']['map'](D=>D['guard'])['join'](',\x20'):undefined,z=f?b['guards']['map'](D=>D['guard'])['join'](',\x20'):undefined,A=a['current_permission_indexes_granted'],B=A?A['filter'](D=>D===0x103||D===0x104):undefined;return{'description_length':a['description']?.['length'],'max_description_length':MAX_DESCRIPTION_LENGTH,'description_over_limit':a['description']!==undefined&&a['description']['length']>MAX_DESCRIPTION_LENGTH,'external_deposit_guard_adding':i,'external_deposit_guard_current':j,'max_external_deposit_guard_count':MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,'external_deposit_guard_over_limit':i!==undefined&&j!==undefined&&j+i>MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,'external_withdraw_guard_adding':k,'external_withdraw_guard_current':l,'max_external_withdraw_guard_count':MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,'external_withdraw_guard_over_limit':k!==undefined&&l!==undefined&&l+k>MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,'external_withdraw_missing_identifier_guard':m,'deposit_external_guard_name':o,'deposit_guard_list_empty':p,'withdraw_external_guard_name':t,'withdraw_guard_list_empty':t!==undefined&&(a['current_external_withdraw_guard_count']??0x0)===0x0,'deposit_external_and_perm_252':o!==undefined&&A?.['includes'](0xfc)===!![],'external_deposit_split_refund':o!==undefined&&!!q,'external_deposit_coin_balance':o!==undefined&&q?q:undefined,'withdraw_via_guard_present':t!==undefined,'external_withdraw_sender':v??undefined,'external_withdraw_sender_known':w,'external_withdraw_recipient':u,'external_withdraw_recipient_unset':u??'(unset)','withdraw_recipient_unknown':r?.['recipient']??'?','withdraw_recipient_word':r?.['recipient']??'recipient','external_withdraw_recipient_mismatch':t!==undefined&&w&&!x,'external_withdraw_advisory':t!==undefined&&!w,'withdraw_amount_fixed':r?.['amount_fixed'],'perm_252_and_254':A?.['includes'](0xfc)===!![]&&A?.['includes'](0xfe)===!![],'perm_has_255':A?.['includes'](0xff)===!![],'perm_has_256':A?.['includes'](0x100)===!![],'um_present':a['um']!==undefined,'um_is_null':a['um']===null,'um_value':a['um']===undefined?undefined:a['um'],'external_withdraw_guard_mounted':h,'external_deposit_guard_mounted':f,'withdraw_mount_guards':y,'deposit_mount_guards':z,'shared_with_service':a['shared_with_service'],'shared_allocator_display':String(a['shared_with_allocator']),'shared_arbitration_display':String(a['shared_with_arbitration']),'treasury_receive_253_missing':(!!a['shared_with_allocator']||!!a['shared_with_arbitration'])&&A?.['includes'](0xfd)!==!![],'stale_treasury_indexes':B,'stale_treasury_indexes_csv_sp':B?B['join'](',\x20'):undefined,'stale_treasury_indexes_csv':B?B['join'](','):undefined};}function treasuryRuleBook(){const a=getJudgmentDoc()['rules']['domains']['treasury'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27treasury\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToTreasuryRisk(a){return{'id':a['rule_id'],'level':a['level'],'category':a['dimension']??'structural','title':a['title'],'description':a['description'],'affected_stakeholders':a['stakeholders']??[],'scenario':a['scenario']??'','mitigation':a['mitigation']??'','evidence':a['evidence'],...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export const TREASURY_RISK_VERSION='1.2.0';export function getAllTreasuryRiskRules(){const a=factoryRulePack('treasury');if(!a)return[];return a['rules']['map'](b=>({'id':b['rule_id'],'category':b['dimension']??'structural','trigger':b['trigger']??'','check':c=>{const {findings:d}=evaluateRuleBook([b],treasuryRiskFacts(c));return d['length']>0x0?findingToTreasuryRisk(d[0x0]):null;}}));}export function assessTreasuryRisks(a){const {findings:b}=evaluateRuleBook(treasuryRuleBook(),treasuryRiskFacts(a)),c=b['map'](findingToTreasuryRisk),d=c['length']===0x0?'low':c['some'](g=>g['level']==='critical')?'critical':c['some'](g=>g['level']==='high')?'high':c['some'](g=>g['level']==='medium')?'medium':'low',e={};for(const g of c){e[g['category']]=(e[g['category']]??0x0)+0x1;}const f={};for(const h of c){for(const i of h['affected_stakeholders']){if(!f[i])f[i]=[];f[i]['push'](h['id']+':\x20'+h['mitigation']);}}return{'summary':'Assessed\x20'+c['length']+'\x20risk(s)\x20across\x20'+Object['keys'](e)['length']+'\x20categories','risks':c,'overall_risk':d,'risks_by_category':e,'stakeholder_advice':f,'needs_human_review':c['some'](j=>j['level']==='critical'||j['level']==='high')};}
|