@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,197 +1 @@
|
|
|
1
|
-
export const REWARD_TEMPLATES = [
|
|
2
|
-
{
|
|
3
|
-
type: "first_order",
|
|
4
|
-
name: "First-order reward",
|
|
5
|
-
description: "New customers receive a reward after their first order, lowering the trial barrier and boosting conversion.",
|
|
6
|
-
guardCondition: "Guard verifies: order_address.holder == current claimer, and order.service == this Service, and order is the first order for this holder (via Repository history query)",
|
|
7
|
-
amountRange: { min: "0.1WOW", max: "5WOW" },
|
|
8
|
-
allocationStrategy: "fixed",
|
|
9
|
-
parameters: [
|
|
10
|
-
{ name: "amount", type: "string", description: "Reward amount (e.g., '1WOW')", required: true },
|
|
11
|
-
{ name: "budget", type: "string", description: "Total budget (e.g., '100WOW')", required: true },
|
|
12
|
-
],
|
|
13
|
-
example: "A new customer orders a photography service and receives 1 WOW cashback on the first order, lowering the first trial cost.",
|
|
14
|
-
relevantGuardOps: ["query", "repository_read"],
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
type: "referral",
|
|
18
|
-
name: "Referral viral reward",
|
|
19
|
-
description: "Existing customers refer new customers to place an order; both parties receive a reward, creating a word-of-mouth flywheel.",
|
|
20
|
-
guardCondition: "Guard verifies: referrer address is marked as 'referred_by' in the Repository review table, and the referee's order is completed (Progress reached terminal state)",
|
|
21
|
-
amountRange: { min: "0.5WOW", max: "10WOW" },
|
|
22
|
-
allocationStrategy: "proportional",
|
|
23
|
-
parameters: [
|
|
24
|
-
{ name: "referrer_reward", type: "string", description: "Referrer reward (e.g., '2WOW')", required: true },
|
|
25
|
-
{ name: "referee_reward", type: "string", description: "Referee reward (e.g., '1WOW')", required: true },
|
|
26
|
-
{ name: "max_referrals", type: "number", description: "Max referrals per person (e.g., 10)", required: false },
|
|
27
|
-
],
|
|
28
|
-
example: "Alice refers Bob to purchase a service; after Bob completes the first order, Alice gets 2 WOW and Bob gets 1 WOW.",
|
|
29
|
-
relevantGuardOps: ["query", "repository_read", "repository_write"],
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
type: "loyalty",
|
|
33
|
-
name: "Loyalty tiered reward",
|
|
34
|
-
description: "Customers unlock higher rewards after reaching cumulative spending tiers, improving repeat rate and average order value.",
|
|
35
|
-
guardCondition: "Guard verifies: via Repository query, the address's historical order count >= N, where N is the current tier threshold",
|
|
36
|
-
amountRange: { min: "1WOW", max: "50WOW" },
|
|
37
|
-
allocationStrategy: "tiered",
|
|
38
|
-
parameters: [
|
|
39
|
-
{ name: "tier1_orders", type: "number", description: "Tier 1 order count (e.g., 3)", required: true },
|
|
40
|
-
{ name: "tier1_reward", type: "string", description: "Tier 1 reward (e.g., '1WOW')", required: true },
|
|
41
|
-
{ name: "tier2_orders", type: "number", description: "Tier 2 order count (e.g., 10)", required: true },
|
|
42
|
-
{ name: "tier2_reward", type: "string", description: "Tier 2 reward (e.g., '5WOW')", required: true },
|
|
43
|
-
{ name: "tier3_orders", type: "number", description: "Tier 3 order count (e.g., 30)", required: false },
|
|
44
|
-
{ name: "tier3_reward", type: "string", description: "Tier 3 reward (e.g., '20WOW')", required: false },
|
|
45
|
-
],
|
|
46
|
-
example: "A customer with 3 cumulative orders gets 1 WOW, 10 orders gets 5 WOW, 30 orders gets 20 WOW, incentivizing continued spending.",
|
|
47
|
-
relevantGuardOps: ["query", "repository_read"],
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
type: "flash_sale",
|
|
51
|
-
name: "Limited-time flash sale",
|
|
52
|
-
description: "Provides discounts or extra rewards within a limited time window, creating urgency to drive instant conversion.",
|
|
53
|
-
guardCondition: "Guard verifies: current block time is within [start_time, end_time] range (Guard time condition)",
|
|
54
|
-
amountRange: { min: "0.1WOW", max: "20WOW" },
|
|
55
|
-
allocationStrategy: "fixed",
|
|
56
|
-
parameters: [
|
|
57
|
-
{ name: "start_time", type: "string", description: "Start time (Unix timestamp)", required: true },
|
|
58
|
-
{ name: "end_time", type: "string", description: "End time (Unix timestamp)", required: true },
|
|
59
|
-
{ name: "amount", type: "string", description: "Flash sale reward amount", required: true },
|
|
60
|
-
{ name: "max_claims", type: "number", description: "Max claims (e.g., 100)", required: true },
|
|
61
|
-
],
|
|
62
|
-
example: "Weekend 48-hour flash sale: ordering customers get an extra 2 WOW cashback, valid for the first 100.",
|
|
63
|
-
relevantGuardOps: ["query", "time_condition"],
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: "cashback",
|
|
67
|
-
name: "Spending cashback",
|
|
68
|
-
description: "Customers receive cashback proportional to spending after completing an order, improving repeat purchase willingness.",
|
|
69
|
-
guardCondition: "Guard verifies: order has reached terminal state (Progress completed), and order.service == this Service",
|
|
70
|
-
amountRange: { min: "0.1WOW", max: "100WOW" },
|
|
71
|
-
allocationStrategy: "proportional",
|
|
72
|
-
parameters: [
|
|
73
|
-
{ name: "cashback_rate", type: "string", description: "Cashback rate (e.g., '0.1' = 10%)", required: true },
|
|
74
|
-
{ name: "max_cashback", type: "string", description: "Max cashback per order (e.g., '10WOW')", required: true },
|
|
75
|
-
{ name: "budget", type: "string", description: "Total budget (e.g., '500WOW')", required: true },
|
|
76
|
-
],
|
|
77
|
-
example: "A customer spends 10 WOW, gets 10% cashback = 1 WOW, which can be deducted on the next purchase.",
|
|
78
|
-
relevantGuardOps: ["query"],
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
type: "milestone",
|
|
82
|
-
name: "Milestone reward",
|
|
83
|
-
description: "When a Service reaches a specific milestone (e.g., 100 orders, 1000 customers), early supporters receive extra rewards.",
|
|
84
|
-
guardCondition: "Guard verifies: Repository query shows Service cumulative order count >= milestone_threshold, and claimer is an early customer (order_index < milestone)",
|
|
85
|
-
amountRange: { min: "1WOW", max: "100WOW" },
|
|
86
|
-
allocationStrategy: "fixed",
|
|
87
|
-
parameters: [
|
|
88
|
-
{ name: "milestone", type: "number", description: "Milestone value (e.g., 100)", required: true },
|
|
89
|
-
{ name: "reward_per_user", type: "string", description: "Reward per person (e.g., '5WOW')", required: true },
|
|
90
|
-
{ name: "max_recipients", type: "number", description: "Max beneficiaries (e.g., 50)", required: true },
|
|
91
|
-
],
|
|
92
|
-
example: "Service reaches the 100-order milestone; the first 50 customers each receive 5 WOW extra reward.",
|
|
93
|
-
relevantGuardOps: ["query", "repository_read"],
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
type: "wonder_praise",
|
|
97
|
-
name: "Wonder-node praise reward (post-completion positive feedback)",
|
|
98
|
-
description: "Rewards customers who advance their order Progress to the 'wonder' node after normal completion — " +
|
|
99
|
-
"a user-driven positive-feedback mechanism. The machine design pattern is: " +
|
|
100
|
-
"place_order → booked → in_progress → completed → (wonder | no_wonder). " +
|
|
101
|
-
"After the order reaches 'completed' (terminal business state), the OrderHolder " +
|
|
102
|
-
"(namedOperator='') can advance Progress to 'wonder' (positive review) or 'no_wonder' " +
|
|
103
|
-
"(negative review). The Reward's claim_guard verifies Progress.current == 'wonder' " +
|
|
104
|
-
"AND order.service == this Service, so only satisfied customers can claim. " +
|
|
105
|
-
"This creates an on-chain reputation signal that benefits both the merchant " +
|
|
106
|
-
"(public proof of quality) and the customer (monetary reward for honest feedback).",
|
|
107
|
-
guardCondition: "Guard verifies: (1) Progress.current == 'wonder' (customer advanced to praise node), " +
|
|
108
|
-
"(2) Progress.task == order_address AND order.service == this Service, " +
|
|
109
|
-
"(3) Progress.machine == service.machine (snapshot match), " +
|
|
110
|
-
"(4) claimer is the order holder (order.holder == signer). " +
|
|
111
|
-
"Recommended Guard ops: query Progress object, query Order object, " +
|
|
112
|
-
"verify Progress.current field equals 'wonder'.",
|
|
113
|
-
amountRange: { min: "0.1WOW", max: "20WOW" },
|
|
114
|
-
allocationStrategy: "fixed",
|
|
115
|
-
parameters: [
|
|
116
|
-
{ name: "amount", type: "string", description: "Reward amount per praise (e.g., '1WOW')", required: true },
|
|
117
|
-
{ name: "budget", type: "string", description: "Total budget (e.g., '500WOW')", required: true },
|
|
118
|
-
{ name: "expiration_time", type: "number", description: "Claim expiration timestamp (ms); 0 = no expiration", required: false },
|
|
119
|
-
{ name: "max_claims_per_user", type: "number", description: "Max claims per user (default 1, prevents duplicate praise rewards)", required: false },
|
|
120
|
-
],
|
|
121
|
-
example: "A photography service machine: place_order → booked → in_progress → completed → wonder. " +
|
|
122
|
-
"After delivery, the customer advances Progress to 'wonder' if satisfied. " +
|
|
123
|
-
"The Reward's Guard verifies Progress.current == 'wonder', and the customer claims 1 WOW. " +
|
|
124
|
-
"Merchant benefits from on-chain proof of customer satisfaction.",
|
|
125
|
-
relevantGuardOps: ["query", "progress_node_check"],
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
type: "wonder_feedback",
|
|
129
|
-
name: "Wonder-node feedback collection (covers wonder & no_wonder)",
|
|
130
|
-
description: "A feedback-collection Reward that pays a small amount for EITHER positive (wonder) OR " +
|
|
131
|
-
"negative (no_wonder) feedback, encouraging customers to leave honest reviews. " +
|
|
132
|
-
"The machine design pattern is the same as wonder_praise: " +
|
|
133
|
-
"place_order → booked → in_progress → completed → (wonder | no_wonder). " +
|
|
134
|
-
"The Reward's claim_guard verifies Progress.current ∈ {'wonder', 'no_wonder'} — both nodes " +
|
|
135
|
-
"trigger the reward. This is useful for merchants who want to gather feedback signal " +
|
|
136
|
-
"regardless of sentiment, e.g., for product improvement or public reputation metrics. " +
|
|
137
|
-
"Pair with a Repository that records the feedback node for historical analysis.",
|
|
138
|
-
guardCondition: "Guard verifies: (1) Progress.current ∈ {'wonder', 'no_wonder'}, " +
|
|
139
|
-
"(2) Progress.task == order_address AND order.service == this Service, " +
|
|
140
|
-
"(3) claimer is the order holder. " +
|
|
141
|
-
"The Guard should query the Progress object and check that current node is one of the " +
|
|
142
|
-
"two feedback nodes. Optional: write the feedback node to a Repository for analytics.",
|
|
143
|
-
amountRange: { min: "0.05WOW", max: "5WOW" },
|
|
144
|
-
allocationStrategy: "fixed",
|
|
145
|
-
parameters: [
|
|
146
|
-
{ name: "amount", type: "string", description: "Reward amount per feedback (e.g., '0.5WOW')", required: true },
|
|
147
|
-
{ name: "budget", type: "string", description: "Total budget (e.g., '200WOW')", required: true },
|
|
148
|
-
{ name: "feedback_nodes", type: "string", description: "Comma-separated list of feedback node names (default: 'wonder,no_wonder')", required: false },
|
|
149
|
-
{ name: "expiration_time", type: "number", description: "Claim expiration timestamp (ms); 0 = no expiration", required: false },
|
|
150
|
-
],
|
|
151
|
-
example: "A freelance design service: place_order → ... → completed → (wonder | no_wonder). " +
|
|
152
|
-
"Customer advances to 'wonder' (liked the work) or 'no_wonder' (didn't like it). " +
|
|
153
|
-
"Both trigger a 0.5 WOW feedback reward. Merchant tracks the wonder/no_wonder ratio " +
|
|
154
|
-
"in a Repository to identify quality issues and improve service.",
|
|
155
|
-
relevantGuardOps: ["query", "progress_node_check", "repository_write"],
|
|
156
|
-
},
|
|
157
|
-
];
|
|
158
|
-
const TEMPLATE_INDEX = new Map(REWARD_TEMPLATES.map((t) => [t.type, t]));
|
|
159
|
-
export function getRewardTemplate(type) {
|
|
160
|
-
return TEMPLATE_INDEX.get(type);
|
|
161
|
-
}
|
|
162
|
-
export function listRewardTemplates() {
|
|
163
|
-
return REWARD_TEMPLATES;
|
|
164
|
-
}
|
|
165
|
-
export function suggestRewardTemplate(intent) {
|
|
166
|
-
const lower = intent.toLowerCase();
|
|
167
|
-
if (lower.includes("wonder") || lower.includes("praise") || lower.includes("thumbs_up")
|
|
168
|
-
|| lower.includes("praise") || lower.includes("positive review")
|
|
169
|
-
|| lower.includes("satisfaction reward")) {
|
|
170
|
-
return getRewardTemplate("wonder_praise");
|
|
171
|
-
}
|
|
172
|
-
if (lower.includes("feedback") || lower.includes("review collection")
|
|
173
|
-
|| lower.includes("no_wonder") || lower.includes("thumbs_down")
|
|
174
|
-
|| lower.includes("complaint") || lower.includes("both sentiment")) {
|
|
175
|
-
return getRewardTemplate("wonder_feedback");
|
|
176
|
-
}
|
|
177
|
-
if (lower.includes("first order") || lower.includes("new") || lower.includes("first")) {
|
|
178
|
-
return getRewardTemplate("first_order");
|
|
179
|
-
}
|
|
180
|
-
if (lower.includes("referral") || lower.includes("viral")) {
|
|
181
|
-
return getRewardTemplate("referral");
|
|
182
|
-
}
|
|
183
|
-
if (lower.includes("repeat") || lower.includes("loyalty")) {
|
|
184
|
-
return getRewardTemplate("loyalty");
|
|
185
|
-
}
|
|
186
|
-
if (lower.includes("limited-time") || lower.includes("flash")) {
|
|
187
|
-
return getRewardTemplate("flash_sale");
|
|
188
|
-
}
|
|
189
|
-
if (lower.includes("cashback")) {
|
|
190
|
-
return getRewardTemplate("cashback");
|
|
191
|
-
}
|
|
192
|
-
if (lower.includes("milestone")) {
|
|
193
|
-
return getRewardTemplate("milestone");
|
|
194
|
-
}
|
|
195
|
-
return undefined;
|
|
196
|
-
}
|
|
197
|
-
export const REWARD_TEMPLATES_VERSION = 1;
|
|
1
|
+
export const REWARD_TEMPLATES=[{'type':'first_order','name':'First-order\x20reward','description':'New\x20customers\x20receive\x20a\x20reward\x20after\x20their\x20first\x20order,\x20lowering\x20the\x20trial\x20barrier\x20and\x20boosting\x20conversion.','guardCondition':'Guard\x20verifies:\x20order_address.holder\x20==\x20current\x20claimer,\x20and\x20order.service\x20==\x20this\x20Service,\x20and\x20order\x20is\x20the\x20first\x20order\x20for\x20this\x20holder\x20(via\x20Repository\x20history\x20query)','amountRange':{'min':'0.1WOW','max':'5WOW'},'allocationStrategy':'fixed','parameters':[{'name':'amount','type':'string','description':'Reward\x20amount\x20(e.g.,\x20\x271WOW\x27)','required':!![]},{'name':'budget','type':'string','description':'Total\x20budget\x20(e.g.,\x20\x27100WOW\x27)','required':!![]}],'example':'A\x20new\x20customer\x20orders\x20a\x20photography\x20service\x20and\x20receives\x201\x20WOW\x20cashback\x20on\x20the\x20first\x20order,\x20lowering\x20the\x20first\x20trial\x20cost.','relevantGuardOps':['query','repository_read']},{'type':'referral','name':'Referral\x20viral\x20reward','description':'Existing\x20customers\x20refer\x20new\x20customers\x20to\x20place\x20an\x20order;\x20both\x20parties\x20receive\x20a\x20reward,\x20creating\x20a\x20word-of-mouth\x20flywheel.','guardCondition':'Guard\x20verifies:\x20referrer\x20address\x20is\x20marked\x20as\x20\x27referred_by\x27\x20in\x20the\x20Repository\x20review\x20table,\x20and\x20the\x20referee\x27s\x20order\x20is\x20completed\x20(Progress\x20reached\x20terminal\x20state)','amountRange':{'min':'0.5WOW','max':'10WOW'},'allocationStrategy':'proportional','parameters':[{'name':'referrer_reward','type':'string','description':'Referrer\x20reward\x20(e.g.,\x20\x272WOW\x27)','required':!![]},{'name':'referee_reward','type':'string','description':'Referee\x20reward\x20(e.g.,\x20\x271WOW\x27)','required':!![]},{'name':'max_referrals','type':'number','description':'Max\x20referrals\x20per\x20person\x20(e.g.,\x2010)','required':![]}],'example':'Alice\x20refers\x20Bob\x20to\x20purchase\x20a\x20service;\x20after\x20Bob\x20completes\x20the\x20first\x20order,\x20Alice\x20gets\x202\x20WOW\x20and\x20Bob\x20gets\x201\x20WOW.','relevantGuardOps':['query','repository_read','repository_write']},{'type':'loyalty','name':'Loyalty\x20tiered\x20reward','description':'Customers\x20unlock\x20higher\x20rewards\x20after\x20reaching\x20cumulative\x20spending\x20tiers,\x20improving\x20repeat\x20rate\x20and\x20average\x20order\x20value.','guardCondition':'Guard\x20verifies:\x20via\x20Repository\x20query,\x20the\x20address\x27s\x20historical\x20order\x20count\x20>=\x20N,\x20where\x20N\x20is\x20the\x20current\x20tier\x20threshold','amountRange':{'min':'1WOW','max':'50WOW'},'allocationStrategy':'tiered','parameters':[{'name':'tier1_orders','type':'number','description':'Tier\x201\x20order\x20count\x20(e.g.,\x203)','required':!![]},{'name':'tier1_reward','type':'string','description':'Tier\x201\x20reward\x20(e.g.,\x20\x271WOW\x27)','required':!![]},{'name':'tier2_orders','type':'number','description':'Tier\x202\x20order\x20count\x20(e.g.,\x2010)','required':!![]},{'name':'tier2_reward','type':'string','description':'Tier\x202\x20reward\x20(e.g.,\x20\x275WOW\x27)','required':!![]},{'name':'tier3_orders','type':'number','description':'Tier\x203\x20order\x20count\x20(e.g.,\x2030)','required':![]},{'name':'tier3_reward','type':'string','description':'Tier\x203\x20reward\x20(e.g.,\x20\x2720WOW\x27)','required':![]}],'example':'A\x20customer\x20with\x203\x20cumulative\x20orders\x20gets\x201\x20WOW,\x2010\x20orders\x20gets\x205\x20WOW,\x2030\x20orders\x20gets\x2020\x20WOW,\x20incentivizing\x20continued\x20spending.','relevantGuardOps':['query','repository_read']},{'type':'flash_sale','name':'Limited-time\x20flash\x20sale','description':'Provides\x20discounts\x20or\x20extra\x20rewards\x20within\x20a\x20limited\x20time\x20window,\x20creating\x20urgency\x20to\x20drive\x20instant\x20conversion.','guardCondition':'Guard\x20verifies:\x20current\x20block\x20time\x20is\x20within\x20[start_time,\x20end_time]\x20range\x20(Guard\x20time\x20condition)','amountRange':{'min':'0.1WOW','max':'20WOW'},'allocationStrategy':'fixed','parameters':[{'name':'start_time','type':'string','description':'Start\x20time\x20(Unix\x20timestamp)','required':!![]},{'name':'end_time','type':'string','description':'End\x20time\x20(Unix\x20timestamp)','required':!![]},{'name':'amount','type':'string','description':'Flash\x20sale\x20reward\x20amount','required':!![]},{'name':'max_claims','type':'number','description':'Max\x20claims\x20(e.g.,\x20100)','required':!![]}],'example':'Weekend\x2048-hour\x20flash\x20sale:\x20ordering\x20customers\x20get\x20an\x20extra\x202\x20WOW\x20cashback,\x20valid\x20for\x20the\x20first\x20100.','relevantGuardOps':['query','time_condition']},{'type':'cashback','name':'Spending\x20cashback','description':'Customers\x20receive\x20cashback\x20proportional\x20to\x20spending\x20after\x20completing\x20an\x20order,\x20improving\x20repeat\x20purchase\x20willingness.','guardCondition':'Guard\x20verifies:\x20order\x20has\x20reached\x20terminal\x20state\x20(Progress\x20completed),\x20and\x20order.service\x20==\x20this\x20Service','amountRange':{'min':'0.1WOW','max':'100WOW'},'allocationStrategy':'proportional','parameters':[{'name':'cashback_rate','type':'string','description':'Cashback\x20rate\x20(e.g.,\x20\x270.1\x27\x20=\x2010%)','required':!![]},{'name':'max_cashback','type':'string','description':'Max\x20cashback\x20per\x20order\x20(e.g.,\x20\x2710WOW\x27)','required':!![]},{'name':'budget','type':'string','description':'Total\x20budget\x20(e.g.,\x20\x27500WOW\x27)','required':!![]}],'example':'A\x20customer\x20spends\x2010\x20WOW,\x20gets\x2010%\x20cashback\x20=\x201\x20WOW,\x20which\x20can\x20be\x20deducted\x20on\x20the\x20next\x20purchase.','relevantGuardOps':['query']},{'type':'milestone','name':'Milestone\x20reward','description':'When\x20a\x20Service\x20reaches\x20a\x20specific\x20milestone\x20(e.g.,\x20100\x20orders,\x201000\x20customers),\x20early\x20supporters\x20receive\x20extra\x20rewards.','guardCondition':'Guard\x20verifies:\x20Repository\x20query\x20shows\x20Service\x20cumulative\x20order\x20count\x20>=\x20milestone_threshold,\x20and\x20claimer\x20is\x20an\x20early\x20customer\x20(order_index\x20<\x20milestone)','amountRange':{'min':'1WOW','max':'100WOW'},'allocationStrategy':'fixed','parameters':[{'name':'milestone','type':'number','description':'Milestone\x20value\x20(e.g.,\x20100)','required':!![]},{'name':'reward_per_user','type':'string','description':'Reward\x20per\x20person\x20(e.g.,\x20\x275WOW\x27)','required':!![]},{'name':'max_recipients','type':'number','description':'Max\x20beneficiaries\x20(e.g.,\x2050)','required':!![]}],'example':'Service\x20reaches\x20the\x20100-order\x20milestone;\x20the\x20first\x2050\x20customers\x20each\x20receive\x205\x20WOW\x20extra\x20reward.','relevantGuardOps':['query','repository_read']},{'type':'wonder_praise','name':'Wonder-node\x20praise\x20reward\x20(post-completion\x20positive\x20feedback)','description':'Rewards\x20customers\x20who\x20advance\x20their\x20order\x20Progress\x20to\x20the\x20\x27wonder\x27\x20node\x20after\x20normal\x20completion\x20—\x20'+'a\x20user-driven\x20positive-feedback\x20mechanism.\x20The\x20machine\x20design\x20pattern\x20is:\x20'+'place_order\x20→\x20booked\x20→\x20in_progress\x20→\x20completed\x20→\x20(wonder\x20|\x20no_wonder).\x20'+'After\x20the\x20order\x20reaches\x20\x27completed\x27\x20(terminal\x20business\x20state),\x20the\x20OrderHolder\x20'+'(namedOperator=\x27\x27)\x20can\x20advance\x20Progress\x20to\x20\x27wonder\x27\x20(positive\x20review)\x20or\x20\x27no_wonder\x27\x20'+'(negative\x20review).\x20The\x20Reward\x27s\x20claim_guard\x20verifies\x20Progress.current\x20==\x20\x27wonder\x27\x20'+'AND\x20order.service\x20==\x20this\x20Service,\x20so\x20only\x20satisfied\x20customers\x20can\x20claim.\x20'+'This\x20creates\x20an\x20on-chain\x20reputation\x20signal\x20that\x20benefits\x20both\x20the\x20merchant\x20'+'(public\x20proof\x20of\x20quality)\x20and\x20the\x20customer\x20(monetary\x20reward\x20for\x20honest\x20feedback).','guardCondition':'Guard\x20verifies:\x20(1)\x20Progress.current\x20==\x20\x27wonder\x27\x20(customer\x20advanced\x20to\x20praise\x20node),\x20'+'(2)\x20Progress.task\x20==\x20order_address\x20AND\x20order.service\x20==\x20this\x20Service,\x20'+'(3)\x20Progress.machine\x20==\x20service.machine\x20(snapshot\x20match),\x20'+'(4)\x20claimer\x20is\x20the\x20order\x20holder\x20(order.holder\x20==\x20signer).\x20'+'Recommended\x20Guard\x20ops:\x20query\x20Progress\x20object,\x20query\x20Order\x20object,\x20'+'verify\x20Progress.current\x20field\x20equals\x20\x27wonder\x27.','amountRange':{'min':'0.1WOW','max':'20WOW'},'allocationStrategy':'fixed','parameters':[{'name':'amount','type':'string','description':'Reward\x20amount\x20per\x20praise\x20(e.g.,\x20\x271WOW\x27)','required':!![]},{'name':'budget','type':'string','description':'Total\x20budget\x20(e.g.,\x20\x27500WOW\x27)','required':!![]},{'name':'expiration_time','type':'number','description':'Claim\x20expiration\x20timestamp\x20(ms);\x200\x20=\x20no\x20expiration','required':![]},{'name':'max_claims_per_user','type':'number','description':'Max\x20claims\x20per\x20user\x20(default\x201,\x20prevents\x20duplicate\x20praise\x20rewards)','required':![]}],'example':'A\x20photography\x20service\x20machine:\x20place_order\x20→\x20booked\x20→\x20in_progress\x20→\x20completed\x20→\x20wonder.\x20'+'After\x20delivery,\x20the\x20customer\x20advances\x20Progress\x20to\x20\x27wonder\x27\x20if\x20satisfied.\x20'+'The\x20Reward\x27s\x20Guard\x20verifies\x20Progress.current\x20==\x20\x27wonder\x27,\x20and\x20the\x20customer\x20claims\x201\x20WOW.\x20'+'Merchant\x20benefits\x20from\x20on-chain\x20proof\x20of\x20customer\x20satisfaction.','relevantGuardOps':['query','progress_node_check']},{'type':'wonder_feedback','name':'Wonder-node\x20feedback\x20collection\x20(covers\x20wonder\x20&\x20no_wonder)','description':'A\x20feedback-collection\x20Reward\x20that\x20pays\x20a\x20small\x20amount\x20for\x20EITHER\x20positive\x20(wonder)\x20OR\x20'+'negative\x20(no_wonder)\x20feedback,\x20encouraging\x20customers\x20to\x20leave\x20honest\x20reviews.\x20'+'The\x20machine\x20design\x20pattern\x20is\x20the\x20same\x20as\x20wonder_praise:\x20'+'place_order\x20→\x20booked\x20→\x20in_progress\x20→\x20completed\x20→\x20(wonder\x20|\x20no_wonder).\x20'+'The\x20Reward\x27s\x20claim_guard\x20verifies\x20Progress.current\x20∈\x20{\x27wonder\x27,\x20\x27no_wonder\x27}\x20—\x20both\x20nodes\x20'+'trigger\x20the\x20reward.\x20This\x20is\x20useful\x20for\x20merchants\x20who\x20want\x20to\x20gather\x20feedback\x20signal\x20'+'regardless\x20of\x20sentiment,\x20e.g.,\x20for\x20product\x20improvement\x20or\x20public\x20reputation\x20metrics.\x20'+'Pair\x20with\x20a\x20Repository\x20that\x20records\x20the\x20feedback\x20node\x20for\x20historical\x20analysis.','guardCondition':'Guard\x20verifies:\x20(1)\x20Progress.current\x20∈\x20{\x27wonder\x27,\x20\x27no_wonder\x27},\x20'+'(2)\x20Progress.task\x20==\x20order_address\x20AND\x20order.service\x20==\x20this\x20Service,\x20'+'(3)\x20claimer\x20is\x20the\x20order\x20holder.\x20'+'The\x20Guard\x20should\x20query\x20the\x20Progress\x20object\x20and\x20check\x20that\x20current\x20node\x20is\x20one\x20of\x20the\x20'+'two\x20feedback\x20nodes.\x20Optional:\x20write\x20the\x20feedback\x20node\x20to\x20a\x20Repository\x20for\x20analytics.','amountRange':{'min':'0.05WOW','max':'5WOW'},'allocationStrategy':'fixed','parameters':[{'name':'amount','type':'string','description':'Reward\x20amount\x20per\x20feedback\x20(e.g.,\x20\x270.5WOW\x27)','required':!![]},{'name':'budget','type':'string','description':'Total\x20budget\x20(e.g.,\x20\x27200WOW\x27)','required':!![]},{'name':'feedback_nodes','type':'string','description':'Comma-separated\x20list\x20of\x20feedback\x20node\x20names\x20(default:\x20\x27wonder,no_wonder\x27)','required':![]},{'name':'expiration_time','type':'number','description':'Claim\x20expiration\x20timestamp\x20(ms);\x200\x20=\x20no\x20expiration','required':![]}],'example':'A\x20freelance\x20design\x20service:\x20place_order\x20→\x20...\x20→\x20completed\x20→\x20(wonder\x20|\x20no_wonder).\x20'+'Customer\x20advances\x20to\x20\x27wonder\x27\x20(liked\x20the\x20work)\x20or\x20\x27no_wonder\x27\x20(didn\x27t\x20like\x20it).\x20'+'Both\x20trigger\x20a\x200.5\x20WOW\x20feedback\x20reward.\x20Merchant\x20tracks\x20the\x20wonder/no_wonder\x20ratio\x20'+'in\x20a\x20Repository\x20to\x20identify\x20quality\x20issues\x20and\x20improve\x20service.','relevantGuardOps':['query','progress_node_check','repository_write']}];const TEMPLATE_INDEX=new Map(REWARD_TEMPLATES['map'](a=>[a['type'],a]));export function getRewardTemplate(a){return TEMPLATE_INDEX['get'](a);}export function listRewardTemplates(){return REWARD_TEMPLATES;}export function suggestRewardTemplate(a){const b=a['toLowerCase']();if(b['includes']('wonder')||b['includes']('praise')||b['includes']('thumbs_up')||b['includes']('praise')||b['includes']('positive\x20review')||b['includes']('satisfaction\x20reward'))return getRewardTemplate('wonder_praise');if(b['includes']('feedback')||b['includes']('review\x20collection')||b['includes']('no_wonder')||b['includes']('thumbs_down')||b['includes']('complaint')||b['includes']('both\x20sentiment'))return getRewardTemplate('wonder_feedback');if(b['includes']('first\x20order')||b['includes']('new')||b['includes']('first'))return getRewardTemplate('first_order');if(b['includes']('referral')||b['includes']('viral'))return getRewardTemplate('referral');if(b['includes']('repeat')||b['includes']('loyalty'))return getRewardTemplate('loyalty');if(b['includes']('limited-time')||b['includes']('flash'))return getRewardTemplate('flash_sale');if(b['includes']('cashback'))return getRewardTemplate('cashback');if(b['includes']('milestone'))return getRewardTemplate('milestone');return undefined;}export const REWARD_TEMPLATES_VERSION=0x1;
|