@wowok/agent-mcp 3.2.6 → 3.2.9
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/chain-semantics/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/guard-verbs.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/communication/wts-attestation.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +3 -2
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +27 -0
- package/dist/composition/inflight.js +1 -0
- package/dist/config/config-audit.spec.js +1 -1
- package/dist/customer/account-events.js +1 -1
- package/dist/customer/order-monitor.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.d.ts +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/constraint-registry.d.ts +6 -1
- package/dist/extensions/constraint-registry.js +1 -1
- package/dist/extensions/index.d.ts +1 -1
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-pack.d.ts +5 -0
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/mode-evaluator.d.ts +3 -2
- package/dist/extensions/mode-evaluator.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/anti-cheat.d.ts +32 -2
- package/dist/graph/onchain/anti-cheat.js +1 -1
- package/dist/graph/onchain/anti-cheat.spec.js +1 -1
- package/dist/graph/onchain/edge-schema.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/extract.js +1 -1
- package/dist/graph/onchain/graph-policy.spec.js +1 -1
- package/dist/graph/onchain/index.d.ts +2 -2
- package/dist/graph/onchain/index.js +1 -1
- package/dist/graph/onchain/project-relationship.js +1 -1
- package/dist/graph/onchain/table-ledger.spec.js +1 -1
- package/dist/graph/onchain/types.d.ts +3 -0
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/index.js +1 -1
- package/dist/harness/operation-id.d.ts +1 -0
- package/dist/harness/operation-id.js +1 -0
- package/dist/harness/recover.js +1 -1
- package/dist/index.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-venue-order.d.ts +25 -0
- package/dist/knowledge/arbitration-venue-order.js +1 -0
- package/dist/knowledge/audit-rules.d.ts +10 -0
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
- package/dist/knowledge/baselines/rules/graph.json +81 -0
- package/dist/knowledge/baselines/rules/guard.json +96 -1
- package/dist/knowledge/baselines/rules/machine.json +3 -3
- package/dist/knowledge/baselines/rules/plan.json +109 -8
- package/dist/knowledge/baselines/semantic-facts.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +17 -2
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/discount-threshold.d.ts +11 -0
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-ledger.js +1 -1
- package/dist/knowledge/guard-lint.d.ts +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +4 -0
- package/dist/knowledge/guard-node-gates.js +1 -0
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.d.ts +1 -0
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-brief.d.ts +6 -0
- package/dist/knowledge/guard-submission-brief.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +1 -0
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +2 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +2 -2
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-topology.d.ts +6 -0
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/reputation-rules.d.ts +3 -9
- package/dist/knowledge/reputation-rules.js +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +10 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/settlement-semantics.d.ts +1 -0
- package/dist/knowledge/settlement-semantics.js +1 -0
- package/dist/knowledge/template-loader.d.ts +22 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +16 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tool-constraints.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +8 -3
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/allocation-advice.js +1 -1
- package/dist/participation/customer-interest.js +1 -1
- package/dist/participation/radar-core.d.ts +7 -2
- package/dist/participation/radar-core.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +46 -15
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +7 -0
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +28 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.d.ts +2 -0
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
- package/dist/playbooks/service-build/pipeline-actions.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.js +1 -1
- package/dist/playbooks/service-build/risk-aggregator.d.ts +1 -1
- package/dist/playbooks/service-build/risk-aggregator.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/relationship/derivation.d.ts +1 -0
- package/dist/review/index.js +1 -1
- package/dist/runtime/instance-registry.d.ts +8 -0
- package/dist/runtime/instance-registry.js +1 -0
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/safety/preview.d.ts +1 -0
- package/dist/safety/preview.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +28 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +1 -1
- package/dist/schema/call/arbitration.d.ts +4 -4
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +122 -5
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +16 -0
- package/dist/schema/call/contact.d.ts +1 -1
- package/dist/schema/call/contact.js +1 -1
- package/dist/schema/call/demand.d.ts +1 -1
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/guard.d.ts +10 -3
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +8 -1
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +1 -1
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/payment.js +1 -1
- package/dist/schema/call/permission-handler.js +1 -1
- package/dist/schema/call/permission.d.ts +1 -1
- package/dist/schema/call/personal.d.ts +4 -4
- package/dist/schema/call/progress.d.ts +47 -1
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/proof.js +1 -1
- package/dist/schema/call/repository.d.ts +5 -5
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +1 -1
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +12 -9
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +1 -1
- package/dist/schema/common/index.d.ts +4 -4
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +23 -0
- package/dist/schema/goal/planning.d.ts +50 -1
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +40 -0
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/keeper/index.d.ts +13 -0
- package/dist/schema/local/index.d.ts +96 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +17 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +61 -23
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.d.ts +70 -6
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +206 -54
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +1 -0
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.d.ts +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/permission-machine-check.d.ts +2 -0
- package/dist/schema/utils/permission-machine-check.js +1 -1
- package/dist/schema/workflow/index.d.ts +1 -1
- package/dist/schema/workspace/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +47 -0
- package/dist/schemas/account_operation.schema.json +3 -3
- package/dist/schemas/benchmark_migration_operation.output.json +66 -4
- package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
- package/dist/schemas/bridge_operation.output.json +47 -0
- package/dist/schemas/goal_operation.schema.json +104 -0
- package/dist/schemas/guard2file.output.json +6 -1
- package/dist/schemas/guard2file.schema.json +9 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +91 -0
- package/dist/schemas/industry_pack_operation.schema.json +19 -1
- package/dist/schemas/keeper_operation.output.json +44 -0
- package/dist/schemas/local_cache_operation.output.json +47 -0
- package/dist/schemas/local_history_operation.output.json +47 -0
- package/dist/schemas/local_info_operation.output.json +47 -0
- package/dist/schemas/local_mark_operation.output.json +47 -0
- package/dist/schemas/machineNode2file.output.json +6 -1
- package/dist/schemas/machineNode2file.schema.json +9 -0
- package/dist/schemas/messenger_operation.output.json +52 -0
- package/dist/schemas/messenger_operation.schema.json +4 -4
- package/dist/schemas/monitor_events.output.json +44 -0
- package/dist/schemas/monitor_subscription.output.json +44 -0
- package/dist/schemas/onchain_events.output.json +44 -0
- package/dist/schemas/onchain_operations.output.json +140 -5
- package/dist/schemas/onchain_operations.schema.json +180 -107
- package/dist/schemas/onchain_operations_allocation.schema.json +5 -5
- package/dist/schemas/onchain_operations_arbitration.schema.json +12 -9
- package/dist/schemas/onchain_operations_contact.schema.json +8 -7
- package/dist/schemas/onchain_operations_demand.schema.json +6 -5
- package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -5
- package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +6 -6
- package/dist/schemas/onchain_operations_machine.schema.json +9 -8
- package/dist/schemas/onchain_operations_order.schema.json +8 -7
- package/dist/schemas/onchain_operations_payment.schema.json +1 -1
- package/dist/schemas/onchain_operations_permission.schema.json +1 -0
- package/dist/schemas/onchain_operations_personal.schema.json +2 -2
- package/dist/schemas/onchain_operations_progress.schema.json +64 -6
- package/dist/schemas/onchain_operations_proof.schema.json +6 -6
- package/dist/schemas/onchain_operations_repository.schema.json +10 -9
- package/dist/schemas/onchain_operations_reward.schema.json +8 -7
- package/dist/schemas/onchain_operations_service.schema.json +23 -19
- package/dist/schemas/onchain_operations_treasury.schema.json +6 -5
- package/dist/schemas/onchain_table_data.output.json +88 -20
- package/dist/schemas/onchain_table_data.schema.json +21 -21
- package/dist/schemas/query_toolkit.output.json +249 -39
- package/dist/schemas/query_toolkit.schema.json +51 -27
- package/dist/schemas/schema_query.schema.json +4 -0
- package/dist/schemas/workflow_operation.schema.json +5 -5
- package/dist/schemas/wowok_buildin_info.output.json +220 -4
- package/dist/schemas/wowok_buildin_info.schema.json +2 -2
- package/dist/tools/handlers/benchmark-migration.d.ts +22 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.d.ts +0 -1
- package/dist/tools/handlers/dispatch-expectations.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.d.ts +1 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/review-chain.d.ts +22 -0
- package/dist/tools/handlers/review-chain.js +1 -0
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/evaluation.js +1 -1
- package/dist/tools/registry/files.js +1 -1
- package/dist/tools/registry/identity.js +1 -1
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/messenger.js +1 -1
- package/dist/tools/registry/monitor.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/runtime-health.d.ts +10 -0
- package/dist/tools/runtime-health.js +1 -0
- package/dist/tools/upgrade-check.d.ts +33 -1
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wip-deploy-assist.d.ts +6 -0
- package/dist/tools/wip-deploy-assist.js +1 -1
- package/dist/tools/wrap.d.ts +3 -0
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"description": "Two ways to specify an object: (1) STRING - Reference an EXISTING object by name or ID; (2) OBJECT - CREATE a NEW object with full configuration including name, tags, description, token type for payments, and Permission-based access control. The object format is used when you need both token specification AND permission management."
|
|
96
96
|
},
|
|
97
97
|
"order_new": {
|
|
98
|
-
"description": "Create new order.",
|
|
98
|
+
"description": "Create new order. RETRY DISCIPLINE: the order creation is atomic on-chain but NOT in observability — a transport drop after submit leaves the commit state UNKNOWN, and a blind resubmit creates a second order with a second full escrow (live mainnet incident). On any failure/timeout, verify whether an order with this exact signature (service + buyer + items) already landed — via the in-flight marker in the failure envelope, the sender's recent on-chain objects, or onchain_events — and adopt it if present; resubmit only if confirmed absent.",
|
|
99
99
|
"type": "object",
|
|
100
100
|
"properties": {
|
|
101
101
|
"buy": {
|
|
@@ -137,6 +137,7 @@
|
|
|
137
137
|
"description": "List of products or services to purchase"
|
|
138
138
|
},
|
|
139
139
|
"total_pay": {
|
|
140
|
+
"description": "Actual payment amount. FORMAT: {balance: <amount_in_smallest_unit>} or {coin: <coin_object_id>}. The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. OPTIONAL without a discount (M-K17): omit it and the handler derives the EXACT total Σ(sale price × quantity) from the Service's on-chain sales list and discloses the derived value — no transcription, no drift. REQUIRED when 'discount' is set (the discounted total depends on the coupon's live value: run query_toolkit query_type='service_quote' and pass total_pay.balance = the quoted final_total). An explicit value is always honored as-is. AMOUNT GATE (M-K11-a): a total that EXACTLY equals Σ published sale price × quantity (catalog-priced buy, in the Service's own payment coin — WOW or bridged USDT/USDC/ETH/BTC) bypasses the harness pre-sign amount gate; any other amount above the threshold is blocked until WOWOK_AMOUNT_THRESHOLD is raised after explicit user confirmation.",
|
|
140
141
|
"anyOf": [
|
|
141
142
|
{
|
|
142
143
|
"type": "object",
|
|
@@ -172,8 +173,7 @@
|
|
|
172
173
|
],
|
|
173
174
|
"additionalProperties": false
|
|
174
175
|
}
|
|
175
|
-
]
|
|
176
|
-
"description": "Actual payment amount. FORMAT: {balance: <amount_in_smallest_unit>} or {coin: <coin_object_id>}. The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. "
|
|
176
|
+
]
|
|
177
177
|
},
|
|
178
178
|
"discount": {
|
|
179
179
|
"description": "Discount object ID or name",
|
|
@@ -189,8 +189,7 @@
|
|
|
189
189
|
}
|
|
190
190
|
},
|
|
191
191
|
"required": [
|
|
192
|
-
"items"
|
|
193
|
-
"total_pay"
|
|
192
|
+
"items"
|
|
194
193
|
],
|
|
195
194
|
"additionalProperties": false
|
|
196
195
|
},
|
|
@@ -229,7 +228,7 @@
|
|
|
229
228
|
"additionalProperties": false
|
|
230
229
|
},
|
|
231
230
|
"order_required_info": {
|
|
232
|
-
"description": "Contact object ID or WTS Proof object, RECORDED on the Order as evidence that the order holder delivered the private information the Service declares in customer_required (e.g. phone/email/shipping_address). RECORD-ONLY, NOT ENFORCED: nothing on-chain reads this field — the purchase entry never requires it, and an order supplying none of the declared fields is still created. FLOW: the order holder sends the information to the Service's Contact (um) via end-to-end encrypted Messenger, then passes the Contact object ID or the generated WTS Proof here. To ENFORCE delivery on-chain, mount the pattern.required_info_evidence_gate Guard on the forward that hands over goods or funds, asserting order.required_info is some (presence-only — the recorded address value is never a guard condition; accepting the delivered information is the merchant's confirming forward).",
|
|
231
|
+
"description": "Contact object ID or WTS Proof object, RECORDED on the Order as evidence that the order holder delivered the private information the Service declares in customer_required (e.g. phone/email/shipping_address). RECORD-ONLY, NOT ENFORCED: nothing on-chain reads this field — the purchase entry never requires it, and an order supplying none of the declared fields is still created. FLOW: the order holder sends the information to the Service's Contact (um) via end-to-end encrypted Messenger, then passes the Contact object ID or the generated WTS Proof here. To ENFORCE delivery on-chain, mount the pattern.required_info_evidence_gate Guard on the forward that hands over goods or funds, asserting order.required_info is some (presence-only — the recorded address value is never a guard condition; accepting the delivered information is the merchant's confirming forward). ATTESTATION-ONLY: the recorded value is self-attested, has no on-chain readback, and MUST NOT be used as a gate condition. PER-ORDER BINDING: when the listing genuinely promises a per-order credential, use the dedicated controlled bind operation (order_required_info_bind) with a Proof whose about is THIS order and whose creator is the order holder — the chain verifies both at write time and rejects a mismatch without writing anything. The reuse model (one Contact Proof across orders) stays the default for this plain record field; pick per listing promise, not per habit.",
|
|
233
232
|
"type": "string"
|
|
234
233
|
},
|
|
235
234
|
"transfer": {
|
|
@@ -741,7 +740,7 @@
|
|
|
741
740
|
]
|
|
742
741
|
},
|
|
743
742
|
"rewards": {
|
|
744
|
-
"description": "Service Reward object list. May share the Service's Permission (no conflict check — intentional: rewards are the provider's own incentive tool; only Arbitration requires a different Permission for neutrality).",
|
|
743
|
+
"description": "Service Reward object list. May share the Service's Permission (no conflict check — intentional: rewards are the provider's own incentive tool; only Arbitration requires a different Permission for neutrality). ⚠️ OP SEMANTICS (SDK translation, etm-mn-261013 E-06): op:'set' executes as clear + add — and reward clear is TIME-LOCKED after publish (E_LOCKED_TIME_NOT_ENOUGH = abort 24: requires pause + setting_lock_duration elapsed, default 30 days). BEFORE publish op:'set' is fine; AFTER publish attach rewards with op:'add' ONLY (add has no lock).",
|
|
745
744
|
"anyOf": [
|
|
746
745
|
{
|
|
747
746
|
"type": "object",
|
|
@@ -811,7 +810,7 @@
|
|
|
811
810
|
]
|
|
812
811
|
},
|
|
813
812
|
"arbitrations": {
|
|
814
|
-
"description": "Service Arbitration object list. FORMAT: same as repositories — use the `objects` field name inside the operation data. Example: {arbitrations: {op: '
|
|
813
|
+
"description": "Service Arbitration object list. FORMAT: same as repositories — use the `objects` field name inside the operation data. Example: {arbitrations: {op: 'add', objects: [{name: 'my_arb_1'}]}}. Each item is a NameOrAddress (object ID or local mark name). ⚠️ OP SEMANTICS (SDK translation, etm-mn-261013 E-06 + crs P3-1): op:'add' appends and is the ONLY unlocked path after publish (add has no publish assert, service.move). op:'set' executes as clear + add and REPLACES the entire allowlist (pass EVERY Arbitration that must remain bound) — clear is TIME-LOCKED after publish (E_LOCKED_TIME_NOT_ENOUGH = abort 24: requires pause + setting_lock_duration elapsed, default 30 days), so use op:'set' BEFORE publish only. (The 2026-10-08 op:'add' disable was lifted: the unparseable-success-response SDK bug it responded to is fixed — safeTextJson + big-int conversion.) ⚠️ PERMISSION RULE (contract-enforced): every Arbitration bound here MUST use a Permission object DIFFERENT from THIS Service's permission — binding an Arbitration that shares the Service's Permission aborts with E_ARBITRATION_PERMISSION_CONFLICT (error 33). Create a dedicated Permission for each Arbitration BEFORE binding. DESIGN RATIONALE (confirmed intentional): dispute resolution requires NEUTRALITY — an Arbitration controlled by the same Permission admins as the Service it judges would be a conflict of interest. ONLY Arbitration has this check: Reward and Treasury objects MAY share the Service's Permission (they are the provider's own tools).",
|
|
815
814
|
"anyOf": [
|
|
816
815
|
{
|
|
817
816
|
"type": "object",
|
|
@@ -923,7 +922,7 @@
|
|
|
923
922
|
"description": "Discount magnitude, meaning depends on discount_type. RATES (0): per-10000 off rate — 10 = 0.1% off, 1000 = 10% off, 10000 = 100% off; values above 10000 are rejected. FIXED (1): fixed deduction from the order total in the Service token's smallest units (e.g. 1000000000 = 1 WOW at 9 decimals)."
|
|
924
923
|
},
|
|
925
924
|
"benchmark": {
|
|
926
|
-
"description": "Minimum order total (in the Service token's smallest units) for the discount to apply — when set, the discount is applied only if the PRE-discount order total is GREATER THAN OR EQUAL TO this value. ✅ OMITTING this field (or passing null, or 0) means NO threshold — the discount applies UNCONDITIONALLY, and that is the common, correct case. This is the on-chain behaviour: benchmark_met = if (option::is_some(&discount.benchmark)) { total >= benchmark } else { true } (wow-framework sources/w/service.move:274-278, inside the discount-application step). ⚠️ SHARP EDGE when you DO set a threshold:
|
|
925
|
+
"description": "Minimum order total (in the Service token's smallest units) for the discount to apply — when set, the discount is applied only if the PRE-discount order total is GREATER THAN OR EQUAL TO this value. ✅ OMITTING this field (or passing null, or 0) means NO threshold — the discount applies UNCONDITIONALLY, and that is the common, correct case. This is the on-chain behaviour: benchmark_met = if (option::is_some(&discount.benchmark)) { total >= benchmark } else { true } (wow-framework sources/w/service.move:274-278, inside the discount-application step). ⚠️ SHARP EDGE when you DO set a threshold: an order below the threshold CANNOT use the coupon — attaching it at buy aborts (error 38: the transaction rolls back, nothing is paid, and the coupon is preserved); dropping it means the buyer pays FULL price and keeps the coupon for a future order. Keep thresholds low enough that your typical basket clears them. If the order total is below the discounted price the payment aborts — pay the list price; the excess is returned as a new Coin.",
|
|
927
926
|
"anyOf": [
|
|
928
927
|
{
|
|
929
928
|
"type": "number"
|
|
@@ -934,9 +933,13 @@
|
|
|
934
933
|
]
|
|
935
934
|
},
|
|
936
935
|
"time_ms_start": {
|
|
937
|
-
"description": "Discount start time (milliseconds)",
|
|
936
|
+
"description": "Discount start time (milliseconds). ⚠️ A FUTURE start mints a coupon that is listed as usable but CANNOT be spent until the window opens (every spend aborts E_DISCOUNT_TIME_INVALID / buy code 35). Legitimate for scheduled campaigns — the mint carries a loud warning; do not distribute the coupon to recipients before the window opens.",
|
|
938
937
|
"type": "number"
|
|
939
938
|
},
|
|
939
|
+
"allow_zero_total": {
|
|
940
|
+
"description": "FREE-TIER ESCAPE HATCH (BKN-P2): a coupon that would drive the final total to 0 (MINUS value >= the cheapest SKU price, or RATES value 10000) is BLOCKED at issuance by default. Set true ONLY to declare a deliberate zero-price product: the issuance then proceeds with a disclosure that zero-total orders carry an empty escrow and NEVER trigger reward/incentive rails. Omit (default false) for normal discounts.",
|
|
941
|
+
"type": "boolean"
|
|
942
|
+
},
|
|
940
943
|
"time_ms_end": {
|
|
941
944
|
"type": "number",
|
|
942
945
|
"description": "Discount end time (milliseconds)"
|
|
@@ -977,7 +980,7 @@
|
|
|
977
980
|
"check_all_founded"
|
|
978
981
|
],
|
|
979
982
|
"additionalProperties": false,
|
|
980
|
-
"description": "Discount recipient"
|
|
983
|
+
"description": "Discount recipient. OBJECT FORM REQUIRED (T9 az3-mn-261013): a bare string is REJECTED here — pass {entities: [{name_or_address: '<account_name_or_0x_address>'}]} (example: {entities: [{name_or_address: 'buyer1'}]}). Total coupons delivered = count × number of recipients."
|
|
981
984
|
},
|
|
982
985
|
"transferable": {
|
|
983
986
|
"type": "boolean",
|
|
@@ -1014,7 +1017,7 @@
|
|
|
1014
1017
|
"type": "string",
|
|
1015
1018
|
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
1016
1019
|
},
|
|
1017
|
-
"description": "Coupon object IDs or local names to transfer. You MUST own these Discount objects. Each coupon must have been minted with transferable:true — otherwise the chain aborts with E_DISCOUNT_NOT_TRANSFERABLE (semantic code service:10). Coupons stay single-use; the transfer does not change that.
|
|
1020
|
+
"description": "Coupon object IDs or local names to transfer. You MUST own these Discount objects. Each coupon must have been minted with transferable:true — otherwise the chain aborts with E_DISCOUNT_NOT_TRANSFERABLE (semantic code service:10). Coupons stay single-use; the transfer does not change that. There is NO batch entry on-chain — each coupon is delivered by its own singleton call (fanned out automatically); prefer ONE coupon per transaction for coupon migrations (SDK cap MAX_DISCOUNT_COUNT_ONCE still applies)."
|
|
1018
1021
|
},
|
|
1019
1022
|
"recipient": {
|
|
1020
1023
|
"type": "object",
|
|
@@ -1425,7 +1428,7 @@
|
|
|
1425
1428
|
]
|
|
1426
1429
|
},
|
|
1427
1430
|
"compensation_fund_add": {
|
|
1428
|
-
"description": "Deposit funds into the Service compensation_fund. Used to pay indemnity when arbitration resolves in customer's favor. FORMAT: {balance: <amount_in_smallest_unit>} — the field name is 'balance' (NOT 'amount'). The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. For tokens with different decimals, adjust accordingly (e.g. USDC has 6 decimals, so {balance: 1000000} = 1 USDC). REQUIRES: Permission index 315 (SERVICE_COMPENSATION_FUND_DEPOSIT) must be granted
|
|
1431
|
+
"description": "Deposit funds into the Service compensation_fund. Used to pay indemnity when arbitration resolves in customer's favor. FORMAT: {balance: <amount_in_smallest_unit>} — the field name is 'balance' (NOT 'amount'). The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. For tokens with different decimals, adjust accordingly (e.g. USDC has 6 decimals, so {balance: 1000000} = 1 USDC). REQUIRES: Permission index 315 (SERVICE_COMPENSATION_FUND_DEPOSIT) for NON-ADMIN callers. The Permission owner and admin short-circuit every builtin index check (no grant needed); only non-admin callers must be granted 315 first. COMMON MISTAKE: using {amount: ...} or {amount: ..., type: 'WOW'} — these will fail. The correct field is 'balance'.",
|
|
1429
1432
|
"anyOf": [
|
|
1430
1433
|
{
|
|
1431
1434
|
"type": "object",
|
|
@@ -1628,6 +1631,7 @@
|
|
|
1628
1631
|
"description": "Unwrap CoinWrapper objects and other objects received by this Service object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::wow::WOW>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::wow::WOW', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly.",
|
|
1629
1632
|
"anyOf": [
|
|
1630
1633
|
{
|
|
1634
|
+
"minItems": 1,
|
|
1631
1635
|
"type": "array",
|
|
1632
1636
|
"items": {
|
|
1633
1637
|
"type": "object",
|
|
@@ -1784,7 +1788,7 @@
|
|
|
1784
1788
|
"type": "boolean"
|
|
1785
1789
|
},
|
|
1786
1790
|
"publish": {
|
|
1787
|
-
"description": "Whether to publish the Service. After publishing, customers can place orders. ⚠️ PRE-PUBLISH EVALUATION (mandatory, stop-node fund-exit coverage): service.allocators MUST cover EVERY stop node of the bound Machine — every node where an order can rest (terminal nodes AND waiting states: review windows, handovers, open disputes) needs BOTH a withdrawal (release) AND a refund allocation rule, and each mapping guard must be satisfiable in BOTH directions. An uncovered stop node strands escrowed funds permanently (order_allocators is L1-immutable). Review-gated release is a TIME VARIANT inside ONE exit guard ('reviewed OR unreviewed after T'), never parallel outgoing edges (race deadlock). See pattern.fund_flow_stop_node_coverage + rules R-M5-03 / R-M5-09. VERIFIED against Move source + SDK (4-level immutability matrix):\n L1 — PERMANENTLY LOCKED after publish (assert!(!bPublished), no pause+lock exception):\n • machine (workflow template)\n • order_allocators (fund distribution rules — full replacement locked; APPEND-ONLY additions remain possible via order_allocators_append, prefix/threshold frozen)\n L2 — TIME-LOCKED after publish (unpublished-state check — requires pause + setting_lock_duration elapsed):\n • arbitrations remove/clear (dispute resolution objects)\n • rewards remove/clear (reward objects)\n • compensation_fund_withdraw (withdraw ALL funds)\n L3 — REMAIN MUTABLE after publish (no SDK check, no Move check):\n • arbitrations add, rewards add (no assert — can add after publish)\n • buy_guard, sales, discount, description, location, pause, repositories,\n • compensation_fund_add, setting_lock_duration_add, customer_required, um (Contact)\nThese 2 L1-LOCKED fields (machine/order_allocators) MUST be set BEFORE publish=true.\narbitrations/rewards can be ADDED after publish but remove/clear requires pause+lock.\n\n⚠️ COMPENSATION_FUND + ARBITRATION LINKAGE:\n At publish time, if compensation_fund > 0, Arbitration MUST be bound:\n if (balance::value(&self.compensation_fund) > 0) {\n assert!(arbitration_count > 0, E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\n }\n The MCP handler enforces this as a HARD PRE-CHECK: if publish=true AND compensation_fund_add is set in the same call AND arbitrations is empty, the call is REJECTED before submission. If compensation_fund was deposited in a prior call, a SOFT WARNING is issued.\n\nSCHEMA-03 / P0-01 fix — DEPLOYMENT WORKFLOW (two-phase, avoids circular dependency):\n Phase 1 — CREATE (no publish): object={name:'my-service', type_parameter, permission} + machine + order_allocators + arbitrations.\n NOTE: buy_guard can use a LocalMark NAME (not address) to break the Guard→Service circular dependency.\n The name is resolved to an address at transaction build time.\n Phase 2 — PUBLISH: object='my-service' (string ref) + publish=true.\n All L1-LOCKED fields must be set in Phase 1; Phase 2 only flips the publish flag.\n Post-publish updates: buy_guard, sales, description, repositories (add), rewards (add), arbitrations (add), etc.",
|
|
1791
|
+
"description": "Whether to publish the Service. After publishing, customers can place orders. ⚠️ PRE-PUBLISH EVALUATION (mandatory, stop-node fund-exit coverage): service.allocators MUST cover EVERY stop node of the bound Machine — every node where an order can rest (terminal nodes AND waiting states: review windows, handovers, open disputes) needs BOTH a withdrawal (release) AND a refund allocation rule, and each mapping guard must be satisfiable in BOTH directions. An uncovered stop node strands escrowed funds permanently (order_allocators is L1-immutable). Review-gated release is a TIME VARIANT inside ONE exit guard ('reviewed OR unreviewed after T'), never parallel outgoing edges (race deadlock). See pattern.fund_flow_stop_node_coverage + rules R-M5-03 / R-M5-09. VERIFIED against Move source + SDK (4-level immutability matrix):\n L1 — PERMANENTLY LOCKED after publish (assert!(!bPublished), no pause+lock exception):\n • machine (workflow template)\n • order_allocators (fund distribution rules — full replacement locked; APPEND-ONLY additions remain possible via order_allocators_append, prefix/threshold frozen)\n L2 — TIME-LOCKED after publish (unpublished-state check — requires pause + setting_lock_duration elapsed):\n • arbitrations remove/clear (dispute resolution objects)\n • rewards remove/clear (reward objects)\n • compensation_fund_withdraw (withdraw ALL funds)\n RATIONALE (deliberate design, NOT a defect): these three REVOKE buyer-facing guarantees that placed orders already rely on — the lock protects buyer expectations. Daily operations (sales add/remove, price, stock, description) are NEVER gated by this lock.\n L3 — REMAIN MUTABLE after publish (no SDK check, no Move check):\n • arbitrations add, rewards add (no assert — can add after publish)\n • buy_guard, sales, discount, description, location, pause, repositories,\n • compensation_fund_add, setting_lock_duration_add, customer_required, um (Contact)\nThese 2 L1-LOCKED fields (machine/order_allocators) MUST be set BEFORE publish=true.\narbitrations/rewards can be ADDED after publish but remove/clear requires pause+lock.\n\n⚠️ COMPENSATION_FUND + ARBITRATION LINKAGE:\n At publish time, if compensation_fund > 0, Arbitration MUST be bound:\n if (balance::value(&self.compensation_fund) > 0) {\n assert!(arbitration_count > 0, E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\n }\n The MCP handler enforces this as a HARD PRE-CHECK: if publish=true AND compensation_fund_add is set in the same call AND arbitrations is empty, the call is REJECTED before submission. If compensation_fund was deposited in a prior call, a SOFT WARNING is issued.\n\nSCHEMA-03 / P0-01 fix — DEPLOYMENT WORKFLOW (two-phase, avoids circular dependency):\n Phase 1 — CREATE (no publish): object={name:'my-service', type_parameter, permission} + machine + order_allocators + arbitrations.\n NOTE: buy_guard can use a LocalMark NAME (not address) to break the Guard→Service circular dependency.\n The name is resolved to an address at transaction build time.\n Phase 2 — PUBLISH: object='my-service' (string ref) + publish=true.\n All L1-LOCKED fields must be set in Phase 1; Phase 2 only flips the publish flag.\n Post-publish updates: buy_guard, sales, description, repositories (add), rewards (add), arbitrations (add), etc.",
|
|
1788
1792
|
"type": "boolean"
|
|
1789
1793
|
}
|
|
1790
1794
|
},
|
|
@@ -1939,6 +1943,7 @@
|
|
|
1939
1943
|
"description": "Whether this table item's value is submitted dynamically at Guard trigger time (alloc_by_guard call). \n\ntrue = value is submitted by the caller when triggering the Guard. Use for runtime-context-dependent values like order address, user address. The 'value' field is ignored when b_submission=true; the caller must provide it via submissions[]. \n\nfalse = value is static, set at Guard creation time. Use for values known when the Guard is created: expected node names, expected merchant address, expected service address. The 'value' field must be populated and will be stored on-chain permanently. \n\nRule of thumb: if the value is the SAME for all future Guard triggers, use false. If the value DIFFERS per trigger (e.g., which order to release funds for), use true."
|
|
1940
1944
|
},
|
|
1941
1945
|
"value_type": {
|
|
1946
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details.",
|
|
1942
1947
|
"anyOf": [
|
|
1943
1948
|
{
|
|
1944
1949
|
"type": "number",
|
|
@@ -2225,11 +2230,10 @@
|
|
|
2225
2230
|
"const": "vecvecu8",
|
|
2226
2231
|
"description": "vecvecu8"
|
|
2227
2232
|
}
|
|
2228
|
-
]
|
|
2229
|
-
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
2233
|
+
]
|
|
2230
2234
|
},
|
|
2231
2235
|
"value": {
|
|
2232
|
-
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission).",
|
|
2236
|
+
"description": "The actual value data. Format depends on `value_type`:\nTYPE-CLASS SPLIT (F03): scalar value_types (Bool/Address/String/U8..U256) take ONE scalar value (boolean/address string/name/string/number); Vec* value_types (VecBool/VecAddress/VecString/VecU8..VecU256) take a REAL JSON ARRAY of elements — a string (even a Python-repr-looking \"[a, b]\") fails serialization with 'value_type=10 (array) requires a array value'. The historical 'static values must be strings' rule applied to SCALARS only.\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nPROTOCOL SLOT 254 (once, b_submission Address): the submitted value MUST be the ORDER address bound to the operation (payment_info.for_object) — NEVER the Progress/Machine/Arb object the call is advancing. The chain asserts submission(254) == the order address; a Progress address fails the task binding and the forward aborts.\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission).",
|
|
2233
2237
|
"anyOf": [
|
|
2234
2238
|
{
|
|
2235
2239
|
"type": "boolean"
|
|
@@ -2388,7 +2392,7 @@
|
|
|
2388
2392
|
"additionalProperties": false,
|
|
2389
2393
|
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
2390
2394
|
},
|
|
2391
|
-
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
2395
|
+
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}] PROTOCOL SLOT 254: when the Guard table has identifier 254, submit the ORDER address bound to the operation (payment_info.for_object) — never the Progress/Machine object being advanced."
|
|
2392
2396
|
}
|
|
2393
2397
|
},
|
|
2394
2398
|
"required": [
|
|
@@ -2398,7 +2402,7 @@
|
|
|
2398
2402
|
"additionalProperties": false,
|
|
2399
2403
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
2400
2404
|
},
|
|
2401
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
2405
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. SLOT COMPLETENESS (T8 az3-mn-261013): the submission array must cover EVERY b_submission slot in the Guard's table, not just one — a Guard whose table has multiple b_submission entries (e.g. slot 0 + slot 254) aborts on-chain with 'Submission ID not found' (abort 11) when any b_submission slot has no matching entry. Check the Guard's table (each entry with b_submission needs its identifier filled) and include ALL of them. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
2402
2406
|
}
|
|
2403
2407
|
},
|
|
2404
2408
|
"required": [
|
|
@@ -751,6 +751,7 @@
|
|
|
751
751
|
"description": "Unwrap CoinWrapper objects and other objects received by this Treasury object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::wow::WOW>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::wow::WOW', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly.",
|
|
752
752
|
"anyOf": [
|
|
753
753
|
{
|
|
754
|
+
"minItems": 1,
|
|
754
755
|
"type": "array",
|
|
755
756
|
"items": {
|
|
756
757
|
"type": "object",
|
|
@@ -1029,6 +1030,7 @@
|
|
|
1029
1030
|
"description": "Whether this table item's value is submitted dynamically at Guard trigger time (alloc_by_guard call). \n\ntrue = value is submitted by the caller when triggering the Guard. Use for runtime-context-dependent values like order address, user address. The 'value' field is ignored when b_submission=true; the caller must provide it via submissions[]. \n\nfalse = value is static, set at Guard creation time. Use for values known when the Guard is created: expected node names, expected merchant address, expected service address. The 'value' field must be populated and will be stored on-chain permanently. \n\nRule of thumb: if the value is the SAME for all future Guard triggers, use false. If the value DIFFERS per trigger (e.g., which order to release funds for), use true."
|
|
1030
1031
|
},
|
|
1031
1032
|
"value_type": {
|
|
1033
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details.",
|
|
1032
1034
|
"anyOf": [
|
|
1033
1035
|
{
|
|
1034
1036
|
"type": "number",
|
|
@@ -1315,11 +1317,10 @@
|
|
|
1315
1317
|
"const": "vecvecu8",
|
|
1316
1318
|
"description": "vecvecu8"
|
|
1317
1319
|
}
|
|
1318
|
-
]
|
|
1319
|
-
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
1320
|
+
]
|
|
1320
1321
|
},
|
|
1321
1322
|
"value": {
|
|
1322
|
-
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission).",
|
|
1323
|
+
"description": "The actual value data. Format depends on `value_type`:\nTYPE-CLASS SPLIT (F03): scalar value_types (Bool/Address/String/U8..U256) take ONE scalar value (boolean/address string/name/string/number); Vec* value_types (VecBool/VecAddress/VecString/VecU8..VecU256) take a REAL JSON ARRAY of elements — a string (even a Python-repr-looking \"[a, b]\") fails serialization with 'value_type=10 (array) requires a array value'. The historical 'static values must be strings' rule applied to SCALARS only.\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nPROTOCOL SLOT 254 (once, b_submission Address): the submitted value MUST be the ORDER address bound to the operation (payment_info.for_object) — NEVER the Progress/Machine/Arb object the call is advancing. The chain asserts submission(254) == the order address; a Progress address fails the task binding and the forward aborts.\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission).",
|
|
1323
1324
|
"anyOf": [
|
|
1324
1325
|
{
|
|
1325
1326
|
"type": "boolean"
|
|
@@ -1478,7 +1479,7 @@
|
|
|
1478
1479
|
"additionalProperties": false,
|
|
1479
1480
|
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
1480
1481
|
},
|
|
1481
|
-
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
1482
|
+
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}] PROTOCOL SLOT 254: when the Guard table has identifier 254, submit the ORDER address bound to the operation (payment_info.for_object) — never the Progress/Machine object being advanced."
|
|
1482
1483
|
}
|
|
1483
1484
|
},
|
|
1484
1485
|
"required": [
|
|
@@ -1488,7 +1489,7 @@
|
|
|
1488
1489
|
"additionalProperties": false,
|
|
1489
1490
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
1490
1491
|
},
|
|
1491
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
1492
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. SLOT COMPLETENESS (T8 az3-mn-261013): the submission array must cover EVERY b_submission slot in the Guard's table, not just one — a Guard whose table has multiple b_submission entries (e.g. slot 0 + slot 254) aborts on-chain with 'Submission ID not found' (abort 11) when any b_submission slot has no matching entry. Check the Guard's table (each entry with b_submission needs its identifier filled) and include ALL of them. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
1492
1493
|
}
|
|
1493
1494
|
},
|
|
1494
1495
|
"required": [
|
|
@@ -653,7 +653,7 @@
|
|
|
653
653
|
"description": "vecvecu8"
|
|
654
654
|
}
|
|
655
655
|
],
|
|
656
|
-
"description": "User available value type (number
|
|
656
|
+
"description": "User available value type (number, numeric string, or name — e.g., 6, '6', 'U64', 'u64')"
|
|
657
657
|
},
|
|
658
658
|
{
|
|
659
659
|
"type": "number",
|
|
@@ -1642,7 +1642,7 @@
|
|
|
1642
1642
|
"description": "vecvecu8"
|
|
1643
1643
|
}
|
|
1644
1644
|
],
|
|
1645
|
-
"description": "User available value type (number
|
|
1645
|
+
"description": "User available value type (number, numeric string, or name — e.g., 6, '6', 'U64', 'u64')"
|
|
1646
1646
|
},
|
|
1647
1647
|
{
|
|
1648
1648
|
"type": "number",
|
|
@@ -2904,7 +2904,7 @@
|
|
|
2904
2904
|
"type": "null"
|
|
2905
2905
|
}
|
|
2906
2906
|
],
|
|
2907
|
-
"description": "Buyer-recorded credential (order.required_info): the merchant's IM user address resolved from the Service's Contact (zero cost) or an on-chain WTS Proof object id (embeds the IM address + last-message timestamp); null when not submitted"
|
|
2907
|
+
"description": "Buyer-recorded credential (order.required_info): the merchant's IM user address resolved from the Service's Contact (zero cost) or an on-chain WTS Proof object id (embeds the IM address + last-message timestamp); null when not submitted. ATTESTATION-ONLY: the value is self-attested by the buyer, has no on-chain readback, and MUST NOT be used as a gate condition."
|
|
2908
2908
|
},
|
|
2909
2909
|
"progress_next": {
|
|
2910
2910
|
"anyOf": [
|
|
@@ -4259,7 +4259,7 @@
|
|
|
4259
4259
|
"description": "vecvecu8"
|
|
4260
4260
|
}
|
|
4261
4261
|
],
|
|
4262
|
-
"description": "User available value type (number
|
|
4262
|
+
"description": "User available value type (number, numeric string, or name — e.g., 6, '6', 'U64', 'u64')"
|
|
4263
4263
|
},
|
|
4264
4264
|
{
|
|
4265
4265
|
"type": "number",
|
|
@@ -8297,7 +8297,7 @@
|
|
|
8297
8297
|
"description": "vecvecu8"
|
|
8298
8298
|
}
|
|
8299
8299
|
],
|
|
8300
|
-
"description": "User available value type (number
|
|
8300
|
+
"description": "User available value type (number, numeric string, or name — e.g., 6, '6', 'U64', 'u64')"
|
|
8301
8301
|
},
|
|
8302
8302
|
{
|
|
8303
8303
|
"type": "number",
|
|
@@ -9053,7 +9053,7 @@
|
|
|
9053
9053
|
"mainnet",
|
|
9054
9054
|
"localnet"
|
|
9055
9055
|
],
|
|
9056
|
-
"description": "Network for the query —
|
|
9056
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9057
9057
|
}
|
|
9058
9058
|
},
|
|
9059
9059
|
"required": [
|
|
@@ -9116,7 +9116,7 @@
|
|
|
9116
9116
|
"mainnet",
|
|
9117
9117
|
"localnet"
|
|
9118
9118
|
],
|
|
9119
|
-
"description": "Network for the query —
|
|
9119
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9120
9120
|
}
|
|
9121
9121
|
},
|
|
9122
9122
|
"required": [
|
|
@@ -9124,7 +9124,7 @@
|
|
|
9124
9124
|
"service_address"
|
|
9125
9125
|
],
|
|
9126
9126
|
"additionalProperties": false,
|
|
9127
|
-
"description": "READ-ONLY pre-purchase quote of a Service (finding 3.6 — order_new total_pay pre-check): per-item unit price × quantity, the basket total that order_new.buy.total_pay.balance must exactly equal (the on-chain buy aborts on any drift), and the order_allocators fee-split preview (sharing rows of the FIRST allocator — the normal payout path; guards select per-case allocators such as refund/damage, so the live split depends on which guard passes). Mirrors the on-chain price×quantity semantics WITHOUT calling quote on-chain and NEVER submits a transaction. Amounts are payment-token smallest units plus a human display when the token precision resolves."
|
|
9127
|
+
"description": "READ-ONLY pre-purchase quote of a Service (finding 3.6 — order_new total_pay pre-check): per-item unit price × quantity, the basket total that order_new.buy.total_pay.balance must exactly equal (the on-chain buy aborts on any drift), and the order_allocators fee-split preview (sharing rows of the FIRST allocator — the normal payout path; guards select per-case allocators such as refund/damage, so the live split depends on which guard passes). Also previews the reward terms of every Reward hung on the Service (pool balance, per-claim amount, claim window) so a buyer never budgets on an expired or unfunded reward. Mirrors the on-chain price×quantity semantics WITHOUT calling quote on-chain and NEVER submits a transaction. Amounts are payment-token smallest units plus a human display when the token precision resolves."
|
|
9128
9128
|
},
|
|
9129
9129
|
{
|
|
9130
9130
|
"type": "object",
|
|
@@ -9144,7 +9144,7 @@
|
|
|
9144
9144
|
"mainnet",
|
|
9145
9145
|
"localnet"
|
|
9146
9146
|
],
|
|
9147
|
-
"description": "Network for the query —
|
|
9147
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9148
9148
|
}
|
|
9149
9149
|
},
|
|
9150
9150
|
"required": [
|
|
@@ -9179,14 +9179,14 @@
|
|
|
9179
9179
|
"mainnet",
|
|
9180
9180
|
"localnet"
|
|
9181
9181
|
],
|
|
9182
|
-
"description": "Network for the query —
|
|
9182
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9183
9183
|
}
|
|
9184
9184
|
},
|
|
9185
9185
|
"required": [
|
|
9186
9186
|
"query_type"
|
|
9187
9187
|
],
|
|
9188
9188
|
"additionalProperties": false,
|
|
9189
|
-
"description": "ONE-CALL detail-page panorama for Progress / Demand / Order / Arb / Repository / Proof objects (client panorama family): discriminated `object_type` + head (name/tags/description) + the object's own typed fields + type-specific extras (Demand presenters from the GLOBAL tx table, Progress session/forwards, Arb votes & propositions, Repository policies, Proof anchored root + WTS cross-check). Read-only."
|
|
9189
|
+
"description": "ONE-CALL detail-page panorama for Progress / Demand / Order / Allocation / Arb / Repository / Proof objects (client panorama family): discriminated `object_type` + head (name/tags/description) + the object's own typed fields + type-specific extras (Demand presenters from the GLOBAL tx table, Progress session/forwards, Order fund state, Allocation pool balance + per-rail resolved recipients + Payment children, Arb votes & propositions, Repository policies, Proof anchored root + WTS cross-check). Read-only."
|
|
9190
9190
|
},
|
|
9191
9191
|
{
|
|
9192
9192
|
"type": "object",
|
|
@@ -9206,7 +9206,7 @@
|
|
|
9206
9206
|
"mainnet",
|
|
9207
9207
|
"localnet"
|
|
9208
9208
|
],
|
|
9209
|
-
"description": "Network for the query —
|
|
9209
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9210
9210
|
}
|
|
9211
9211
|
},
|
|
9212
9212
|
"required": [
|
|
@@ -9240,7 +9240,7 @@
|
|
|
9240
9240
|
"mainnet",
|
|
9241
9241
|
"localnet"
|
|
9242
9242
|
],
|
|
9243
|
-
"description": "Network for the query —
|
|
9243
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9244
9244
|
},
|
|
9245
9245
|
"context_depth": {
|
|
9246
9246
|
"description": "BFS recursion depth for dependency expansion in assemble_context (default 0 = no expansion). When >0, the assembly recursively queries objects referenced by the center objects (permission, guard, machine, service, repositories, etc.) up to the given depth, using the same address-field extraction rules as extractAddressFields. Each level issues one batched query_objects call (≤50 IDs per batch). Cycles are detected and skipped via a visited set. Discovered dependencies are returned in `dependencies` (edge metadata) and `dependency_objects` (full object states). Recommended: 1–2 for most use cases; 3+ may pull large subgraphs (use context_include to constrain).",
|
|
@@ -9283,7 +9283,7 @@
|
|
|
9283
9283
|
"mainnet",
|
|
9284
9284
|
"localnet"
|
|
9285
9285
|
],
|
|
9286
|
-
"description": "Network for the query —
|
|
9286
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9287
9287
|
},
|
|
9288
9288
|
"reverse_order_amount": {
|
|
9289
9289
|
"description": "Escrowed order amount (smallest-unit string) for reverse_map — included in the report summary as the concrete escrow mention.",
|
|
@@ -9334,6 +9334,30 @@
|
|
|
9334
9334
|
"description": "Attach order-monitor alerts (progress stall / compensation fund / review & arbitration windows) to each per-order result. Default true.",
|
|
9335
9335
|
"type": "boolean"
|
|
9336
9336
|
},
|
|
9337
|
+
"radar_review_summary": {
|
|
9338
|
+
"description": "Merchant-side review coverage summary (REVIEW-COMPONENT-PLAN batch 4): completed orders vs orders with a structured review record. Review rows live in a caller-named Repository — gather both counts via onchain_table_data (repository rows under the 'review' key, id_from=Signer → one row per buyer) and pass them in; the radar derives the merchant-side review-rate hint (high missing rate with a reward attached → reward lapsed or window too short). Omit when no review repository is bound.",
|
|
9339
|
+
"type": "object",
|
|
9340
|
+
"properties": {
|
|
9341
|
+
"orders_completed": {
|
|
9342
|
+
"type": "integer",
|
|
9343
|
+
"minimum": 0,
|
|
9344
|
+
"maximum": 9007199254740991
|
|
9345
|
+
},
|
|
9346
|
+
"reviews_written": {
|
|
9347
|
+
"type": "integer",
|
|
9348
|
+
"minimum": 0,
|
|
9349
|
+
"maximum": 9007199254740991
|
|
9350
|
+
},
|
|
9351
|
+
"reward_bound": {
|
|
9352
|
+
"type": "boolean"
|
|
9353
|
+
}
|
|
9354
|
+
},
|
|
9355
|
+
"required": [
|
|
9356
|
+
"orders_completed",
|
|
9357
|
+
"reviews_written"
|
|
9358
|
+
],
|
|
9359
|
+
"additionalProperties": false
|
|
9360
|
+
},
|
|
9337
9361
|
"radar_monitor_thresholds": {
|
|
9338
9362
|
"description": "Optional per-call overrides for order-monitor alert thresholds (only used when radar_include_alerts is on). All fields optional; omitted fields keep defaults. Units: hours/days as marked per field.",
|
|
9339
9363
|
"type": "object",
|
|
@@ -9380,7 +9404,7 @@
|
|
|
9380
9404
|
"mainnet",
|
|
9381
9405
|
"localnet"
|
|
9382
9406
|
],
|
|
9383
|
-
"description": "Network for the query —
|
|
9407
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9384
9408
|
}
|
|
9385
9409
|
},
|
|
9386
9410
|
"required": [
|
|
@@ -9425,7 +9449,7 @@
|
|
|
9425
9449
|
"mainnet",
|
|
9426
9450
|
"localnet"
|
|
9427
9451
|
],
|
|
9428
|
-
"description": "Network for the query —
|
|
9452
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9429
9453
|
}
|
|
9430
9454
|
},
|
|
9431
9455
|
"required": [
|
|
@@ -9470,7 +9494,7 @@
|
|
|
9470
9494
|
"mainnet",
|
|
9471
9495
|
"localnet"
|
|
9472
9496
|
],
|
|
9473
|
-
"description": "Network for the query —
|
|
9497
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9474
9498
|
},
|
|
9475
9499
|
"account": {
|
|
9476
9500
|
"description": "Scope the aggregation to ONE account address (the client's current account). Omit to aggregate across ALL local accounts.",
|
|
@@ -9505,7 +9529,7 @@
|
|
|
9505
9529
|
"mainnet",
|
|
9506
9530
|
"localnet"
|
|
9507
9531
|
],
|
|
9508
|
-
"description": "Network for the query —
|
|
9532
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9509
9533
|
},
|
|
9510
9534
|
"account": {
|
|
9511
9535
|
"description": "Scope to ONE account address (the client's current account). Omit to merge across ALL local accounts.",
|
|
@@ -9581,7 +9605,7 @@
|
|
|
9581
9605
|
"mainnet",
|
|
9582
9606
|
"localnet"
|
|
9583
9607
|
],
|
|
9584
|
-
"description": "Network for the query —
|
|
9608
|
+
"description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
|
|
9585
9609
|
},
|
|
9586
9610
|
"intent": {
|
|
9587
9611
|
"description": "SEMANTIC exploration strategy (G3) — what this topology call is trying to establish. Deterministically shapes the edge whitelist, per-family depth caps and budget: full_map=complete structural map; order_health=order lifecycle+completion+disputes; fund_flow=payments+allocation waterfall+guard-gated splits; workflow=Machine node graphs+transitions+progress; counterparty=who is on the other side (buyer/seller/agents/operators); reputation=votes+arbitration record+contacts; permission=permission groups+bindings+entity tables; supply_chain=multi-leg allocation/sub-order settlement; arbitration=dispute cases+voters; demand_match=demand presenters+guards+rewards. When omitted, defaults come from the persona system (role default intents < account persona preference), then industry templates; every applied layer is reported in result.strategy.trace.",
|
|
@@ -11038,6 +11062,50 @@
|
|
|
11038
11062
|
"current_node"
|
|
11039
11063
|
],
|
|
11040
11064
|
"additionalProperties": false
|
|
11065
|
+
},
|
|
11066
|
+
"review_steps": {
|
|
11067
|
+
"description": "Composite review submission report: the structured-reputation repository write (+ optional reward claim) chained after a successful progress forward via the data.review block, each reusing the forward's passport submission. Fail-isolated — a failed step never rolled back the forward. Relay failed steps to the user with the retry path (dedicated repository/reward tools).",
|
|
11068
|
+
"type": "array",
|
|
11069
|
+
"items": {
|
|
11070
|
+
"type": "object",
|
|
11071
|
+
"properties": {
|
|
11072
|
+
"step": {
|
|
11073
|
+
"type": "string",
|
|
11074
|
+
"enum": [
|
|
11075
|
+
"repository_write",
|
|
11076
|
+
"reward_claim"
|
|
11077
|
+
],
|
|
11078
|
+
"description": "Which chained review step this report describes. repository_write = structured reputation record (rating/tags) into the caller-named Repository; reward_claim = incentive claim on the caller-named Reward."
|
|
11079
|
+
},
|
|
11080
|
+
"status": {
|
|
11081
|
+
"type": "string",
|
|
11082
|
+
"enum": [
|
|
11083
|
+
"success",
|
|
11084
|
+
"failed"
|
|
11085
|
+
],
|
|
11086
|
+
"description": "Step outcome. Steps are fail-isolated: a failed step never affects the forward or the other step (on-chain has no rollback)."
|
|
11087
|
+
},
|
|
11088
|
+
"detail": {
|
|
11089
|
+
"type": "string",
|
|
11090
|
+
"description": "On success: what was written/claimed (payload summary). On failure: what the step attempted."
|
|
11091
|
+
},
|
|
11092
|
+
"digest": {
|
|
11093
|
+
"description": "Transaction digest when the step succeeded.",
|
|
11094
|
+
"type": "string"
|
|
11095
|
+
},
|
|
11096
|
+
"error": {
|
|
11097
|
+
"description": "Error message when the step failed. Retry via the dedicated repository/reward tools with the same submission values.",
|
|
11098
|
+
"type": "string"
|
|
11099
|
+
}
|
|
11100
|
+
},
|
|
11101
|
+
"required": [
|
|
11102
|
+
"step",
|
|
11103
|
+
"status",
|
|
11104
|
+
"detail"
|
|
11105
|
+
],
|
|
11106
|
+
"additionalProperties": false,
|
|
11107
|
+
"description": "One fail-isolated chained step of the progress composite review submission (REVIEW component, data.review block)."
|
|
11108
|
+
}
|
|
11041
11109
|
}
|
|
11042
11110
|
},
|
|
11043
11111
|
"required": [
|
|
@@ -11348,7 +11416,7 @@
|
|
|
11348
11416
|
"description": "vecvecu8"
|
|
11349
11417
|
}
|
|
11350
11418
|
],
|
|
11351
|
-
"description": "User available value type (number
|
|
11419
|
+
"description": "User available value type (number, numeric string, or name — e.g., 6, '6', 'U64', 'u64')"
|
|
11352
11420
|
},
|
|
11353
11421
|
{
|
|
11354
11422
|
"type": "number",
|