@wowok/agent-mcp 2.5.5 → 2.6.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 +5 -3
- package/dist/config/runtime.js +3 -6
- package/dist/extensions/capability-manifest.d.ts +125 -0
- package/dist/extensions/capability-manifest.js +594 -0
- package/dist/extensions/constraint-registry.d.ts +24 -0
- package/dist/extensions/constraint-registry.js +196 -0
- package/dist/extensions/index.d.ts +12 -0
- package/dist/extensions/index.js +6 -0
- package/dist/extensions/metric-registry.d.ts +26 -0
- package/dist/extensions/metric-registry.js +257 -0
- package/dist/extensions/mode-evaluator.d.ts +15 -0
- package/dist/extensions/mode-evaluator.js +170 -0
- package/dist/extensions/modes.d.ts +2 -0
- package/dist/extensions/modes.js +407 -0
- package/dist/extensions/registry.d.ts +48 -0
- package/dist/extensions/registry.js +629 -0
- package/dist/extensions/types.d.ts +218 -0
- package/dist/extensions/types.js +1 -0
- package/dist/harness/checkpoint.js +2 -2
- package/dist/knowledge/deployment-scanner.d.ts +3 -0
- package/dist/knowledge/deployment-scanner.js +64 -3
- package/dist/knowledge/flywheel-loop.js +2 -5
- package/dist/knowledge/guard-risk.d.ts +13 -0
- package/dist/knowledge/guard-risk.js +57 -0
- package/dist/knowledge/guard-templates.js +278 -0
- package/dist/knowledge/machine-templates.js +20 -1
- package/dist/knowledge/overrides-loader.js +2 -4
- package/dist/knowledge/progress-ledger.js +3 -0
- package/dist/knowledge/progress-translation.js +5 -1
- package/dist/knowledge/service-confirm.d.ts +14 -5
- package/dist/knowledge/service-confirm.js +116 -8
- package/dist/knowledge/tool-constraints.js +6 -2
- package/dist/loop-engineering/improve.js +2 -4
- package/dist/project/deployment-bridge.d.ts +5 -0
- package/dist/project/deployment-bridge.js +119 -0
- package/dist/project/deployment-doc.d.ts +3 -0
- package/dist/project/deployment-doc.js +72 -10
- package/dist/project/evaluation.d.ts +2 -0
- package/dist/project/evaluation.js +578 -86
- package/dist/project/graph-builder.d.ts +4 -1
- package/dist/project/graph-builder.js +141 -63
- package/dist/project/graph.d.ts +1 -0
- package/dist/project/handlers.d.ts +221 -5
- package/dist/project/handlers.js +933 -14
- package/dist/project/index.js +2 -6
- package/dist/project/project-store.js +2 -5
- package/dist/project/stage-gate.d.ts +4 -0
- package/dist/project/stage-gate.js +64 -5
- package/dist/project/task-tracker.d.ts +26 -0
- package/dist/project/task-tracker.js +78 -0
- package/dist/safety/preview.js +16 -0
- package/dist/schema/call/allocation.d.ts +16 -16
- package/dist/schema/call/base.d.ts +21 -13
- package/dist/schema/call/base.js +27 -6
- package/dist/schema/call/bridge.d.ts +5 -5
- package/dist/schema/call/bridge.js +3 -1
- package/dist/schema/call/demand.d.ts +23 -31
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/machine.d.ts +402 -376
- package/dist/schema/call/order.d.ts +149 -228
- package/dist/schema/call/order.js +7 -3
- package/dist/schema/call/payment.d.ts +183 -3
- package/dist/schema/call/payment.js +21 -3
- package/dist/schema/call/personal.d.ts +241 -52
- package/dist/schema/call/progress.d.ts +53 -61
- package/dist/schema/call/progress.js +18 -4
- package/dist/schema/call/repository.d.ts +23 -31
- package/dist/schema/call/semantic.d.ts +1 -1
- package/dist/schema/call/semantic.js +30 -1
- package/dist/schema/call/service.d.ts +95 -119
- package/dist/schema/call/service.js +22 -1
- package/dist/schema/common/index.d.ts +11 -2
- package/dist/schema/common/index.js +43 -14
- package/dist/schema/config/index.d.ts +12 -12
- package/dist/schema/local/index.d.ts +140 -143
- package/dist/schema/local/index.js +44 -23
- package/dist/schema/messenger/index.d.ts +290 -62
- package/dist/schema/messenger/index.js +2 -2
- package/dist/schema/operations.d.ts +680 -545
- package/dist/schema/operations.js +22 -0
- package/dist/schema/project/index.d.ts +2064 -84
- package/dist/schema/project/index.js +354 -12
- package/dist/schema/query/index.d.ts +715 -354
- package/dist/schema/query/index.js +164 -31
- package/dist/schema/schema-query/index.d.ts +15 -3
- package/dist/schema/schema-query/index.js +23 -5
- package/dist/schema/trust/index.d.ts +8 -8
- package/dist/schema/utils/node-parser.js +7 -4
- package/dist/schema-query/index.d.ts +7 -1
- package/dist/schema-query/index.js +204 -4
- package/dist/schemas/account_operation.output.json +14 -22
- package/dist/schemas/account_operation.schema.json +11 -25
- package/dist/schemas/bridge_operation.output.json +6 -0
- package/dist/schemas/bridge_operation.schema.json +1 -1
- package/dist/schemas/guard-templates.json +379 -0
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/local_info_operation.output.json +6 -0
- package/dist/schemas/local_mark_operation.output.json +7 -1
- package/dist/schemas/local_mark_operation.schema.json +1 -1
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.schema.json +10 -10
- package/dist/schemas/onchain_events.output.json +1 -1
- package/dist/schemas/onchain_operations.schema.json +348 -296
- package/dist/schemas/onchain_operations_allocation.schema.json +34 -25
- package/dist/schemas/onchain_operations_arbitration.schema.json +8 -8
- package/dist/schemas/onchain_operations_contact.schema.json +8 -8
- package/dist/schemas/onchain_operations_demand.schema.json +8 -8
- package/dist/schemas/onchain_operations_gen_passport.schema.json +14 -14
- package/dist/schemas/onchain_operations_gen_proof.schema.json +2 -2
- package/dist/schemas/onchain_operations_guard.schema.json +1 -1
- package/dist/schemas/onchain_operations_machine.schema.json +41 -33
- package/dist/schemas/onchain_operations_order.schema.json +71 -77
- package/dist/schemas/onchain_operations_payment.schema.json +141 -111
- package/dist/schemas/onchain_operations_permission.schema.json +2 -2
- package/dist/schemas/onchain_operations_personal.schema.json +7 -7
- package/dist/schemas/onchain_operations_progress.schema.json +8 -8
- package/dist/schemas/onchain_operations_proof.schema.json +7 -7
- package/dist/schemas/onchain_operations_repository.schema.json +8 -8
- package/dist/schemas/onchain_operations_reward.schema.json +10 -10
- package/dist/schemas/onchain_operations_service.schema.json +46 -35
- package/dist/schemas/onchain_operations_treasury.schema.json +8 -8
- package/dist/schemas/onchain_table_data.output.json +33 -25
- package/dist/schemas/onchain_table_data.schema.json +12 -12
- package/dist/schemas/project_operation.output.json +1352 -20
- package/dist/schemas/project_operation.schema.json +53 -4
- package/dist/schemas/query_toolkit.output.json +111 -82
- package/dist/schemas/query_toolkit.schema.json +9 -13
- package/dist/schemas/schema_query.output.json +7 -3
- package/dist/schemas/schema_query.schema.json +17 -3
- package/dist/telemetry/storage.js +2 -2
- package/dist/tools/handlers/local.js +20 -5
- package/dist/tools/handlers/onchain.js +36 -0
- package/dist/tools/handlers/project.js +72 -1
- package/dist/tools/handlers/query.js +27 -0
- package/dist/tools/handlers/schema-query.js +19 -0
- package/dist/tools/handlers/task-status.d.ts +170 -0
- package/dist/tools/handlers/task-status.js +55 -0
- package/dist/tools/handlers/wip.js +47 -1
- package/dist/tools/index.js +212 -8
- package/dist/tools/retry.d.ts +8 -0
- package/dist/tools/retry.js +85 -0
- package/dist/tools/wip-deploy-assist.d.ts +28 -0
- package/dist/tools/wip-deploy-assist.js +278 -0
- package/package.json +2 -2
- package/dist/schemas/guard-node-examples.md +0 -199
|
@@ -805,7 +805,7 @@
|
|
|
805
805
|
"description": "vecvecu8"
|
|
806
806
|
}
|
|
807
807
|
],
|
|
808
|
-
"description": "Type of the value"
|
|
808
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
809
809
|
},
|
|
810
810
|
"value": {
|
|
811
811
|
"anyOf": [
|
|
@@ -898,12 +898,12 @@
|
|
|
898
898
|
}
|
|
899
899
|
}
|
|
900
900
|
],
|
|
901
|
-
"description": "The actual value data"
|
|
901
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
902
902
|
},
|
|
903
903
|
"name": {
|
|
904
904
|
"type": "string",
|
|
905
905
|
"default": "",
|
|
906
|
-
"description": "
|
|
906
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
907
907
|
},
|
|
908
908
|
"object_type": {
|
|
909
909
|
"type": "string",
|
|
@@ -941,7 +941,7 @@
|
|
|
941
941
|
"TableItem_AddressMark",
|
|
942
942
|
"TableItem_EntityRegistrar"
|
|
943
943
|
],
|
|
944
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
944
|
+
"description": "OUTPUT-ONLY (query side): Object type when value_type is Address and represents a specific object. Auto-derived by the system — DO NOT set this field at Guard creation."
|
|
945
945
|
}
|
|
946
946
|
},
|
|
947
947
|
"required": [
|
|
@@ -950,7 +950,7 @@
|
|
|
950
950
|
"value_type"
|
|
951
951
|
],
|
|
952
952
|
"additionalProperties": false,
|
|
953
|
-
"description": "Guard table item"
|
|
953
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
954
954
|
},
|
|
955
955
|
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
956
956
|
}
|
|
@@ -962,7 +962,7 @@
|
|
|
962
962
|
"additionalProperties": false,
|
|
963
963
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
964
964
|
},
|
|
965
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission."
|
|
965
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
966
966
|
}
|
|
967
967
|
},
|
|
968
968
|
"required": [
|
|
@@ -999,7 +999,7 @@
|
|
|
999
999
|
"testnet",
|
|
1000
1000
|
"mainnet"
|
|
1001
1001
|
],
|
|
1002
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
1002
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
1003
1003
|
},
|
|
1004
1004
|
"referrer": {
|
|
1005
1005
|
"$ref": "#/definitions/data_gen_passport/properties/guard/anyOf/0",
|
|
@@ -1162,7 +1162,7 @@
|
|
|
1162
1162
|
"testnet",
|
|
1163
1163
|
"mainnet"
|
|
1164
1164
|
],
|
|
1165
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
1165
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
1166
1166
|
},
|
|
1167
1167
|
"referrer": {
|
|
1168
1168
|
"$ref": "#/definitions/data_gen_proof/properties/env/properties/account",
|
|
@@ -1238,7 +1238,7 @@
|
|
|
1238
1238
|
"testnet",
|
|
1239
1239
|
"mainnet"
|
|
1240
1240
|
],
|
|
1241
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
1241
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
1242
1242
|
},
|
|
1243
1243
|
"referrer": {
|
|
1244
1244
|
"$ref": "#/definitions/env/properties/account",
|
|
@@ -1618,7 +1618,7 @@
|
|
|
1618
1618
|
"description": "vecvecu8"
|
|
1619
1619
|
}
|
|
1620
1620
|
],
|
|
1621
|
-
"description": "Type of the value"
|
|
1621
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
1622
1622
|
},
|
|
1623
1623
|
"value": {
|
|
1624
1624
|
"anyOf": [
|
|
@@ -1711,12 +1711,12 @@
|
|
|
1711
1711
|
}
|
|
1712
1712
|
}
|
|
1713
1713
|
],
|
|
1714
|
-
"description": "The actual value data"
|
|
1714
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
1715
1715
|
},
|
|
1716
1716
|
"name": {
|
|
1717
1717
|
"type": "string",
|
|
1718
1718
|
"default": "",
|
|
1719
|
-
"description": "
|
|
1719
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
1720
1720
|
},
|
|
1721
1721
|
"object_type": {
|
|
1722
1722
|
"type": "string",
|
|
@@ -1754,7 +1754,7 @@
|
|
|
1754
1754
|
"TableItem_AddressMark",
|
|
1755
1755
|
"TableItem_EntityRegistrar"
|
|
1756
1756
|
],
|
|
1757
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
1757
|
+
"description": "OUTPUT-ONLY (query side): Object type when value_type is Address and represents a specific object. Auto-derived by the system — DO NOT set this field at Guard creation."
|
|
1758
1758
|
}
|
|
1759
1759
|
},
|
|
1760
1760
|
"required": [
|
|
@@ -1763,7 +1763,7 @@
|
|
|
1763
1763
|
"value_type"
|
|
1764
1764
|
],
|
|
1765
1765
|
"additionalProperties": false,
|
|
1766
|
-
"description": "Guard table item"
|
|
1766
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
1767
1767
|
},
|
|
1768
1768
|
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
1769
1769
|
}
|
|
@@ -1775,7 +1775,7 @@
|
|
|
1775
1775
|
"additionalProperties": false,
|
|
1776
1776
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
1777
1777
|
},
|
|
1778
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission."
|
|
1778
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
1779
1779
|
}
|
|
1780
1780
|
},
|
|
1781
1781
|
"required": [
|
|
@@ -1907,7 +1907,7 @@
|
|
|
1907
1907
|
"number",
|
|
1908
1908
|
"string"
|
|
1909
1909
|
],
|
|
1910
|
-
"description": "
|
|
1910
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
1911
1911
|
}
|
|
1912
1912
|
},
|
|
1913
1913
|
"required": [
|
|
@@ -2071,11 +2071,11 @@
|
|
|
2071
2071
|
},
|
|
2072
2072
|
"wip": {
|
|
2073
2073
|
"type": "string",
|
|
2074
|
-
"description": "HTTP URL
|
|
2074
|
+
"description": "WIP file URL. EMPTY string \"\" skips verification (TESTING ONLY). Production MUST use a real HTTP URL pointing to a .wip file generated by the wip_file tool. Example: \"https://cdn.example.com/products/phone_v1.wip\""
|
|
2075
2075
|
},
|
|
2076
2076
|
"wip_hash": {
|
|
2077
2077
|
"type": "string",
|
|
2078
|
-
"description": "
|
|
2078
|
+
"description": "WIP file hash (hex string). EMPTY string \"\" skips hash comparison (TESTING ONLY). Production: fill with the hash you saw when viewing the product, to prevent merchant replacing the WIP file before order."
|
|
2079
2079
|
}
|
|
2080
2080
|
},
|
|
2081
2081
|
"required": [
|
|
@@ -2250,14 +2250,16 @@
|
|
|
2250
2250
|
"discount_type": {
|
|
2251
2251
|
"anyOf": [
|
|
2252
2252
|
{
|
|
2253
|
-
"type": "
|
|
2254
|
-
"
|
|
2255
|
-
|
|
2253
|
+
"type": "string",
|
|
2254
|
+
"enum": [
|
|
2255
|
+
"RATES",
|
|
2256
|
+
"FIXED"
|
|
2257
|
+
]
|
|
2256
2258
|
},
|
|
2257
2259
|
{
|
|
2258
|
-
"type": "
|
|
2259
|
-
"
|
|
2260
|
-
"
|
|
2260
|
+
"type": "integer",
|
|
2261
|
+
"minimum": 0,
|
|
2262
|
+
"maximum": 1
|
|
2261
2263
|
}
|
|
2262
2264
|
],
|
|
2263
2265
|
"description": "Discount type"
|
|
@@ -2348,7 +2350,7 @@
|
|
|
2348
2350
|
"threshold": {
|
|
2349
2351
|
"$ref": "#/definitions/data_service/properties/order_new/properties/buy/properties/total_pay/anyOf/0/properties/balance",
|
|
2350
2352
|
"default": 0,
|
|
2351
|
-
"description": "
|
|
2353
|
+
"description": "Minimum balance required for allocation to fire. When the Allocation object's balance < threshold, allocation aborts with EINSUFFICIENT_BALANCE=7. Also: when an Allocator has only Amount items (no Rate, no Surplus), the sum of Amount items must be >= threshold (EAMOUNT_BELOW_THRESHOLD=12). Set to 0 (default) to allow any balance."
|
|
2352
2354
|
},
|
|
2353
2355
|
"allocators": {
|
|
2354
2356
|
"type": "array",
|
|
@@ -2357,7 +2359,7 @@
|
|
|
2357
2359
|
"properties": {
|
|
2358
2360
|
"guard": {
|
|
2359
2361
|
"$ref": "#/definitions/data_service/properties/object/anyOf/0",
|
|
2360
|
-
"description": "Guard object ID. If Guard verification passes, fund allocation
|
|
2362
|
+
"description": "Guard object ID or name. If Guard verification passes (via Passport), fund allocation for THIS Allocator fires. Each Allocator in an Allocators list can have a different Guard — the first Allocator whose Guard returns true wins. This enables mutually exclusive allocation paths (e.g., refund Guard on 'return_approved' node vs damage Guard on 'damage_confirmed' node)."
|
|
2361
2363
|
},
|
|
2362
2364
|
"sharing": {
|
|
2363
2365
|
"type": "array",
|
|
@@ -2393,7 +2395,7 @@
|
|
|
2393
2395
|
"Entity"
|
|
2394
2396
|
],
|
|
2395
2397
|
"additionalProperties": false,
|
|
2396
|
-
"description": "
|
|
2398
|
+
"description": "Static address resolved via LocalMark. Format: {Entity: {name_or_address: 'mark_name'}} — NOTE: Entity is an OBJECT with name_or_address field, NOT a bare string."
|
|
2397
2399
|
},
|
|
2398
2400
|
{
|
|
2399
2401
|
"type": "object",
|
|
@@ -2410,23 +2412,32 @@
|
|
|
2410
2412
|
"description": "Current transaction signer ID"
|
|
2411
2413
|
}
|
|
2412
2414
|
],
|
|
2413
|
-
"description": "Recipient
|
|
2415
|
+
"description": "Recipient of this allocation. Three forms:\n• { GuardIdentifier: u8 } — resolved from Passport at allocation time. 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.\n• { Entity: { name_or_address: '...' } } — static address resolved via LocalMark. Use for known recipients (e.g., 'turo_host', or a Treasury object address).\n• 'Signer' — the transaction sender (tx_context::sender). Use when the recipient is the current signer (e.g., self-refund scenarios)."
|
|
2414
2416
|
},
|
|
2415
2417
|
"sharing": {
|
|
2416
2418
|
"type": [
|
|
2417
2419
|
"number",
|
|
2418
2420
|
"string"
|
|
2419
2421
|
],
|
|
2420
|
-
"description": "
|
|
2422
|
+
"description": "Allocation value. SEMANTICS DEPEND ON `mode`:\n• mode='Amount': absolute amount in smallest unit (e.g., '750000000' for 0.75 WOW, '250000000' for 0.25 WOW). Allocated first; sum of Amount items cached as `fix`.\n• mode='Rate': basis-points rate, 10000 = 100% (e.g., '7500' for 75%, '2500' for 25%). When no Surplus in same Allocator, sum MUST == 10000; when Surplus present, sum MUST <= 10000.\n• mode='Surplus': IGNORED (contract forces to 0). Set to '0' for clarity. Receives remaining balance after Amount + Rate allocations."
|
|
2421
2423
|
},
|
|
2422
2424
|
"mode": {
|
|
2423
|
-
"
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2425
|
+
"anyOf": [
|
|
2426
|
+
{
|
|
2427
|
+
"type": "string",
|
|
2428
|
+
"enum": [
|
|
2429
|
+
"Amount",
|
|
2430
|
+
"Rate",
|
|
2431
|
+
"Surplus"
|
|
2432
|
+
]
|
|
2433
|
+
},
|
|
2434
|
+
{
|
|
2435
|
+
"type": "integer",
|
|
2436
|
+
"minimum": 0,
|
|
2437
|
+
"maximum": 2
|
|
2438
|
+
}
|
|
2428
2439
|
],
|
|
2429
|
-
"description": "
|
|
2440
|
+
"description": "Allocation mode — determines how the `sharing` field is interpreted. Three modes can be used individually OR combined within a single Allocator; when combined, allocation order is strictly: Amount first, then Rate, then Surplus. Understanding these modes allows modeling almost any fund distribution pattern.\n• Amount (0): `sharing` is a FIXED amount in smallest unit (e.g., '750000000' = 0.75 WOW). Allocated FIRST; sum of all Amount items is cached as `fix` by the contract. Validation: when no Rate and no Surplus items exist, sum of Amount items must be >= allocators.threshold (EAMOUNT_BELOW_THRESHOLD=12); when `max` is set, sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13).\n• Rate (1): `sharing` is a basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance - fix (or max - fix if `max` is set). Validation: when no Surplus items exist, sum of all Rate items must be EXACTLY 10000 (ERATE_NOT_10000=4); when Surplus items exist, sum of all Rate items must be <= 10000 (ERATE_EXCEEDS_10000=6).\n• Surplus (2): `sharing` is IGNORED (contract forces it to 0). Allocated LAST; receives the remaining balance after Amount + Rate allocations. Validation: MAX ONE Surplus item per Allocator (EMULTIPLE_SURPLUS=5). When Surplus exists, Rate sum constraint relaxes from == 10000 to <= 10000.\nALLOCATION ORDER (strict): Amount items (fixed, cached as fix) → Rate items (proportional to balance-fix) → Surplus item (remaining).\nRECOMMENDATION: Use Amount mode for known fixed amounts (clearer, no sum constraint). Use Rate mode for proportional splits (requires sum == 10000 unless Surplus present). Use Surplus to capture remainder (e.g., platform fee + host gets rest). Accepts string ('Amount'/'Rate'/'Surplus', recommended) or number (0/1/2)."
|
|
2430
2441
|
}
|
|
2431
2442
|
},
|
|
2432
2443
|
"required": [
|
|
@@ -2435,13 +2446,13 @@
|
|
|
2435
2446
|
"mode"
|
|
2436
2447
|
],
|
|
2437
2448
|
"additionalProperties": false,
|
|
2438
|
-
"description": "Fund allocation item"
|
|
2449
|
+
"description": "Fund allocation item — one recipient's share of the Allocation balance. The `sharing` value's meaning depends on `mode` (see AllocationModeSchema). Multiple items in the same Allocator are evaluated together: Amount items first, Rate items second, Surplus last."
|
|
2439
2450
|
},
|
|
2440
|
-
"description": "Fund allocation item list. Each item
|
|
2451
|
+
"description": "Fund allocation item list. Each item specifies a recipient (who), a value (sharing), and a mode. Items can mix modes (Amount + Rate + Surplus) within the same Allocator. ALLOCATION ORDER: Amount items first (cached as fix) → Rate items (proportional to balance - fix) → Surplus item (remaining). CONSTRAINTS: max ONE Surplus item per Allocator; Rate sum must == 10000 (no Surplus) or <= 10000 (with Surplus); Amount sum must >= threshold (no Rate and no Surplus) and <= max (if max set)."
|
|
2441
2452
|
},
|
|
2442
2453
|
"fix": {
|
|
2443
2454
|
"$ref": "#/definitions/data_service/properties/order_new/properties/buy/properties/total_pay/anyOf/0/properties/balance",
|
|
2444
|
-
"description": "
|
|
2455
|
+
"description": "OUTPUT-ONLY (query result). Cached sum of all Amount-mode `sharing` values in this Allocator. Computed by the contract during `allocator_add` — DO NOT set this field at creation. Used internally to compute `total_rates = balance - fix` for Rate allocation."
|
|
2445
2456
|
},
|
|
2446
2457
|
"max": {
|
|
2447
2458
|
"anyOf": [
|
|
@@ -2452,7 +2463,7 @@
|
|
|
2452
2463
|
"type": "null"
|
|
2453
2464
|
}
|
|
2454
2465
|
],
|
|
2455
|
-
"description": "Maximum allocation
|
|
2466
|
+
"description": "Maximum allocation cap (optional). Has THREE effects:\n1. Construction: sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13)\n2. Rate execution: total_rates = max - fix (instead of balance - fix)\n3. Surplus execution: surplus_amount = max - alloced_amount (instead of balance - alloced_amount)\nUse when you want to cap total allocation regardless of Order balance (e.g., cap payout to declared amount)."
|
|
2456
2467
|
}
|
|
2457
2468
|
},
|
|
2458
2469
|
"required": [
|
|
@@ -2460,9 +2471,9 @@
|
|
|
2460
2471
|
"sharing"
|
|
2461
2472
|
],
|
|
2462
2473
|
"additionalProperties": false,
|
|
2463
|
-
"description": "Fund allocator"
|
|
2474
|
+
"description": "Fund allocator — a complete allocation strategy triggered by a Guard. Contains a sharing[] array where items can mix Amount/Rate/Surplus modes. When the Guard passes, the contract allocates funds in strict order: Amount → Rate → Surplus."
|
|
2464
2475
|
},
|
|
2465
|
-
"description": "Fund allocator list. Each
|
|
2476
|
+
"description": "Fund allocator list. Each allocator is evaluated in order; the FIRST allocator whose Guard passes wins. This enables mutually exclusive allocation paths (e.g., 3 allocators for 3 forward paths: refund / damage-deduct / arbitrate)."
|
|
2466
2477
|
}
|
|
2467
2478
|
},
|
|
2468
2479
|
"required": [
|
|
@@ -2470,7 +2481,7 @@
|
|
|
2470
2481
|
"allocators"
|
|
2471
2482
|
],
|
|
2472
2483
|
"additionalProperties": false,
|
|
2473
|
-
"description": "Fund allocator list"
|
|
2484
|
+
"description": "Fund allocator list — the top-level allocation configuration attached to an Order. Contains a threshold and a list of Allocators. When funds arrive at the Order, the first Allocator whose Guard passes executes its sharing[] in strict order: Amount → Rate → Surplus. MULTI-TIER ALLOCATION (DOC-04): Each Order binds ONE Allocators template (set on Service.order_allocators before publish). For multi-tier distribution (e.g., customer→agency→suppliers), use a two-phase approach: (1) Tier-1 Allocators on the customer's Order (allocates to agency + refund fund); (2) Tier-2 Allocators on a NEW Order created by the agency (allocates agency's received funds to suppliers). Each tier's Rate-mode sharing[] must independently sum to 10000 (or <= 10000 with Surplus)."
|
|
2474
2485
|
},
|
|
2475
2486
|
{
|
|
2476
2487
|
"type": "null"
|
|
@@ -2615,7 +2626,7 @@
|
|
|
2615
2626
|
},
|
|
2616
2627
|
"publish": {
|
|
2617
2628
|
"type": "boolean",
|
|
2618
|
-
"description": "Whether to publish the Service. After publishing, customers can place orders
|
|
2629
|
+
"description": "Whether to publish the Service. After publishing, customers can place orders. BUG-04 fix (v2.2 — verified against Move source service.move + SDK service.ts):\n SDK-LOCKED after publish (checkNotPublished — cannot modify, must clone new Service):\n • machine (permanently locked — workflow template)\n • order_allocators (permanently locked — fund distribution rules)\n • arbitrations (permanently locked at SDK level — dispute resolution objects)\n TIME-LOCKED after publish (modifiable only after pause + setting_lock_duration elapsed):\n • rewards remove/clear (assert_not_published — time-based lock)\n REMAIN MUTABLE after publish (no SDK check, no Move check):\n • buy_guard (CAN be modified after publish — purchase eligibility guard)\n • setting_locked_time_add (CAN be extended — only increases, never decreases)\n • sales, discount, description, location, pause, repositories,\n • compensation_fund_add, customer_required, um (Contact), rewards add\nThese 3 SDK-LOCKED fields (machine/order_allocators/arbitrations) MUST be set BEFORE publish=true.\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 SDK-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), etc."
|
|
2619
2630
|
}
|
|
2620
2631
|
},
|
|
2621
2632
|
"required": [
|
|
@@ -2886,7 +2897,7 @@
|
|
|
2886
2897
|
"properties": {
|
|
2887
2898
|
"prev_node": {
|
|
2888
2899
|
"type": "string",
|
|
2889
|
-
"description": "Previous node name"
|
|
2900
|
+
"description": "Previous node name. Empty string '' means initial entry node (the first node in the workflow)."
|
|
2890
2901
|
},
|
|
2891
2902
|
"threshold": {
|
|
2892
2903
|
"type": [
|
|
@@ -2946,38 +2957,46 @@
|
|
|
2946
2957
|
"guard": {
|
|
2947
2958
|
"anyOf": [
|
|
2948
2959
|
{
|
|
2949
|
-
"
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
"
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
"anyOf": [
|
|
2957
|
-
{
|
|
2958
|
-
"type": "array",
|
|
2959
|
-
"items": {
|
|
2960
|
-
"$ref": "#/definitions/data_machine/properties/node/anyOf/0/anyOf/0/properties/nodes/items/properties/pairs/items/properties/threshold"
|
|
2961
|
-
}
|
|
2960
|
+
"anyOf": [
|
|
2961
|
+
{
|
|
2962
|
+
"type": "object",
|
|
2963
|
+
"properties": {
|
|
2964
|
+
"guard": {
|
|
2965
|
+
"type": "string",
|
|
2966
|
+
"description": "Guard object name or address (string). Example: 'my_attendance_guard' or '0x1234...'"
|
|
2962
2967
|
},
|
|
2963
|
-
{
|
|
2964
|
-
"
|
|
2968
|
+
"retained_submission": {
|
|
2969
|
+
"anyOf": [
|
|
2970
|
+
{
|
|
2971
|
+
"type": "array",
|
|
2972
|
+
"items": {
|
|
2973
|
+
"$ref": "#/definitions/data_machine/properties/node/anyOf/0/anyOf/0/properties/nodes/items/properties/pairs/items/properties/threshold"
|
|
2974
|
+
}
|
|
2975
|
+
},
|
|
2976
|
+
{
|
|
2977
|
+
"type": "null"
|
|
2978
|
+
}
|
|
2979
|
+
],
|
|
2980
|
+
"description": "Data submitted by user during Guard object verification"
|
|
2965
2981
|
}
|
|
2982
|
+
},
|
|
2983
|
+
"required": [
|
|
2984
|
+
"guard"
|
|
2966
2985
|
],
|
|
2967
|
-
"
|
|
2986
|
+
"additionalProperties": false,
|
|
2987
|
+
"description": "OBJECT form: {guard: '<guard_name_or_address>', retained_submission?: number[]}. Use this form when you need to pass retained_submission data alongside the Guard reference."
|
|
2988
|
+
},
|
|
2989
|
+
{
|
|
2990
|
+
"type": "string",
|
|
2991
|
+
"description": "STRING form (shorthand): the Guard object's name or address as a plain string. Auto-wrapped to {guard: <string>} at runtime. Use this when you only need to reference a Guard without retained_submission."
|
|
2968
2992
|
}
|
|
2969
|
-
|
|
2970
|
-
"required": [
|
|
2971
|
-
"guard"
|
|
2972
|
-
],
|
|
2973
|
-
"additionalProperties": false,
|
|
2974
|
-
"description": "Record of Guard object in MachineForwardGuard object"
|
|
2993
|
+
]
|
|
2975
2994
|
},
|
|
2976
2995
|
{
|
|
2977
2996
|
"type": "null"
|
|
2978
2997
|
}
|
|
2979
2998
|
],
|
|
2980
|
-
"description": "Guard
|
|
2999
|
+
"description": "Guard reference for this forward. Accepts TWO formats:\n• STRING (preferred): \"my_guard_name\" — the Guard's name or address as a plain string.\n• OBJECT (only when retained_submission is needed): {guard: \"my_guard_name\", retained_submission: [1,2,3]}.\nFOLLOW THE SCHEMA FIELD STRUCTURE: A Guard reference is fundamentally a STRING (the Guard object's name or address). Provide a string when you only need to reference a Guard — do NOT wrap a bare string in an object structure. The OBJECT form {guard: \"...\", retained_submission: [...]} exists ONLY to carry additional `retained_submission` data alongside the string reference; inside the object, the `guard` field is STILL a string. In short: string-in for a string reference, object-in only when you need to pass extra data.\nCOGNITIVE PRINCIPLE: Guard validation ALWAYS occurs BEFORE the forward operation. A Guard that queries state of the SAME Progress object this forward operates on (e.g. progress.current) will see the PRE-transition value (source node), NOT the target node. If the Guard checks progress.current == target_node, it will ALWAYS FAIL. Querying a DIFFERENT Progress object (cross-machine) is safe and reasonable — that progress is not modified by this forward. For target-node verification after transition, bind the Guard to the Allocator instead (allocation.alloc runs AFTER the state transition completes)."
|
|
2981
3000
|
}
|
|
2982
3001
|
},
|
|
2983
3002
|
"required": [
|
|
@@ -2987,7 +3006,7 @@
|
|
|
2987
3006
|
"additionalProperties": false,
|
|
2988
3007
|
"description": "Forward in Machine object"
|
|
2989
3008
|
},
|
|
2990
|
-
"description": "Forward list"
|
|
3009
|
+
"description": "Forward list — operations to ENTER THIS NODE from prev_node. Example: pair {prev_node:'A', forwards:[{name:'Go'}]} means 'use Go to advance FROM A TO THIS NODE'. For initial node (prev_node=''), forwards are operations to enter this node from the start state. WARNING: forwards belong to the DESTINATION node's pair, NOT the source node. Placing a forward on the wrong pair will cause Progress to get stuck."
|
|
2991
3010
|
}
|
|
2992
3011
|
},
|
|
2993
3012
|
"required": [
|
|
@@ -3336,7 +3355,7 @@
|
|
|
3336
3355
|
"number",
|
|
3337
3356
|
"string"
|
|
3338
3357
|
],
|
|
3339
|
-
"description": "
|
|
3358
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
3340
3359
|
},
|
|
3341
3360
|
"token_type": {
|
|
3342
3361
|
"type": "string",
|
|
@@ -3563,7 +3582,7 @@
|
|
|
3563
3582
|
"unhold",
|
|
3564
3583
|
"adminUnhold"
|
|
3565
3584
|
],
|
|
3566
|
-
"description": "Operation type on the forward: 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD)."
|
|
3585
|
+
"description": "Operation type on the forward (CANONICAL form — prefer this): 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD). LEGACY ALIAS: `hold: boolean` is auto-converted to `op` — `hold:true`→`op:'hold'`, `hold:false`→`op:'next'`. New code should use `op` directly."
|
|
3567
3586
|
},
|
|
3568
3587
|
"message": {
|
|
3569
3588
|
"type": "string",
|
|
@@ -4519,7 +4538,7 @@
|
|
|
4519
4538
|
"number",
|
|
4520
4539
|
"string"
|
|
4521
4540
|
],
|
|
4522
|
-
"description": "
|
|
4541
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
4523
4542
|
},
|
|
4524
4543
|
"token_type": {
|
|
4525
4544
|
"type": "string",
|
|
@@ -4689,7 +4708,7 @@
|
|
|
4689
4708
|
"number",
|
|
4690
4709
|
"string"
|
|
4691
4710
|
],
|
|
4692
|
-
"description": "
|
|
4711
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
4693
4712
|
}
|
|
4694
4713
|
},
|
|
4695
4714
|
"required": [
|
|
@@ -5403,7 +5422,7 @@
|
|
|
5403
5422
|
"number",
|
|
5404
5423
|
"string"
|
|
5405
5424
|
],
|
|
5406
|
-
"description": "
|
|
5425
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
5407
5426
|
},
|
|
5408
5427
|
"token_type": {
|
|
5409
5428
|
"type": "string",
|
|
@@ -5548,7 +5567,7 @@
|
|
|
5548
5567
|
"number",
|
|
5549
5568
|
"string"
|
|
5550
5569
|
],
|
|
5551
|
-
"description": "
|
|
5570
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
5552
5571
|
},
|
|
5553
5572
|
"token_type": {
|
|
5554
5573
|
"type": "string",
|
|
@@ -6134,7 +6153,7 @@
|
|
|
6134
6153
|
"number",
|
|
6135
6154
|
"string"
|
|
6136
6155
|
],
|
|
6137
|
-
"description": "
|
|
6156
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
6138
6157
|
}
|
|
6139
6158
|
},
|
|
6140
6159
|
"required": [
|
|
@@ -6264,7 +6283,7 @@
|
|
|
6264
6283
|
"Entity"
|
|
6265
6284
|
],
|
|
6266
6285
|
"additionalProperties": false,
|
|
6267
|
-
"description": "
|
|
6286
|
+
"description": "Static address resolved via LocalMark. Format: {Entity: {name_or_address: 'mark_name'}} — NOTE: Entity is an OBJECT with name_or_address field, NOT a bare string."
|
|
6268
6287
|
},
|
|
6269
6288
|
{
|
|
6270
6289
|
"type": "object",
|
|
@@ -6281,7 +6300,7 @@
|
|
|
6281
6300
|
"description": "Current transaction signer ID"
|
|
6282
6301
|
}
|
|
6283
6302
|
],
|
|
6284
|
-
"description": "Recipient ID"
|
|
6303
|
+
"description": "Recipient ID. Three forms:\n - {GuardIdentifier: u8} — resolved from Passport at allocation time\n - {Entity: {name_or_address: 'mark_name'}} — static address via LocalMark (recommended)\n - {Signer: 'signer'} — transaction sender (e.g. self-refund)"
|
|
6285
6304
|
},
|
|
6286
6305
|
"amount": {
|
|
6287
6306
|
"anyOf": [
|
|
@@ -6471,7 +6490,7 @@
|
|
|
6471
6490
|
"number",
|
|
6472
6491
|
"string"
|
|
6473
6492
|
],
|
|
6474
|
-
"description": "
|
|
6493
|
+
"description": "Minimum balance required for allocation to fire. When the Allocation object's balance < threshold, allocation aborts with EINSUFFICIENT_BALANCE=7. Also: when an Allocator has only Amount items (no Rate, no Surplus), the sum of Amount items must be >= threshold (EAMOUNT_BELOW_THRESHOLD=12). Set to 0 (default) to allow any balance.",
|
|
6475
6494
|
"default": 0
|
|
6476
6495
|
},
|
|
6477
6496
|
"allocators": {
|
|
@@ -6481,7 +6500,7 @@
|
|
|
6481
6500
|
"properties": {
|
|
6482
6501
|
"guard": {
|
|
6483
6502
|
"type": "string",
|
|
6484
|
-
"description": "Guard object ID. If Guard verification passes, fund allocation
|
|
6503
|
+
"description": "Guard object ID or name. If Guard verification passes (via Passport), fund allocation for THIS Allocator fires. Each Allocator in an Allocators list can have a different Guard — the first Allocator whose Guard returns true wins. This enables mutually exclusive allocation paths (e.g., refund Guard on 'return_approved' node vs damage Guard on 'damage_confirmed' node)."
|
|
6485
6504
|
},
|
|
6486
6505
|
"sharing": {
|
|
6487
6506
|
"type": "array",
|
|
@@ -6529,7 +6548,7 @@
|
|
|
6529
6548
|
"Entity"
|
|
6530
6549
|
],
|
|
6531
6550
|
"additionalProperties": false,
|
|
6532
|
-
"description": "
|
|
6551
|
+
"description": "Static address resolved via LocalMark. Format: {Entity: {name_or_address: 'mark_name'}} — NOTE: Entity is an OBJECT with name_or_address field, NOT a bare string."
|
|
6533
6552
|
},
|
|
6534
6553
|
{
|
|
6535
6554
|
"type": "object",
|
|
@@ -6546,23 +6565,32 @@
|
|
|
6546
6565
|
"description": "Current transaction signer ID"
|
|
6547
6566
|
}
|
|
6548
6567
|
],
|
|
6549
|
-
"description": "Recipient
|
|
6568
|
+
"description": "Recipient of this allocation. Three forms:\n• { GuardIdentifier: u8 } — resolved from Passport at allocation time. 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.\n• { Entity: { name_or_address: '...' } } — static address resolved via LocalMark. Use for known recipients (e.g., 'turo_host', or a Treasury object address).\n• 'Signer' — the transaction sender (tx_context::sender). Use when the recipient is the current signer (e.g., self-refund scenarios)."
|
|
6550
6569
|
},
|
|
6551
6570
|
"sharing": {
|
|
6552
6571
|
"type": [
|
|
6553
6572
|
"number",
|
|
6554
6573
|
"string"
|
|
6555
6574
|
],
|
|
6556
|
-
"description": "
|
|
6575
|
+
"description": "Allocation value. SEMANTICS DEPEND ON `mode`:\n• mode='Amount': absolute amount in smallest unit (e.g., '750000000' for 0.75 WOW, '250000000' for 0.25 WOW). Allocated first; sum of Amount items cached as `fix`.\n• mode='Rate': basis-points rate, 10000 = 100% (e.g., '7500' for 75%, '2500' for 25%). When no Surplus in same Allocator, sum MUST == 10000; when Surplus present, sum MUST <= 10000.\n• mode='Surplus': IGNORED (contract forces to 0). Set to '0' for clarity. Receives remaining balance after Amount + Rate allocations."
|
|
6557
6576
|
},
|
|
6558
6577
|
"mode": {
|
|
6559
|
-
"
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
|
|
6578
|
+
"anyOf": [
|
|
6579
|
+
{
|
|
6580
|
+
"type": "string",
|
|
6581
|
+
"enum": [
|
|
6582
|
+
"Amount",
|
|
6583
|
+
"Rate",
|
|
6584
|
+
"Surplus"
|
|
6585
|
+
]
|
|
6586
|
+
},
|
|
6587
|
+
{
|
|
6588
|
+
"type": "integer",
|
|
6589
|
+
"minimum": 0,
|
|
6590
|
+
"maximum": 2
|
|
6591
|
+
}
|
|
6564
6592
|
],
|
|
6565
|
-
"description": "
|
|
6593
|
+
"description": "Allocation mode — determines how the `sharing` field is interpreted. Three modes can be used individually OR combined within a single Allocator; when combined, allocation order is strictly: Amount first, then Rate, then Surplus. Understanding these modes allows modeling almost any fund distribution pattern.\n• Amount (0): `sharing` is a FIXED amount in smallest unit (e.g., '750000000' = 0.75 WOW). Allocated FIRST; sum of all Amount items is cached as `fix` by the contract. Validation: when no Rate and no Surplus items exist, sum of Amount items must be >= allocators.threshold (EAMOUNT_BELOW_THRESHOLD=12); when `max` is set, sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13).\n• Rate (1): `sharing` is a basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance - fix (or max - fix if `max` is set). Validation: when no Surplus items exist, sum of all Rate items must be EXACTLY 10000 (ERATE_NOT_10000=4); when Surplus items exist, sum of all Rate items must be <= 10000 (ERATE_EXCEEDS_10000=6).\n• Surplus (2): `sharing` is IGNORED (contract forces it to 0). Allocated LAST; receives the remaining balance after Amount + Rate allocations. Validation: MAX ONE Surplus item per Allocator (EMULTIPLE_SURPLUS=5). When Surplus exists, Rate sum constraint relaxes from == 10000 to <= 10000.\nALLOCATION ORDER (strict): Amount items (fixed, cached as fix) → Rate items (proportional to balance-fix) → Surplus item (remaining).\nRECOMMENDATION: Use Amount mode for known fixed amounts (clearer, no sum constraint). Use Rate mode for proportional splits (requires sum == 10000 unless Surplus present). Use Surplus to capture remainder (e.g., platform fee + host gets rest). Accepts string ('Amount'/'Rate'/'Surplus', recommended) or number (0/1/2)."
|
|
6566
6594
|
}
|
|
6567
6595
|
},
|
|
6568
6596
|
"required": [
|
|
@@ -6571,13 +6599,13 @@
|
|
|
6571
6599
|
"mode"
|
|
6572
6600
|
],
|
|
6573
6601
|
"additionalProperties": false,
|
|
6574
|
-
"description": "Fund allocation item"
|
|
6602
|
+
"description": "Fund allocation item — one recipient's share of the Allocation balance. The `sharing` value's meaning depends on `mode` (see AllocationModeSchema). Multiple items in the same Allocator are evaluated together: Amount items first, Rate items second, Surplus last."
|
|
6575
6603
|
},
|
|
6576
|
-
"description": "Fund allocation item list. Each item
|
|
6604
|
+
"description": "Fund allocation item list. Each item specifies a recipient (who), a value (sharing), and a mode. Items can mix modes (Amount + Rate + Surplus) within the same Allocator. ALLOCATION ORDER: Amount items first (cached as fix) → Rate items (proportional to balance - fix) → Surplus item (remaining). CONSTRAINTS: max ONE Surplus item per Allocator; Rate sum must == 10000 (no Surplus) or <= 10000 (with Surplus); Amount sum must >= threshold (no Rate and no Surplus) and <= max (if max set)."
|
|
6577
6605
|
},
|
|
6578
6606
|
"fix": {
|
|
6579
6607
|
"$ref": "#/definitions/data_allocation/anyOf/0/properties/allocators/properties/threshold",
|
|
6580
|
-
"description": "
|
|
6608
|
+
"description": "OUTPUT-ONLY (query result). Cached sum of all Amount-mode `sharing` values in this Allocator. Computed by the contract during `allocator_add` — DO NOT set this field at creation. Used internally to compute `total_rates = balance - fix` for Rate allocation."
|
|
6581
6609
|
},
|
|
6582
6610
|
"max": {
|
|
6583
6611
|
"anyOf": [
|
|
@@ -6588,7 +6616,7 @@
|
|
|
6588
6616
|
"type": "null"
|
|
6589
6617
|
}
|
|
6590
6618
|
],
|
|
6591
|
-
"description": "Maximum allocation
|
|
6619
|
+
"description": "Maximum allocation cap (optional). Has THREE effects:\n1. Construction: sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13)\n2. Rate execution: total_rates = max - fix (instead of balance - fix)\n3. Surplus execution: surplus_amount = max - alloced_amount (instead of balance - alloced_amount)\nUse when you want to cap total allocation regardless of Order balance (e.g., cap payout to declared amount)."
|
|
6592
6620
|
}
|
|
6593
6621
|
},
|
|
6594
6622
|
"required": [
|
|
@@ -6596,9 +6624,9 @@
|
|
|
6596
6624
|
"sharing"
|
|
6597
6625
|
],
|
|
6598
6626
|
"additionalProperties": false,
|
|
6599
|
-
"description": "Fund allocator"
|
|
6627
|
+
"description": "Fund allocator — a complete allocation strategy triggered by a Guard. Contains a sharing[] array where items can mix Amount/Rate/Surplus modes. When the Guard passes, the contract allocates funds in strict order: Amount → Rate → Surplus."
|
|
6600
6628
|
},
|
|
6601
|
-
"description": "Fund allocator list. Each
|
|
6629
|
+
"description": "Fund allocator list. Each allocator is evaluated in order; the FIRST allocator whose Guard passes wins. This enables mutually exclusive allocation paths (e.g., 3 allocators for 3 forward paths: refund / damage-deduct / arbitrate)."
|
|
6602
6630
|
}
|
|
6603
6631
|
},
|
|
6604
6632
|
"required": [
|
|
@@ -6606,7 +6634,7 @@
|
|
|
6606
6634
|
"allocators"
|
|
6607
6635
|
],
|
|
6608
6636
|
"additionalProperties": false,
|
|
6609
|
-
"description": "Fund allocator list"
|
|
6637
|
+
"description": "Fund allocator list — the top-level allocation configuration attached to an Order. Contains a threshold and a list of Allocators. When funds arrive at the Order, the first Allocator whose Guard passes executes its sharing[] in strict order: Amount → Rate → Surplus. MULTI-TIER ALLOCATION (DOC-04): Each Order binds ONE Allocators template (set on Service.order_allocators before publish). For multi-tier distribution (e.g., customer→agency→suppliers), use a two-phase approach: (1) Tier-1 Allocators on the customer's Order (allocates to agency + refund fund); (2) Tier-2 Allocators on a NEW Order created by the agency (allocates agency's received funds to suppliers). Each tier's Rate-mode sharing[] must independently sum to 10000 (or <= 10000 with Surplus)."
|
|
6610
6638
|
},
|
|
6611
6639
|
"coin": {
|
|
6612
6640
|
"anyOf": [
|
|
@@ -7212,7 +7240,7 @@
|
|
|
7212
7240
|
"number",
|
|
7213
7241
|
"string"
|
|
7214
7242
|
],
|
|
7215
|
-
"description": "
|
|
7243
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
7216
7244
|
},
|
|
7217
7245
|
"token_type": {
|
|
7218
7246
|
"type": "string",
|
|
@@ -7308,7 +7336,7 @@
|
|
|
7308
7336
|
"description": "Assign a name and optional tags to a new object. By default, names are stored LOCALLY (private) on your device. Set 'onChain: true' to create a PUBLIC on-chain identity visible to everyone. IMPORTANT: If the requested name is already taken, the operation will FAIL by default. Only set 'replaceExistName: true' when the user EXPLICITLY demands to forcefully claim the name."
|
|
7309
7337
|
}
|
|
7310
7338
|
],
|
|
7311
|
-
"description": "Name and optional tags for the new Guard object. Set 'onChain: true' to create a public on-chain identity. When using root.type='file', this field OVERRIDES namedNew in the file."
|
|
7339
|
+
"description": "Name and optional tags for the new Guard object. Set 'onChain: true' to create a public on-chain identity. When using root.type='file', this field OVERRIDES namedNew in the file. CIRCULAR DEPENDENCY (DOC-01): When a Guard queries a Service that hasn't been created yet, use a LocalMark NAME (not address) in the query table — the name is resolved to an address at transaction build time. Workflow: (1) Create Service (Phase 1, no publish) → (2) Create Guard referencing Service by name → (3) Update Service.buy_guard = Guard address → (4) Publish Service."
|
|
7312
7340
|
},
|
|
7313
7341
|
"guard_description": {
|
|
7314
7342
|
"anyOf": [
|
|
@@ -7630,7 +7658,7 @@
|
|
|
7630
7658
|
"description": "vecvecu8"
|
|
7631
7659
|
}
|
|
7632
7660
|
],
|
|
7633
|
-
"description": "Type of the value"
|
|
7661
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
7634
7662
|
},
|
|
7635
7663
|
"value": {
|
|
7636
7664
|
"anyOf": [
|
|
@@ -7723,12 +7751,12 @@
|
|
|
7723
7751
|
}
|
|
7724
7752
|
}
|
|
7725
7753
|
],
|
|
7726
|
-
"description": "The actual value data"
|
|
7754
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
7727
7755
|
},
|
|
7728
7756
|
"name": {
|
|
7729
7757
|
"type": "string",
|
|
7730
7758
|
"default": "",
|
|
7731
|
-
"description": "
|
|
7759
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
7732
7760
|
}
|
|
7733
7761
|
},
|
|
7734
7762
|
"required": [
|
|
@@ -7737,7 +7765,7 @@
|
|
|
7737
7765
|
"value_type"
|
|
7738
7766
|
],
|
|
7739
7767
|
"additionalProperties": false,
|
|
7740
|
-
"description": "Guard table item"
|
|
7768
|
+
"description": "Guard table item (INPUT/CREATION form). DO NOT include `object_type` field — it is query-output only and will be rejected here."
|
|
7741
7769
|
}
|
|
7742
7770
|
}
|
|
7743
7771
|
],
|
|
@@ -8406,14 +8434,14 @@
|
|
|
8406
8434
|
"address": {
|
|
8407
8435
|
"anyOf": [
|
|
8408
8436
|
{
|
|
8409
|
-
"
|
|
8410
|
-
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '
|
|
8437
|
+
"$ref": "#/definitions/data_personal/properties/referrer/anyOf/1/properties/name_or_address",
|
|
8438
|
+
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '0x2...' (64 hex chars) - uses address directly; EXAMPLE: '' - uses the default local account"
|
|
8411
8439
|
},
|
|
8412
8440
|
{
|
|
8413
8441
|
"$ref": "#/definitions/data_personal/properties/referrer/anyOf/1"
|
|
8414
8442
|
}
|
|
8415
8443
|
],
|
|
8416
|
-
"description": "Account or address lookup. Can be a simple string (recommended for AI) or full object with explicit local_mark_first control"
|
|
8444
|
+
"description": "Account or address lookup. Can be a simple string (recommended for AI) or full object with explicit local_mark_first control. String form auto-converts to { name_or_address: <string>, local_mark_first: true }."
|
|
8417
8445
|
},
|
|
8418
8446
|
"name": {
|
|
8419
8447
|
"$ref": "#/definitions/data_personal/properties/information/anyOf/1/properties/name/items"
|
|
@@ -8487,15 +8515,15 @@
|
|
|
8487
8515
|
{
|
|
8488
8516
|
"type": "array",
|
|
8489
8517
|
"items": {
|
|
8490
|
-
"
|
|
8518
|
+
"$ref": "#/definitions/data_personal/properties/referrer/anyOf/1/properties/name_or_address"
|
|
8491
8519
|
},
|
|
8492
|
-
"description": "Array of account names, addresses, or mark names. Local marks are searched first for each entry"
|
|
8520
|
+
"description": "Array of account names, addresses, or mark names. Local marks are searched first for each entry. EXAMPLE: ['alice', '0x2...', 'bob']"
|
|
8493
8521
|
},
|
|
8494
8522
|
{
|
|
8495
8523
|
"$ref": "#/definitions/data_personal/properties/information/anyOf/0/properties/data/items/properties/value/anyOf/0/anyOf/5/anyOf/0"
|
|
8496
8524
|
}
|
|
8497
8525
|
],
|
|
8498
|
-
"description": "Batch account or address lookup. Can be an array of strings (recommended for AI) or full object with explicit control"
|
|
8526
|
+
"description": "Batch account or address lookup. Can be an array of strings (recommended for AI) or full object with explicit control. Array form auto-converts to { entities: [...], check_all_founded: true }."
|
|
8499
8527
|
}
|
|
8500
8528
|
},
|
|
8501
8529
|
"required": [
|
|
@@ -8563,148 +8591,178 @@
|
|
|
8563
8591
|
"additionalProperties": false
|
|
8564
8592
|
},
|
|
8565
8593
|
"data_payment": {
|
|
8566
|
-
"
|
|
8567
|
-
|
|
8568
|
-
"object": {
|
|
8594
|
+
"anyOf": [
|
|
8595
|
+
{
|
|
8569
8596
|
"type": "object",
|
|
8570
8597
|
"properties": {
|
|
8571
|
-
"
|
|
8572
|
-
"type": "
|
|
8573
|
-
"
|
|
8598
|
+
"object": {
|
|
8599
|
+
"type": "object",
|
|
8600
|
+
"properties": {
|
|
8601
|
+
"name": {
|
|
8602
|
+
"type": "string",
|
|
8603
|
+
"description": "The name of the object"
|
|
8604
|
+
},
|
|
8605
|
+
"tags": {
|
|
8606
|
+
"type": "array",
|
|
8607
|
+
"items": {
|
|
8608
|
+
"type": "string"
|
|
8609
|
+
},
|
|
8610
|
+
"description": "The tags of the object"
|
|
8611
|
+
},
|
|
8612
|
+
"onChain": {
|
|
8613
|
+
"type": "boolean",
|
|
8614
|
+
"description": "CRITICAL: Whether to sync the name to the blockchain. DEFAULT (undefined/false): The name is stored LOCALLY ONLY on your device (PRIVATE). If set to true: The name is published ON-CHAIN and becomes PUBLICLY VISIBLE to everyone. Only set to true for displaying the relationships you are willing to make public on the chain."
|
|
8615
|
+
},
|
|
8616
|
+
"replaceExistName": {
|
|
8617
|
+
"type": "boolean",
|
|
8618
|
+
"description": "FORCE CLAIM: Set to true ONLY when the user explicitly expresses a STRONG INTENTION to forcefully take over an existing name (e.g., 'I must use this name', 'force rename', 'replace the existing one'). WARNING: This will UNBIND the name from its original object and rebind it to the new one, potentially breaking existing references. If not specified or false: the operation will FAIL with an error when the name is already in use (safe default behavior)."
|
|
8619
|
+
},
|
|
8620
|
+
"type_parameter": {
|
|
8621
|
+
"type": "string",
|
|
8622
|
+
"description": "Payment token type for this object (format: {address}::{module}::{struct}). e.g. '0x2::wow::WOW' (WOW, the default), '0x...::usdt::USDT' (USDT), '0x...::eth::ETH' (ETH). Defines which token this object accepts for payments. To discover all available tokens and their type tags, call wowok_buildin_info with info 'mainnet bridge tokens' and use the returned `wowTypeTag` value here.",
|
|
8623
|
+
"default": "0x2::wow::WOW"
|
|
8624
|
+
}
|
|
8625
|
+
},
|
|
8626
|
+
"additionalProperties": false,
|
|
8627
|
+
"description": "Create a new named object (with optional tags) and specify a token type for payments (e.g., WOW, USDT, ETH)."
|
|
8574
8628
|
},
|
|
8575
|
-
"
|
|
8629
|
+
"revenue": {
|
|
8576
8630
|
"type": "array",
|
|
8577
8631
|
"items": {
|
|
8578
|
-
"type": "string"
|
|
8579
|
-
},
|
|
8580
|
-
"description": "The tags of the object"
|
|
8581
|
-
},
|
|
8582
|
-
"onChain": {
|
|
8583
|
-
"type": "boolean",
|
|
8584
|
-
"description": "CRITICAL: Whether to sync the name to the blockchain. DEFAULT (undefined/false): The name is stored LOCALLY ONLY on your device (PRIVATE). If set to true: The name is published ON-CHAIN and becomes PUBLICLY VISIBLE to everyone. Only set to true for displaying the relationships you are willing to make public on the chain."
|
|
8585
|
-
},
|
|
8586
|
-
"replaceExistName": {
|
|
8587
|
-
"type": "boolean",
|
|
8588
|
-
"description": "FORCE CLAIM: Set to true ONLY when the user explicitly expresses a STRONG INTENTION to forcefully take over an existing name (e.g., 'I must use this name', 'force rename', 'replace the existing one'). WARNING: This will UNBIND the name from its original object and rebind it to the new one, potentially breaking existing references. If not specified or false: the operation will FAIL with an error when the name is already in use (safe default behavior)."
|
|
8589
|
-
},
|
|
8590
|
-
"type_parameter": {
|
|
8591
|
-
"type": "string",
|
|
8592
|
-
"description": "Payment token type for this object (format: {address}::{module}::{struct}). e.g. '0x2::wow::WOW' (WOW, the default), '0x...::usdt::USDT' (USDT), '0x...::eth::ETH' (ETH). Defines which token this object accepts for payments. To discover all available tokens and their type tags, call wowok_buildin_info with info 'mainnet bridge tokens' and use the returned `wowTypeTag` value here.",
|
|
8593
|
-
"default": "0x2::wow::WOW"
|
|
8594
|
-
}
|
|
8595
|
-
},
|
|
8596
|
-
"additionalProperties": false,
|
|
8597
|
-
"description": "Create a new named object (with optional tags) and specify a token type for payments (e.g., WOW, USDT, ETH)."
|
|
8598
|
-
},
|
|
8599
|
-
"revenue": {
|
|
8600
|
-
"type": "array",
|
|
8601
|
-
"items": {
|
|
8602
|
-
"type": "object",
|
|
8603
|
-
"properties": {
|
|
8604
|
-
"recipient": {
|
|
8605
8632
|
"type": "object",
|
|
8606
8633
|
"properties": {
|
|
8607
|
-
"
|
|
8608
|
-
"type": "string",
|
|
8609
|
-
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
8610
|
-
},
|
|
8611
|
-
"local_mark_first": {
|
|
8612
|
-
"type": "boolean",
|
|
8613
|
-
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks"
|
|
8614
|
-
}
|
|
8615
|
-
},
|
|
8616
|
-
"additionalProperties": false,
|
|
8617
|
-
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
8618
|
-
},
|
|
8619
|
-
"amount": {
|
|
8620
|
-
"anyOf": [
|
|
8621
|
-
{
|
|
8634
|
+
"recipient": {
|
|
8622
8635
|
"type": "object",
|
|
8623
8636
|
"properties": {
|
|
8624
|
-
"
|
|
8625
|
-
"type":
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
"
|
|
8637
|
+
"name_or_address": {
|
|
8638
|
+
"type": "string",
|
|
8639
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
8640
|
+
},
|
|
8641
|
+
"local_mark_first": {
|
|
8642
|
+
"type": "boolean",
|
|
8643
|
+
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks"
|
|
8630
8644
|
}
|
|
8631
8645
|
},
|
|
8632
|
-
"required": [
|
|
8633
|
-
"balance"
|
|
8634
|
-
],
|
|
8635
8646
|
"additionalProperties": false,
|
|
8636
|
-
"description": "
|
|
8647
|
+
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
8637
8648
|
},
|
|
8638
|
-
{
|
|
8639
|
-
"
|
|
8640
|
-
|
|
8641
|
-
|
|
8642
|
-
"
|
|
8643
|
-
|
|
8649
|
+
"amount": {
|
|
8650
|
+
"anyOf": [
|
|
8651
|
+
{
|
|
8652
|
+
"type": "object",
|
|
8653
|
+
"properties": {
|
|
8654
|
+
"balance": {
|
|
8655
|
+
"type": [
|
|
8656
|
+
"number",
|
|
8657
|
+
"string"
|
|
8658
|
+
],
|
|
8659
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
8660
|
+
}
|
|
8661
|
+
},
|
|
8662
|
+
"required": [
|
|
8663
|
+
"balance"
|
|
8664
|
+
],
|
|
8665
|
+
"additionalProperties": false,
|
|
8666
|
+
"description": "Specify an amount value."
|
|
8667
|
+
},
|
|
8668
|
+
{
|
|
8669
|
+
"type": "object",
|
|
8670
|
+
"properties": {
|
|
8671
|
+
"coin": {
|
|
8672
|
+
"type": "string",
|
|
8673
|
+
"description": "Coin object ID or name(local mark). Use a specified Coin object."
|
|
8674
|
+
}
|
|
8675
|
+
},
|
|
8676
|
+
"required": [
|
|
8677
|
+
"coin"
|
|
8678
|
+
],
|
|
8679
|
+
"additionalProperties": false
|
|
8644
8680
|
}
|
|
8645
|
-
},
|
|
8646
|
-
"required": [
|
|
8647
|
-
"coin"
|
|
8648
8681
|
],
|
|
8649
|
-
"
|
|
8682
|
+
"description": "Specify the amount to pay from the transaction account, or the Coin ID owned by the transaction account. Used for payment."
|
|
8650
8683
|
}
|
|
8684
|
+
},
|
|
8685
|
+
"required": [
|
|
8686
|
+
"recipient",
|
|
8687
|
+
"amount"
|
|
8651
8688
|
],
|
|
8652
|
-
"
|
|
8653
|
-
|
|
8689
|
+
"additionalProperties": false,
|
|
8690
|
+
"description": "Payment recipient and amount"
|
|
8691
|
+
},
|
|
8692
|
+
"description": "Array of payment recipients and amounts"
|
|
8654
8693
|
},
|
|
8655
|
-
"
|
|
8656
|
-
"
|
|
8657
|
-
"
|
|
8658
|
-
|
|
8659
|
-
|
|
8660
|
-
|
|
8694
|
+
"info": {
|
|
8695
|
+
"type": "object",
|
|
8696
|
+
"properties": {
|
|
8697
|
+
"for_object": {
|
|
8698
|
+
"type": [
|
|
8699
|
+
"string",
|
|
8700
|
+
"null"
|
|
8701
|
+
],
|
|
8702
|
+
"description": "Payment for a specific object ID"
|
|
8703
|
+
},
|
|
8704
|
+
"for_guard": {
|
|
8705
|
+
"type": [
|
|
8706
|
+
"string",
|
|
8707
|
+
"null"
|
|
8708
|
+
],
|
|
8709
|
+
"description": "Payment to satisfy verification of a Guard object"
|
|
8710
|
+
},
|
|
8711
|
+
"remark": {
|
|
8712
|
+
"type": "string",
|
|
8713
|
+
"description": "Payment record remark"
|
|
8714
|
+
},
|
|
8715
|
+
"index": {
|
|
8716
|
+
"type": [
|
|
8717
|
+
"number",
|
|
8718
|
+
"string"
|
|
8719
|
+
],
|
|
8720
|
+
"description": "Payment record index"
|
|
8721
|
+
}
|
|
8722
|
+
},
|
|
8723
|
+
"required": [
|
|
8724
|
+
"remark",
|
|
8725
|
+
"index"
|
|
8726
|
+
],
|
|
8727
|
+
"additionalProperties": false,
|
|
8728
|
+
"description": "Payment information"
|
|
8729
|
+
}
|
|
8661
8730
|
},
|
|
8662
|
-
"
|
|
8731
|
+
"required": [
|
|
8732
|
+
"object",
|
|
8733
|
+
"revenue",
|
|
8734
|
+
"info"
|
|
8735
|
+
],
|
|
8736
|
+
"additionalProperties": false,
|
|
8737
|
+
"description": "Create a new Payment. USAGE: Set 'object' field with {name, type, ...} to create a named Payment. NOTE: 'name' goes INSIDE 'object', NOT at the data root level. Payment is an immutable object - it can only be created, not modified. The 'object' field is CRITICAL and REQUIRED."
|
|
8663
8738
|
},
|
|
8664
|
-
|
|
8739
|
+
{
|
|
8665
8740
|
"type": "object",
|
|
8666
8741
|
"properties": {
|
|
8667
|
-
"
|
|
8668
|
-
"
|
|
8669
|
-
|
|
8670
|
-
"null"
|
|
8671
|
-
],
|
|
8672
|
-
"description": "Payment for a specific object ID"
|
|
8742
|
+
"object": {
|
|
8743
|
+
"$ref": "#/definitions/data_payment/anyOf/0/properties/revenue/items/properties/recipient/properties/name_or_address",
|
|
8744
|
+
"description": "CoinWrapper object ID (0x...) or local name to unwrap. Find received CoinWrappers via query_toolkit with query_type='onchain_received'."
|
|
8673
8745
|
},
|
|
8674
|
-
"
|
|
8675
|
-
"type":
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
],
|
|
8679
|
-
"description": "Payment to satisfy verification of a Guard object"
|
|
8746
|
+
"receive": {
|
|
8747
|
+
"type": "boolean",
|
|
8748
|
+
"const": true,
|
|
8749
|
+
"description": "Set to true to activate receive mode. CoinWrapper objects ARE transferred to recipients via transfer::public_transfer (they arrive as owned objects), but they are NOT spendable coins. This mode unwraps a CoinWrapper into actual coins in your wallet via payment::unwrap_to_myself. The caller must be the CoinWrapper's owner (the recipient specified in the Allocation's revenue split)."
|
|
8680
8750
|
},
|
|
8681
|
-
"
|
|
8751
|
+
"type_parameter": {
|
|
8682
8752
|
"type": "string",
|
|
8683
|
-
"description": "
|
|
8684
|
-
},
|
|
8685
|
-
"index": {
|
|
8686
|
-
"type": [
|
|
8687
|
-
"number",
|
|
8688
|
-
"string"
|
|
8689
|
-
],
|
|
8690
|
-
"description": "Payment record index"
|
|
8753
|
+
"description": "Coin type of the CoinWrapper, e.g. '0x2::wow::WOW'. Must match the type used when the Allocation created the Payment."
|
|
8691
8754
|
}
|
|
8692
8755
|
},
|
|
8693
8756
|
"required": [
|
|
8694
|
-
"
|
|
8695
|
-
"
|
|
8757
|
+
"object",
|
|
8758
|
+
"receive",
|
|
8759
|
+
"type_parameter"
|
|
8696
8760
|
],
|
|
8697
8761
|
"additionalProperties": false,
|
|
8698
|
-
"description": "Payment
|
|
8762
|
+
"description": "Receive mode: unwrap a CoinWrapper to the caller's wallet. Use after Allocation's alloc_by_guard creates a Payment with your address as a revenue recipient. The CoinWrapper holds your share — call this to convert it to actual coins in your wallet."
|
|
8699
8763
|
}
|
|
8700
|
-
},
|
|
8701
|
-
"required": [
|
|
8702
|
-
"object",
|
|
8703
|
-
"revenue",
|
|
8704
|
-
"info"
|
|
8705
8764
|
],
|
|
8706
|
-
"
|
|
8707
|
-
"description": "On-chain Payment creation. USAGE: Set 'object' field with {name, type, ...} to create a named Payment. NOTE: 'name' goes INSIDE 'object', NOT at the data root level. Payment is an immutable object - it can only be created, not modified. The 'object' field is CRITICAL and REQUIRED."
|
|
8765
|
+
"description": "On-chain Payment operations. TWO modes:\n(1) CREATE: Set 'object' with {name, type_parameter, ...}, 'revenue', and 'info' to create a new Payment.\n(2) RECEIVE: Set {object: '<coinwrapper_id_or_name>', receive: true, type_parameter: '0x2::wow::WOW'} to unwrap a CoinWrapper to your wallet.\nThe 'object' field is CRITICAL and REQUIRED in both modes. STRING for receive (CoinWrapper ID/name), OBJECT for create."
|
|
8708
8766
|
},
|
|
8709
8767
|
"data_demand": {
|
|
8710
8768
|
"type": "object",
|
|
@@ -9050,7 +9108,7 @@
|
|
|
9050
9108
|
"number",
|
|
9051
9109
|
"string"
|
|
9052
9110
|
],
|
|
9053
|
-
"description": "
|
|
9111
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
9054
9112
|
},
|
|
9055
9113
|
"token_type": {
|
|
9056
9114
|
"type": "string",
|
|
@@ -9197,7 +9255,7 @@
|
|
|
9197
9255
|
"unhold",
|
|
9198
9256
|
"adminUnhold"
|
|
9199
9257
|
],
|
|
9200
|
-
"description": "Operation type on the forward: 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD)."
|
|
9258
|
+
"description": "Operation type on the forward (CANONICAL form — prefer this): 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD). LEGACY ALIAS: `hold: boolean` is auto-converted to `op` — `hold:true`→`op:'hold'`, `hold:false`→`op:'next'`. New code should use `op` directly."
|
|
9201
9259
|
},
|
|
9202
9260
|
"message": {
|
|
9203
9261
|
"type": "string",
|
|
@@ -9275,96 +9333,90 @@
|
|
|
9275
9333
|
"description": "Specify the adjudicated Arb object to obtain order compensation."
|
|
9276
9334
|
},
|
|
9277
9335
|
"receive": {
|
|
9278
|
-
"
|
|
9279
|
-
|
|
9280
|
-
|
|
9281
|
-
"
|
|
9282
|
-
|
|
9283
|
-
|
|
9284
|
-
"
|
|
9285
|
-
"
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
"string"
|
|
9289
|
-
],
|
|
9290
|
-
"description": "Balance type"
|
|
9291
|
-
},
|
|
9292
|
-
"token_type": {
|
|
9293
|
-
"type": "string",
|
|
9294
|
-
"description": "Asset type of Coin objects. Supports CoinWrapper<...> format for order receive operations."
|
|
9295
|
-
},
|
|
9296
|
-
"received": {
|
|
9297
|
-
"type": "array",
|
|
9298
|
-
"items": {
|
|
9299
|
-
"type": "object",
|
|
9300
|
-
"properties": {
|
|
9301
|
-
"id": {
|
|
9302
|
-
"type": "string",
|
|
9303
|
-
"description": "Received CoinWrapper object ID"
|
|
9304
|
-
},
|
|
9305
|
-
"balance": {
|
|
9306
|
-
"$ref": "#/definitions/data_order/properties/receive/properties/result/anyOf/0/properties/balance"
|
|
9307
|
-
},
|
|
9308
|
-
"payment": {
|
|
9309
|
-
"type": "string",
|
|
9310
|
-
"description": "Payment object ID"
|
|
9311
|
-
}
|
|
9312
|
-
},
|
|
9313
|
-
"required": [
|
|
9314
|
-
"id",
|
|
9315
|
-
"balance",
|
|
9316
|
-
"payment"
|
|
9317
|
-
],
|
|
9318
|
-
"additionalProperties": false,
|
|
9319
|
-
"description": "Received CoinWrapper object record"
|
|
9320
|
-
},
|
|
9321
|
-
"description": "Received records of Coin objects"
|
|
9322
|
-
}
|
|
9336
|
+
"anyOf": [
|
|
9337
|
+
{
|
|
9338
|
+
"type": "array",
|
|
9339
|
+
"items": {
|
|
9340
|
+
"type": "object",
|
|
9341
|
+
"properties": {
|
|
9342
|
+
"id": {
|
|
9343
|
+
"type": "string",
|
|
9344
|
+
"minLength": 1,
|
|
9345
|
+
"description": "Received object ID"
|
|
9323
9346
|
},
|
|
9324
|
-
"
|
|
9325
|
-
"
|
|
9326
|
-
"
|
|
9327
|
-
"
|
|
9347
|
+
"type": {
|
|
9348
|
+
"type": "string",
|
|
9349
|
+
"minLength": 1,
|
|
9350
|
+
"description": "Object type"
|
|
9351
|
+
},
|
|
9352
|
+
"content_raw": {
|
|
9353
|
+
"description": "Raw content data"
|
|
9354
|
+
}
|
|
9355
|
+
},
|
|
9356
|
+
"required": [
|
|
9357
|
+
"id",
|
|
9358
|
+
"type"
|
|
9359
|
+
],
|
|
9360
|
+
"additionalProperties": false,
|
|
9361
|
+
"description": "Received normal object record"
|
|
9362
|
+
}
|
|
9363
|
+
},
|
|
9364
|
+
{
|
|
9365
|
+
"type": "object",
|
|
9366
|
+
"properties": {
|
|
9367
|
+
"balance": {
|
|
9368
|
+
"type": [
|
|
9369
|
+
"number",
|
|
9370
|
+
"string"
|
|
9328
9371
|
],
|
|
9329
|
-
"
|
|
9330
|
-
"description": "Received record of Coin objects"
|
|
9372
|
+
"description": "A coin/balance amount in the smallest on-chain unit (u64). Accepts a JS number OR a numeric string. PRECISION RULE: for values exceeding 2^53 (e.g. token amounts with 18 decimals), ALWAYS pass a numeric STRING (e.g. \"1000000000000000000\") to preserve precision — JS numbers lose precision above 2^53. UNIT: this is the smallest unit, NOT the display unit. For SUI: 1 SUI = 10^9 MIST, so 10 SUI = 10000000000. For custom tokens: use the token's native smallest unit (decimals from coin metadata). Examples: 10000000000 (10 SUI), \"1000000000000000000\" (1 token with 18 decimals), 500 (500 units of a token with 0 decimals). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
9331
9373
|
},
|
|
9332
|
-
{
|
|
9374
|
+
"token_type": {
|
|
9375
|
+
"type": "string",
|
|
9376
|
+
"description": "Asset type of Coin objects. Supports CoinWrapper<...> format for order receive operations."
|
|
9377
|
+
},
|
|
9378
|
+
"received": {
|
|
9333
9379
|
"type": "array",
|
|
9334
9380
|
"items": {
|
|
9335
9381
|
"type": "object",
|
|
9336
9382
|
"properties": {
|
|
9337
9383
|
"id": {
|
|
9338
9384
|
"type": "string",
|
|
9339
|
-
"
|
|
9340
|
-
"description": "Received object ID"
|
|
9385
|
+
"description": "Received CoinWrapper object ID"
|
|
9341
9386
|
},
|
|
9342
|
-
"
|
|
9343
|
-
"
|
|
9344
|
-
"minLength": 1,
|
|
9345
|
-
"description": "Object type"
|
|
9387
|
+
"balance": {
|
|
9388
|
+
"$ref": "#/definitions/data_order/properties/receive/anyOf/1/properties/balance"
|
|
9346
9389
|
},
|
|
9347
|
-
"
|
|
9348
|
-
"
|
|
9390
|
+
"payment": {
|
|
9391
|
+
"type": "string",
|
|
9392
|
+
"description": "Payment object ID"
|
|
9349
9393
|
}
|
|
9350
9394
|
},
|
|
9351
9395
|
"required": [
|
|
9352
9396
|
"id",
|
|
9353
|
-
"
|
|
9397
|
+
"balance",
|
|
9398
|
+
"payment"
|
|
9354
9399
|
],
|
|
9355
9400
|
"additionalProperties": false,
|
|
9356
|
-
"description": "Received
|
|
9357
|
-
}
|
|
9401
|
+
"description": "Received CoinWrapper object record"
|
|
9402
|
+
},
|
|
9403
|
+
"description": "Received records of Coin objects"
|
|
9358
9404
|
}
|
|
9405
|
+
},
|
|
9406
|
+
"required": [
|
|
9407
|
+
"balance",
|
|
9408
|
+
"token_type",
|
|
9409
|
+
"received"
|
|
9359
9410
|
],
|
|
9360
|
-
"
|
|
9411
|
+
"additionalProperties": false,
|
|
9412
|
+
"description": "Received record of Coin objects"
|
|
9413
|
+
},
|
|
9414
|
+
{
|
|
9415
|
+
"type": "string",
|
|
9416
|
+
"const": "recently"
|
|
9361
9417
|
}
|
|
9362
|
-
},
|
|
9363
|
-
"required": [
|
|
9364
|
-
"result"
|
|
9365
9418
|
],
|
|
9366
|
-
"
|
|
9367
|
-
"description": "Unwrap CoinWrapper objects or other objects received by the order and transfer them to the order owner"
|
|
9419
|
+
"description": "Unwrap CoinWrapper objects or other objects received by the order and transfer them to the order owner. ACCEPTED FORMATS (consistent with `owner_receive` on other objects — see arbitration/contact/demand/machine/permission/repository/reward/service/treasury):\n• 'recently' (string) — auto-query and receive all recently received objects\n• ReceivedNormal[] (array) — explicit list of received objects: [{id, type, content_raw?}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) — received balance record\nDO NOT wrap in {result: ...} — pass directly (NOT {result: [...]})"
|
|
9368
9420
|
},
|
|
9369
9421
|
"transfer_to": {
|
|
9370
9422
|
"$ref": "#/definitions/data_order/properties/agent/properties/entities/items",
|
|
@@ -9738,7 +9790,7 @@
|
|
|
9738
9790
|
"description": "vecvecu8"
|
|
9739
9791
|
}
|
|
9740
9792
|
],
|
|
9741
|
-
"description": "Type of the value"
|
|
9793
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
9742
9794
|
},
|
|
9743
9795
|
"value": {
|
|
9744
9796
|
"anyOf": [
|
|
@@ -9831,12 +9883,12 @@
|
|
|
9831
9883
|
}
|
|
9832
9884
|
}
|
|
9833
9885
|
],
|
|
9834
|
-
"description": "The actual value data"
|
|
9886
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
9835
9887
|
},
|
|
9836
9888
|
"name": {
|
|
9837
9889
|
"type": "string",
|
|
9838
9890
|
"default": "",
|
|
9839
|
-
"description": "
|
|
9891
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
9840
9892
|
},
|
|
9841
9893
|
"object_type": {
|
|
9842
9894
|
"type": "string",
|
|
@@ -9874,7 +9926,7 @@
|
|
|
9874
9926
|
"TableItem_AddressMark",
|
|
9875
9927
|
"TableItem_EntityRegistrar"
|
|
9876
9928
|
],
|
|
9877
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
9929
|
+
"description": "OUTPUT-ONLY (query side): Object type when value_type is Address and represents a specific object. Auto-derived by the system — DO NOT set this field at Guard creation."
|
|
9878
9930
|
}
|
|
9879
9931
|
},
|
|
9880
9932
|
"required": [
|
|
@@ -9883,7 +9935,7 @@
|
|
|
9883
9935
|
"value_type"
|
|
9884
9936
|
],
|
|
9885
9937
|
"additionalProperties": false,
|
|
9886
|
-
"description": "Guard table item"
|
|
9938
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
9887
9939
|
},
|
|
9888
9940
|
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
9889
9941
|
}
|
|
@@ -9895,7 +9947,7 @@
|
|
|
9895
9947
|
"additionalProperties": false,
|
|
9896
9948
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
9897
9949
|
},
|
|
9898
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission."
|
|
9950
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
9899
9951
|
}
|
|
9900
9952
|
},
|
|
9901
9953
|
"required": [
|
|
@@ -9932,7 +9984,7 @@
|
|
|
9932
9984
|
"testnet",
|
|
9933
9985
|
"mainnet"
|
|
9934
9986
|
],
|
|
9935
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
9987
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
9936
9988
|
},
|
|
9937
9989
|
"referrer": {
|
|
9938
9990
|
"$ref": "#/definitions/data_gen_passport/properties/guard/anyOf/0",
|
|
@@ -10163,7 +10215,7 @@
|
|
|
10163
10215
|
"testnet",
|
|
10164
10216
|
"mainnet"
|
|
10165
10217
|
],
|
|
10166
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
10218
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
10167
10219
|
},
|
|
10168
10220
|
"referrer": {
|
|
10169
10221
|
"$ref": "#/definitions/data_gen_proof/properties/env/properties/account",
|