@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,47 +1 @@
|
|
|
1
|
-
import { z }
|
|
2
|
-
import { WithPermissionObjectSchema, ObjectsSchema, CallEnvSchema, SubmissionCallSchema, } from './base.js';
|
|
3
|
-
import { ServiceGuardSchema } from '../query/index.js';
|
|
4
|
-
import { AccountOrMark_AddressSchema, DescriptionSchema, LongNameSchema, NameOrAddressSchema, ReceivedObjectsOrRecentlySchema, RECEIVE_FORMAT_BLOCK_OBJECTS } from '../common/index.js';
|
|
5
|
-
export const GuardsSchema = z.discriminatedUnion('op', [
|
|
6
|
-
z.object({
|
|
7
|
-
op: z.literal('add'),
|
|
8
|
-
guard: z.array(ServiceGuardSchema).describe('List of guard IDs or names to add'),
|
|
9
|
-
}).strict(),
|
|
10
|
-
z.object({
|
|
11
|
-
op: z.literal('set'),
|
|
12
|
-
guard: z.array(ServiceGuardSchema).describe('List of guard IDs or names to set'),
|
|
13
|
-
}).strict(),
|
|
14
|
-
z.object({
|
|
15
|
-
op: z.literal('remove'),
|
|
16
|
-
guard: z.array(NameOrAddressSchema).describe('List of guard IDs or names to remove'),
|
|
17
|
-
}).strict(),
|
|
18
|
-
z.object({
|
|
19
|
-
op: z.literal('clear'),
|
|
20
|
-
}).strict(),
|
|
21
|
-
]);
|
|
22
|
-
export const DemandPresentSchema = z.object({
|
|
23
|
-
recommend: DescriptionSchema.describe('Recommendation for the demand'),
|
|
24
|
-
by_guard: NameOrAddressSchema.optional().describe('Guard ID or name, used to select which Guard\'s verification to pass through'),
|
|
25
|
-
service: NameOrAddressSchema.optional().describe('Service ID or name to present'),
|
|
26
|
-
}).strict();
|
|
27
|
-
export const FeedbackInfoSchema = z.object({
|
|
28
|
-
who: AccountOrMark_AddressSchema.describe('Account address or mark name, used to identify providing feedback to this user'),
|
|
29
|
-
acceptance_score: z.number().int().min(0).max(255).optional().describe('Acceptance score, used to evaluate the reception level of the service recommended by the user'),
|
|
30
|
-
feedback: DescriptionSchema.optional().describe('Feedback content for the user'),
|
|
31
|
-
}).strict();
|
|
32
|
-
export const CallDemand_DataSchema = z.object({
|
|
33
|
-
object: WithPermissionObjectSchema,
|
|
34
|
-
present: DemandPresentSchema.optional().describe('Recommend Service to Demand object'),
|
|
35
|
-
description: DescriptionSchema.optional(),
|
|
36
|
-
location: LongNameSchema.optional().describe('Service location of the Demand object'),
|
|
37
|
-
rewards: ObjectsSchema.optional().describe('Reward information of the Demand object'),
|
|
38
|
-
feedback: z.array(FeedbackInfoSchema).optional().describe('User feedback information for the Demand object'),
|
|
39
|
-
guards: GuardsSchema.optional().describe('Validation Guard list for the Demand object. Used to verify whether the service recommended by the user meets the requirements'),
|
|
40
|
-
owner_receive: ReceivedObjectsOrRecentlySchema.optional().describe('Unwrap CoinWrapper objects and other objects received by this Demand object and send them to the owner of its Permission object.' + RECEIVE_FORMAT_BLOCK_OBJECTS),
|
|
41
|
-
um: z.union([NameOrAddressSchema, z.null()]).optional().describe('Contact object ID or name.'),
|
|
42
|
-
}).strict().describe("On-chain Demand operations. USAGE: (1) CREATE NEW: Set 'object' field with OBJECT format {name, permission, ...} to create a Demand. NOTE: 'name' goes INSIDE 'object', NOT at the data root level. 'permission' can be a new Permission object or reference an existing one - check 'object' field description for details. (2) OPERATE EXISTING: Set 'object' field with STRING format (object ID or name). The 'object' field is CRITICAL and REQUIRED in both cases. STRING for existing, OBJECT for new creation.");
|
|
43
|
-
export const CallDemand_InputSchema = z.object({
|
|
44
|
-
data: CallDemand_DataSchema,
|
|
45
|
-
env: CallEnvSchema.optional(),
|
|
46
|
-
submission: SubmissionCallSchema.optional(),
|
|
47
|
-
}).strict();
|
|
1
|
+
import{z}from'zod';import{WithPermissionObjectSchema,ObjectsSchema,CallEnvSchema,SubmissionCallSchema}from'./base.js';import{ServiceGuardSchema}from'../query/index.js';import{AccountOrMark_AddressSchema,DescriptionSchema,LongNameSchema,NameOrAddressSchema,ReceivedObjectsOrRecentlySchema,RECEIVE_FORMAT_BLOCK_OBJECTS}from'../common/index.js';export const GuardsSchema=z['discriminatedUnion']('op',[z['object']({'op':z['literal']('add'),'guard':z['array'](ServiceGuardSchema)['describe']('List\x20of\x20guard\x20IDs\x20or\x20names\x20to\x20add')})['strict'](),z['object']({'op':z['literal']('set'),'guard':z['array'](ServiceGuardSchema)['describe']('List\x20of\x20guard\x20IDs\x20or\x20names\x20to\x20set')})['strict'](),z['object']({'op':z['literal']('remove'),'guard':z['array'](NameOrAddressSchema)['describe']('List\x20of\x20guard\x20IDs\x20or\x20names\x20to\x20remove')})['strict'](),z['object']({'op':z['literal']('clear')})['strict']()]);export const DemandPresentSchema=z['object']({'recommend':DescriptionSchema['describe']('Recommendation\x20for\x20the\x20demand'),'by_guard':NameOrAddressSchema['optional']()['describe']('Guard\x20ID\x20or\x20name,\x20used\x20to\x20select\x20which\x20Guard\x27s\x20verification\x20to\x20pass\x20through'),'service':NameOrAddressSchema['optional']()['describe']('Service\x20ID\x20or\x20name\x20to\x20present')})['strict']();export const FeedbackInfoSchema=z['object']({'who':AccountOrMark_AddressSchema['describe']('Account\x20address\x20or\x20mark\x20name,\x20used\x20to\x20identify\x20providing\x20feedback\x20to\x20this\x20user'),'acceptance_score':z['number']()['int']()['min'](0x0)['max'](0xff)['optional']()['describe']('Acceptance\x20score,\x20used\x20to\x20evaluate\x20the\x20reception\x20level\x20of\x20the\x20service\x20recommended\x20by\x20the\x20user'),'feedback':DescriptionSchema['optional']()['describe']('Feedback\x20content\x20for\x20the\x20user')})['strict']();export const CallDemand_DataSchema=z['object']({'object':WithPermissionObjectSchema,'present':DemandPresentSchema['optional']()['describe']('Recommend\x20Service\x20to\x20Demand\x20object'),'description':DescriptionSchema['optional'](),'location':LongNameSchema['optional']()['describe']('Service\x20location\x20of\x20the\x20Demand\x20object'),'rewards':ObjectsSchema['optional']()['describe']('Reward\x20information\x20of\x20the\x20Demand\x20object'),'feedback':z['array'](FeedbackInfoSchema)['optional']()['describe']('User\x20feedback\x20information\x20for\x20the\x20Demand\x20object'),'guards':GuardsSchema['optional']()['describe']('Validation\x20Guard\x20list\x20for\x20the\x20Demand\x20object.\x20Used\x20to\x20verify\x20whether\x20the\x20service\x20recommended\x20by\x20the\x20user\x20meets\x20the\x20requirements'),'owner_receive':ReceivedObjectsOrRecentlySchema['optional']()['describe']('Unwrap\x20CoinWrapper\x20objects\x20and\x20other\x20objects\x20received\x20by\x20this\x20Demand\x20object\x20and\x20send\x20them\x20to\x20the\x20owner\x20of\x20its\x20Permission\x20object.'+RECEIVE_FORMAT_BLOCK_OBJECTS),'um':z['union']([NameOrAddressSchema,z['null']()])['optional']()['describe']('Contact\x20object\x20ID\x20or\x20name.')})['strict']()['describe']('On-chain\x20Demand\x20operations.\x20USAGE:\x20(1)\x20CREATE\x20NEW:\x20Set\x20\x27object\x27\x20field\x20with\x20OBJECT\x20format\x20{name,\x20permission,\x20...}\x20to\x20create\x20a\x20Demand.\x20NOTE:\x20\x27name\x27\x20goes\x20INSIDE\x20\x27object\x27,\x20NOT\x20at\x20the\x20data\x20root\x20level.\x20\x27permission\x27\x20can\x20be\x20a\x20new\x20Permission\x20object\x20or\x20reference\x20an\x20existing\x20one\x20-\x20check\x20\x27object\x27\x20field\x20description\x20for\x20details.\x20(2)\x20OPERATE\x20EXISTING:\x20Set\x20\x27object\x27\x20field\x20with\x20STRING\x20format\x20(object\x20ID\x20or\x20name).\x20The\x20\x27object\x27\x20field\x20is\x20CRITICAL\x20and\x20REQUIRED\x20in\x20both\x20cases.\x20STRING\x20for\x20existing,\x20OBJECT\x20for\x20new\x20creation.');export const CallDemand_InputSchema=z['object']({'data':CallDemand_DataSchema,'env':CallEnvSchema['optional'](),'submission':SubmissionCallSchema['optional']()})['strict']();
|
|
@@ -1,161 +1 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { CallEnvSchema, NamedObjectSchema, SubmissionCallSchema } from './base.js';
|
|
3
|
-
import { GuardNodeSchema } from '../query/index.js';
|
|
4
|
-
import { DescriptionSchema, GuardTableItemBaseSchema, NameOrAddressSchema } from '../common/index.js';
|
|
5
|
-
import { isBoolReturningQuery } from '../utils/guard-query-utils.js';
|
|
6
|
-
import { ValueType } from '@wowok/wowok';
|
|
7
|
-
export const CallGuard_RootSchema = z.union([
|
|
8
|
-
GuardNodeSchema.refine((node) => {
|
|
9
|
-
const allowedTypes = [
|
|
10
|
-
'logic_as_u256_greater', 'logic_as_u256_lesser', 'logic_as_u256_equal',
|
|
11
|
-
'logic_as_u256_greater_or_equal', 'logic_as_u256_lesser_or_equal',
|
|
12
|
-
'logic_equal', 'logic_not', 'logic_and', 'logic_or',
|
|
13
|
-
'logic_string_contains', 'logic_string_nocase_contains', 'logic_string_nocase_equal',
|
|
14
|
-
'calc_string_contains', 'calc_string_nocase_contains', 'calc_string_nocase_equal',
|
|
15
|
-
'vec_contains_bool', 'vec_contains_address', 'vec_contains_string',
|
|
16
|
-
'vec_contains_string_nocase', 'vec_contains_number',
|
|
17
|
-
'query_reward_record_exists',
|
|
18
|
-
'query',
|
|
19
|
-
'identifier'
|
|
20
|
-
];
|
|
21
|
-
if (!allowedTypes.includes(node.type)) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
if (node.type === 'query') {
|
|
25
|
-
const queryNode = node;
|
|
26
|
-
if (!isBoolReturningQuery(queryNode.query)) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return true;
|
|
31
|
-
}, {
|
|
32
|
-
message: "Guard root node must be an operation that returns Bool. Allowed types: logic_*, calc_string_contains, calc_string_nocase_*, vec_contains_*, reward_record_exist, identifier (must reference Bool type in table). For 'query' type, ONLY queries that return Bool are allowed. Use 'wowok_buildin_info' tool with {\"info\": \"guard instructions\", \"filter\": {\"returnType\": \"Bool\", \"scope\": \"object query\"}} to list all Bool-returning queries. Other nodes (calc_number_*, context, non-Bool queries) must be wrapped with a logic operation."
|
|
33
|
-
}).describe("Guard computational tree root node. MUST be an operation that returns a Bool value (pass/fail). For 'query' type, the specific query must return Bool. For 'identifier' type, the referenced table item must have value_type=Bool."),
|
|
34
|
-
z.object({
|
|
35
|
-
type: z.literal("file"),
|
|
36
|
-
file_path: z.string().describe("Path to JSON or Markdown file containing Guard definition. File can define: namedNew, description, table, root, rely."),
|
|
37
|
-
format: z.enum(["json", "markdown"]).optional().default("json")
|
|
38
|
-
.describe("File format: 'json' or 'markdown'. Default is 'json'."),
|
|
39
|
-
}).strict(),
|
|
40
|
-
]).describe("Guard root definition. Either provide a direct GuardNode tree (must be a logical operation returning Bool) or reference a file to load. When using file type, fields defined in the schema (namedNew, description, table, rely) will OVERRIDE the corresponding fields in the file.");
|
|
41
|
-
const isBoolValueType = (valueType) => {
|
|
42
|
-
if (typeof valueType === 'number') {
|
|
43
|
-
return valueType === ValueType.Bool;
|
|
44
|
-
}
|
|
45
|
-
if (typeof valueType === 'string') {
|
|
46
|
-
return valueType.toLowerCase() === 'bool' || valueType === '0';
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
49
|
-
};
|
|
50
|
-
export const GuardBindingHintActionSchema = z.enum([
|
|
51
|
-
"buy",
|
|
52
|
-
"forward",
|
|
53
|
-
"allocate",
|
|
54
|
-
"claim_reward",
|
|
55
|
-
"vote",
|
|
56
|
-
"dispute",
|
|
57
|
-
"write_repository",
|
|
58
|
-
"submit_progress",
|
|
59
|
-
"gen_passport",
|
|
60
|
-
"custom",
|
|
61
|
-
]).describe("Guard protected action type. Maps to IntentPuzzle.action in the puzzle model.");
|
|
62
|
-
export const GuardBindingHintHostObjectSchema = z.enum([
|
|
63
|
-
"Service",
|
|
64
|
-
"Machine",
|
|
65
|
-
"Arbitration",
|
|
66
|
-
"Reward",
|
|
67
|
-
"Repository",
|
|
68
|
-
"Progress",
|
|
69
|
-
"Demand",
|
|
70
|
-
"Standalone",
|
|
71
|
-
]).describe("Host object type that the Guard will bind to. 'Standalone' for independent Guards (rely dependency or gen_passport).");
|
|
72
|
-
export const GuardBindingHintBindingFieldSchema = z.enum([
|
|
73
|
-
"buy_guard",
|
|
74
|
-
"order_allocators",
|
|
75
|
-
"Forward.guard",
|
|
76
|
-
"submission",
|
|
77
|
-
"guard",
|
|
78
|
-
"write_guard",
|
|
79
|
-
"usage_guard",
|
|
80
|
-
"voting_guard",
|
|
81
|
-
"ServiceGuard",
|
|
82
|
-
"none",
|
|
83
|
-
]).describe("Binding field on the host object. 'none' for standalone Guards.");
|
|
84
|
-
export const GuardBindingHintSchema = z.object({
|
|
85
|
-
action: GuardBindingHintActionSchema
|
|
86
|
-
.describe("Protected action type. Example: 'buy' for Service buy_guard, 'forward' for Machine Forward.guard."),
|
|
87
|
-
host_object: GuardBindingHintHostObjectSchema
|
|
88
|
-
.describe("Host object type. Example: 'Service', 'Machine'."),
|
|
89
|
-
binding_field: GuardBindingHintBindingFieldSchema
|
|
90
|
-
.describe("Binding field. Example: 'buy_guard', 'Forward.guard'."),
|
|
91
|
-
rule_sentence: z.string().optional()
|
|
92
|
-
.describe("One-sentence description of the validation rule (human-readable). Example: 'Only the author can purchase this service'."),
|
|
93
|
-
failure_conditions: z.array(z.string()).optional()
|
|
94
|
-
.describe("List of conditions under which the Guard should FAIL. Example: ['Signer is not in allowlist','Order is already completed']."),
|
|
95
|
-
circular_reference: z.boolean().optional()
|
|
96
|
-
.describe("Whether the Guard references the Host Object itself (circular reference pattern). true=Guard queries the Host Object it binds to."),
|
|
97
|
-
}).strict().describe("Optional semantic hint for Guard capability system. Provides intent + binding context so the MCP server can derive GuardPuzzle, run risk assessment, and generate confirmation text. Strongly recommended: fill this field to enable puzzle_status, matched_scene, suggested_patterns, confirmation_text, and pending_questions in the response guard_advice.");
|
|
98
|
-
export const CallGuard_DataSchema = z.object({
|
|
99
|
-
namedNew: NamedObjectSchema.optional().describe("Name and optional tags for the new Guard object. Set 'onChain: true' to create a public on-chain identity. When using root.type='file', this field OVERRIDES namedNew in the file. CIRCULAR DEPENDENCY (DOC-01): When a Guard queries a Service that hasn't been created yet, use a LocalMark NAME (not address) in the query table — the name is resolved to an address at transaction build time. Workflow: (1) Create Service (Phase 1, no publish) → (2) Create Guard referencing Service by name → (3) Update Service.buy_guard = Guard address → (4) Publish Service."),
|
|
100
|
-
description: DescriptionSchema.optional().describe("Guard description. When using root.type='file', this field OVERRIDES description in the file."),
|
|
101
|
-
table: z.array(GuardTableItemBaseSchema).optional().describe("Data table of the Guard object. When using root.type='file', this field OVERRIDES table in the file."),
|
|
102
|
-
root: CallGuard_RootSchema.describe("Root definition: either a direct GuardNode (must be a logical operation returning Bool) or a file reference (type='file'). When type='file', the file can define all Guard fields (namedNew, description, table, root, rely), and schema fields override file content."),
|
|
103
|
-
rely: z.object({
|
|
104
|
-
guards: z.array(NameOrAddressSchema).describe("List of dependent Guard object IDs or names."),
|
|
105
|
-
logic_or: z.boolean().optional().describe("Whether to use logical OR operator."),
|
|
106
|
-
}).optional().describe("All Guard objects that the new Guard object depends on. If logic_or is true, the execution result of the new Guard object is the logical OR of the execution results of all dependent Guard objects; otherwise, it is logical AND. When using root.type='file', this field OVERRIDES rely in the file."),
|
|
107
|
-
binding_hint: GuardBindingHintSchema.optional()
|
|
108
|
-
.describe("Phase 5 Guard capability hint. Provides semantic context (action + host_object + binding_field + optional rule/failure_conditions) for puzzle derivation. When provided, the response will include complete guard_advice (puzzle_status, matched_scene, suggested_patterns, confirmation_text, pending_questions). When absent, puzzle_status intent/binding dimensions are marked incomplete."),
|
|
109
|
-
}).strict().refine((data) => {
|
|
110
|
-
if (typeof data.root === 'object' && data.root !== null && 'type' in data.root) {
|
|
111
|
-
const rootObj = data.root;
|
|
112
|
-
if (rootObj.type === 'file') {
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
const rootNode = data.root;
|
|
117
|
-
if (rootNode.type === 'identifier' && rootNode.identifier !== undefined) {
|
|
118
|
-
const tableItem = data.table?.find(item => item.identifier === rootNode.identifier);
|
|
119
|
-
if (!tableItem) {
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
if (!isBoolValueType(tableItem.value_type)) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return true;
|
|
127
|
-
}, {
|
|
128
|
-
message: "Invalid Guard root: When using 'identifier' as root, the referenced table item must exist and have value_type='Bool' (or 0)."
|
|
129
|
-
}).describe("On-chain Guard creation. IMPORTANT: All defined data (include all submitted data) must be defined in the 'table' field. USAGE: Set 'namedNew' field with {name, tags?, onChain?} to name the new Guard (you may also use 'object' as an alias for 'namedNew' — the MCP preprocess will convert it automatically). The Guard is immutable once created. Define the validation logic in 'root' field. When root.type='file', the file can contain all Guard fields, and any fields defined in the schema will OVERRIDE the file content.");
|
|
130
|
-
export const CallGuard_InputSchema = z.object({
|
|
131
|
-
data: CallGuard_DataSchema.describe("Guard data definition."),
|
|
132
|
-
env: CallEnvSchema.optional(),
|
|
133
|
-
}).strict().describe("On-chain Guard creation input wrapper. Contains the Guard data definition and optional environment settings.");
|
|
134
|
-
export const CallGenPassport_InputSchema = z.object({
|
|
135
|
-
guard: z.union([NameOrAddressSchema, z.array(NameOrAddressSchema)]).describe("Guard object ID(s) to verify and generate passport from. Can be a single guard (string) or multiple guards (array of strings). Supports guard names or addresses."),
|
|
136
|
-
info: SubmissionCallSchema.optional().describe("Optional submission data. If not provided, will attempt to get existing submissions from the guard."),
|
|
137
|
-
env: CallEnvSchema.optional(),
|
|
138
|
-
}).strict().describe("Generate a new Passport object after Guard verification succeeds. The Passport is an immutable on-chain object that can be used for offline friend verification, transaction condition verification, etc. Supports verifying multiple guards at once.");
|
|
139
|
-
export const Guard2File_InputSchema = z.object({
|
|
140
|
-
guard: NameOrAddressSchema.describe("Guard object ID or name to export"),
|
|
141
|
-
file_path: z.string().describe("Output file path (absolute or relative)"),
|
|
142
|
-
format: z.enum(["json", "markdown"]).optional().default("json").describe("Output format: 'json' (default) or 'markdown'"),
|
|
143
|
-
env: CallEnvSchema.optional(),
|
|
144
|
-
}).strict().describe("Query a Guard object from the blockchain and export its definition to a JSON or Markdown file. The exported file can be edited and used to create new Guard objects.");
|
|
145
|
-
export const Guard2File_OutputSchema = z.discriminatedUnion("status", [
|
|
146
|
-
z.object({
|
|
147
|
-
status: z.literal("success"),
|
|
148
|
-
data: z.object({
|
|
149
|
-
file_path: z.string().describe("Absolute path of the exported file"),
|
|
150
|
-
format: z.enum(["json", "markdown"]).describe("Export format"),
|
|
151
|
-
guard_object: z.string().describe("Guard object ID"),
|
|
152
|
-
}).strict().describe("Success result data"),
|
|
153
|
-
}).strict(),
|
|
154
|
-
z.object({
|
|
155
|
-
status: z.literal("error"),
|
|
156
|
-
error: z.string().describe("Error message"),
|
|
157
|
-
}).strict(),
|
|
158
|
-
]).describe("Guard2File operation output schema with discriminator");
|
|
159
|
-
export const Guard2File_OutputWrappedSchema = z.object({
|
|
160
|
-
result: Guard2File_OutputSchema,
|
|
161
|
-
}).strict().describe("Guard2File operation output wrapped schema");
|
|
1
|
+
import{z}from'zod';import{CallEnvSchema,NamedObjectSchema,SubmissionCallSchema}from'./base.js';import{GuardNodeSchema}from'../query/index.js';import{DescriptionSchema,GuardTableItemBaseSchema,NameOrAddressSchema}from'../common/index.js';import{isBoolReturningQuery}from'../utils/guard-query-utils.js';import{ValueType}from'@wowok/wowok';export const CallGuard_RootSchema=z['union']([GuardNodeSchema['refine'](a=>{const b=['logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_equal','logic_not','logic_and','logic_or','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_string_contains','calc_string_nocase_contains','calc_string_nocase_equal','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','query_reward_record_exists','query','identifier'];if(!b['includes'](a['type']))return![];if(a['type']==='query'){const c=a;if(!isBoolReturningQuery(c['query']))return![];}return!![];},{'message':'Guard\x20root\x20node\x20must\x20be\x20an\x20operation\x20that\x20returns\x20Bool.\x20Allowed\x20types:\x20logic_*,\x20calc_string_contains,\x20calc_string_nocase_*,\x20vec_contains_*,\x20reward_record_exist,\x20identifier\x20(must\x20reference\x20Bool\x20type\x20in\x20table).\x20For\x20\x27query\x27\x20type,\x20ONLY\x20queries\x20that\x20return\x20Bool\x20are\x20allowed.\x20Use\x20\x27wowok_buildin_info\x27\x20tool\x20with\x20{\x22info\x22:\x20\x22guard\x20instructions\x22,\x20\x22filter\x22:\x20{\x22returnType\x22:\x20\x22Bool\x22,\x20\x22scope\x22:\x20\x22object\x20query\x22}}\x20to\x20list\x20all\x20Bool-returning\x20queries.\x20Other\x20nodes\x20(calc_number_*,\x20context,\x20non-Bool\x20queries)\x20must\x20be\x20wrapped\x20with\x20a\x20logic\x20operation.'})['describe']('Guard\x20computational\x20tree\x20root\x20node.\x20MUST\x20be\x20an\x20operation\x20that\x20returns\x20a\x20Bool\x20value\x20(pass/fail).\x20For\x20\x27query\x27\x20type,\x20the\x20specific\x20query\x20must\x20return\x20Bool.\x20For\x20\x27identifier\x27\x20type,\x20the\x20referenced\x20table\x20item\x20must\x20have\x20value_type=Bool.'),z['object']({'type':z['literal']('file'),'file_path':z['string']()['describe']('Path\x20to\x20JSON\x20or\x20Markdown\x20file\x20containing\x20Guard\x20definition.\x20File\x20can\x20define:\x20namedNew,\x20description,\x20table,\x20root,\x20rely.'),'format':z['enum'](['json','markdown'])['optional']()['default']('json')['describe']('File\x20format:\x20\x27json\x27\x20or\x20\x27markdown\x27.\x20Default\x20is\x20\x27json\x27.')})['strict']()])['describe']('Guard\x20root\x20definition.\x20Either\x20provide\x20a\x20direct\x20GuardNode\x20tree\x20(must\x20be\x20a\x20logical\x20operation\x20returning\x20Bool)\x20or\x20reference\x20a\x20file\x20to\x20load.\x20When\x20using\x20file\x20type,\x20fields\x20defined\x20in\x20the\x20schema\x20(namedNew,\x20description,\x20table,\x20rely)\x20will\x20OVERRIDE\x20the\x20corresponding\x20fields\x20in\x20the\x20file.');const isBoolValueType=a=>{if(typeof a==='number')return a===ValueType['Bool'];if(typeof a==='string')return a['toLowerCase']()==='bool'||a==='0';return![];};export const GuardBindingHintActionSchema=z['enum'](['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport','custom'])['describe']('Guard\x20protected\x20action\x20type.\x20Maps\x20to\x20IntentPuzzle.action\x20in\x20the\x20puzzle\x20model.');export const GuardBindingHintHostObjectSchema=z['enum'](['Service','Machine','Arbitration','Reward','Repository','Progress','Demand','Standalone'])['describe']('Host\x20object\x20type\x20that\x20the\x20Guard\x20will\x20bind\x20to.\x20\x27Standalone\x27\x20for\x20independent\x20Guards\x20(rely\x20dependency\x20or\x20gen_passport).');export const GuardBindingHintBindingFieldSchema=z['enum'](['buy_guard','order_allocators','Forward.guard','submission','guard','write_guard','usage_guard','voting_guard','ServiceGuard','none'])['describe']('Binding\x20field\x20on\x20the\x20host\x20object.\x20\x27none\x27\x20for\x20standalone\x20Guards.');export const GuardBindingHintSchema=z['object']({'action':GuardBindingHintActionSchema['describe']('Protected\x20action\x20type.\x20Example:\x20\x27buy\x27\x20for\x20Service\x20buy_guard,\x20\x27forward\x27\x20for\x20Machine\x20Forward.guard.'),'host_object':GuardBindingHintHostObjectSchema['describe']('Host\x20object\x20type.\x20Example:\x20\x27Service\x27,\x20\x27Machine\x27.'),'binding_field':GuardBindingHintBindingFieldSchema['describe']('Binding\x20field.\x20Example:\x20\x27buy_guard\x27,\x20\x27Forward.guard\x27.'),'rule_sentence':z['string']()['optional']()['describe']('One-sentence\x20description\x20of\x20the\x20validation\x20rule\x20(human-readable).\x20Example:\x20\x27Only\x20the\x20author\x20can\x20purchase\x20this\x20service\x27.'),'failure_conditions':z['array'](z['string']())['optional']()['describe']('List\x20of\x20conditions\x20under\x20which\x20the\x20Guard\x20should\x20FAIL.\x20Example:\x20[\x27Signer\x20is\x20not\x20in\x20allowlist\x27,\x27Order\x20is\x20already\x20completed\x27].'),'circular_reference':z['boolean']()['optional']()['describe']('Whether\x20the\x20Guard\x20references\x20the\x20Host\x20Object\x20itself\x20(circular\x20reference\x20pattern).\x20true=Guard\x20queries\x20the\x20Host\x20Object\x20it\x20binds\x20to.')})['strict']()['describe']('Optional\x20semantic\x20hint\x20for\x20Guard\x20capability\x20system.\x20Provides\x20intent\x20+\x20binding\x20context\x20so\x20the\x20MCP\x20server\x20can\x20derive\x20GuardPuzzle,\x20run\x20risk\x20assessment,\x20and\x20generate\x20confirmation\x20text.\x20Strongly\x20recommended:\x20fill\x20this\x20field\x20to\x20enable\x20puzzle_status,\x20matched_scene,\x20suggested_patterns,\x20confirmation_text,\x20and\x20pending_questions\x20in\x20the\x20response\x20guard_advice.');export const CallGuard_DataSchema=z['object']({'namedNew':NamedObjectSchema['optional']()['describe']('Name\x20and\x20optional\x20tags\x20for\x20the\x20new\x20Guard\x20object.\x20Set\x20\x27onChain:\x20true\x27\x20to\x20create\x20a\x20public\x20on-chain\x20identity.\x20When\x20using\x20root.type=\x27file\x27,\x20this\x20field\x20OVERRIDES\x20namedNew\x20in\x20the\x20file.\x20CIRCULAR\x20DEPENDENCY\x20(DOC-01):\x20When\x20a\x20Guard\x20queries\x20a\x20Service\x20that\x20hasn\x27t\x20been\x20created\x20yet,\x20use\x20a\x20LocalMark\x20NAME\x20(not\x20address)\x20in\x20the\x20query\x20table\x20—\x20the\x20name\x20is\x20resolved\x20to\x20an\x20address\x20at\x20transaction\x20build\x20time.\x20Workflow:\x20(1)\x20Create\x20Service\x20(Phase\x201,\x20no\x20publish)\x20→\x20(2)\x20Create\x20Guard\x20referencing\x20Service\x20by\x20name\x20→\x20(3)\x20Update\x20Service.buy_guard\x20=\x20Guard\x20address\x20→\x20(4)\x20Publish\x20Service.'),'description':DescriptionSchema['optional']()['describe']('Guard\x20description.\x20When\x20using\x20root.type=\x27file\x27,\x20this\x20field\x20OVERRIDES\x20description\x20in\x20the\x20file.'),'table':z['array'](GuardTableItemBaseSchema)['optional']()['describe']('Data\x20table\x20of\x20the\x20Guard\x20object.\x20When\x20using\x20root.type=\x27file\x27,\x20this\x20field\x20OVERRIDES\x20table\x20in\x20the\x20file.'),'root':CallGuard_RootSchema['describe']('Root\x20definition:\x20either\x20a\x20direct\x20GuardNode\x20(must\x20be\x20a\x20logical\x20operation\x20returning\x20Bool)\x20or\x20a\x20file\x20reference\x20(type=\x27file\x27).\x20When\x20type=\x27file\x27,\x20the\x20file\x20can\x20define\x20all\x20Guard\x20fields\x20(namedNew,\x20description,\x20table,\x20root,\x20rely),\x20and\x20schema\x20fields\x20override\x20file\x20content.'),'rely':z['object']({'guards':z['array'](NameOrAddressSchema)['describe']('List\x20of\x20dependent\x20Guard\x20object\x20IDs\x20or\x20names.'),'logic_or':z['boolean']()['optional']()['describe']('Whether\x20to\x20use\x20logical\x20OR\x20operator.')})['optional']()['describe']('All\x20Guard\x20objects\x20that\x20the\x20new\x20Guard\x20object\x20depends\x20on.\x20If\x20logic_or\x20is\x20true,\x20the\x20execution\x20result\x20of\x20the\x20new\x20Guard\x20object\x20is\x20the\x20logical\x20OR\x20of\x20the\x20execution\x20results\x20of\x20all\x20dependent\x20Guard\x20objects;\x20otherwise,\x20it\x20is\x20logical\x20AND.\x20When\x20using\x20root.type=\x27file\x27,\x20this\x20field\x20OVERRIDES\x20rely\x20in\x20the\x20file.'),'binding_hint':GuardBindingHintSchema['optional']()['describe']('Phase\x205\x20Guard\x20capability\x20hint.\x20Provides\x20semantic\x20context\x20(action\x20+\x20host_object\x20+\x20binding_field\x20+\x20optional\x20rule/failure_conditions)\x20for\x20puzzle\x20derivation.\x20When\x20provided,\x20the\x20response\x20will\x20include\x20complete\x20guard_advice\x20(puzzle_status,\x20matched_scene,\x20suggested_patterns,\x20confirmation_text,\x20pending_questions).\x20When\x20absent,\x20puzzle_status\x20intent/binding\x20dimensions\x20are\x20marked\x20incomplete.')})['strict']()['refine'](a=>{if(typeof a['root']==='object'&&a['root']!==null&&'type'in a['root']){const c=a['root'];if(c['type']==='file')return!![];}const b=a['root'];if(b['type']==='identifier'&&b['identifier']!==undefined){const d=a['table']?.['find'](e=>e['identifier']===b['identifier']);if(!d)return![];if(!isBoolValueType(d['value_type']))return![];}return!![];},{'message':'Invalid\x20Guard\x20root:\x20When\x20using\x20\x27identifier\x27\x20as\x20root,\x20the\x20referenced\x20table\x20item\x20must\x20exist\x20and\x20have\x20value_type=\x27Bool\x27\x20(or\x200).'})['describe']('On-chain\x20Guard\x20creation.\x20IMPORTANT:\x20All\x20defined\x20data\x20(include\x20all\x20submitted\x20data)\x20must\x20be\x20defined\x20in\x20the\x20\x27table\x27\x20field.\x20USAGE:\x20Set\x20\x27namedNew\x27\x20field\x20with\x20{name,\x20tags?,\x20onChain?}\x20to\x20name\x20the\x20new\x20Guard\x20(you\x20may\x20also\x20use\x20\x27object\x27\x20as\x20an\x20alias\x20for\x20\x27namedNew\x27\x20—\x20the\x20MCP\x20preprocess\x20will\x20convert\x20it\x20automatically).\x20The\x20Guard\x20is\x20immutable\x20once\x20created.\x20Define\x20the\x20validation\x20logic\x20in\x20\x27root\x27\x20field.\x20When\x20root.type=\x27file\x27,\x20the\x20file\x20can\x20contain\x20all\x20Guard\x20fields,\x20and\x20any\x20fields\x20defined\x20in\x20the\x20schema\x20will\x20OVERRIDE\x20the\x20file\x20content.');export const CallGuard_InputSchema=z['object']({'data':CallGuard_DataSchema['describe']('Guard\x20data\x20definition.'),'env':CallEnvSchema['optional']()})['strict']()['describe']('On-chain\x20Guard\x20creation\x20input\x20wrapper.\x20Contains\x20the\x20Guard\x20data\x20definition\x20and\x20optional\x20environment\x20settings.');export const CallGenPassport_InputSchema=z['object']({'guard':z['union']([NameOrAddressSchema,z['array'](NameOrAddressSchema)])['describe']('Guard\x20object\x20ID(s)\x20to\x20verify\x20and\x20generate\x20passport\x20from.\x20Can\x20be\x20a\x20single\x20guard\x20(string)\x20or\x20multiple\x20guards\x20(array\x20of\x20strings).\x20Supports\x20guard\x20names\x20or\x20addresses.'),'info':SubmissionCallSchema['optional']()['describe']('Optional\x20submission\x20data.\x20If\x20not\x20provided,\x20will\x20attempt\x20to\x20get\x20existing\x20submissions\x20from\x20the\x20guard.'),'env':CallEnvSchema['optional']()})['strict']()['describe']('Generate\x20a\x20new\x20Passport\x20object\x20after\x20Guard\x20verification\x20succeeds.\x20The\x20Passport\x20is\x20an\x20immutable\x20on-chain\x20object\x20that\x20can\x20be\x20used\x20for\x20offline\x20friend\x20verification,\x20transaction\x20condition\x20verification,\x20etc.\x20Supports\x20verifying\x20multiple\x20guards\x20at\x20once.');export const Guard2File_InputSchema=z['object']({'guard':NameOrAddressSchema['describe']('Guard\x20object\x20ID\x20or\x20name\x20to\x20export'),'file_path':z['string']()['describe']('Output\x20file\x20path\x20(absolute\x20or\x20relative)'),'format':z['enum'](['json','markdown'])['optional']()['default']('json')['describe']('Output\x20format:\x20\x27json\x27\x20(default)\x20or\x20\x27markdown\x27'),'env':CallEnvSchema['optional']()})['strict']()['describe']('Query\x20a\x20Guard\x20object\x20from\x20the\x20blockchain\x20and\x20export\x20its\x20definition\x20to\x20a\x20JSON\x20or\x20Markdown\x20file.\x20The\x20exported\x20file\x20can\x20be\x20edited\x20and\x20used\x20to\x20create\x20new\x20Guard\x20objects.');export const Guard2File_OutputSchema=z['discriminatedUnion']('status',[z['object']({'status':z['literal']('success'),'data':z['object']({'file_path':z['string']()['describe']('Absolute\x20path\x20of\x20the\x20exported\x20file'),'format':z['enum'](['json','markdown'])['describe']('Export\x20format'),'guard_object':z['string']()['describe']('Guard\x20object\x20ID')})['strict']()['describe']('Success\x20result\x20data')})['strict'](),z['object']({'status':z['literal']('error'),'error':z['string']()['describe']('Error\x20message')})['strict']()])['describe']('Guard2File\x20operation\x20output\x20schema\x20with\x20discriminator');export const Guard2File_OutputWrappedSchema=z['object']({'result':Guard2File_OutputSchema})['strict']()['describe']('Guard2File\x20operation\x20output\x20wrapped\x20schema');
|
|
@@ -1,322 +1 @@
|
|
|
1
|
-
import { ResponseData, LocalMark,
|
|
2
|
-
import { classifyError, buildSemantic } from "./semantic.js";
|
|
3
|
-
let successHook = null;
|
|
4
|
-
export function registerSuccessHook(hook) {
|
|
5
|
-
successHook = hook;
|
|
6
|
-
}
|
|
7
|
-
function fireSuccessHook(result, context) {
|
|
8
|
-
if (successHook) {
|
|
9
|
-
try {
|
|
10
|
-
successHook(result, context);
|
|
11
|
-
}
|
|
12
|
-
catch { }
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function applySchemaWarning(output, context) {
|
|
16
|
-
const schemaCheck = context?.schema_check;
|
|
17
|
-
if (!schemaCheck || (schemaCheck.warnings.length === 0 && schemaCheck.errors.length === 0)) {
|
|
18
|
-
return output;
|
|
19
|
-
}
|
|
20
|
-
const warnings = [...schemaCheck.warnings, ...schemaCheck.errors];
|
|
21
|
-
let semantic = output.semantic;
|
|
22
|
-
if (semantic && warnings.length > 0) {
|
|
23
|
-
semantic = {
|
|
24
|
-
...semantic,
|
|
25
|
-
warnings: [...(semantic.warnings || []), ...warnings],
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const schemaWarning = {
|
|
29
|
-
compatible: schemaCheck.compatible,
|
|
30
|
-
warnings,
|
|
31
|
-
client_version: schemaCheck.client_version,
|
|
32
|
-
server_versions: schemaCheck.versions,
|
|
33
|
-
};
|
|
34
|
-
return {
|
|
35
|
-
...output,
|
|
36
|
-
semantic,
|
|
37
|
-
schema_warning: schemaWarning,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
function convertBigInts(obj) {
|
|
41
|
-
if (typeof obj === "bigint")
|
|
42
|
-
return obj.toString();
|
|
43
|
-
if (Array.isArray(obj))
|
|
44
|
-
return obj.map(convertBigInts);
|
|
45
|
-
if (obj && typeof obj === "object") {
|
|
46
|
-
const out = {};
|
|
47
|
-
for (const k of Object.keys(obj))
|
|
48
|
-
out[k] = convertBigInts(obj[k]);
|
|
49
|
-
return out;
|
|
50
|
-
}
|
|
51
|
-
return obj;
|
|
52
|
-
}
|
|
53
|
-
function runHarnessLoops(context, output, errorCode) {
|
|
54
|
-
if (!context?.harness || !context?.expected)
|
|
55
|
-
return undefined;
|
|
56
|
-
const harness = context.harness;
|
|
57
|
-
const expected = context.expected;
|
|
58
|
-
const actualSemantic = output.semantic;
|
|
59
|
-
const verifyReport = harness.verify({
|
|
60
|
-
expected,
|
|
61
|
-
actual: {
|
|
62
|
-
result_type: output.result.type,
|
|
63
|
-
semantic: actualSemantic,
|
|
64
|
-
error_code: output.result.type === "error" ? output.result.error_code : undefined,
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
let recovery;
|
|
68
|
-
const needRecovery = verifyReport.status !== "pass" || output.result.type === "error" || errorCode;
|
|
69
|
-
if (needRecovery) {
|
|
70
|
-
const ec = errorCode
|
|
71
|
-
|| (output.result.type === "error" ? output.result.error_code : undefined)
|
|
72
|
-
|| "unknown";
|
|
73
|
-
recovery = harness.recover(ec, context.operation_id || expected.operation, {
|
|
74
|
-
operation_type: context.operation_type,
|
|
75
|
-
data: context.data,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
verify: {
|
|
80
|
-
status: verifyReport.status,
|
|
81
|
-
mismatches: verifyReport.mismatches.map(m => convertBigInts(m)),
|
|
82
|
-
summary: verifyReport.summary,
|
|
83
|
-
timestamp: verifyReport.timestamp,
|
|
84
|
-
},
|
|
85
|
-
recovery: recovery ? {
|
|
86
|
-
strategy: recovery.strategy,
|
|
87
|
-
should_retry: recovery.should_retry,
|
|
88
|
-
adjusted_params: recovery.adjusted_params,
|
|
89
|
-
user_prompt: recovery.user_prompt,
|
|
90
|
-
max_attempts: recovery.max_attempts,
|
|
91
|
-
current_attempt: recovery.current_attempt,
|
|
92
|
-
detail: recovery.detail,
|
|
93
|
-
} : undefined,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
export function handleCallResult(result, context) {
|
|
97
|
-
const safeResult = convertBigInts(result);
|
|
98
|
-
if (safeResult && "error" in safeResult) {
|
|
99
|
-
const enrichedError = enrichMoveError(safeResult.error);
|
|
100
|
-
const classified = classifyError(enrichedError);
|
|
101
|
-
const output = {
|
|
102
|
-
message: `Error: ${enrichedError}`,
|
|
103
|
-
result: {
|
|
104
|
-
type: "error",
|
|
105
|
-
error: enrichedError,
|
|
106
|
-
error_code: classified.error_code,
|
|
107
|
-
retryable: classified.retryable,
|
|
108
|
-
recovery_hint: classified.recovery_hint,
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
const harnessReport = runHarnessLoops(context, output, classified.error_code);
|
|
112
|
-
if (harnessReport)
|
|
113
|
-
output.harness_report = harnessReport;
|
|
114
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
115
|
-
return {
|
|
116
|
-
content: [{ type: "text", text: finalOutput.message }],
|
|
117
|
-
structuredContent: finalOutput,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
if (safeResult && "digest" in safeResult) {
|
|
121
|
-
const r = ResponseData(safeResult);
|
|
122
|
-
const txStatus = safeResult?.effects?.status?.status;
|
|
123
|
-
const txError = safeResult?.effects?.status?.error;
|
|
124
|
-
const isSuccess = txStatus === "success";
|
|
125
|
-
if (!isSuccess) {
|
|
126
|
-
const enrichedError = enrichMoveError(txError || txStatus || "unknown error");
|
|
127
|
-
const classified = classifyError(enrichedError);
|
|
128
|
-
const output = {
|
|
129
|
-
message: `Transaction failed: ${enrichedError}`,
|
|
130
|
-
result: {
|
|
131
|
-
type: "error",
|
|
132
|
-
error: enrichedError,
|
|
133
|
-
error_code: classified.error_code,
|
|
134
|
-
retryable: classified.retryable,
|
|
135
|
-
recovery_hint: classified.recovery_hint,
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
const harnessReport = runHarnessLoops(context, output, classified.error_code);
|
|
139
|
-
if (harnessReport)
|
|
140
|
-
output.harness_report = harnessReport;
|
|
141
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
142
|
-
return {
|
|
143
|
-
content: [
|
|
144
|
-
{ type: "text", text: finalOutput.message },
|
|
145
|
-
{ type: "text", text: JSON.stringify(r) },
|
|
146
|
-
],
|
|
147
|
-
structuredContent: finalOutput,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
const output = {
|
|
151
|
-
message: "Transaction completed successfully",
|
|
152
|
-
result: { type: "transaction", ...safeResult },
|
|
153
|
-
semantic: buildSemantic(safeResult, context),
|
|
154
|
-
};
|
|
155
|
-
const harnessReport = runHarnessLoops(context, output);
|
|
156
|
-
if (harnessReport)
|
|
157
|
-
output.harness_report = harnessReport;
|
|
158
|
-
fireSuccessHook(result, context);
|
|
159
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
160
|
-
return {
|
|
161
|
-
content: [
|
|
162
|
-
{ type: "text", text: finalOutput.message },
|
|
163
|
-
{ type: "text", text: JSON.stringify(r) },
|
|
164
|
-
],
|
|
165
|
-
structuredContent: finalOutput,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
if (safeResult && "guard" in safeResult && "submission" in safeResult) {
|
|
169
|
-
const output = {
|
|
170
|
-
message: "Submission required for Guard verification",
|
|
171
|
-
result: { type: "submission", ...safeResult },
|
|
172
|
-
semantic: context ? {
|
|
173
|
-
intent: "guard_submission_required",
|
|
174
|
-
status: "pending_input",
|
|
175
|
-
summary: "Guard verification required — fill the submission data and resubmit",
|
|
176
|
-
next_actions: [{
|
|
177
|
-
action: "fill guard submission data and resubmit via call_with_submission",
|
|
178
|
-
reason: "Guard rejected the call; submission must satisfy the Guard table requirements",
|
|
179
|
-
tool: "onchain_operations (with submission field)",
|
|
180
|
-
priority: "required",
|
|
181
|
-
}],
|
|
182
|
-
} : undefined,
|
|
183
|
-
};
|
|
184
|
-
const harnessReport = runHarnessLoops(context, output);
|
|
185
|
-
if (harnessReport)
|
|
186
|
-
output.harness_report = harnessReport;
|
|
187
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
188
|
-
return {
|
|
189
|
-
content: [
|
|
190
|
-
{ type: "text", text: finalOutput.message },
|
|
191
|
-
{ type: "text", text: JSON.stringify(safeResult) },
|
|
192
|
-
],
|
|
193
|
-
structuredContent: finalOutput,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
if (Array.isArray(safeResult)) {
|
|
197
|
-
const output = {
|
|
198
|
-
message: "Operation completed",
|
|
199
|
-
result: { type: "data", data: safeResult },
|
|
200
|
-
};
|
|
201
|
-
const harnessReport = runHarnessLoops(context, output);
|
|
202
|
-
if (harnessReport)
|
|
203
|
-
output.harness_report = harnessReport;
|
|
204
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
205
|
-
return {
|
|
206
|
-
content: [
|
|
207
|
-
{ type: "text", text: finalOutput.message },
|
|
208
|
-
{ type: "text", text: JSON.stringify(safeResult) },
|
|
209
|
-
],
|
|
210
|
-
structuredContent: finalOutput,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
if (safeResult === undefined || safeResult === null) {
|
|
214
|
-
const output = {
|
|
215
|
-
message: "Operation completed",
|
|
216
|
-
result: { type: "null" },
|
|
217
|
-
};
|
|
218
|
-
const harnessReport = runHarnessLoops(context, output);
|
|
219
|
-
if (harnessReport)
|
|
220
|
-
output.harness_report = harnessReport;
|
|
221
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
222
|
-
return {
|
|
223
|
-
content: [{ type: "text", text: finalOutput.message }],
|
|
224
|
-
structuredContent: finalOutput,
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
const output = {
|
|
228
|
-
message: "Operation completed",
|
|
229
|
-
result: { type: "transaction", ...safeResult },
|
|
230
|
-
semantic: buildSemantic(safeResult, context),
|
|
231
|
-
};
|
|
232
|
-
const harnessReport = runHarnessLoops(context, output);
|
|
233
|
-
if (harnessReport)
|
|
234
|
-
output.harness_report = harnessReport;
|
|
235
|
-
const finalOutput = applySchemaWarning(output, context);
|
|
236
|
-
return {
|
|
237
|
-
content: [{ type: "text", text: finalOutput.message }],
|
|
238
|
-
structuredContent: finalOutput,
|
|
239
|
-
};
|
|
240
|
-
}
|
|
241
|
-
export function createServerConfig(packageJson, description) {
|
|
242
|
-
return {
|
|
243
|
-
name: packageJson.name,
|
|
244
|
-
version: packageJson.version,
|
|
245
|
-
description: description || packageJson.description,
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
export function createCapabilitiesConfig() {
|
|
249
|
-
return {
|
|
250
|
-
capabilities: {
|
|
251
|
-
prompts: {},
|
|
252
|
-
resources: {},
|
|
253
|
-
tools: { listChanged: true },
|
|
254
|
-
logging: {},
|
|
255
|
-
},
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
export function createToolMeta(category, tags) {
|
|
259
|
-
return {
|
|
260
|
-
author: "WOWOK Team",
|
|
261
|
-
createdAt: "2026-02-01",
|
|
262
|
-
lastUpdated: "2026-02-01",
|
|
263
|
-
category,
|
|
264
|
-
tags,
|
|
265
|
-
requiresAuth: false,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
export function createToolAnnotations(readOnlyHint = false, destructiveHint = false) {
|
|
269
|
-
return {
|
|
270
|
-
readOnlyHint,
|
|
271
|
-
destructiveHint,
|
|
272
|
-
idempotentHint: true,
|
|
273
|
-
openWorldHint: false,
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
export async function transformSubmission(submission) {
|
|
277
|
-
if (!submission)
|
|
278
|
-
return undefined;
|
|
279
|
-
const guardNames = (submission.guard || []).map((g) => g.object).filter(Boolean);
|
|
280
|
-
const submissionGuardNames = (submission.submission || []).map((s) => s.guard).filter(Boolean);
|
|
281
|
-
const allNames = [...new Set([...guardNames, ...submissionGuardNames])];
|
|
282
|
-
const resolvedAddresses = allNames.length > 0
|
|
283
|
-
? await LocalMark.Instance().get_many_address(allNames)
|
|
284
|
-
: [];
|
|
285
|
-
const nameToAddress = new Map();
|
|
286
|
-
allNames.forEach((name, index) => {
|
|
287
|
-
const addr = resolvedAddresses[index];
|
|
288
|
-
if (addr) {
|
|
289
|
-
nameToAddress.set(name, addr);
|
|
290
|
-
}
|
|
291
|
-
});
|
|
292
|
-
const getAddress = (name) => {
|
|
293
|
-
if (nameToAddress.has(name)) {
|
|
294
|
-
return nameToAddress.get(name);
|
|
295
|
-
}
|
|
296
|
-
for (const [n, addr] of nameToAddress.entries()) {
|
|
297
|
-
if (n === name)
|
|
298
|
-
return addr;
|
|
299
|
-
}
|
|
300
|
-
if (name.startsWith("0x") && name.length === 66) {
|
|
301
|
-
return name;
|
|
302
|
-
}
|
|
303
|
-
throw new Error(`Guard name or address not found: ${name}`);
|
|
304
|
-
};
|
|
305
|
-
return {
|
|
306
|
-
type: "submission",
|
|
307
|
-
guard: (submission.guard || []).map((g) => ({
|
|
308
|
-
object: getAddress(g.object),
|
|
309
|
-
impack: g.impack || false,
|
|
310
|
-
})),
|
|
311
|
-
submission: (submission.submission || []).map((s) => ({
|
|
312
|
-
guard: getAddress(s.guard),
|
|
313
|
-
submission: s.submission || [],
|
|
314
|
-
})),
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
export function validateInput(data, schema) {
|
|
318
|
-
return schema.parse(data);
|
|
319
|
-
}
|
|
320
|
-
export function getEnvConfig(env) {
|
|
321
|
-
return env ?? {};
|
|
322
|
-
}
|
|
1
|
+
import{ResponseData,LocalMark,enrichMoveError}from'@wowok/wowok';import{classifyError,buildSemantic}from'./semantic.js';let successHook=null;export function registerSuccessHook(a){successHook=a;}function fireSuccessHook(a,b){if(successHook)try{successHook(a,b);}catch{}}function applySchemaWarning(a,b){const c=b?.['schema_check'];if(!c||c['warnings']['length']===0x0&&c['errors']['length']===0x0)return a;const d=[...c['warnings'],...c['errors']];let e=a['semantic'];e&&d['length']>0x0&&(e={...e,'warnings':[...e['warnings']||[],...d]});const f={'compatible':c['compatible'],'warnings':d,'client_version':c['client_version'],'server_versions':c['versions']};return{...a,'semantic':e,'schema_warning':f};}function convertBigInts(a){if(typeof a==='bigint')return a['toString']();if(Array['isArray'](a))return a['map'](convertBigInts);if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a))b[c]=convertBigInts(a[c]);return b;}return a;}function runHarnessLoops(a,b,c){if(!a?.['harness']||!a?.['expected'])return undefined;const d=a['harness'],e=a['expected'],f=b['semantic'],g=d['verify']({'expected':e,'actual':{'result_type':b['result']['type'],'semantic':f,'error_code':b['result']['type']==='error'?b['result']['error_code']:undefined}});let h;const i=g['status']!=='pass'||b['result']['type']==='error'||c;if(i){const j=c||(b['result']['type']==='error'?b['result']['error_code']:undefined)||'unknown';h=d['recover'](j,a['operation_id']||e['operation'],{'operation_type':a['operation_type'],'data':a['data']});}return{'verify':{'status':g['status'],'mismatches':g['mismatches']['map'](k=>convertBigInts(k)),'summary':g['summary'],'timestamp':g['timestamp']},'recovery':h?{'strategy':h['strategy'],'should_retry':h['should_retry'],'adjusted_params':h['adjusted_params'],'user_prompt':h['user_prompt'],'max_attempts':h['max_attempts'],'current_attempt':h['current_attempt'],'detail':h['detail']}:undefined};}export function handleCallResult(a,b){const c=convertBigInts(a);if(c&&'error'in c){const g=enrichMoveError(c['error']),h=classifyError(g),i={'message':'Error:\x20'+g,'result':{'type':'error','error':g,'error_code':h['error_code'],'retryable':h['retryable'],'recovery_hint':h['recovery_hint']}},j=runHarnessLoops(b,i,h['error_code']);if(j)i['harness_report']=j;const k=applySchemaWarning(i,b);return{'content':[{'type':'text','text':k['message']}],'structuredContent':k};}if(c&&'digest'in c){const l=ResponseData(c),m=c?.['effects']?.['status']?.['status'],n=c?.['effects']?.['status']?.['error'],o=m==='success';if(!o){const t=enrichMoveError(n||m||'unknown\x20error'),u=classifyError(t),v={'message':'Transaction\x20failed:\x20'+t,'result':{'type':'error','error':t,'error_code':u['error_code'],'retryable':u['retryable'],'recovery_hint':u['recovery_hint']}},w=runHarnessLoops(b,v,u['error_code']);if(w)v['harness_report']=w;const x=applySchemaWarning(v,b);return{'content':[{'type':'text','text':x['message']},{'type':'text','text':JSON['stringify'](l)}],'structuredContent':x};}const p={'message':'Transaction\x20completed\x20successfully','result':{'type':'transaction',...c},'semantic':buildSemantic(c,b)},q=runHarnessLoops(b,p);if(q)p['harness_report']=q;fireSuccessHook(a,b);const s=applySchemaWarning(p,b);return{'content':[{'type':'text','text':s['message']},{'type':'text','text':JSON['stringify'](l)}],'structuredContent':s};}if(c&&'guard'in c&&'submission'in c){const y={'message':'Submission\x20required\x20for\x20Guard\x20verification','result':{'type':'submission',...c},'semantic':b?{'intent':'guard_submission_required','status':'pending_input','summary':'Guard\x20verification\x20required\x20—\x20fill\x20the\x20submission\x20data\x20and\x20resubmit','next_actions':[{'action':'fill\x20guard\x20submission\x20data\x20and\x20resubmit\x20via\x20call_with_submission','reason':'Guard\x20rejected\x20the\x20call;\x20submission\x20must\x20satisfy\x20the\x20Guard\x20table\x20requirements','tool':'onchain_operations\x20(with\x20submission\x20field)','priority':'required'}]}:undefined},z=runHarnessLoops(b,y);if(z)y['harness_report']=z;const A=applySchemaWarning(y,b);return{'content':[{'type':'text','text':A['message']},{'type':'text','text':JSON['stringify'](c)}],'structuredContent':A};}if(Array['isArray'](c)){const B={'message':'Operation\x20completed','result':{'type':'data','data':c}},C=runHarnessLoops(b,B);if(C)B['harness_report']=C;const D=applySchemaWarning(B,b);return{'content':[{'type':'text','text':D['message']},{'type':'text','text':JSON['stringify'](c)}],'structuredContent':D};}if(c===undefined||c===null){const E={'message':'Operation\x20completed','result':{'type':'null'}},F=runHarnessLoops(b,E);if(F)E['harness_report']=F;const G=applySchemaWarning(E,b);return{'content':[{'type':'text','text':G['message']}],'structuredContent':G};}const d={'message':'Operation\x20completed','result':{'type':'transaction',...c},'semantic':buildSemantic(c,b)},e=runHarnessLoops(b,d);if(e)d['harness_report']=e;const f=applySchemaWarning(d,b);return{'content':[{'type':'text','text':f['message']}],'structuredContent':f};}export function createServerConfig(a,b){return{'name':a['name'],'version':a['version'],'description':b||a['description']};}export function createCapabilitiesConfig(){return{'capabilities':{'prompts':{},'resources':{},'tools':{'listChanged':!![]},'logging':{}}};}export function createToolMeta(a,b){return{'author':'WOWOK\x20Team','createdAt':'2026-02-01','lastUpdated':'2026-02-01','category':a,'tags':b,'requiresAuth':![]};}export function createToolAnnotations(a=![],b=![]){return{'readOnlyHint':a,'destructiveHint':b,'idempotentHint':!![],'openWorldHint':![]};}export async function transformSubmission(a){if(!a)return undefined;const b=(a['guard']||[])['map'](h=>h['object'])['filter'](Boolean),c=(a['submission']||[])['map'](h=>h['guard'])['filter'](Boolean),d=[...new Set([...b,...c])],e=d['length']>0x0?await LocalMark['Instance']()['get_many_address'](d):[],f=new Map();d['forEach']((h,i)=>{const j=e[i];j&&f['set'](h,j);});const g=h=>{if(f['has'](h))return f['get'](h);for(const [i,j]of f['entries']()){if(i===h)return j;}if(h['startsWith']('0x')&&h['length']===0x42)return h;throw new Error('Guard\x20name\x20or\x20address\x20not\x20found:\x20'+h);};return{'type':'submission','guard':(a['guard']||[])['map'](h=>({'object':g(h['object']),'impack':h['impack']||![]})),'submission':(a['submission']||[])['map'](h=>({'guard':g(h['guard']),'submission':h['submission']||[]}))};}export function validateInput(a,b){return b['parse'](a);}export function getEnvConfig(a){return a??{};}
|
|
@@ -1,20 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from './handler.js';
|
|
3
|
-
export * from './semantic.js';
|
|
4
|
-
export * from './contact.js';
|
|
5
|
-
export * from './demand.js';
|
|
6
|
-
export * from './guard.js';
|
|
7
|
-
export * from './machine.js';
|
|
8
|
-
export * from './arbitration.js';
|
|
9
|
-
export * from './allocation.js';
|
|
10
|
-
export * from './order.js';
|
|
11
|
-
export * from './payment.js';
|
|
12
|
-
export * from './permission.js';
|
|
13
|
-
export * from './personal.js';
|
|
14
|
-
export * from './proof.js';
|
|
15
|
-
export * from './progress.js';
|
|
16
|
-
export * from './repository.js';
|
|
17
|
-
export * from './reward.js';
|
|
18
|
-
export * from './service.js';
|
|
19
|
-
export * from './treasury.js';
|
|
20
|
-
export * from './bridge.js';
|
|
1
|
+
export*from'./base.js';export*from'./handler.js';export*from'./semantic.js';export*from'./contact.js';export*from'./demand.js';export*from'./guard.js';export*from'./machine.js';export*from'./arbitration.js';export*from'./allocation.js';export*from'./order.js';export*from'./payment.js';export*from'./permission.js';export*from'./personal.js';export*from'./proof.js';export*from'./progress.js';export*from'./repository.js';export*from'./reward.js';export*from'./service.js';export*from'./treasury.js';export*from'./bridge.js';
|