@wowok/agent-mcp 3.2.9 → 3.3.1
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/README.md +2 -2
- 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/object-graph.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +10 -1
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.js +1 -1
- package/dist/extensions/capability-manifest.js +1 -1
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/graph/onchain/field-manifest.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/KeeperScan.d.ts +2 -1
- package/dist/keeper/KeeperScan.js +1 -1
- package/dist/keeper/keeper.spec.js +1 -1
- package/dist/keeper/types.d.ts +3 -0
- package/dist/keeper/types.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +34 -0
- package/dist/knowledge/allocator-rail-verifier.js +1 -0
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/arbitration-venue-order.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +19 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/alloc_audit.json +1 -1
- package/dist/knowledge/baselines/rules/arb.json +1 -1
- package/dist/knowledge/baselines/rules/guard.json +15 -5
- package/dist/knowledge/baselines/rules/machine.json +9 -6
- package/dist/knowledge/baselines/rules/plan.json +12 -12
- package/dist/knowledge/baselines/semantic-facts.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +1 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/contract-invariants.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-anchor-reach.d.ts +1 -1
- package/dist/knowledge/guard-anchor-reach.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-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-puzzle.d.ts +1 -1
- package/dist/knowledge/machine-puzzle.js +1 -1
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-topology.d.ts +8 -0
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/protocol-facts.d.ts +16 -0
- package/dist/knowledge/protocol-facts.js +1 -0
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/reward-ledger.d.ts +2 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-templates.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +0 -2
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +7 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +13 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- 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/monitor/MonitorLoop.js +1 -1
- package/dist/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.d.ts +1 -1
- package/dist/monitor/types.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +1 -0
- package/dist/playbooks/service-build/game-theory.js +1 -1
- package/dist/playbooks/service-build/intent-analyzer.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.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/registry.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/role/profiles.js +1 -1
- package/dist/rules.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +5 -1
- package/dist/schema/benchmark-migration/index.js +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 +39 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +1 -0
- package/dist/schema/call/contact.d.ts +4 -4
- package/dist/schema/call/demand.d.ts +4 -4
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +12 -4
- package/dist/schema/call/order.d.ts +4 -4
- package/dist/schema/call/permission.d.ts +4 -4
- package/dist/schema/call/progress.d.ts +4 -4
- package/dist/schema/call/receipt.d.ts +8 -0
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +4 -4
- package/dist/schema/call/reward.d.ts +24 -4
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +6 -4
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +4 -4
- package/dist/schema/common/index.d.ts +2 -2
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +5 -1
- package/dist/schema/goal/planning.d.ts +10 -2
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +3 -0
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +9 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +10 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/operations.d.ts +35 -22
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.d.ts +16 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +52 -48
- 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.js +1 -1
- package/dist/schema/workspace/index.d.ts +9 -0
- package/dist/schema/workspace/index.js +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +1 -0
- package/dist/schemas/account_operation.schema.json +1 -1
- package/dist/schemas/benchmark_migration_operation.schema.json +27 -3
- package/dist/schemas/bridge_operation.output.json +1 -0
- package/dist/schemas/goal_operation.schema.json +26 -2
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +8 -0
- package/dist/schemas/industry_pack_operation.schema.json +9 -0
- package/dist/schemas/intent_radar.output.json +8 -2
- package/dist/schemas/intent_radar.schema.json +4 -1
- package/dist/schemas/local_cache_operation.output.json +1 -0
- package/dist/schemas/local_history_operation.output.json +1 -0
- package/dist/schemas/local_info_operation.output.json +1 -0
- package/dist/schemas/local_mark_operation.output.json +1 -0
- package/dist/schemas/monitor_events.schema.json +3 -1
- package/dist/schemas/onchain_events.output.json +275 -11
- package/dist/schemas/onchain_events.schema.json +25 -1
- package/dist/schemas/onchain_operations.output.json +40 -0
- package/dist/schemas/onchain_operations.schema.json +573 -104
- package/dist/schemas/onchain_operations_allocation.schema.json +2 -2
- package/dist/schemas/onchain_operations_arbitration.schema.json +11 -7
- package/dist/schemas/onchain_operations_contact.schema.json +9 -5
- package/dist/schemas/onchain_operations_demand.schema.json +9 -5
- package/dist/schemas/onchain_operations_guard.schema.json +342 -4
- package/dist/schemas/onchain_operations_machine.schema.json +17 -5
- package/dist/schemas/onchain_operations_order.schema.json +9 -5
- package/dist/schemas/onchain_operations_permission.schema.json +9 -5
- package/dist/schemas/onchain_operations_progress.schema.json +9 -5
- package/dist/schemas/onchain_operations_repository.schema.json +9 -5
- package/dist/schemas/onchain_operations_reward.schema.json +89 -9
- package/dist/schemas/onchain_operations_service.schema.json +18 -11
- package/dist/schemas/onchain_operations_treasury.schema.json +9 -5
- package/dist/schemas/query_toolkit.output.json +237 -14
- package/dist/schemas/schema_query.schema.json +3 -2
- package/dist/schemas/workspace_operation.output.json +23 -3
- package/dist/schemas/workspace_operation.schema.json +3 -3
- package/dist/tools/handlers/benchmark-migration.d.ts +45 -1
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/keeper.d.ts +1 -1
- package/dist/tools/handlers/onchain.d.ts +12 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/handlers/workspace.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
"additionalProperties": false
|
|
231
231
|
},
|
|
232
232
|
"order_required_info": {
|
|
233
|
-
"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
|
+
"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. BOUNDARY: that binding proves the credential AUTHOR only, never its content or any rating — do not mirror it onto review/reward claims; public reviews are Repository rows whose values are enforced guard-side via data-value probes, not through Proof objects.",
|
|
234
234
|
"type": "string"
|
|
235
235
|
},
|
|
236
236
|
"transfer": {
|
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
"type": "string"
|
|
342
342
|
},
|
|
343
343
|
"sales": {
|
|
344
|
-
"description": "Service sales products or services list. ⚠️ WIP
|
|
344
|
+
"description": "Service sales products or services list. ⚠️ WIP (PRODUCT-DETAIL FILE) — HOW TO PROVIDE IT: (1) EASIEST — official free hosting: upload the detail file with the wip_file tool; the default endpoint is https://wip.store.wowok.net (free: 10 files per account, 180-day retention, 12MB per file, rate-limited; files stay until you purge them). Put the returned URL into sale.wip. (2) Your own hosting: any publicly reachable URL (GitHub Pages / IPFS / your own website) — pass customBaseUrl to wip_file when uploading to a non-default endpoint, or host the file yourself and put that URL into sale.wip. For long-lived MAINNET listings prefer your own endpoint so the detail page outlives the free retention window. ⚠️ REACHABILITY RULE: a non-empty sale.wip MUST be a publicly reachable URL. The URL is stored ON-CHAIN and every customer fetches it at order time — a local file path, localhost/loopback URL, or LAN private-IP URL is unreachable by customers on other machines and aborts order_new 100%. Local-network URLs are INTERNAL TEST USE ONLY (env.network = localnet). ⚠️ SCORING: on mainnet, a sale item without a product-detail file is an incomplete listing — it hurts the service's market completeness score. Leave sale.wip empty (\"\") only for quick local testing.",
|
|
345
345
|
"oneOf": [
|
|
346
346
|
{
|
|
347
347
|
"type": "object",
|
|
@@ -1103,7 +1103,7 @@
|
|
|
1103
1103
|
"GuardIdentifier"
|
|
1104
1104
|
],
|
|
1105
1105
|
"additionalProperties": false,
|
|
1106
|
-
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type."
|
|
1106
|
+
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type. ALLOCATION rails only — the REWARD claim rail requires recipient == the transaction sender (abort 14), so a GuardIdentifier recipient on reward.guard_add resolves to the submitted Order and is structurally unpayable; the tool gate rejects it (crs-mn-261015 F-12)."
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
1109
|
"type": "object",
|
|
@@ -1142,7 +1142,7 @@
|
|
|
1142
1142
|
"Signer"
|
|
1143
1143
|
],
|
|
1144
1144
|
"additionalProperties": false,
|
|
1145
|
-
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
1145
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds. On the REWARD claim rail this is the CANONICAL recipient (the claim entry requires recipient == the tx sender)."
|
|
1146
1146
|
}
|
|
1147
1147
|
],
|
|
1148
1148
|
"description": "Recipient of this allocation. Three forms — each resolves the address at a DIFFERENT time:\n• { GuardIdentifier: u8 } — DYNAMIC address resolved from Passport at alloc() time (from the passport's submission record). Use 0 for Order owner in Service-integrated mode (Customer who created the Order). The identifier must match a Guard table entry with b_submission=true. If Passport has no matching submission, contract aborts with E_VERIFY_FAILED. Use when the recipient address is not known at config time and must be supplied via Guard submission data.\n• { Entity: { name_or_address: '...' } } — FIXED address resolved via LocalMark at SDK build time (passed to contract as a literal address). Use for known recipients (e.g., 'turo_host', or a Treasury object address). Use when the recipient is a stable, known address (e.g., operator receives rent, platform fee to treasury).\n• 'Signer' — the transaction sender at the time of the alloc() call (tx_context::sender). RESOLVED AT EXECUTION TIME, not at config time. For refunds: the customer (Order owner) must call alloc_by_guard THEMSELVES so that tx_context::sender resolves to THEIR address — if the operator calls alloc_by_guard, the operator becomes the recipient (Signer = operator), NOT the customer. Use when the recipient is whoever submits the allocation transaction (e.g., customer receives refund)."
|
|
@@ -1288,7 +1288,7 @@
|
|
|
1288
1288
|
"GuardIdentifier"
|
|
1289
1289
|
],
|
|
1290
1290
|
"additionalProperties": false,
|
|
1291
|
-
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type."
|
|
1291
|
+
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type. ALLOCATION rails only — the REWARD claim rail requires recipient == the transaction sender (abort 14), so a GuardIdentifier recipient on reward.guard_add resolves to the submitted Order and is structurally unpayable; the tool gate rejects it (crs-mn-261015 F-12)."
|
|
1292
1292
|
},
|
|
1293
1293
|
{
|
|
1294
1294
|
"type": "object",
|
|
@@ -1327,7 +1327,7 @@
|
|
|
1327
1327
|
"Signer"
|
|
1328
1328
|
],
|
|
1329
1329
|
"additionalProperties": false,
|
|
1330
|
-
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
1330
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds. On the REWARD claim rail this is the CANONICAL recipient (the claim entry requires recipient == the tx sender)."
|
|
1331
1331
|
}
|
|
1332
1332
|
],
|
|
1333
1333
|
"description": "Recipient of this allocation. Three forms — each resolves the address at a DIFFERENT time:\n• { GuardIdentifier: u8 } — DYNAMIC address resolved from Passport at alloc() time (from the passport's submission record). Use 0 for Order owner in Service-integrated mode (Customer who created the Order). The identifier must match a Guard table entry with b_submission=true. If Passport has no matching submission, contract aborts with E_VERIFY_FAILED. Use when the recipient address is not known at config time and must be supplied via Guard submission data.\n• { Entity: { name_or_address: '...' } } — FIXED address resolved via LocalMark at SDK build time (passed to contract as a literal address). Use for known recipients (e.g., 'turo_host', or a Treasury object address). Use when the recipient is a stable, known address (e.g., operator receives rent, platform fee to treasury).\n• 'Signer' — the transaction sender at the time of the alloc() call (tx_context::sender). RESOLVED AT EXECUTION TIME, not at config time. For refunds: the customer (Order owner) must call alloc_by_guard THEMSELVES so that tx_context::sender resolves to THEIR address — if the operator calls alloc_by_guard, the operator becomes the recipient (Signer = operator), NOT the customer. Use when the recipient is whoever submits the allocation transaction (e.g., customer receives refund)."
|
|
@@ -1630,8 +1630,16 @@
|
|
|
1630
1630
|
]
|
|
1631
1631
|
},
|
|
1632
1632
|
"owner_receive": {
|
|
1633
|
-
"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
|
|
1633
|
+
"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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
1634
1634
|
"anyOf": [
|
|
1635
|
+
{
|
|
1636
|
+
"type": "string",
|
|
1637
|
+
"const": "recently"
|
|
1638
|
+
},
|
|
1639
|
+
{
|
|
1640
|
+
"type": "string",
|
|
1641
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
1642
|
+
},
|
|
1635
1643
|
{
|
|
1636
1644
|
"minItems": 1,
|
|
1637
1645
|
"type": "array",
|
|
@@ -1741,10 +1749,6 @@
|
|
|
1741
1749
|
],
|
|
1742
1750
|
"additionalProperties": false,
|
|
1743
1751
|
"description": "Received record of Coin objects"
|
|
1744
|
-
},
|
|
1745
|
-
{
|
|
1746
|
-
"type": "string",
|
|
1747
|
-
"const": "recently"
|
|
1748
1752
|
}
|
|
1749
1753
|
]
|
|
1750
1754
|
},
|
|
@@ -1792,6 +1796,9 @@
|
|
|
1792
1796
|
"publish": {
|
|
1793
1797
|
"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.",
|
|
1794
1798
|
"type": "boolean"
|
|
1799
|
+
},
|
|
1800
|
+
"creation_plan": {
|
|
1801
|
+
"description": "WIZARD CONTRACT: the Plan JSON that merchant_guide delivered (its creation_plan / plan field), passed back VERBATIM on the Service publish call (data.publish=true). The publish gate replays the plan's freeze matrix (preflight) right before submission and REJECTS the publish when any gate fails (structural issues, critical audit findings, or a failed rule check) — this closes the preflight bypass where a plan that failed merchant_guide's audit could still be materialized manually. OMIT this field on every NON-publish call and on fully manual (non-wizard) builds — the manual path is unchanged and never gated by this field. Do NOT edit, trim, or 'improve' the plan in transit: a mutated plan is rejected (target cross-check) and the publish must be redone from merchant_guide."
|
|
1795
1802
|
}
|
|
1796
1803
|
},
|
|
1797
1804
|
"required": [
|
|
@@ -2931,6 +2938,10 @@
|
|
|
2931
2938
|
"description": "Node pair in Machine object"
|
|
2932
2939
|
},
|
|
2933
2940
|
"description": "Node pair list"
|
|
2941
|
+
},
|
|
2942
|
+
"optional": {
|
|
2943
|
+
"description": "OPTIONAL pure-side-action leaf marker (v32): order completion NEVER routes through this node and it must never gate money (e.g. a review node the buyer may skip entirely). SESSION METADATA ONLY — the on-chain node struct carries name+pairs, so this is NOT stored on-chain. Composition audits exempt an optional leaf from the FUND-EXIT-01 terminal fund-reachability search: a review leaf with no allocator is by design, not a stranded-funds bug (upw F-06, 6939_upwork-261016).",
|
|
2944
|
+
"type": "boolean"
|
|
2934
2945
|
}
|
|
2935
2946
|
},
|
|
2936
2947
|
"required": [
|
|
@@ -3118,6 +3129,10 @@
|
|
|
3118
3129
|
"description": "Node pair in Machine object"
|
|
3119
3130
|
},
|
|
3120
3131
|
"description": "Node pair list"
|
|
3132
|
+
},
|
|
3133
|
+
"optional": {
|
|
3134
|
+
"description": "OPTIONAL pure-side-action leaf marker (v32): order completion NEVER routes through this node and it must never gate money (e.g. a review node the buyer may skip entirely). SESSION METADATA ONLY — the on-chain node struct carries name+pairs, so this is NOT stored on-chain. Composition audits exempt an optional leaf from the FUND-EXIT-01 terminal fund-reachability search: a review leaf with no allocator is by design, not a stranded-funds bug (upw F-06, 6939_upwork-261016).",
|
|
3135
|
+
"type": "boolean"
|
|
3121
3136
|
}
|
|
3122
3137
|
},
|
|
3123
3138
|
"required": [
|
|
@@ -3493,8 +3508,16 @@
|
|
|
3493
3508
|
"type": "boolean"
|
|
3494
3509
|
},
|
|
3495
3510
|
"owner_receive": {
|
|
3496
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Machine 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
|
|
3511
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Machine 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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
3497
3512
|
"anyOf": [
|
|
3513
|
+
{
|
|
3514
|
+
"type": "string",
|
|
3515
|
+
"const": "recently"
|
|
3516
|
+
},
|
|
3517
|
+
{
|
|
3518
|
+
"type": "string",
|
|
3519
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
3520
|
+
},
|
|
3498
3521
|
{
|
|
3499
3522
|
"minItems": 1,
|
|
3500
3523
|
"type": "array",
|
|
@@ -3604,10 +3627,6 @@
|
|
|
3604
3627
|
],
|
|
3605
3628
|
"additionalProperties": false,
|
|
3606
3629
|
"description": "Received record of Coin objects"
|
|
3607
|
-
},
|
|
3608
|
-
{
|
|
3609
|
-
"type": "string",
|
|
3610
|
-
"const": "recently"
|
|
3611
3630
|
}
|
|
3612
3631
|
]
|
|
3613
3632
|
},
|
|
@@ -4453,8 +4472,16 @@
|
|
|
4453
4472
|
"additionalProperties": false
|
|
4454
4473
|
},
|
|
4455
4474
|
"owner_receive": {
|
|
4456
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Progress object and send them to the owner of the bound Machine's 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
|
|
4475
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Progress object and send them to the owner of the bound Machine's 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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
4457
4476
|
"anyOf": [
|
|
4477
|
+
{
|
|
4478
|
+
"type": "string",
|
|
4479
|
+
"const": "recently"
|
|
4480
|
+
},
|
|
4481
|
+
{
|
|
4482
|
+
"type": "string",
|
|
4483
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
4484
|
+
},
|
|
4458
4485
|
{
|
|
4459
4486
|
"minItems": 1,
|
|
4460
4487
|
"type": "array",
|
|
@@ -4564,10 +4591,6 @@
|
|
|
4564
4591
|
],
|
|
4565
4592
|
"additionalProperties": false,
|
|
4566
4593
|
"description": "Received record of Coin objects"
|
|
4567
|
-
},
|
|
4568
|
-
{
|
|
4569
|
-
"type": "string",
|
|
4570
|
-
"const": "recently"
|
|
4571
4594
|
}
|
|
4572
4595
|
]
|
|
4573
4596
|
},
|
|
@@ -6071,8 +6094,16 @@
|
|
|
6071
6094
|
]
|
|
6072
6095
|
},
|
|
6073
6096
|
"owner_receive": {
|
|
6074
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Repository 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
|
|
6097
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Repository 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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
6075
6098
|
"anyOf": [
|
|
6099
|
+
{
|
|
6100
|
+
"type": "string",
|
|
6101
|
+
"const": "recently"
|
|
6102
|
+
},
|
|
6103
|
+
{
|
|
6104
|
+
"type": "string",
|
|
6105
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
6106
|
+
},
|
|
6076
6107
|
{
|
|
6077
6108
|
"minItems": 1,
|
|
6078
6109
|
"type": "array",
|
|
@@ -6182,10 +6213,6 @@
|
|
|
6182
6213
|
],
|
|
6183
6214
|
"additionalProperties": false,
|
|
6184
6215
|
"description": "Received record of Coin objects"
|
|
6185
|
-
},
|
|
6186
|
-
{
|
|
6187
|
-
"type": "string",
|
|
6188
|
-
"const": "recently"
|
|
6189
6216
|
}
|
|
6190
6217
|
]
|
|
6191
6218
|
},
|
|
@@ -7049,7 +7076,7 @@
|
|
|
7049
7076
|
},
|
|
7050
7077
|
"voting_deadline": {
|
|
7051
7078
|
"default": null,
|
|
7052
|
-
"description": "Voting deadline as Unix timestamp in MILLISECONDS (ms). SEMANTICS OF SPECIAL VALUES: null (DEFAULT when omitted) = open-ended voting, no deadline; parties may vote at any time and the arbitrator may deliver the verdict
|
|
7079
|
+
"description": "Voting deadline as Unix timestamp in MILLISECONDS (ms). SEMANTICS OF SPECIAL VALUES: null (DEFAULT when omitted) = open-ended voting, no deadline; parties may vote at any time and the arbitrator may deliver the verdict after casting at least one ballot (arb.move skips the deadline assert when the Option is none) — this is the SAFE default; a future timestamp = normal bounded voting window (recommended: now + at least 86400000 ms = 24 hours); 0 = deadline already passed → the case PERMANENTLY DEADLOCKS (kl-real-261016 F-01, chain-verified): every vote aborts E_VOTING_DEADLINE_PASSED, so no ballot can ever exist, the verdict then aborts E_NO_VOTE_CAST (a verdict requires >= 1 cast ballot), and reset aborts as well. NEVER pass 0. Direct verdict = null + cast one ballot first, then deliver the verdict. COMMON MISTAKE: using seconds instead of milliseconds (multiply by 1000). Example: Date.now() + 259200000 for 3 days from now.",
|
|
7053
7080
|
"anyOf": [
|
|
7054
7081
|
{
|
|
7055
7082
|
"type": "integer",
|
|
@@ -7085,7 +7112,7 @@
|
|
|
7085
7112
|
"type": "null"
|
|
7086
7113
|
}
|
|
7087
7114
|
],
|
|
7088
|
-
"description": "New voting deadline as Unix timestamp in MILLISECONDS (ms). SEMANTICS OF SPECIAL VALUES: 0 = deadline already passed →
|
|
7115
|
+
"description": "New voting deadline as Unix timestamp in MILLISECONDS (ms). SEMANTICS OF SPECIAL VALUES: 0 = deadline already passed → the case PERMANENTLY DEADLOCKS (votes abort E_VOTING_DEADLINE_PASSED, no ballot can ever exist, verdict aborts E_NO_VOTE_CAST, reset aborts). NEVER pass 0; null = open-ended voting with no deadline (verdict allowed after casting at least one ballot — use this for the immediate-verdict flow: cast one ballot, then deliver); a future timestamp = normal voting window (recommended: now + at least 86400000 ms = 24 hours). COMMON MISTAKE: using seconds instead of milliseconds (multiply by 1000). Example: Date.now() + 259200000 for 3 days from now."
|
|
7089
7116
|
}
|
|
7090
7117
|
},
|
|
7091
7118
|
"required": [
|
|
@@ -7403,8 +7430,16 @@
|
|
|
7403
7430
|
]
|
|
7404
7431
|
},
|
|
7405
7432
|
"owner_receive": {
|
|
7406
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Arbitration 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
|
|
7433
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Arbitration 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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
7407
7434
|
"anyOf": [
|
|
7435
|
+
{
|
|
7436
|
+
"type": "string",
|
|
7437
|
+
"const": "recently"
|
|
7438
|
+
},
|
|
7439
|
+
{
|
|
7440
|
+
"type": "string",
|
|
7441
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
7442
|
+
},
|
|
7408
7443
|
{
|
|
7409
7444
|
"minItems": 1,
|
|
7410
7445
|
"type": "array",
|
|
@@ -7514,10 +7549,6 @@
|
|
|
7514
7549
|
],
|
|
7515
7550
|
"additionalProperties": false,
|
|
7516
7551
|
"description": "Received record of Coin objects"
|
|
7517
|
-
},
|
|
7518
|
-
{
|
|
7519
|
-
"type": "string",
|
|
7520
|
-
"const": "recently"
|
|
7521
7552
|
}
|
|
7522
7553
|
]
|
|
7523
7554
|
},
|
|
@@ -8380,8 +8411,16 @@
|
|
|
8380
8411
|
]
|
|
8381
8412
|
},
|
|
8382
8413
|
"owner_receive": {
|
|
8383
|
-
"description": "Receive objects sent to this Contact object and unwrap them to the permission owner.\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
|
|
8414
|
+
"description": "Receive objects sent to this Contact object and unwrap them to the permission owner.\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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
8384
8415
|
"anyOf": [
|
|
8416
|
+
{
|
|
8417
|
+
"type": "string",
|
|
8418
|
+
"const": "recently"
|
|
8419
|
+
},
|
|
8420
|
+
{
|
|
8421
|
+
"type": "string",
|
|
8422
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
8423
|
+
},
|
|
8385
8424
|
{
|
|
8386
8425
|
"minItems": 1,
|
|
8387
8426
|
"type": "array",
|
|
@@ -8491,10 +8530,6 @@
|
|
|
8491
8530
|
],
|
|
8492
8531
|
"additionalProperties": false,
|
|
8493
8532
|
"description": "Received record of Coin objects"
|
|
8494
|
-
},
|
|
8495
|
-
{
|
|
8496
|
-
"type": "string",
|
|
8497
|
-
"const": "recently"
|
|
8498
8533
|
}
|
|
8499
8534
|
]
|
|
8500
8535
|
}
|
|
@@ -9874,8 +9909,16 @@
|
|
|
9874
9909
|
]
|
|
9875
9910
|
},
|
|
9876
9911
|
"owner_receive": {
|
|
9877
|
-
"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
|
|
9912
|
+
"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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
9878
9913
|
"anyOf": [
|
|
9914
|
+
{
|
|
9915
|
+
"type": "string",
|
|
9916
|
+
"const": "recently"
|
|
9917
|
+
},
|
|
9918
|
+
{
|
|
9919
|
+
"type": "string",
|
|
9920
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
9921
|
+
},
|
|
9879
9922
|
{
|
|
9880
9923
|
"minItems": 1,
|
|
9881
9924
|
"type": "array",
|
|
@@ -9985,10 +10028,6 @@
|
|
|
9985
10028
|
],
|
|
9986
10029
|
"additionalProperties": false,
|
|
9987
10030
|
"description": "Received record of Coin objects"
|
|
9988
|
-
},
|
|
9989
|
-
{
|
|
9990
|
-
"type": "string",
|
|
9991
|
-
"const": "recently"
|
|
9992
10031
|
}
|
|
9993
10032
|
]
|
|
9994
10033
|
},
|
|
@@ -10857,7 +10896,7 @@
|
|
|
10857
10896
|
]
|
|
10858
10897
|
},
|
|
10859
10898
|
"guard_add": {
|
|
10860
|
-
"description": "Add Guard to Reward object. IDIOMS (F08 — these differ from Service allocation, follow THIS shape here): recipient is ONE OF {GuardIdentifier: <u8>} | {Entity: {name_or_address: 'mark'}} | {Signer: 'signer'} (string const INSIDE the key, NOT a bare string); amount is {type: 'Fixed', value: '0.1WOW'} — value accepts a display string with token symbol ('0.1WOW') or a smallest-unit integer ('100000000'), NOT the plain balance string used by allocation `sharing`. FULL EXAMPLE: [{guard: '0xabc...', recipient: {Signer: 'signer'}, amount: {type: 'Fixed', value: '0.1WOW'}}].",
|
|
10899
|
+
"description": "Add Guard to Reward object. IDIOMS (F08 — these differ from Service allocation, follow THIS shape here): recipient is ONE OF {GuardIdentifier: <u8>} | {Entity: {name_or_address: 'mark'}} | {Signer: 'signer'} (string const INSIDE the key, NOT a bare string) — BUT on the REWARD claim rail the recipient MUST equal the transaction sender (chain assert, abort 14), so {Signer: 'signer'} is the canonical form and {Entity} also passes (SDK replaces it with the claimant's account at claim time); a {GuardIdentifier} recipient resolves to the submitted Order and is STRUCTURALLY UNPAYABLE (every claim aborts 14) — the tool gate rejects it (crs-mn-261015 F-12). amount is {type: 'Fixed', value: '0.1WOW'} — value accepts a display string with token symbol ('0.1WOW') or a smallest-unit integer ('100000000'), NOT the plain balance string used by allocation `sharing`. FULL EXAMPLE: [{guard: '0xabc...', recipient: {Signer: 'signer'}, amount: {type: 'Fixed', value: '0.1WOW'}}].",
|
|
10861
10900
|
"type": "array",
|
|
10862
10901
|
"items": {
|
|
10863
10902
|
"type": "object",
|
|
@@ -10882,7 +10921,7 @@
|
|
|
10882
10921
|
"GuardIdentifier"
|
|
10883
10922
|
],
|
|
10884
10923
|
"additionalProperties": false,
|
|
10885
|
-
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type."
|
|
10924
|
+
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type. ALLOCATION rails only — the REWARD claim rail requires recipient == the transaction sender (abort 14), so a GuardIdentifier recipient on reward.guard_add resolves to the submitted Order and is structurally unpayable; the tool gate rejects it (crs-mn-261015 F-12)."
|
|
10886
10925
|
},
|
|
10887
10926
|
{
|
|
10888
10927
|
"type": "object",
|
|
@@ -10921,10 +10960,10 @@
|
|
|
10921
10960
|
"Signer"
|
|
10922
10961
|
],
|
|
10923
10962
|
"additionalProperties": false,
|
|
10924
|
-
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
10963
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds. On the REWARD claim rail this is the CANONICAL recipient (the claim entry requires recipient == the tx sender)."
|
|
10925
10964
|
}
|
|
10926
10965
|
],
|
|
10927
|
-
"description": "Recipient ID. Three forms:\n - {GuardIdentifier: u8} — DYNAMIC address resolved from Passport at alloc() time\n - {Entity: {name_or_address: 'mark_name'}} — FIXED static address via LocalMark (recommended)\n - {Signer: 'signer'} — transaction sender at alloc() time (e.g. self-refund; customer must call alloc_by_guard themselves)"
|
|
10966
|
+
"description": "Recipient ID. Three forms:\n - {GuardIdentifier: u8} — DYNAMIC address resolved from Passport at alloc() time (Allocation rails only; structurally unpayable on reward.guard_add — abort 14)\n - {Entity: {name_or_address: 'mark_name'}} — FIXED static address via LocalMark (recommended)\n - {Signer: 'signer'} — transaction sender at alloc() time (e.g. self-refund; customer must call alloc_by_guard themselves; canonical on reward claim rails)"
|
|
10928
10967
|
},
|
|
10929
10968
|
"amount": {
|
|
10930
10969
|
"oneOf": [
|
|
@@ -11024,8 +11063,16 @@
|
|
|
11024
11063
|
]
|
|
11025
11064
|
},
|
|
11026
11065
|
"owner_receive": {
|
|
11027
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Reward 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
|
|
11066
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Reward 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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
11028
11067
|
"anyOf": [
|
|
11068
|
+
{
|
|
11069
|
+
"type": "string",
|
|
11070
|
+
"const": "recently"
|
|
11071
|
+
},
|
|
11072
|
+
{
|
|
11073
|
+
"type": "string",
|
|
11074
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
11075
|
+
},
|
|
11029
11076
|
{
|
|
11030
11077
|
"minItems": 1,
|
|
11031
11078
|
"type": "array",
|
|
@@ -11135,10 +11182,6 @@
|
|
|
11135
11182
|
],
|
|
11136
11183
|
"additionalProperties": false,
|
|
11137
11184
|
"description": "Received record of Coin objects"
|
|
11138
|
-
},
|
|
11139
|
-
{
|
|
11140
|
-
"type": "string",
|
|
11141
|
-
"const": "recently"
|
|
11142
11185
|
}
|
|
11143
11186
|
]
|
|
11144
11187
|
},
|
|
@@ -11153,6 +11196,82 @@
|
|
|
11153
11196
|
"type": "null"
|
|
11154
11197
|
}
|
|
11155
11198
|
]
|
|
11199
|
+
},
|
|
11200
|
+
"withdraw": {
|
|
11201
|
+
"description": "Permission-gated balance exit (the ONLY non-claim exit from the Reward balance): withdraws this amount from the Reward balance and delivers it to the transaction sender inside a Payment object (the on-chain auditable receipt, keyed by the RewardWithdrawEvent). The executing account needs the withdraw right (permission index 158) on the Reward's Permission object. Fails on-chain when the balance is insufficient or while the declared no-guard window (guard_expiration_time) is still in the future; claim replay protection is unaffected. Use it to recover mismatched or overfunded pools.",
|
|
11202
|
+
"type": "object",
|
|
11203
|
+
"properties": {
|
|
11204
|
+
"amount": {
|
|
11205
|
+
"anyOf": [
|
|
11206
|
+
{
|
|
11207
|
+
"type": "integer",
|
|
11208
|
+
"minimum": 0,
|
|
11209
|
+
"maximum": 9007199254740991
|
|
11210
|
+
},
|
|
11211
|
+
{
|
|
11212
|
+
"type": "string"
|
|
11213
|
+
}
|
|
11214
|
+
],
|
|
11215
|
+
"description": "Amount to withdraw (SMALLEST token units, e.g. '100000000')."
|
|
11216
|
+
},
|
|
11217
|
+
"payment_info": {
|
|
11218
|
+
"type": "object",
|
|
11219
|
+
"properties": {
|
|
11220
|
+
"for_object": {
|
|
11221
|
+
"description": "Binding anchor for this distribution. On an Allocation a SET for_object is ENFORCED at alloc(): every GuardIdentifier recipient submission must equal this address or the whole tx aborts (ERECIPIENT_NOT_FOR_OBJECT, code 15) — verify the anchor matches the intended recipient flow BEFORE create; payment_info is immutable afterwards. NULL/omitted = no anchor: nothing is enforced on-chain, recipient routing is entirely the creator's design. Also recorded at creation for auditors to query the distribution's business context.",
|
|
11222
|
+
"anyOf": [
|
|
11223
|
+
{
|
|
11224
|
+
"type": "string"
|
|
11225
|
+
},
|
|
11226
|
+
{
|
|
11227
|
+
"type": "null"
|
|
11228
|
+
}
|
|
11229
|
+
]
|
|
11230
|
+
},
|
|
11231
|
+
"for_guard": {
|
|
11232
|
+
"description": "Payment to satisfy verification of a Guard object",
|
|
11233
|
+
"anyOf": [
|
|
11234
|
+
{
|
|
11235
|
+
"type": "string"
|
|
11236
|
+
},
|
|
11237
|
+
{
|
|
11238
|
+
"type": "null"
|
|
11239
|
+
}
|
|
11240
|
+
]
|
|
11241
|
+
},
|
|
11242
|
+
"remark": {
|
|
11243
|
+
"type": "string",
|
|
11244
|
+
"description": "Payment record remark"
|
|
11245
|
+
},
|
|
11246
|
+
"index": {
|
|
11247
|
+
"anyOf": [
|
|
11248
|
+
{
|
|
11249
|
+
"type": "number"
|
|
11250
|
+
},
|
|
11251
|
+
{
|
|
11252
|
+
"type": "string"
|
|
11253
|
+
}
|
|
11254
|
+
],
|
|
11255
|
+
"description": "Payment record index"
|
|
11256
|
+
}
|
|
11257
|
+
},
|
|
11258
|
+
"required": [
|
|
11259
|
+
"remark",
|
|
11260
|
+
"index"
|
|
11261
|
+
],
|
|
11262
|
+
"additionalProperties": false,
|
|
11263
|
+
"description": "Payment receipt metadata (remark/index). The withdrawn funds leave the Reward balance inside a Payment object — the on-chain auditable receipt."
|
|
11264
|
+
},
|
|
11265
|
+
"unwrap": {
|
|
11266
|
+
"description": "Auto-unwrap: when true, the coin is paid straight to the transaction sender in the SAME transaction (single-PTB flow). When false or omitted (default), a CoinWrapper is delivered to the sender's wallet for later unwrapping via the payment call with receive:true. Both modes keep the Payment object as the on-chain receipt.",
|
|
11267
|
+
"type": "boolean"
|
|
11268
|
+
}
|
|
11269
|
+
},
|
|
11270
|
+
"required": [
|
|
11271
|
+
"amount",
|
|
11272
|
+
"payment_info"
|
|
11273
|
+
],
|
|
11274
|
+
"additionalProperties": false
|
|
11156
11275
|
}
|
|
11157
11276
|
},
|
|
11158
11277
|
"required": [
|
|
@@ -11879,7 +11998,7 @@
|
|
|
11879
11998
|
"GuardIdentifier"
|
|
11880
11999
|
],
|
|
11881
12000
|
"additionalProperties": false,
|
|
11882
|
-
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type."
|
|
12001
|
+
"description": "Guard verified recipient ID. Get recipient ID from specified data index in Guard table. The ID must be of address type. ALLOCATION rails only — the REWARD claim rail requires recipient == the transaction sender (abort 14), so a GuardIdentifier recipient on reward.guard_add resolves to the submitted Order and is structurally unpayable; the tool gate rejects it (crs-mn-261015 F-12)."
|
|
11883
12002
|
},
|
|
11884
12003
|
{
|
|
11885
12004
|
"type": "object",
|
|
@@ -11918,7 +12037,7 @@
|
|
|
11918
12037
|
"Signer"
|
|
11919
12038
|
],
|
|
11920
12039
|
"additionalProperties": false,
|
|
11921
|
-
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
12040
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds. On the REWARD claim rail this is the CANONICAL recipient (the claim entry requires recipient == the tx sender)."
|
|
11922
12041
|
}
|
|
11923
12042
|
],
|
|
11924
12043
|
"description": "Recipient of this allocation. Three forms — each resolves the address at a DIFFERENT time:\n• { GuardIdentifier: u8 } — DYNAMIC address resolved from Passport at alloc() time (from the passport's submission record). Use 0 for Order owner in Service-integrated mode (Customer who created the Order). The identifier must match a Guard table entry with b_submission=true. If Passport has no matching submission, contract aborts with E_VERIFY_FAILED. Use when the recipient address is not known at config time and must be supplied via Guard submission data.\n• { Entity: { name_or_address: '...' } } — FIXED address resolved via LocalMark at SDK build time (passed to contract as a literal address). Use for known recipients (e.g., 'turo_host', or a Treasury object address). Use when the recipient is a stable, known address (e.g., operator receives rent, platform fee to treasury).\n• 'Signer' — the transaction sender at the time of the alloc() call (tx_context::sender). RESOLVED AT EXECUTION TIME, not at config time. For refunds: the customer (Order owner) must call alloc_by_guard THEMSELVES so that tx_context::sender resolves to THEIR address — if the operator calls alloc_by_guard, the operator becomes the recipient (Signer = operator), NOT the customer. Use when the recipient is whoever submits the allocation transaction (e.g., customer receives refund)."
|
|
@@ -13496,8 +13615,16 @@
|
|
|
13496
13615
|
"additionalProperties": false
|
|
13497
13616
|
},
|
|
13498
13617
|
"owner_receive": {
|
|
13499
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Permission object and send them to the builder(owner).\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
|
|
13618
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Permission object and send them to the builder(owner).\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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
13500
13619
|
"anyOf": [
|
|
13620
|
+
{
|
|
13621
|
+
"type": "string",
|
|
13622
|
+
"const": "recently"
|
|
13623
|
+
},
|
|
13624
|
+
{
|
|
13625
|
+
"type": "string",
|
|
13626
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
13627
|
+
},
|
|
13501
13628
|
{
|
|
13502
13629
|
"minItems": 1,
|
|
13503
13630
|
"type": "array",
|
|
@@ -13607,10 +13734,6 @@
|
|
|
13607
13734
|
],
|
|
13608
13735
|
"additionalProperties": false,
|
|
13609
13736
|
"description": "Received record of Coin objects"
|
|
13610
|
-
},
|
|
13611
|
-
{
|
|
13612
|
-
"type": "string",
|
|
13613
|
-
"const": "recently"
|
|
13614
13737
|
}
|
|
13615
13738
|
]
|
|
13616
13739
|
},
|
|
@@ -14240,7 +14363,7 @@
|
|
|
14240
14363
|
"type": "string"
|
|
14241
14364
|
}
|
|
14242
14365
|
],
|
|
14243
|
-
"description": "ID or name of the wowok object data query instruction. Can be a numeric ID (e.g., 1001) or a name string (e.g., 'permission.description'). Name matching is case-insensitive."
|
|
14366
|
+
"description": "ID or name of the wowok object data query instruction. Can be a numeric ID (e.g., 1001) or a name string (e.g., 'permission.description'). Name matching is case-insensitive. STRONGLY PREFER the NAME form: a numeric ID is resolved VERBATIM at runtime, so a wrong-but-existing ID silently checks a DIFFERENT field and only fails at Guard trigger time (abort 7, no leg named) — a wrong name fails loudly at validation here instead (rndb58d8d 04-ROOTCAUSE-A A2). If you only know the field, list the catalog first via schema_query action='get_guard_queries'."
|
|
14244
14367
|
},
|
|
14245
14368
|
"object": {
|
|
14246
14369
|
"type": "object",
|
|
@@ -15600,13 +15723,26 @@
|
|
|
15600
15723
|
"minimum": 0,
|
|
15601
15724
|
"maximum": 255,
|
|
15602
15725
|
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
15726
|
+
},
|
|
15727
|
+
"convert_witness": {
|
|
15728
|
+
"description": "Optional witness to derive the Progress object from the submitted Order (e.g. 'OrderProgress'): the table object is the ORDER address and the chain resolves its per-order Progress — one Guard serves every order. Omit when the table object is a concrete Progress address.",
|
|
15729
|
+
"anyOf": [
|
|
15730
|
+
{
|
|
15731
|
+
"type": "integer",
|
|
15732
|
+
"minimum": -9007199254740991,
|
|
15733
|
+
"maximum": 9007199254740991
|
|
15734
|
+
},
|
|
15735
|
+
{
|
|
15736
|
+
"type": "string"
|
|
15737
|
+
}
|
|
15738
|
+
]
|
|
15603
15739
|
}
|
|
15604
15740
|
},
|
|
15605
15741
|
"required": [
|
|
15606
15742
|
"identifier"
|
|
15607
15743
|
],
|
|
15608
15744
|
"additionalProperties": false,
|
|
15609
|
-
"description": "Reference to the
|
|
15745
|
+
"description": "Reference to the queried object in the Guard table: a Progress address, or an Order address when convert_witness is set."
|
|
15610
15746
|
},
|
|
15611
15747
|
"where": {
|
|
15612
15748
|
"type": "object",
|
|
@@ -15662,7 +15798,7 @@
|
|
|
15662
15798
|
"properties": {
|
|
15663
15799
|
"type": {
|
|
15664
15800
|
"type": "string",
|
|
15665
|
-
"const": "
|
|
15801
|
+
"const": "query_progress_history_time"
|
|
15666
15802
|
},
|
|
15667
15803
|
"object": {
|
|
15668
15804
|
"type": "object",
|
|
@@ -15672,33 +15808,57 @@
|
|
|
15672
15808
|
"minimum": 0,
|
|
15673
15809
|
"maximum": 255,
|
|
15674
15810
|
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
15811
|
+
},
|
|
15812
|
+
"convert_witness": {
|
|
15813
|
+
"description": "Optional witness to derive the Progress object from the submitted Order (e.g. 'OrderProgress'): the table object is the ORDER address and the chain resolves its per-order Progress — one Guard serves every order. Omit when the table object is a concrete Progress address.",
|
|
15814
|
+
"anyOf": [
|
|
15815
|
+
{
|
|
15816
|
+
"type": "integer",
|
|
15817
|
+
"minimum": -9007199254740991,
|
|
15818
|
+
"maximum": 9007199254740991
|
|
15819
|
+
},
|
|
15820
|
+
{
|
|
15821
|
+
"type": "string"
|
|
15822
|
+
}
|
|
15823
|
+
]
|
|
15675
15824
|
}
|
|
15676
15825
|
},
|
|
15677
15826
|
"required": [
|
|
15678
15827
|
"identifier"
|
|
15679
15828
|
],
|
|
15680
15829
|
"additionalProperties": false,
|
|
15681
|
-
"description": "Reference to the
|
|
15682
|
-
},
|
|
15683
|
-
"historyIdx": {
|
|
15684
|
-
"description": "GuardNode that returns the history index (U64 type) to search within. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
15685
|
-
"allOf": [
|
|
15686
|
-
{
|
|
15687
|
-
"$ref": "#/definitions/__schema3"
|
|
15688
|
-
}
|
|
15689
|
-
],
|
|
15690
|
-
"$ref": "#/definitions/__schema2"
|
|
15830
|
+
"description": "Reference to the queried object in the Guard table: a Progress address, or an Order address when convert_witness is set."
|
|
15691
15831
|
},
|
|
15692
15832
|
"where": {
|
|
15693
15833
|
"type": "object",
|
|
15694
15834
|
"properties": {
|
|
15835
|
+
"node": {
|
|
15836
|
+
"description": "Optional filter: node name string to match.",
|
|
15837
|
+
"type": "string"
|
|
15838
|
+
},
|
|
15695
15839
|
"nextNode": {
|
|
15696
|
-
"description": "Optional filter: next node name string to match.",
|
|
15840
|
+
"description": "Optional filter: next node name string to match — the canonical time anchor is where:{nextNode:'<node>'}, find:'last', which returns the IMMUTABLE moment that node was entered (1280 history.time is written once on entry and never rewritten, unlike the 1272 current-time read which refreshes on re-entry). An empty where {} with find:'last' returns the entry time of the CURRENT node — safe for node-SET gates.",
|
|
15841
|
+
"type": "string"
|
|
15842
|
+
},
|
|
15843
|
+
"timeMin": {
|
|
15844
|
+
"description": "Optional filter: minimum timestamp (inclusive) for history entry time. Use string to represent U64 value.",
|
|
15845
|
+
"type": "string"
|
|
15846
|
+
},
|
|
15847
|
+
"timeMax": {
|
|
15848
|
+
"description": "Optional filter: maximum timestamp (inclusive) for history entry time. Use string to represent U64 value.",
|
|
15849
|
+
"type": "string"
|
|
15850
|
+
},
|
|
15851
|
+
"indexMin": {
|
|
15852
|
+
"description": "Optional filter: minimum history index (inclusive) to search within. Use string to represent U64 value.",
|
|
15853
|
+
"type": "string"
|
|
15854
|
+
},
|
|
15855
|
+
"indexMax": {
|
|
15856
|
+
"description": "Optional filter: maximum history index (inclusive) to search within. Use string to represent U64 value.",
|
|
15697
15857
|
"type": "string"
|
|
15698
15858
|
}
|
|
15699
15859
|
},
|
|
15700
15860
|
"additionalProperties": false,
|
|
15701
|
-
"description": "Filter conditions for the progress history
|
|
15861
|
+
"description": "Filter conditions for the progress history time query."
|
|
15702
15862
|
},
|
|
15703
15863
|
"find": {
|
|
15704
15864
|
"type": "string",
|
|
@@ -15706,25 +15866,24 @@
|
|
|
15706
15866
|
"first",
|
|
15707
15867
|
"last"
|
|
15708
15868
|
],
|
|
15709
|
-
"description": "'first' finds the earliest matching
|
|
15869
|
+
"description": "'first' finds the earliest matching history entry, 'last' finds the most recent matching history entry."
|
|
15710
15870
|
}
|
|
15711
15871
|
},
|
|
15712
15872
|
"required": [
|
|
15713
15873
|
"type",
|
|
15714
15874
|
"object",
|
|
15715
|
-
"historyIdx",
|
|
15716
15875
|
"where",
|
|
15717
15876
|
"find"
|
|
15718
15877
|
],
|
|
15719
15878
|
"additionalProperties": false,
|
|
15720
|
-
"description": "Returns U64.
|
|
15879
|
+
"description": "Returns U64. Returns the TIMESTAMP (ms) of the first or last history entry matching the filter conditions — the immutable entry moment of a node (query 1280 progress.history.time). Preferred over query 1272 progress.current_time for time anchors: 1272 reads the node's CURRENT time and refreshes on re-entry (drift-prone), while 1280 is written once on entering next_node and never rewritten. Throws error if no matching entry is found (Guard validation fails)."
|
|
15721
15880
|
},
|
|
15722
15881
|
{
|
|
15723
15882
|
"type": "object",
|
|
15724
15883
|
"properties": {
|
|
15725
15884
|
"type": {
|
|
15726
15885
|
"type": "string",
|
|
15727
|
-
"const": "
|
|
15886
|
+
"const": "query_progress_history_session_find"
|
|
15728
15887
|
},
|
|
15729
15888
|
"object": {
|
|
15730
15889
|
"type": "object",
|
|
@@ -15743,16 +15902,7 @@
|
|
|
15743
15902
|
"description": "Reference to the Progress object in the Guard table (must be Address type)."
|
|
15744
15903
|
},
|
|
15745
15904
|
"historyIdx": {
|
|
15746
|
-
"description": "GuardNode that returns the history index (U64 type). Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
15747
|
-
"allOf": [
|
|
15748
|
-
{
|
|
15749
|
-
"$ref": "#/definitions/__schema3"
|
|
15750
|
-
}
|
|
15751
|
-
],
|
|
15752
|
-
"$ref": "#/definitions/__schema2"
|
|
15753
|
-
},
|
|
15754
|
-
"sessionIdx": {
|
|
15755
|
-
"description": "GuardNode that returns the session index (U64 type) within the history entry. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
15905
|
+
"description": "GuardNode that returns the history index (U64 type) to search within. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
15756
15906
|
"allOf": [
|
|
15757
15907
|
{
|
|
15758
15908
|
"$ref": "#/definitions/__schema3"
|
|
@@ -15763,11 +15913,82 @@
|
|
|
15763
15913
|
"where": {
|
|
15764
15914
|
"type": "object",
|
|
15765
15915
|
"properties": {
|
|
15766
|
-
"
|
|
15767
|
-
"description": "Optional filter:
|
|
15916
|
+
"nextNode": {
|
|
15917
|
+
"description": "Optional filter: next node name string to match.",
|
|
15768
15918
|
"type": "string"
|
|
15769
|
-
}
|
|
15770
|
-
|
|
15919
|
+
}
|
|
15920
|
+
},
|
|
15921
|
+
"additionalProperties": false,
|
|
15922
|
+
"description": "Filter conditions for the progress history session query."
|
|
15923
|
+
},
|
|
15924
|
+
"find": {
|
|
15925
|
+
"type": "string",
|
|
15926
|
+
"enum": [
|
|
15927
|
+
"first",
|
|
15928
|
+
"last"
|
|
15929
|
+
],
|
|
15930
|
+
"description": "'first' finds the earliest matching session, 'last' finds the most recent matching session."
|
|
15931
|
+
}
|
|
15932
|
+
},
|
|
15933
|
+
"required": [
|
|
15934
|
+
"type",
|
|
15935
|
+
"object",
|
|
15936
|
+
"historyIdx",
|
|
15937
|
+
"where",
|
|
15938
|
+
"find"
|
|
15939
|
+
],
|
|
15940
|
+
"additionalProperties": false,
|
|
15941
|
+
"description": "Returns U64. Finds the index of the first or last session within the specified history entry matching the filter conditions. Returns the session index (U64) if found. Throws error if no matching session is found (Guard validation fails)."
|
|
15942
|
+
},
|
|
15943
|
+
{
|
|
15944
|
+
"type": "object",
|
|
15945
|
+
"properties": {
|
|
15946
|
+
"type": {
|
|
15947
|
+
"type": "string",
|
|
15948
|
+
"const": "query_progress_history_session_forward_find"
|
|
15949
|
+
},
|
|
15950
|
+
"object": {
|
|
15951
|
+
"type": "object",
|
|
15952
|
+
"properties": {
|
|
15953
|
+
"identifier": {
|
|
15954
|
+
"type": "integer",
|
|
15955
|
+
"minimum": 0,
|
|
15956
|
+
"maximum": 255,
|
|
15957
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
15958
|
+
}
|
|
15959
|
+
},
|
|
15960
|
+
"required": [
|
|
15961
|
+
"identifier"
|
|
15962
|
+
],
|
|
15963
|
+
"additionalProperties": false,
|
|
15964
|
+
"description": "Reference to the Progress object in the Guard table (must be Address type)."
|
|
15965
|
+
},
|
|
15966
|
+
"historyIdx": {
|
|
15967
|
+
"description": "GuardNode that returns the history index (U64 type). Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
15968
|
+
"allOf": [
|
|
15969
|
+
{
|
|
15970
|
+
"$ref": "#/definitions/__schema3"
|
|
15971
|
+
}
|
|
15972
|
+
],
|
|
15973
|
+
"$ref": "#/definitions/__schema2"
|
|
15974
|
+
},
|
|
15975
|
+
"sessionIdx": {
|
|
15976
|
+
"description": "GuardNode that returns the session index (U64 type) within the history entry. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
15977
|
+
"allOf": [
|
|
15978
|
+
{
|
|
15979
|
+
"$ref": "#/definitions/__schema3"
|
|
15980
|
+
}
|
|
15981
|
+
],
|
|
15982
|
+
"$ref": "#/definitions/__schema2"
|
|
15983
|
+
},
|
|
15984
|
+
"where": {
|
|
15985
|
+
"type": "object",
|
|
15986
|
+
"properties": {
|
|
15987
|
+
"who": {
|
|
15988
|
+
"description": "Optional filter: operator address string to match.",
|
|
15989
|
+
"type": "string"
|
|
15990
|
+
},
|
|
15991
|
+
"operation": {
|
|
15771
15992
|
"description": "Optional filter: operation name string to match.",
|
|
15772
15993
|
"type": "string"
|
|
15773
15994
|
},
|
|
@@ -15960,6 +16181,77 @@
|
|
|
15960
16181
|
"additionalProperties": false,
|
|
15961
16182
|
"description": "Returns U64. Counts the number of retained submissions within the specified forward operation."
|
|
15962
16183
|
},
|
|
16184
|
+
{
|
|
16185
|
+
"type": "object",
|
|
16186
|
+
"properties": {
|
|
16187
|
+
"type": {
|
|
16188
|
+
"type": "string",
|
|
16189
|
+
"const": "query_progress_history_session_forward_retained_submission_value"
|
|
16190
|
+
},
|
|
16191
|
+
"object": {
|
|
16192
|
+
"type": "object",
|
|
16193
|
+
"properties": {
|
|
16194
|
+
"identifier": {
|
|
16195
|
+
"type": "integer",
|
|
16196
|
+
"minimum": 0,
|
|
16197
|
+
"maximum": 255,
|
|
16198
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
16199
|
+
}
|
|
16200
|
+
},
|
|
16201
|
+
"required": [
|
|
16202
|
+
"identifier"
|
|
16203
|
+
],
|
|
16204
|
+
"additionalProperties": false,
|
|
16205
|
+
"description": "Reference to the Progress object in the Guard table (must be Address type)."
|
|
16206
|
+
},
|
|
16207
|
+
"historyIdx": {
|
|
16208
|
+
"description": "GuardNode that returns the history index (U64 type). Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
16209
|
+
"allOf": [
|
|
16210
|
+
{
|
|
16211
|
+
"$ref": "#/definitions/__schema3"
|
|
16212
|
+
}
|
|
16213
|
+
],
|
|
16214
|
+
"$ref": "#/definitions/__schema2"
|
|
16215
|
+
},
|
|
16216
|
+
"sessionIdx": {
|
|
16217
|
+
"description": "GuardNode that returns the session index (U64 type) within the history entry. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
16218
|
+
"allOf": [
|
|
16219
|
+
{
|
|
16220
|
+
"$ref": "#/definitions/__schema3"
|
|
16221
|
+
}
|
|
16222
|
+
],
|
|
16223
|
+
"$ref": "#/definitions/__schema2"
|
|
16224
|
+
},
|
|
16225
|
+
"forwardIdx": {
|
|
16226
|
+
"description": "GuardNode that returns the forward operation index (U64 type) within the session. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
16227
|
+
"allOf": [
|
|
16228
|
+
{
|
|
16229
|
+
"$ref": "#/definitions/__schema3"
|
|
16230
|
+
}
|
|
16231
|
+
],
|
|
16232
|
+
"$ref": "#/definitions/__schema2"
|
|
16233
|
+
},
|
|
16234
|
+
"identifier": {
|
|
16235
|
+
"description": "GuardNode that returns the submission identifier (U8 type) — which retained submission of the forward to read. Typically an 'identifier' node referencing a U8 value from the Guard table.",
|
|
16236
|
+
"allOf": [
|
|
16237
|
+
{
|
|
16238
|
+
"$ref": "#/definitions/__schema3"
|
|
16239
|
+
}
|
|
16240
|
+
],
|
|
16241
|
+
"$ref": "#/definitions/__schema2"
|
|
16242
|
+
}
|
|
16243
|
+
},
|
|
16244
|
+
"required": [
|
|
16245
|
+
"type",
|
|
16246
|
+
"object",
|
|
16247
|
+
"historyIdx",
|
|
16248
|
+
"sessionIdx",
|
|
16249
|
+
"forwardIdx",
|
|
16250
|
+
"identifier"
|
|
16251
|
+
],
|
|
16252
|
+
"additionalProperties": false,
|
|
16253
|
+
"description": "Returns VecU8 (the ONLY history query that does not return U64). Value of the specified retained submission of a HISTORY record (query 1281) — the history-side counterpart of the ACTIVE-SESSION-ONLY 1268 read, which goes blind once the session migrates into history. Use 1274/1275 to discover the history/session/forward indexes first. Throws error when the record carries no submission for the identifier (Guard validation fails)."
|
|
16254
|
+
},
|
|
15963
16255
|
{
|
|
15964
16256
|
"type": "object",
|
|
15965
16257
|
"properties": {
|
|
@@ -18882,8 +19174,16 @@
|
|
|
18882
19174
|
]
|
|
18883
19175
|
},
|
|
18884
19176
|
"owner_receive": {
|
|
18885
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this Demand 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
|
|
19177
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Demand 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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
18886
19178
|
"anyOf": [
|
|
19179
|
+
{
|
|
19180
|
+
"type": "string",
|
|
19181
|
+
"const": "recently"
|
|
19182
|
+
},
|
|
19183
|
+
{
|
|
19184
|
+
"type": "string",
|
|
19185
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
19186
|
+
},
|
|
18887
19187
|
{
|
|
18888
19188
|
"minItems": 1,
|
|
18889
19189
|
"type": "array",
|
|
@@ -18993,10 +19293,6 @@
|
|
|
18993
19293
|
],
|
|
18994
19294
|
"additionalProperties": false,
|
|
18995
19295
|
"description": "Received record of Coin objects"
|
|
18996
|
-
},
|
|
18997
|
-
{
|
|
18998
|
-
"type": "string",
|
|
18999
|
-
"const": "recently"
|
|
19000
19296
|
}
|
|
19001
19297
|
]
|
|
19002
19298
|
},
|
|
@@ -19811,8 +20107,16 @@
|
|
|
19811
20107
|
"additionalProperties": false
|
|
19812
20108
|
},
|
|
19813
20109
|
"receive": {
|
|
19814
|
-
"description": "Unwrap CoinWrapper objects or other objects received by the order and transfer them to the order owner. Consistent with `owner_receive` on other objects (arbitration/contact/demand/machine/permission/repository/reward/service/treasury).\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
|
|
20110
|
+
"description": "Unwrap CoinWrapper objects or other objects received by the order and transfer them to the order owner. Consistent with `owner_receive` on other objects (arbitration/contact/demand/machine/permission/repository/reward/service/treasury).\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\" — for\n order.receive this is the correct default for \"the buyer got their refund\".\n Example: receive: 'recently'\n• bare object id (string, 0x-prefixed) — one-object form, auto-expanded (F-15):\n pass the id of the single received object you want to unwrap (e.g. a CoinWrapper id).\n Example: receive: '0xabc...'\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.",
|
|
19815
20111
|
"anyOf": [
|
|
20112
|
+
{
|
|
20113
|
+
"type": "string",
|
|
20114
|
+
"const": "recently"
|
|
20115
|
+
},
|
|
20116
|
+
{
|
|
20117
|
+
"type": "string",
|
|
20118
|
+
"pattern": "^0x[0-9a-fA-F]{8,}$"
|
|
20119
|
+
},
|
|
19816
20120
|
{
|
|
19817
20121
|
"minItems": 1,
|
|
19818
20122
|
"type": "array",
|
|
@@ -19922,10 +20226,6 @@
|
|
|
19922
20226
|
],
|
|
19923
20227
|
"additionalProperties": false,
|
|
19924
20228
|
"description": "Received record of Coin objects"
|
|
19925
|
-
},
|
|
19926
|
-
{
|
|
19927
|
-
"type": "string",
|
|
19928
|
-
"const": "recently"
|
|
19929
20229
|
}
|
|
19930
20230
|
]
|
|
19931
20231
|
},
|
|
@@ -22744,7 +23044,7 @@
|
|
|
22744
23044
|
"type": "string"
|
|
22745
23045
|
}
|
|
22746
23046
|
],
|
|
22747
|
-
"description": "ID or name of the wowok object data query instruction. Can be a numeric ID (e.g., 1001) or a name string (e.g., 'permission.description'). Name matching is case-insensitive."
|
|
23047
|
+
"description": "ID or name of the wowok object data query instruction. Can be a numeric ID (e.g., 1001) or a name string (e.g., 'permission.description'). Name matching is case-insensitive. STRONGLY PREFER the NAME form: a numeric ID is resolved VERBATIM at runtime, so a wrong-but-existing ID silently checks a DIFFERENT field and only fails at Guard trigger time (abort 7, no leg named) — a wrong name fails loudly at validation here instead (rndb58d8d 04-ROOTCAUSE-A A2). If you only know the field, list the catalog first via schema_query action='get_guard_queries'."
|
|
22748
23048
|
},
|
|
22749
23049
|
"object": {
|
|
22750
23050
|
"type": "object",
|
|
@@ -24104,13 +24404,26 @@
|
|
|
24104
24404
|
"minimum": 0,
|
|
24105
24405
|
"maximum": 255,
|
|
24106
24406
|
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
24407
|
+
},
|
|
24408
|
+
"convert_witness": {
|
|
24409
|
+
"description": "Optional witness to derive the Progress object from the submitted Order (e.g. 'OrderProgress'): the table object is the ORDER address and the chain resolves its per-order Progress — one Guard serves every order. Omit when the table object is a concrete Progress address.",
|
|
24410
|
+
"anyOf": [
|
|
24411
|
+
{
|
|
24412
|
+
"type": "integer",
|
|
24413
|
+
"minimum": -9007199254740991,
|
|
24414
|
+
"maximum": 9007199254740991
|
|
24415
|
+
},
|
|
24416
|
+
{
|
|
24417
|
+
"type": "string"
|
|
24418
|
+
}
|
|
24419
|
+
]
|
|
24107
24420
|
}
|
|
24108
24421
|
},
|
|
24109
24422
|
"required": [
|
|
24110
24423
|
"identifier"
|
|
24111
24424
|
],
|
|
24112
24425
|
"additionalProperties": false,
|
|
24113
|
-
"description": "Reference to the
|
|
24426
|
+
"description": "Reference to the queried object in the Guard table: a Progress address, or an Order address when convert_witness is set."
|
|
24114
24427
|
},
|
|
24115
24428
|
"where": {
|
|
24116
24429
|
"type": "object",
|
|
@@ -24161,6 +24474,91 @@
|
|
|
24161
24474
|
"additionalProperties": false,
|
|
24162
24475
|
"description": "Returns U64. Finds the index of the first or last history entry matching the filter conditions. Returns the history index (U64) if found. Throws error if no matching entry is found (Guard validation fails)."
|
|
24163
24476
|
},
|
|
24477
|
+
{
|
|
24478
|
+
"type": "object",
|
|
24479
|
+
"properties": {
|
|
24480
|
+
"type": {
|
|
24481
|
+
"type": "string",
|
|
24482
|
+
"const": "query_progress_history_time"
|
|
24483
|
+
},
|
|
24484
|
+
"object": {
|
|
24485
|
+
"type": "object",
|
|
24486
|
+
"properties": {
|
|
24487
|
+
"identifier": {
|
|
24488
|
+
"type": "integer",
|
|
24489
|
+
"minimum": 0,
|
|
24490
|
+
"maximum": 255,
|
|
24491
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
24492
|
+
},
|
|
24493
|
+
"convert_witness": {
|
|
24494
|
+
"description": "Optional witness to derive the Progress object from the submitted Order (e.g. 'OrderProgress'): the table object is the ORDER address and the chain resolves its per-order Progress — one Guard serves every order. Omit when the table object is a concrete Progress address.",
|
|
24495
|
+
"anyOf": [
|
|
24496
|
+
{
|
|
24497
|
+
"type": "integer",
|
|
24498
|
+
"minimum": -9007199254740991,
|
|
24499
|
+
"maximum": 9007199254740991
|
|
24500
|
+
},
|
|
24501
|
+
{
|
|
24502
|
+
"type": "string"
|
|
24503
|
+
}
|
|
24504
|
+
]
|
|
24505
|
+
}
|
|
24506
|
+
},
|
|
24507
|
+
"required": [
|
|
24508
|
+
"identifier"
|
|
24509
|
+
],
|
|
24510
|
+
"additionalProperties": false,
|
|
24511
|
+
"description": "Reference to the queried object in the Guard table: a Progress address, or an Order address when convert_witness is set."
|
|
24512
|
+
},
|
|
24513
|
+
"where": {
|
|
24514
|
+
"type": "object",
|
|
24515
|
+
"properties": {
|
|
24516
|
+
"node": {
|
|
24517
|
+
"description": "Optional filter: node name string to match.",
|
|
24518
|
+
"type": "string"
|
|
24519
|
+
},
|
|
24520
|
+
"nextNode": {
|
|
24521
|
+
"description": "Optional filter: next node name string to match — the canonical time anchor is where:{nextNode:'<node>'}, find:'last', which returns the IMMUTABLE moment that node was entered (1280 history.time is written once on entry and never rewritten, unlike the 1272 current-time read which refreshes on re-entry). An empty where {} with find:'last' returns the entry time of the CURRENT node — safe for node-SET gates.",
|
|
24522
|
+
"type": "string"
|
|
24523
|
+
},
|
|
24524
|
+
"timeMin": {
|
|
24525
|
+
"description": "Optional filter: minimum timestamp (inclusive) for history entry time. Use string to represent U64 value.",
|
|
24526
|
+
"type": "string"
|
|
24527
|
+
},
|
|
24528
|
+
"timeMax": {
|
|
24529
|
+
"description": "Optional filter: maximum timestamp (inclusive) for history entry time. Use string to represent U64 value.",
|
|
24530
|
+
"type": "string"
|
|
24531
|
+
},
|
|
24532
|
+
"indexMin": {
|
|
24533
|
+
"description": "Optional filter: minimum history index (inclusive) to search within. Use string to represent U64 value.",
|
|
24534
|
+
"type": "string"
|
|
24535
|
+
},
|
|
24536
|
+
"indexMax": {
|
|
24537
|
+
"description": "Optional filter: maximum history index (inclusive) to search within. Use string to represent U64 value.",
|
|
24538
|
+
"type": "string"
|
|
24539
|
+
}
|
|
24540
|
+
},
|
|
24541
|
+
"additionalProperties": false,
|
|
24542
|
+
"description": "Filter conditions for the progress history time query."
|
|
24543
|
+
},
|
|
24544
|
+
"find": {
|
|
24545
|
+
"type": "string",
|
|
24546
|
+
"enum": [
|
|
24547
|
+
"first",
|
|
24548
|
+
"last"
|
|
24549
|
+
],
|
|
24550
|
+
"description": "'first' finds the earliest matching history entry, 'last' finds the most recent matching history entry."
|
|
24551
|
+
}
|
|
24552
|
+
},
|
|
24553
|
+
"required": [
|
|
24554
|
+
"type",
|
|
24555
|
+
"object",
|
|
24556
|
+
"where",
|
|
24557
|
+
"find"
|
|
24558
|
+
],
|
|
24559
|
+
"additionalProperties": false,
|
|
24560
|
+
"description": "Returns U64. Returns the TIMESTAMP (ms) of the first or last history entry matching the filter conditions — the immutable entry moment of a node (query 1280 progress.history.time). Preferred over query 1272 progress.current_time for time anchors: 1272 reads the node's CURRENT time and refreshes on re-entry (drift-prone), while 1280 is written once on entering next_node and never rewritten. Throws error if no matching entry is found (Guard validation fails)."
|
|
24561
|
+
},
|
|
24164
24562
|
{
|
|
24165
24563
|
"type": "object",
|
|
24166
24564
|
"properties": {
|
|
@@ -24464,6 +24862,77 @@
|
|
|
24464
24862
|
"additionalProperties": false,
|
|
24465
24863
|
"description": "Returns U64. Counts the number of retained submissions within the specified forward operation."
|
|
24466
24864
|
},
|
|
24865
|
+
{
|
|
24866
|
+
"type": "object",
|
|
24867
|
+
"properties": {
|
|
24868
|
+
"type": {
|
|
24869
|
+
"type": "string",
|
|
24870
|
+
"const": "query_progress_history_session_forward_retained_submission_value"
|
|
24871
|
+
},
|
|
24872
|
+
"object": {
|
|
24873
|
+
"type": "object",
|
|
24874
|
+
"properties": {
|
|
24875
|
+
"identifier": {
|
|
24876
|
+
"type": "integer",
|
|
24877
|
+
"minimum": 0,
|
|
24878
|
+
"maximum": 255,
|
|
24879
|
+
"description": "Identifier (0-255) for data lookup in Guard table. Slot consensus (enforced on-chain at guard table construction): 0-220 = user slots (free for business guards); 221-253 = PROTOCOL-RESERVED (rejected on-chain — reserved so future protocol features get fixed slots without colliding with published guards); 255 = ONCE replay-protection slot on Allocation (byte-keyed, the submitted bytes are the once-key — use for per-period keys like period-<N>); 254 = ONCE-FOR-OBJECT slot on Allocation (chain-derived key = bcs(the Allocation's payment_info.for_object); the submitted bytes are ignored and the submission only arms the slot — use for one-shot per-order rails such as full refunds)."
|
|
24880
|
+
}
|
|
24881
|
+
},
|
|
24882
|
+
"required": [
|
|
24883
|
+
"identifier"
|
|
24884
|
+
],
|
|
24885
|
+
"additionalProperties": false,
|
|
24886
|
+
"description": "Reference to the Progress object in the Guard table (must be Address type)."
|
|
24887
|
+
},
|
|
24888
|
+
"historyIdx": {
|
|
24889
|
+
"description": "GuardNode that returns the history index (U64 type). Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
24890
|
+
"allOf": [
|
|
24891
|
+
{
|
|
24892
|
+
"$ref": "#/definitions/__schema3"
|
|
24893
|
+
}
|
|
24894
|
+
],
|
|
24895
|
+
"$ref": "#/definitions/__schema2"
|
|
24896
|
+
},
|
|
24897
|
+
"sessionIdx": {
|
|
24898
|
+
"description": "GuardNode that returns the session index (U64 type) within the history entry. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
24899
|
+
"allOf": [
|
|
24900
|
+
{
|
|
24901
|
+
"$ref": "#/definitions/__schema3"
|
|
24902
|
+
}
|
|
24903
|
+
],
|
|
24904
|
+
"$ref": "#/definitions/__schema2"
|
|
24905
|
+
},
|
|
24906
|
+
"forwardIdx": {
|
|
24907
|
+
"description": "GuardNode that returns the forward operation index (U64 type) within the session. Typically an 'identifier' node referencing a U64 value from the Guard table.",
|
|
24908
|
+
"allOf": [
|
|
24909
|
+
{
|
|
24910
|
+
"$ref": "#/definitions/__schema3"
|
|
24911
|
+
}
|
|
24912
|
+
],
|
|
24913
|
+
"$ref": "#/definitions/__schema2"
|
|
24914
|
+
},
|
|
24915
|
+
"identifier": {
|
|
24916
|
+
"description": "GuardNode that returns the submission identifier (U8 type) — which retained submission of the forward to read. Typically an 'identifier' node referencing a U8 value from the Guard table.",
|
|
24917
|
+
"allOf": [
|
|
24918
|
+
{
|
|
24919
|
+
"$ref": "#/definitions/__schema3"
|
|
24920
|
+
}
|
|
24921
|
+
],
|
|
24922
|
+
"$ref": "#/definitions/__schema2"
|
|
24923
|
+
}
|
|
24924
|
+
},
|
|
24925
|
+
"required": [
|
|
24926
|
+
"type",
|
|
24927
|
+
"object",
|
|
24928
|
+
"historyIdx",
|
|
24929
|
+
"sessionIdx",
|
|
24930
|
+
"forwardIdx",
|
|
24931
|
+
"identifier"
|
|
24932
|
+
],
|
|
24933
|
+
"additionalProperties": false,
|
|
24934
|
+
"description": "Returns VecU8 (the ONLY history query that does not return U64). Value of the specified retained submission of a HISTORY record (query 1281) — the history-side counterpart of the ACTIVE-SESSION-ONLY 1268 read, which goes blind once the session migrates into history. Use 1274/1275 to discover the history/session/forward indexes first. Throws error when the record carries no submission for the identifier (Guard validation fails)."
|
|
24935
|
+
},
|
|
24467
24936
|
{
|
|
24468
24937
|
"type": "object",
|
|
24469
24938
|
"properties": {
|