@wowok/agent-mcp 2.7.0 → 2.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/index.js +1 -1
- package/dist/config/runtime.js +1 -238
- package/dist/customer/customer-advice.js +1 -130
- package/dist/customer/index.js +1 -11
- package/dist/customer/industry-risks.js +1 -438
- package/dist/customer/info-puzzle.js +1 -681
- package/dist/customer/order-monitor.js +1 -328
- package/dist/customer/order-strategy.js +1 -373
- package/dist/customer/post-purchase.js +1 -351
- package/dist/customer/preorder-compare.js +1 -34
- package/dist/customer/reminder-system.js +1 -316
- package/dist/customer/risk-assessment.d.ts +5 -1
- package/dist/customer/risk-assessment.js +1 -397
- package/dist/customer/types.js +1 -13
- package/dist/customer/user-preferences.js +1 -460
- package/dist/evaluation/arbitration-game.d.ts +23 -0
- package/dist/evaluation/arbitration-game.js +1 -0
- package/dist/evaluation/builtins/demand-match.d.ts +15 -0
- package/dist/evaluation/builtins/demand-match.js +1 -0
- package/dist/evaluation/builtins/index.d.ts +3 -0
- package/dist/evaluation/builtins/index.js +1 -0
- package/dist/evaluation/builtins/service-risk.d.ts +6 -0
- package/dist/evaluation/builtins/service-risk.js +1 -0
- package/dist/evaluation/capability.d.ts +50 -0
- package/dist/evaluation/capability.js +1 -0
- package/dist/evaluation/composer.d.ts +13 -0
- package/dist/evaluation/composer.js +1 -0
- package/dist/evaluation/engine.d.ts +18 -0
- package/dist/evaluation/engine.js +1 -0
- package/dist/evaluation/extract.d.ts +30 -0
- package/dist/evaluation/extract.js +1 -0
- package/dist/evaluation/game-strategy.d.ts +27 -0
- package/dist/evaluation/game-strategy.js +1 -0
- package/dist/evaluation/gap.d.ts +2 -0
- package/dist/evaluation/gap.js +1 -0
- package/dist/evaluation/index.d.ts +12 -0
- package/dist/evaluation/index.js +1 -0
- package/dist/evaluation/node-game.d.ts +62 -0
- package/dist/evaluation/node-game.js +1 -0
- package/dist/evaluation/region.d.ts +10 -0
- package/dist/evaluation/region.js +1 -0
- package/dist/evaluation/types.d.ts +77 -0
- package/dist/evaluation/types.js +1 -0
- package/dist/evaluation/user-injection.d.ts +6 -0
- package/dist/evaluation/user-injection.js +1 -0
- package/dist/examples/education-contact-create.json +40 -0
- package/dist/examples/freelance-contact-create.json +40 -0
- package/dist/examples/insurance-machine-create.json +1 -1
- package/dist/examples/insurance-service-allocators.json +1 -1
- package/dist/examples/machine-publish.json +1 -1
- package/dist/examples/rental-ziroom-service-create.json +1 -1
- package/dist/examples/retail-adv-guard-messenger-proof-create.json +1 -1
- package/dist/examples/retail-myshop-service-create.json +1 -1
- package/dist/examples/retail-myshop-service-customer-required.json +1 -1
- package/dist/examples/subscription-contact-create.json +40 -0
- package/dist/examples/threebody-machine-create.json +1 -1
- package/dist/examples/travel-machine-create.json +1 -1
- package/dist/examples/travel-service-create.json +1 -1
- package/dist/experience/experience-reuse.js +1 -103
- package/dist/experience/index.js +1 -5
- package/dist/experience/intent-distill.js +1 -83
- package/dist/experience/realtime-feedback.js +1 -94
- package/dist/experience/types.js +1 -1
- package/dist/experience/user-profile.js +1 -171
- package/dist/extensions/business-modules.js +1 -287
- package/dist/extensions/capability-manifest.js +1 -781
- package/dist/extensions/constraint-registry.js +1 -198
- package/dist/extensions/index.js +1 -6
- package/dist/extensions/metric-registry.js +1 -257
- package/dist/extensions/mode-evaluator.js +1 -170
- package/dist/extensions/modes.js +1 -499
- package/dist/extensions/registry.js +1 -717
- package/dist/extensions/types.js +1 -1
- package/dist/harness/auto-escalation.js +1 -68
- package/dist/harness/checkpoint.js +1 -129
- package/dist/harness/index.js +1 -78
- package/dist/harness/plan.js +1 -276
- package/dist/harness/recover.js +1 -139
- package/dist/harness/types.js +1 -1
- package/dist/harness/verify.js +1 -237
- package/dist/index.js +1 -273
- package/dist/intent/enrich.d.ts +1 -0
- package/dist/intent/enrich.js +1 -0
- package/dist/intent/index.d.ts +23 -0
- package/dist/intent/index.js +1 -0
- package/dist/intent/matcher.d.ts +2 -0
- package/dist/intent/matcher.js +1 -0
- package/dist/intent/store.d.ts +19 -0
- package/dist/intent/store.js +1 -0
- package/dist/intent/types.d.ts +33 -0
- package/dist/intent/types.js +1 -0
- package/dist/knowledge/acquisition-flywheel.js +1 -192
- package/dist/knowledge/allocation-confirm.js +1 -534
- package/dist/knowledge/allocation-context.js +1 -249
- package/dist/knowledge/allocation-ledger.js +1 -463
- package/dist/knowledge/allocation-puzzle.js +1 -298
- package/dist/knowledge/allocation-risk.js +1 -568
- package/dist/knowledge/allocation-templates.js +1 -970
- package/dist/knowledge/allocation-translation.js +1 -585
- package/dist/knowledge/arb-risk.js +1 -210
- package/dist/knowledge/arbitration-confirm.js +1 -559
- package/dist/knowledge/arbitration-context.js +1 -505
- package/dist/knowledge/arbitration-ledger.js +1 -521
- package/dist/knowledge/arbitration-puzzle.js +1 -304
- package/dist/knowledge/arbitration-risk.js +1 -433
- package/dist/knowledge/arbitration-templates.js +1 -276
- package/dist/knowledge/arbitration-translation.js +1 -487
- package/dist/knowledge/arbitration-trust.js +1 -117
- package/dist/knowledge/audit-rules.js +1 -141
- package/dist/knowledge/bridge-risk.js +1 -263
- package/dist/knowledge/contact-risk.js +1 -200
- package/dist/knowledge/contact-templates.d.ts +27 -0
- package/dist/knowledge/contact-templates.js +1 -0
- package/dist/knowledge/demand-confirm.js +1 -206
- package/dist/knowledge/demand-matching.js +1 -132
- package/dist/knowledge/demand-risk.js +1 -240
- package/dist/knowledge/demand-translation.js +1 -354
- package/dist/knowledge/deployment-scanner.js +1 -823
- package/dist/knowledge/dynamic-pricing.js +1 -87
- package/dist/knowledge/examples-scanner-cli.js +1 -26
- package/dist/knowledge/examples-scanner.js +1 -825
- package/dist/knowledge/flywheel-loop.js +1 -404
- package/dist/knowledge/fund-layer.js +1 -973
- package/dist/knowledge/glossary.js +1 -211
- package/dist/knowledge/guard-confirm.js +1 -406
- package/dist/knowledge/guard-context.js +1 -287
- package/dist/knowledge/guard-design-patterns.js +1 -360
- package/dist/knowledge/guard-ledger.js +1 -260
- package/dist/knowledge/guard-lint.js +1 -670
- package/dist/knowledge/guard-migration.js +1 -228
- package/dist/knowledge/guard-puzzle.js +1 -805
- package/dist/knowledge/guard-render.js +1 -700
- package/dist/knowledge/guard-risk.js +1 -1879
- package/dist/knowledge/guard-submission-prompt.js +1 -171
- package/dist/knowledge/guard-templates.js +1 -1105
- package/dist/knowledge/guard-translation.js +1 -1119
- package/dist/knowledge/index.js +1 -436
- package/dist/knowledge/industry-evolution.js +1 -323
- package/dist/knowledge/industry-generalizer.js +1 -381
- package/dist/knowledge/industry-registry.js +1 -174
- package/dist/knowledge/intent-metrics.d.ts +4 -3
- package/dist/knowledge/intent-metrics.js +1 -566
- package/dist/knowledge/machine-confirm.js +1 -559
- package/dist/knowledge/machine-context.js +1 -833
- package/dist/knowledge/machine-ledger.js +1 -338
- package/dist/knowledge/machine-puzzle.js +1 -494
- package/dist/knowledge/machine-render.js +1 -565
- package/dist/knowledge/machine-risk.js +1 -670
- package/dist/knowledge/machine-templates.js +1 -1597
- package/dist/knowledge/machine-topology.js +1 -234
- package/dist/knowledge/machine-translation.js +1 -513
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -45
- package/dist/knowledge/mcp-schema-audit.d.ts +1 -1
- package/dist/knowledge/mcp-schema-audit.js +1 -773
- package/dist/knowledge/onchain-constants.js +1 -35
- package/dist/knowledge/order-confirm.js +1 -573
- package/dist/knowledge/order-context.js +1 -390
- package/dist/knowledge/order-ledger.js +1 -341
- package/dist/knowledge/order-puzzle.js +1 -255
- package/dist/knowledge/order-risk.js +1 -653
- package/dist/knowledge/order-templates.js +1 -368
- package/dist/knowledge/order-translation.js +1 -550
- package/dist/knowledge/overrides-loader.js +1 -65
- package/dist/knowledge/passport-confirm.js +1 -531
- package/dist/knowledge/passport-context.js +1 -306
- package/dist/knowledge/passport-ledger.js +1 -282
- package/dist/knowledge/passport-puzzle.js +1 -333
- package/dist/knowledge/passport-risk.js +1 -450
- package/dist/knowledge/passport-templates.js +1 -568
- package/dist/knowledge/passport-translation.js +1 -516
- package/dist/knowledge/payment-risk.js +1 -249
- package/dist/knowledge/permission-confirm.js +1 -426
- package/dist/knowledge/permission-context.js +1 -224
- package/dist/knowledge/permission-ledger.js +1 -403
- package/dist/knowledge/permission-puzzle.js +1 -173
- package/dist/knowledge/permission-risk.js +1 -411
- package/dist/knowledge/permission-templates.js +1 -234
- package/dist/knowledge/permission-translation.js +1 -350
- package/dist/knowledge/personal-risk.js +1 -212
- package/dist/knowledge/process-model.js +1 -160
- package/dist/knowledge/progress-confirm.js +1 -456
- package/dist/knowledge/progress-context.js +1 -452
- package/dist/knowledge/progress-ledger.js +1 -330
- package/dist/knowledge/progress-puzzle.js +1 -219
- package/dist/knowledge/progress-risk.js +1 -461
- package/dist/knowledge/progress-templates.js +1 -228
- package/dist/knowledge/progress-translation.js +1 -405
- package/dist/knowledge/proof-confirm.js +1 -187
- package/dist/knowledge/proof-risk.js +1 -207
- package/dist/knowledge/proof-translation.js +1 -283
- package/dist/knowledge/registrar-risk.js +1 -217
- package/dist/knowledge/repository-confirm.js +1 -286
- package/dist/knowledge/repository-risk.js +1 -373
- package/dist/knowledge/repository-translation.js +1 -445
- package/dist/knowledge/reputation-rules.js +1 -99
- package/dist/knowledge/resource-risk.js +1 -157
- package/dist/knowledge/reward-confirm.js +1 -526
- package/dist/knowledge/reward-context.js +1 -504
- package/dist/knowledge/reward-ledger.js +1 -502
- package/dist/knowledge/reward-puzzle.js +1 -300
- package/dist/knowledge/reward-risk.js +1 -627
- package/dist/knowledge/reward-templates.js +1 -197
- package/dist/knowledge/reward-translation.js +1 -501
- package/dist/knowledge/safety-rules.js +1 -404
- package/dist/knowledge/scenario-modes.js +1 -321
- package/dist/knowledge/service-confirm.js +1 -807
- package/dist/knowledge/service-context.js +1 -403
- package/dist/knowledge/service-ledger.js +1 -609
- package/dist/knowledge/service-puzzle.js +1 -236
- package/dist/knowledge/service-risk.js +1 -615
- package/dist/knowledge/service-templates.js +1 -456
- package/dist/knowledge/service-translation.js +1 -622
- package/dist/knowledge/template-registry.d.ts +1 -1
- package/dist/knowledge/template-registry.js +1 -341
- package/dist/knowledge/tool-constraints.js +1 -195
- package/dist/knowledge/tools-reference.js +1 -155
- package/dist/knowledge/treasury-confirm.js +1 -512
- package/dist/knowledge/treasury-context.js +1 -363
- package/dist/knowledge/treasury-ledger.js +1 -300
- package/dist/knowledge/treasury-puzzle.js +1 -216
- package/dist/knowledge/treasury-risk.js +1 -440
- package/dist/knowledge/treasury-templates.js +1 -358
- package/dist/knowledge/treasury-translation.js +1 -498
- package/dist/knowledge/trust-metrics.js +1 -198
- package/dist/knowledge/util-risk.js +1 -135
- package/dist/loop-engineering/aggregate.js +1 -132
- package/dist/loop-engineering/context-collect.js +1 -83
- package/dist/loop-engineering/diagnose.js +1 -273
- package/dist/loop-engineering/improve.js +1 -405
- package/dist/loop-engineering/index.js +1 -4
- package/dist/loop-engineering/pipeline.js +1 -56
- package/dist/mode-market/index.js +1 -3
- package/dist/mode-market/registry.js +1 -124
- package/dist/mode-market/review.js +1 -214
- package/dist/mode-market/submission.js +1 -85
- package/dist/participation/collaborator-interest.d.ts +23 -0
- package/dist/participation/collaborator-interest.js +1 -0
- package/dist/participation/customer-interest.d.ts +25 -0
- package/dist/participation/customer-interest.js +1 -0
- package/dist/participation/merchant-interest.js +1 -100
- package/dist/participation/radar-core.d.ts +13 -3
- package/dist/participation/radar-core.js +1 -269
- package/dist/participation/supplier-interest.d.ts +25 -0
- package/dist/participation/supplier-interest.js +1 -0
- package/dist/persona/analyzer.d.ts +16 -0
- package/dist/persona/analyzer.js +1 -0
- package/dist/persona/bridge.d.ts +5 -0
- package/dist/persona/bridge.js +1 -0
- package/dist/persona/defaults.d.ts +4 -0
- package/dist/persona/defaults.js +1 -0
- package/dist/persona/experience-bridge.d.ts +3 -0
- package/dist/persona/experience-bridge.js +1 -0
- package/dist/persona/index.d.ts +18 -0
- package/dist/persona/index.js +1 -0
- package/dist/persona/model.d.ts +7 -0
- package/dist/persona/model.js +1 -0
- package/dist/persona/store.d.ts +19 -0
- package/dist/persona/store.js +1 -0
- package/dist/persona/types.d.ts +45 -0
- package/dist/persona/types.js +1 -0
- package/dist/project/business-puzzle.js +1 -383
- package/dist/project/context-assembly.js +1 -254
- package/dist/project/deployment-bridge.js +1 -120
- package/dist/project/deployment-doc.js +1 -1126
- package/dist/project/edit-planner.js +1 -1342
- package/dist/project/evaluation.js +1 -2011
- package/dist/project/game-theory.js +1 -177
- package/dist/project/graph-builder.js +1 -656
- package/dist/project/graph.js +1 -340
- package/dist/project/handlers.d.ts +5 -0
- package/dist/project/handlers.js +1 -1762
- package/dist/project/index.d.ts +1 -0
- package/dist/project/index.js +1 -301
- package/dist/project/intent-analyzer.js +1 -149
- package/dist/project/machine-nodes.js +1 -36
- package/dist/project/merchant-guide.js +1 -264
- package/dist/project/migration.js +1 -125
- package/dist/project/mode-actions.js +1 -309
- package/dist/project/namespace.js +1 -206
- package/dist/project/participation-radar.js +1 -428
- package/dist/project/pipeline-actions.js +1 -109
- package/dist/project/project-store.js +1 -422
- package/dist/project/query.js +1 -153
- package/dist/project/reverse-mapping.d.ts +34 -0
- package/dist/project/reverse-mapping.js +1 -0
- package/dist/project/risk-aggregator.js +1 -295
- package/dist/project/rollback-policy.js +1 -290
- package/dist/project/semantic-assembler.js +1 -345
- package/dist/project/semantic-graph.js +1 -245
- package/dist/project/stage-gate.js +1 -369
- package/dist/project/substep-trace.js +1 -332
- package/dist/project/task-tracker.js +1 -78
- package/dist/role/derivation.d.ts +18 -0
- package/dist/role/derivation.js +1 -0
- package/dist/role/index.d.ts +5 -0
- package/dist/role/index.js +1 -0
- package/dist/role/model.d.ts +8 -0
- package/dist/role/model.js +1 -0
- package/dist/role/resolution.d.ts +11 -0
- package/dist/role/resolution.js +1 -0
- package/dist/role/types.d.ts +11 -0
- package/dist/role/types.js +1 -0
- package/dist/rules.d.ts +2 -0
- package/dist/rules.js +1 -9
- package/dist/safety/confirm-gate.js +1 -88
- package/dist/safety/index.js +1 -3
- package/dist/safety/preview.js +1 -52
- package/dist/schema/call/allocation.js +1 -34
- package/dist/schema/call/arbitration.js +1 -113
- package/dist/schema/call/base.d.ts +15 -15
- package/dist/schema/call/base.js +1 -370
- package/dist/schema/call/bridge-handler.js +1 -265
- package/dist/schema/call/bridge.d.ts +7 -7
- package/dist/schema/call/bridge.js +1 -458
- package/dist/schema/call/contact.js +1 -37
- package/dist/schema/call/demand.js +1 -47
- package/dist/schema/call/guard.js +1 -161
- package/dist/schema/call/handler.js +1 -322
- package/dist/schema/call/index.js +1 -20
- package/dist/schema/call/machine.js +1 -193
- package/dist/schema/call/order.js +1 -35
- package/dist/schema/call/payment.js +1 -37
- package/dist/schema/call/permission-handler.js +1 -54
- package/dist/schema/call/permission.js +1 -105
- package/dist/schema/call/personal.js +1 -78
- package/dist/schema/call/progress.js +1 -47
- package/dist/schema/call/proof.js +1 -33
- package/dist/schema/call/repository.js +1 -77
- package/dist/schema/call/reward.js +1 -30
- package/dist/schema/call/semantic.js +1 -1657
- package/dist/schema/call/service.js +1 -178
- package/dist/schema/call/treasury.js +1 -71
- package/dist/schema/common/index.js +1 -407
- package/dist/schema/config/index.js +1 -68
- package/dist/schema/evaluation/index.d.ts +4436 -0
- package/dist/schema/evaluation/index.js +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.js +1 -13
- package/dist/schema/intent-radar/index.d.ts +284 -0
- package/dist/schema/intent-radar/index.js +1 -0
- package/dist/schema/local/index.d.ts +21 -21
- package/dist/schema/local/index.js +1 -927
- package/dist/schema/local/wip.js +1 -187
- package/dist/schema/messenger/index.d.ts +7 -7
- package/dist/schema/messenger/index.js +1 -475
- package/dist/schema/operations.d.ts +7 -7
- package/dist/schema/operations.js +1 -520
- package/dist/schema/persona/index.d.ts +1985 -0
- package/dist/schema/persona/index.js +1 -0
- package/dist/schema/project/index.d.ts +96 -50
- package/dist/schema/project/index.js +1 -2057
- package/dist/schema/query/index.d.ts +423 -7
- package/dist/schema/query/index.js +1 -1640
- package/dist/schema/schema-query/index.js +1 -104
- package/dist/schema/schema-version.js +1 -76
- package/dist/schema/sync-layer4.d.ts +1 -1
- package/dist/schema/sync-layer4.js +1 -282
- package/dist/schema/task-status.d.ts +168 -0
- package/dist/schema/task-status.js +1 -0
- package/dist/schema/trust/index.js +1 -314
- package/dist/schema/utils/guard-parser.js +1 -419
- package/dist/schema/utils/guard-query-utils.js +1 -46
- package/dist/schema/utils/node-parser.js +1 -369
- package/dist/schema/utils/object-type-utils.js +1 -35
- package/dist/schema/utils/permission-index-utils.js +1 -7
- package/dist/schema/utils/permission-machine-check.js +1 -121
- package/dist/schema/utils/skills-recommendation.js +1 -77
- package/dist/schema-query/index.js +1 -810
- package/dist/schemas/account_operation.output.json +5 -2
- package/dist/schemas/bridge_operation.output.json +5 -2
- package/dist/schemas/evaluation_operation.output.json +782 -0
- package/dist/schemas/evaluation_operation.schema.json +990 -0
- package/dist/schemas/index.json +25 -1
- package/dist/schemas/intent_radar.output.json +232 -0
- package/dist/schemas/intent_radar.schema.json +138 -0
- package/dist/schemas/local_info_operation.output.json +5 -2
- package/dist/schemas/local_mark_operation.output.json +5 -2
- package/dist/schemas/messenger_operation.output.json +5 -2
- package/dist/schemas/onchain_events.output.json +5 -2
- package/dist/schemas/onchain_operations.output.json +5 -2
- package/dist/schemas/onchain_operations.schema.json +6 -6
- package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
- package/dist/schemas/onchain_operations_machine.schema.json +2 -2
- package/dist/schemas/onchain_operations_service.schema.json +3 -3
- package/dist/schemas/onchain_table_data.output.json +6 -3
- package/dist/schemas/persona_operation.output.json +392 -0
- package/dist/schemas/persona_operation.schema.json +250 -0
- package/dist/schemas/project_operation.output.json +28 -8
- package/dist/schemas/query_task_status.output.json +115 -0
- package/dist/schemas/query_task_status.schema.json +24 -0
- package/dist/schemas/query_toolkit.output.json +9 -6
- package/dist/schemas/trust_score.schema.json +1 -1
- package/dist/schemas/wowok_buildin_info.output.json +132 -0
- package/dist/schemas/wowok_buildin_info.schema.json +14 -0
- package/dist/telemetry/index.js +1 -112
- package/dist/telemetry/redact.js +1 -23
- package/dist/telemetry/storage.js +1 -80
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -74
- package/dist/tools/handlers/evaluation.d.ts +2 -0
- package/dist/tools/handlers/evaluation.js +1 -0
- package/dist/tools/handlers/file-export.js +1 -90
- package/dist/tools/handlers/intent-radar.d.ts +2 -0
- package/dist/tools/handlers/intent-radar.js +1 -0
- package/dist/tools/handlers/local.js +1 -53
- package/dist/tools/handlers/messenger.js +1 -188
- package/dist/tools/handlers/onchain.js +1 -1082
- package/dist/tools/handlers/persona.d.ts +4 -0
- package/dist/tools/handlers/persona.js +1 -0
- package/dist/tools/handlers/project.js +1 -211
- package/dist/tools/handlers/query.js +1 -434
- package/dist/tools/handlers/schema-query.js +1 -176
- package/dist/tools/handlers/task-status.d.ts +0 -168
- package/dist/tools/handlers/task-status.js +1 -55
- package/dist/tools/handlers/trust.js +1 -380
- package/dist/tools/handlers/wip.js +1 -90
- package/dist/tools/index.js +1 -1306
- package/dist/tools/retry.js +1 -85
- package/dist/tools/rules-hook.js +1 -23
- package/dist/tools/shared.js +1 -130
- package/dist/tools/types.js +1 -1
- package/dist/tools/upgrade-check.d.ts +19 -0
- package/dist/tools/upgrade-check.js +1 -0
- package/dist/tools/wip-deploy-assist.d.ts +1 -1
- package/dist/tools/wip-deploy-assist.js +1 -278
- package/dist/tools/wrap.js +1 -500
- package/package.json +5 -3
|
@@ -1,300 +1 @@
|
|
|
1
|
-
export const TREASURY_PERMISSIONS = [
|
|
2
|
-
{ index: 250, name: "TREASURY_NEW", description: "Create new Treasury", governed_operation: "treasury::new", active: true },
|
|
3
|
-
{ index: 251, name: "TREASURY_DESCRIPTION", description: "Modify Treasury description", governed_operation: "treasury::description_set", active: true },
|
|
4
|
-
{ index: 252, name: "TREASURY_DEPOSIT", description: "Internal deposit (Permission path)", governed_operation: "treasury::deposit", active: true },
|
|
5
|
-
{ index: 253, name: "TREASURY_RECEIVE", description: "Receive CoinWrapper into balance", governed_operation: "treasury::receive", active: true },
|
|
6
|
-
{ index: 254, name: "TREASURY_WITHDRAW", description: "Internal withdraw (Permission path, fixed amount)", governed_operation: "treasury::withdraw", active: true },
|
|
7
|
-
{ index: 255, name: "TREASURY_EXTERNAL_DEPOSIT_GUARD", description: "Manage external deposit Guard list (add/remove/clear)", governed_operation: "treasury::external_deposit_guard_add/remove/clear", active: true },
|
|
8
|
-
{ index: 256, name: "TREASURY_EXTERNAL_WITHDRAW_GUARD", description: "Manage external withdraw Guard list (add/remove/clear)", governed_operation: "treasury::external_withdraw_guard_add/remove/clear", active: true },
|
|
9
|
-
{ index: 257, name: "TREASURY_OWNER_RECEIVE", description: "Owner receive (unwrap received objects, send to Permission owner)", governed_operation: "treasury::owner_receive / owner_receive_object", active: true },
|
|
10
|
-
{ index: 258, name: "TREASURY_UM", description: "Set UM (User Manager = Contact object)", governed_operation: "treasury::um_set / um_none", active: true },
|
|
11
|
-
{ index: -1, name: "TREASURY_EXTERNAL_DEPOSIT_RESERVED", description: "RESERVED — external_deposit uses Guard + Passport, does NOT call permission::check", governed_operation: "treasury::external_deposit (Guard path)", active: false },
|
|
12
|
-
{ index: -1, name: "TREASURY_EXTERNAL_WITHDRAW_RESERVED", description: "RESERVED — external_withdraw uses Guard + Passport, does NOT call permission::check", governed_operation: "treasury::external_withdraw (Guard path)", active: false },
|
|
13
|
-
];
|
|
14
|
-
export const TREASURY_SCENES = [
|
|
15
|
-
{
|
|
16
|
-
id: "treasury_fund_collection",
|
|
17
|
-
name: "Team fund collection (internal deposit + receive)",
|
|
18
|
-
coin_type_category: "generic",
|
|
19
|
-
permission_index_range: "250-254",
|
|
20
|
-
builtin_indexes: TREASURY_PERMISSIONS.filter(p => [250, 251, 252, 253, 254].includes(p.index)),
|
|
21
|
-
owner_operations: ["um_set (258)", "owner_receive (257)", "permission transfer"],
|
|
22
|
-
admin_operations: ["description_set (251)"],
|
|
23
|
-
permission_index_operations: [
|
|
24
|
-
"treasury::deposit (252)",
|
|
25
|
-
"treasury::receive (253)",
|
|
26
|
-
],
|
|
27
|
-
external_operations: [],
|
|
28
|
-
guard_list_mutable_after_publish: true,
|
|
29
|
-
common_patterns: [
|
|
30
|
-
"Owner-only deposit: TREASURY_DEPOSIT (252) granted to team finance",
|
|
31
|
-
"Receive automation: TREASURY_RECEIVE (253) for CoinWrapper intake",
|
|
32
|
-
"No external Guard: all deposits via Permission path",
|
|
33
|
-
"inflow accumulates total team contributions",
|
|
34
|
-
],
|
|
35
|
-
irreversibility: {
|
|
36
|
-
deposit: "reversible",
|
|
37
|
-
withdraw: "irreversible",
|
|
38
|
-
external_deposit: "reversible",
|
|
39
|
-
external_withdraw: "irreversible",
|
|
40
|
-
owner_receive: "irreversible",
|
|
41
|
-
},
|
|
42
|
-
cross_object_collaboration: [
|
|
43
|
-
"Allocator.sharing.who=Entity → Treasury address (fund inflow)",
|
|
44
|
-
"Treasury.receive (253) converts CoinWrapper to balance",
|
|
45
|
-
],
|
|
46
|
-
recommended_templates: ["T-T-01", "T-T-06"],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: "treasury_external_ops",
|
|
50
|
-
name: "External deposit / withdraw with Guard protection",
|
|
51
|
-
coin_type_category: "generic",
|
|
52
|
-
permission_index_range: "255-256",
|
|
53
|
-
builtin_indexes: TREASURY_PERMISSIONS.filter(p => [255, 256].includes(p.index)),
|
|
54
|
-
owner_operations: ["external_deposit_guard_add/remove/clear (255)", "external_withdraw_guard_add/remove/clear (256)"],
|
|
55
|
-
admin_operations: [],
|
|
56
|
-
permission_index_operations: [
|
|
57
|
-
"treasury::external_deposit_guard_* (255)",
|
|
58
|
-
"treasury::external_withdraw_guard_* (256)",
|
|
59
|
-
],
|
|
60
|
-
external_operations: [
|
|
61
|
-
"treasury::external_deposit (Guard + Passport, no Permission)",
|
|
62
|
-
"treasury::external_withdraw (Guard + Passport, no Permission)",
|
|
63
|
-
],
|
|
64
|
-
guard_list_mutable_after_publish: true,
|
|
65
|
-
common_patterns: [
|
|
66
|
-
"Whitelist external deposit: external_deposit_guard with identifier=None",
|
|
67
|
-
"Capped external withdraw: external_withdraw_guard with identifier=amount field",
|
|
68
|
-
"Pair external ops with Guard for zero-Permission external access",
|
|
69
|
-
"store_from_id tracks order/business ID for audit trail",
|
|
70
|
-
],
|
|
71
|
-
irreversibility: {
|
|
72
|
-
deposit: "reversible",
|
|
73
|
-
withdraw: "irreversible",
|
|
74
|
-
external_deposit: "reversible",
|
|
75
|
-
external_withdraw: "irreversible",
|
|
76
|
-
owner_receive: "irreversible",
|
|
77
|
-
},
|
|
78
|
-
cross_object_collaboration: [
|
|
79
|
-
"Guard object referenced by external_deposit_guard / external_withdraw_guard",
|
|
80
|
-
"Passport object required for every external_deposit / external_withdraw call",
|
|
81
|
-
],
|
|
82
|
-
recommended_templates: ["T-T-03", "T-T-04"],
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
id: "treasury_guard_protection",
|
|
86
|
-
name: "Guard-protected Treasury (asymmetric identifier design)",
|
|
87
|
-
coin_type_category: "generic",
|
|
88
|
-
permission_index_range: "255-256",
|
|
89
|
-
builtin_indexes: TREASURY_PERMISSIONS.filter(p => [255, 256].includes(p.index)),
|
|
90
|
-
owner_operations: ["external_deposit_guard management (255)", "external_withdraw_guard management (256)"],
|
|
91
|
-
admin_operations: [],
|
|
92
|
-
permission_index_operations: [
|
|
93
|
-
"treasury::external_deposit_guard_add (255)",
|
|
94
|
-
"treasury::external_withdraw_guard_add (256)",
|
|
95
|
-
],
|
|
96
|
-
external_operations: [
|
|
97
|
-
"external_deposit via Guard (identifier: Option<u8> — None means no amount limit)",
|
|
98
|
-
"external_withdraw via Guard (identifier: u8 — REQUIRED, no None option)",
|
|
99
|
-
],
|
|
100
|
-
guard_list_mutable_after_publish: true,
|
|
101
|
-
common_patterns: [
|
|
102
|
-
"Asymmetric identifier: deposit optional, withdraw required",
|
|
103
|
-
"Deposit amount from Coin itself; withdraw amount from Guard submission",
|
|
104
|
-
"upsert semantics: add updates existing guard, else appends",
|
|
105
|
-
"external_deposit splits coin if value > guard-specified amount",
|
|
106
|
-
],
|
|
107
|
-
irreversibility: {
|
|
108
|
-
deposit: "reversible",
|
|
109
|
-
withdraw: "irreversible",
|
|
110
|
-
external_deposit: "reversible",
|
|
111
|
-
external_withdraw: "irreversible",
|
|
112
|
-
owner_receive: "irreversible",
|
|
113
|
-
},
|
|
114
|
-
cross_object_collaboration: [
|
|
115
|
-
"Guard table item value type must be number (is_number_type) for identifier",
|
|
116
|
-
"Guard table item value type must be address-compatible for store_from_id",
|
|
117
|
-
],
|
|
118
|
-
recommended_templates: ["T-T-03"],
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
id: "treasury_permission_sharing",
|
|
122
|
-
name: "Treasury shared with Service via common Permission",
|
|
123
|
-
coin_type_category: "generic",
|
|
124
|
-
permission_index_range: "250-258",
|
|
125
|
-
builtin_indexes: TREASURY_PERMISSIONS.filter(p => p.active),
|
|
126
|
-
owner_operations: ["um_set (258)", "owner_receive (257)"],
|
|
127
|
-
admin_operations: ["description_set (251)"],
|
|
128
|
-
permission_index_operations: [
|
|
129
|
-
"treasury::deposit (252) + service::publish (311) on same Permission",
|
|
130
|
-
"treasury::withdraw (254) + service::compensation_fund_withdraw (315)",
|
|
131
|
-
],
|
|
132
|
-
external_operations: [],
|
|
133
|
-
guard_list_mutable_after_publish: true,
|
|
134
|
-
common_patterns: [
|
|
135
|
-
"Shared Permission: Treasury + Service reference same Permission object",
|
|
136
|
-
"Unified admin list: single admin team manages both Service and Treasury",
|
|
137
|
-
"Simplifies key management: one Permission object per business unit",
|
|
138
|
-
],
|
|
139
|
-
irreversibility: {
|
|
140
|
-
deposit: "reversible",
|
|
141
|
-
withdraw: "irreversible",
|
|
142
|
-
external_deposit: "reversible",
|
|
143
|
-
external_withdraw: "irreversible",
|
|
144
|
-
owner_receive: "irreversible",
|
|
145
|
-
},
|
|
146
|
-
cross_object_collaboration: [
|
|
147
|
-
"Service.compensation_fund (parallel design, NOT a Treasury)",
|
|
148
|
-
"Service.order_allocator → Treasury as Entity target",
|
|
149
|
-
],
|
|
150
|
-
recommended_templates: ["T-T-04", "T-T-05"],
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
id: "treasury_um_delegation",
|
|
154
|
-
name: "UM delegation (User Manager = Contact object)",
|
|
155
|
-
coin_type_category: "generic",
|
|
156
|
-
permission_index_range: "258",
|
|
157
|
-
builtin_indexes: TREASURY_PERMISSIONS.filter(p => p.index === 258),
|
|
158
|
-
owner_operations: ["um_set (258)", "um_none (258)"],
|
|
159
|
-
admin_operations: [],
|
|
160
|
-
permission_index_operations: [
|
|
161
|
-
"treasury::um_set (258)",
|
|
162
|
-
"treasury::um_none (258)",
|
|
163
|
-
],
|
|
164
|
-
external_operations: [],
|
|
165
|
-
guard_list_mutable_after_publish: true,
|
|
166
|
-
common_patterns: [
|
|
167
|
-
"Owner-only UM: TREASURY_UM (258) restricted to owner (assert_owner)",
|
|
168
|
-
"UM is a Contact object address, not a regular user address",
|
|
169
|
-
"UM ≠ admin: UM is for contact management, not permission management",
|
|
170
|
-
"um_none revokes UM and disaffiliates from Registrar",
|
|
171
|
-
],
|
|
172
|
-
irreversibility: {
|
|
173
|
-
deposit: "reversible",
|
|
174
|
-
withdraw: "irreversible",
|
|
175
|
-
external_deposit: "reversible",
|
|
176
|
-
external_withdraw: "irreversible",
|
|
177
|
-
owner_receive: "irreversible",
|
|
178
|
-
},
|
|
179
|
-
cross_object_collaboration: [
|
|
180
|
-
"Contact object referenced by Treasury.um",
|
|
181
|
-
"Registrar.affiliation / disaffiliation tracks UM-Treasury binding",
|
|
182
|
-
],
|
|
183
|
-
recommended_templates: ["T-T-01"],
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
id: "treasury_owner_receive",
|
|
187
|
-
name: "Owner receive (unwrap & forward to Permission owner)",
|
|
188
|
-
coin_type_category: "generic",
|
|
189
|
-
permission_index_range: "257",
|
|
190
|
-
builtin_indexes: TREASURY_PERMISSIONS.filter(p => p.index === 257),
|
|
191
|
-
owner_operations: ["owner_receive (257)", "owner_receive_object (257)"],
|
|
192
|
-
admin_operations: [],
|
|
193
|
-
permission_index_operations: [
|
|
194
|
-
"treasury::owner_receive (257)",
|
|
195
|
-
"treasury::owner_receive_object (257)",
|
|
196
|
-
],
|
|
197
|
-
external_operations: [],
|
|
198
|
-
guard_list_mutable_after_publish: true,
|
|
199
|
-
common_patterns: [
|
|
200
|
-
"Forward received assets: CoinWrapper unwrapped, sent to Permission.owner",
|
|
201
|
-
"Does NOT write to history (direct forward, no Record entry)",
|
|
202
|
-
"Used when Treasury should not retain received assets",
|
|
203
|
-
"owner_receive_object handles non-coin objects too",
|
|
204
|
-
],
|
|
205
|
-
irreversibility: {
|
|
206
|
-
deposit: "reversible",
|
|
207
|
-
withdraw: "irreversible",
|
|
208
|
-
external_deposit: "reversible",
|
|
209
|
-
external_withdraw: "irreversible",
|
|
210
|
-
owner_receive: "irreversible",
|
|
211
|
-
},
|
|
212
|
-
cross_object_collaboration: [
|
|
213
|
-
"Permission.owner is the recipient (resolved at tx time)",
|
|
214
|
-
"Received objects come from Allocator / Arbitration.fees_transfer / external deposits",
|
|
215
|
-
],
|
|
216
|
-
recommended_templates: ["T-T-06"],
|
|
217
|
-
},
|
|
218
|
-
];
|
|
219
|
-
export const TREASURY_LEDGER_VERSION = "1.0.0";
|
|
220
|
-
export function getScenesByHostObject(_host) {
|
|
221
|
-
return TREASURY_SCENES;
|
|
222
|
-
}
|
|
223
|
-
export function findSceneById(id) {
|
|
224
|
-
return TREASURY_SCENES.find(s => s.id === id);
|
|
225
|
-
}
|
|
226
|
-
export function findSceneByPermissionIndex(index) {
|
|
227
|
-
for (const scene of TREASURY_SCENES) {
|
|
228
|
-
if (scene.builtin_indexes.some(p => p.index === index && p.active))
|
|
229
|
-
return scene;
|
|
230
|
-
}
|
|
231
|
-
return undefined;
|
|
232
|
-
}
|
|
233
|
-
export function getBuiltinPermissionByIndex(index) {
|
|
234
|
-
return TREASURY_PERMISSIONS.find(p => p.index === index && p.active);
|
|
235
|
-
}
|
|
236
|
-
export function isBuiltinTreasuryPermission(index) {
|
|
237
|
-
return getBuiltinPermissionByIndex(index) !== undefined;
|
|
238
|
-
}
|
|
239
|
-
export function getActiveBuiltinPermissions() {
|
|
240
|
-
return TREASURY_PERMISSIONS.filter(p => p.active);
|
|
241
|
-
}
|
|
242
|
-
export function getReservedBuiltinPermissions() {
|
|
243
|
-
return TREASURY_PERMISSIONS.filter(p => !p.active);
|
|
244
|
-
}
|
|
245
|
-
export function inferSceneFromIntent(intent) {
|
|
246
|
-
const lower = intent.toLowerCase();
|
|
247
|
-
if (lower.includes("um") || lower.includes("delegate") || lower.includes("user manager")) {
|
|
248
|
-
return findSceneById("treasury_um_delegation");
|
|
249
|
-
}
|
|
250
|
-
if (lower.includes("owner_receive") || lower.includes("owner receive") || lower.includes("forward")) {
|
|
251
|
-
return findSceneById("treasury_owner_receive");
|
|
252
|
-
}
|
|
253
|
-
if (lower.includes("external") || lower.includes("guard")) {
|
|
254
|
-
if (lower.includes("deposit")) {
|
|
255
|
-
return findSceneById("treasury_external_ops");
|
|
256
|
-
}
|
|
257
|
-
if (lower.includes("withdraw")) {
|
|
258
|
-
return findSceneById("treasury_external_ops");
|
|
259
|
-
}
|
|
260
|
-
return findSceneById("treasury_guard_protection");
|
|
261
|
-
}
|
|
262
|
-
if (lower.includes("service") || lower.includes("share")) {
|
|
263
|
-
return findSceneById("treasury_permission_sharing");
|
|
264
|
-
}
|
|
265
|
-
if (lower.includes("deposit") || lower.includes("receive") || lower.includes("fund") || lower.includes("collect")) {
|
|
266
|
-
return findSceneById("treasury_fund_collection");
|
|
267
|
-
}
|
|
268
|
-
return undefined;
|
|
269
|
-
}
|
|
270
|
-
export function getTreasuryScenesCount() {
|
|
271
|
-
return TREASURY_SCENES.length;
|
|
272
|
-
}
|
|
273
|
-
export function getMoveFunctionsForPermissionIndex(index) {
|
|
274
|
-
const map = {
|
|
275
|
-
250: ["treasury::new", "treasury::new_with_passport"],
|
|
276
|
-
251: ["treasury::description_set", "treasury::description_set_with_passport"],
|
|
277
|
-
252: ["treasury::deposit", "treasury::deposit_with_passport"],
|
|
278
|
-
253: ["treasury::receive", "treasury::receive_with_passport"],
|
|
279
|
-
254: ["treasury::withdraw", "treasury::withdraw_with_passport"],
|
|
280
|
-
255: [
|
|
281
|
-
"treasury::external_deposit_guard_add",
|
|
282
|
-
"treasury::external_deposit_guard_add_with_passport",
|
|
283
|
-
"treasury::external_deposit_guard_remove",
|
|
284
|
-
"treasury::external_deposit_guard_remove_with_passport",
|
|
285
|
-
"treasury::external_deposit_guard_clear",
|
|
286
|
-
"treasury::external_deposit_guard_clear_with_passport",
|
|
287
|
-
],
|
|
288
|
-
256: [
|
|
289
|
-
"treasury::external_withdraw_guard_add",
|
|
290
|
-
"treasury::external_withdraw_guard_add_with_passport",
|
|
291
|
-
"treasury::external_withdraw_guard_remove",
|
|
292
|
-
"treasury::external_withdraw_guard_remove_with_passport",
|
|
293
|
-
"treasury::external_withdraw_guard_clear",
|
|
294
|
-
"treasury::external_withdraw_guard_clear_with_passport",
|
|
295
|
-
],
|
|
296
|
-
257: ["treasury::owner_receive", "treasury::owner_receive_object"],
|
|
297
|
-
258: ["treasury::um_set", "treasury::um_set_with_passport", "treasury::um_none", "treasury::um_none_with_passport"],
|
|
298
|
-
};
|
|
299
|
-
return map[index] ?? [];
|
|
300
|
-
}
|
|
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','Registrar.affiliation\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,216 +1 @@
|
|
|
1
|
-
export function initPuzzleFromIntent(intent) {
|
|
2
|
-
const puzzle = {};
|
|
3
|
-
if (intent.action || intent.rule_sentence) {
|
|
4
|
-
puzzle.intent = {
|
|
5
|
-
action: intent.action ?? "create",
|
|
6
|
-
coin_type: intent.coin_type,
|
|
7
|
-
purpose: intent.purpose ?? "custom",
|
|
8
|
-
rule_sentence: intent.rule_sentence ?? "",
|
|
9
|
-
failure_conditions: intent.failure_conditions ?? [],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
puzzle.constraints = {
|
|
13
|
-
F_T_01_description_length_le_4000: true,
|
|
14
|
-
F_T_02_external_deposit_guard_count_le_100: true,
|
|
15
|
-
F_T_03_external_withdraw_guard_count_le_200: true,
|
|
16
|
-
F_T_04_external_withdraw_guard_identifier_required: true,
|
|
17
|
-
F_T_05_guard_identifier_is_number_type: true,
|
|
18
|
-
F_T_06_store_from_id_address_compatible: true,
|
|
19
|
-
F_T_07_external_deposit_amount_sufficient: true,
|
|
20
|
-
F_T_08_external_withdraw_amount_le_balance: true,
|
|
21
|
-
F_T_09_withdraw_fixed_amount_le_balance: true,
|
|
22
|
-
F_T_10_external_guard_in_list: true,
|
|
23
|
-
F_T_11_coin_type_matches_type_parameter: true,
|
|
24
|
-
F_T_12_um_is_contact_object: true,
|
|
25
|
-
F_T_13_permission_index_matches_move: true,
|
|
26
|
-
};
|
|
27
|
-
return puzzle;
|
|
28
|
-
}
|
|
29
|
-
export function checkPuzzleCompleteness(puzzle) {
|
|
30
|
-
const missing = [];
|
|
31
|
-
const missing_details = [];
|
|
32
|
-
if (!puzzle.intent) {
|
|
33
|
-
missing.push("A");
|
|
34
|
-
missing_details.push({ dimension: "A", reason: "Intent not specified (action + rule_sentence)" });
|
|
35
|
-
}
|
|
36
|
-
else if (!puzzle.intent.rule_sentence) {
|
|
37
|
-
missing.push("A");
|
|
38
|
-
missing_details.push({ dimension: "A", reason: "rule_sentence is empty" });
|
|
39
|
-
}
|
|
40
|
-
if (!puzzle.binding) {
|
|
41
|
-
missing.push("B");
|
|
42
|
-
missing_details.push({ dimension: "B", reason: "Binding not specified (type_parameter + permission)" });
|
|
43
|
-
}
|
|
44
|
-
else if (!puzzle.binding.type_parameter) {
|
|
45
|
-
missing.push("B");
|
|
46
|
-
missing_details.push({ dimension: "B", reason: "type_parameter (Coin type T) missing" });
|
|
47
|
-
}
|
|
48
|
-
else if (!puzzle.binding.associated_permission) {
|
|
49
|
-
missing.push("B");
|
|
50
|
-
missing_details.push({ dimension: "B", reason: "associated_permission missing" });
|
|
51
|
-
}
|
|
52
|
-
if (!puzzle.data_source && puzzle.intent?.action === "create") {
|
|
53
|
-
missing.push("C");
|
|
54
|
-
missing_details.push({ dimension: "C", reason: "Data source not specified (permission + coin_source + guards)" });
|
|
55
|
-
}
|
|
56
|
-
if (!puzzle.operations) {
|
|
57
|
-
missing.push("D");
|
|
58
|
-
missing_details.push({ dimension: "D", reason: "Operations not enumerated" });
|
|
59
|
-
}
|
|
60
|
-
if (!puzzle.logic) {
|
|
61
|
-
missing.push("E");
|
|
62
|
-
missing_details.push({ dimension: "E", reason: "Logic flow (access_control + fund_flow + history) not defined" });
|
|
63
|
-
}
|
|
64
|
-
if (!puzzle.constraints) {
|
|
65
|
-
missing.push("F");
|
|
66
|
-
missing_details.push({ dimension: "F", reason: "Constraints not checked" });
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
dimensions: ["A", "B", "C", "D", "E", "F"],
|
|
70
|
-
missing,
|
|
71
|
-
missing_details,
|
|
72
|
-
complete: missing.length === 0,
|
|
73
|
-
next_step: missing.length === 0
|
|
74
|
-
? "Puzzle complete — ready for confirmation text generation"
|
|
75
|
-
: `Next: complete dimension ${missing[0]} — ${missing_details[0].reason}`,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
export const MAX_EXTERNAL_DEPOSIT_GUARD_COUNT = 100;
|
|
79
|
-
export const MAX_EXTERNAL_WITHDRAW_GUARD_COUNT = 200;
|
|
80
|
-
export const MAX_DESCRIPTION_LENGTH = 4000;
|
|
81
|
-
export function validateConstraints(puzzle) {
|
|
82
|
-
const violations = [];
|
|
83
|
-
if (puzzle.operations?.operations) {
|
|
84
|
-
for (const op of puzzle.operations.operations) {
|
|
85
|
-
if (op.type === "description_set" && op.description.length > MAX_DESCRIPTION_LENGTH) {
|
|
86
|
-
violations.push({
|
|
87
|
-
constraint_id: "F-T-01",
|
|
88
|
-
severity: "HIGH",
|
|
89
|
-
message: `Description length ${op.description.length} exceeds MAX_DESCRIPTION_LENGTH ${MAX_DESCRIPTION_LENGTH}`,
|
|
90
|
-
current_value: op.description.length,
|
|
91
|
-
limit: MAX_DESCRIPTION_LENGTH,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (puzzle.data_source && puzzle.data_source.external_deposit_guards.length > MAX_EXTERNAL_DEPOSIT_GUARD_COUNT) {
|
|
97
|
-
violations.push({
|
|
98
|
-
constraint_id: "F-T-02",
|
|
99
|
-
severity: "HIGH",
|
|
100
|
-
message: `external_deposit_guard count ${puzzle.data_source.external_deposit_guards.length} exceeds ${MAX_EXTERNAL_DEPOSIT_GUARD_COUNT}`,
|
|
101
|
-
current_value: puzzle.data_source.external_deposit_guards.length,
|
|
102
|
-
limit: MAX_EXTERNAL_DEPOSIT_GUARD_COUNT,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
if (puzzle.data_source && puzzle.data_source.external_withdraw_guards.length > MAX_EXTERNAL_WITHDRAW_GUARD_COUNT) {
|
|
106
|
-
violations.push({
|
|
107
|
-
constraint_id: "F-T-03",
|
|
108
|
-
severity: "HIGH",
|
|
109
|
-
message: `external_withdraw_guard count ${puzzle.data_source.external_withdraw_guards.length} exceeds ${MAX_EXTERNAL_WITHDRAW_GUARD_COUNT}`,
|
|
110
|
-
current_value: puzzle.data_source.external_withdraw_guards.length,
|
|
111
|
-
limit: MAX_EXTERNAL_WITHDRAW_GUARD_COUNT,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
if (puzzle.data_source) {
|
|
115
|
-
for (const g of puzzle.data_source.external_withdraw_guards) {
|
|
116
|
-
if (g.identifier === undefined || g.identifier === null) {
|
|
117
|
-
violations.push({
|
|
118
|
-
constraint_id: "F-T-04",
|
|
119
|
-
severity: "HIGH",
|
|
120
|
-
message: `external_withdraw_guard ${g.guard} missing required identifier (u8)`,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (puzzle.logic?.access_control_flow) {
|
|
126
|
-
for (const flow of puzzle.logic.access_control_flow) {
|
|
127
|
-
if (flow.permission_index !== undefined) {
|
|
128
|
-
if (flow.permission_index > 258 && flow.permission_index < 1000) {
|
|
129
|
-
violations.push({
|
|
130
|
-
constraint_id: "F-T-13",
|
|
131
|
-
severity: "CRITICAL",
|
|
132
|
-
message: `Permission index ${flow.permission_index} is in the 259-999 range; active Treasury indexes are 250-258. Possible R-T-01 residual.`,
|
|
133
|
-
current_value: flow.permission_index,
|
|
134
|
-
limit: "250-258",
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return violations;
|
|
141
|
-
}
|
|
142
|
-
export function generateConfirmationText(puzzle) {
|
|
143
|
-
const lines = [];
|
|
144
|
-
lines.push("═══ Treasury Confirmation ═══");
|
|
145
|
-
lines.push("");
|
|
146
|
-
if (puzzle.intent) {
|
|
147
|
-
lines.push(`Action: ${puzzle.intent.action}`);
|
|
148
|
-
if (puzzle.intent.coin_type)
|
|
149
|
-
lines.push(`Coin type: ${puzzle.intent.coin_type}`);
|
|
150
|
-
lines.push(`Purpose: ${puzzle.intent.purpose}`);
|
|
151
|
-
lines.push(`Rule: ${puzzle.intent.rule_sentence}`);
|
|
152
|
-
if (puzzle.intent.failure_conditions.length > 0) {
|
|
153
|
-
lines.push("Failure conditions:");
|
|
154
|
-
for (const fc of puzzle.intent.failure_conditions)
|
|
155
|
-
lines.push(` - ${fc}`);
|
|
156
|
-
}
|
|
157
|
-
lines.push("");
|
|
158
|
-
}
|
|
159
|
-
if (puzzle.binding) {
|
|
160
|
-
lines.push("─ Binding ──────────────");
|
|
161
|
-
lines.push(`Host object: ${puzzle.binding.host_object}`);
|
|
162
|
-
lines.push(`Type parameter (T): ${puzzle.binding.type_parameter}`);
|
|
163
|
-
lines.push(`Associated Permission: ${puzzle.binding.associated_permission}`);
|
|
164
|
-
if (puzzle.binding.associated_um !== undefined) {
|
|
165
|
-
lines.push(`UM: ${puzzle.binding.associated_um ?? "(none)"}`);
|
|
166
|
-
}
|
|
167
|
-
lines.push(`Sharing with Allocator: ${puzzle.binding.sharing_with_allocator}`);
|
|
168
|
-
lines.push(`Sharing with Arbitration: ${puzzle.binding.sharing_with_arbitration}`);
|
|
169
|
-
lines.push(`Sharing with Service: ${puzzle.binding.sharing_with_service}`);
|
|
170
|
-
lines.push("");
|
|
171
|
-
}
|
|
172
|
-
if (puzzle.data_source) {
|
|
173
|
-
lines.push("─ Data Source ──────────────");
|
|
174
|
-
lines.push(`Permission: ${puzzle.data_source.permission_object}`);
|
|
175
|
-
lines.push(`Coin source: ${JSON.stringify(puzzle.data_source.coin_source)}`);
|
|
176
|
-
if (puzzle.data_source.external_deposit_guards.length > 0) {
|
|
177
|
-
lines.push(`External deposit guards (${puzzle.data_source.external_deposit_guards.length}):`);
|
|
178
|
-
for (const g of puzzle.data_source.external_deposit_guards) {
|
|
179
|
-
lines.push(` guard=${g.guard}, identifier=${g.identifier ?? "None"}, store_from_id=${g.store_from_id ?? "None"}`);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (puzzle.data_source.external_withdraw_guards.length > 0) {
|
|
183
|
-
lines.push(`External withdraw guards (${puzzle.data_source.external_withdraw_guards.length}):`);
|
|
184
|
-
for (const g of puzzle.data_source.external_withdraw_guards) {
|
|
185
|
-
lines.push(` guard=${g.guard}, identifier=${g.identifier} (required), store_from_id=${g.store_from_id ?? "None"}`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
lines.push("");
|
|
189
|
-
}
|
|
190
|
-
if (puzzle.operations && puzzle.operations.operations.length > 0) {
|
|
191
|
-
lines.push("─ Operations ──────────────");
|
|
192
|
-
for (const op of puzzle.operations.operations)
|
|
193
|
-
lines.push(` - ${JSON.stringify(op)}`);
|
|
194
|
-
lines.push("");
|
|
195
|
-
}
|
|
196
|
-
if (puzzle.logic) {
|
|
197
|
-
lines.push("─ Logic ──────────────");
|
|
198
|
-
lines.push("Access control flow:");
|
|
199
|
-
for (const f of puzzle.logic.access_control_flow) {
|
|
200
|
-
lines.push(` path=${f.path}, perm_idx=${f.permission_index ?? "N/A"}, guard=${f.guard_address ?? "N/A"}, passport=${f.passport_required}`);
|
|
201
|
-
}
|
|
202
|
-
lines.push("Fund flow:");
|
|
203
|
-
for (const f of puzzle.logic.fund_flow) {
|
|
204
|
-
lines.push(` from=${f.from}, to=${f.to}, amount_source=${f.amount_source}`);
|
|
205
|
-
}
|
|
206
|
-
lines.push("");
|
|
207
|
-
}
|
|
208
|
-
const violations = validateConstraints(puzzle);
|
|
209
|
-
if (violations.length > 0) {
|
|
210
|
-
lines.push("─ Constraint Violations ──────────────");
|
|
211
|
-
for (const v of violations)
|
|
212
|
-
lines.push(` [${v.severity}] ${v.constraint_id}: ${v.message}`);
|
|
213
|
-
lines.push("");
|
|
214
|
-
}
|
|
215
|
-
return lines.join("\n");
|
|
216
|
-
}
|
|
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']==='description_set'&&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');}
|