@wowok/agent-mcp 2.6.0 → 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/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/knowledge/deployment-scanner.d.ts +3 -0
- package/dist/knowledge/deployment-scanner.js +64 -3
- 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/service-confirm.d.ts +14 -5
- package/dist/knowledge/service-confirm.js +116 -8
- package/dist/knowledge/tool-constraints.js +6 -2
- package/dist/project/deployment-bridge.d.ts +1 -1
- package/dist/project/deployment-bridge.js +27 -4
- 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 +569 -84
- package/dist/project/graph-builder.d.ts +4 -1
- package/dist/project/graph-builder.js +126 -61
- package/dist/project/graph.d.ts +1 -0
- package/dist/project/handlers.d.ts +219 -5
- package/dist/project/handlers.js +819 -9
- 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/local/index.d.ts +32 -35
- package/dist/schema/local/index.js +23 -5
- package/dist/schema/messenger/index.d.ts +274 -46
- package/dist/schema/operations.d.ts +680 -539
- package/dist/schema/operations.js +22 -0
- package/dist/schema/project/index.d.ts +1796 -80
- package/dist/schema/project/index.js +304 -14
- package/dist/schema/query/index.d.ts +705 -349
- 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/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 +7 -1
- package/dist/schemas/account_operation.schema.json +2 -2
- 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 +4 -4
- 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 +1175 -23
- package/dist/schemas/project_operation.schema.json +40 -4
- package/dist/schemas/query_toolkit.output.json +104 -76
- package/dist/schemas/query_toolkit.schema.json +9 -9
- package/dist/schemas/schema_query.output.json +7 -3
- package/dist/schemas/schema_query.schema.json +17 -3
- package/dist/tools/handlers/local.js +20 -5
- package/dist/tools/handlers/onchain.js +23 -0
- package/dist/tools/handlers/project.js +52 -3
- 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 +211 -7
- 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
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"number",
|
|
120
120
|
"string"
|
|
121
121
|
],
|
|
122
|
-
"description": "
|
|
122
|
+
"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."
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
"required": [
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
"Entity"
|
|
250
250
|
],
|
|
251
251
|
"additionalProperties": false,
|
|
252
|
-
"description": "
|
|
252
|
+
"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."
|
|
253
253
|
},
|
|
254
254
|
{
|
|
255
255
|
"type": "object",
|
|
@@ -266,7 +266,7 @@
|
|
|
266
266
|
"description": "Current transaction signer ID"
|
|
267
267
|
}
|
|
268
268
|
],
|
|
269
|
-
"description": "Recipient ID"
|
|
269
|
+
"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)"
|
|
270
270
|
},
|
|
271
271
|
"amount": {
|
|
272
272
|
"anyOf": [
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
"testnet",
|
|
435
435
|
"mainnet"
|
|
436
436
|
],
|
|
437
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
437
|
+
"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."
|
|
438
438
|
},
|
|
439
439
|
"referrer": {
|
|
440
440
|
"$ref": "#/definitions/env/properties/account",
|
|
@@ -814,7 +814,7 @@
|
|
|
814
814
|
"description": "vecvecu8"
|
|
815
815
|
}
|
|
816
816
|
],
|
|
817
|
-
"description": "Type of the value"
|
|
817
|
+
"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."
|
|
818
818
|
},
|
|
819
819
|
"value": {
|
|
820
820
|
"anyOf": [
|
|
@@ -907,12 +907,12 @@
|
|
|
907
907
|
}
|
|
908
908
|
}
|
|
909
909
|
],
|
|
910
|
-
"description": "The actual value data"
|
|
910
|
+
"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)."
|
|
911
911
|
},
|
|
912
912
|
"name": {
|
|
913
913
|
"type": "string",
|
|
914
914
|
"default": "",
|
|
915
|
-
"description": "
|
|
915
|
+
"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."
|
|
916
916
|
},
|
|
917
917
|
"object_type": {
|
|
918
918
|
"type": "string",
|
|
@@ -950,7 +950,7 @@
|
|
|
950
950
|
"TableItem_AddressMark",
|
|
951
951
|
"TableItem_EntityRegistrar"
|
|
952
952
|
],
|
|
953
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
953
|
+
"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."
|
|
954
954
|
}
|
|
955
955
|
},
|
|
956
956
|
"required": [
|
|
@@ -959,7 +959,7 @@
|
|
|
959
959
|
"value_type"
|
|
960
960
|
],
|
|
961
961
|
"additionalProperties": false,
|
|
962
|
-
"description": "Guard table item"
|
|
962
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
963
963
|
},
|
|
964
964
|
"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...'}]"
|
|
965
965
|
}
|
|
@@ -971,7 +971,7 @@
|
|
|
971
971
|
"additionalProperties": false,
|
|
972
972
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
973
973
|
},
|
|
974
|
-
"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."
|
|
974
|
+
"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:[...]}}"
|
|
975
975
|
}
|
|
976
976
|
},
|
|
977
977
|
"required": [
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"number",
|
|
148
148
|
"string"
|
|
149
149
|
],
|
|
150
|
-
"description": "
|
|
150
|
+
"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."
|
|
151
151
|
}
|
|
152
152
|
},
|
|
153
153
|
"required": [
|
|
@@ -311,11 +311,11 @@
|
|
|
311
311
|
},
|
|
312
312
|
"wip": {
|
|
313
313
|
"type": "string",
|
|
314
|
-
"description": "HTTP URL
|
|
314
|
+
"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\""
|
|
315
315
|
},
|
|
316
316
|
"wip_hash": {
|
|
317
317
|
"type": "string",
|
|
318
|
-
"description": "
|
|
318
|
+
"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."
|
|
319
319
|
}
|
|
320
320
|
},
|
|
321
321
|
"required": [
|
|
@@ -490,14 +490,16 @@
|
|
|
490
490
|
"discount_type": {
|
|
491
491
|
"anyOf": [
|
|
492
492
|
{
|
|
493
|
-
"type": "
|
|
494
|
-
"
|
|
495
|
-
|
|
493
|
+
"type": "string",
|
|
494
|
+
"enum": [
|
|
495
|
+
"RATES",
|
|
496
|
+
"FIXED"
|
|
497
|
+
]
|
|
496
498
|
},
|
|
497
499
|
{
|
|
498
|
-
"type": "
|
|
499
|
-
"
|
|
500
|
-
"
|
|
500
|
+
"type": "integer",
|
|
501
|
+
"minimum": 0,
|
|
502
|
+
"maximum": 1
|
|
501
503
|
}
|
|
502
504
|
],
|
|
503
505
|
"description": "Discount type"
|
|
@@ -588,7 +590,7 @@
|
|
|
588
590
|
"threshold": {
|
|
589
591
|
"$ref": "#/definitions/data/properties/order_new/properties/buy/properties/total_pay/anyOf/0/properties/balance",
|
|
590
592
|
"default": 0,
|
|
591
|
-
"description": "
|
|
593
|
+
"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."
|
|
592
594
|
},
|
|
593
595
|
"allocators": {
|
|
594
596
|
"type": "array",
|
|
@@ -597,7 +599,7 @@
|
|
|
597
599
|
"properties": {
|
|
598
600
|
"guard": {
|
|
599
601
|
"$ref": "#/definitions/data/properties/object/anyOf/0",
|
|
600
|
-
"description": "Guard object ID. If Guard verification passes, fund allocation
|
|
602
|
+
"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)."
|
|
601
603
|
},
|
|
602
604
|
"sharing": {
|
|
603
605
|
"type": "array",
|
|
@@ -633,7 +635,7 @@
|
|
|
633
635
|
"Entity"
|
|
634
636
|
],
|
|
635
637
|
"additionalProperties": false,
|
|
636
|
-
"description": "
|
|
638
|
+
"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."
|
|
637
639
|
},
|
|
638
640
|
{
|
|
639
641
|
"type": "object",
|
|
@@ -650,23 +652,32 @@
|
|
|
650
652
|
"description": "Current transaction signer ID"
|
|
651
653
|
}
|
|
652
654
|
],
|
|
653
|
-
"description": "Recipient
|
|
655
|
+
"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)."
|
|
654
656
|
},
|
|
655
657
|
"sharing": {
|
|
656
658
|
"type": [
|
|
657
659
|
"number",
|
|
658
660
|
"string"
|
|
659
661
|
],
|
|
660
|
-
"description": "
|
|
662
|
+
"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."
|
|
661
663
|
},
|
|
662
664
|
"mode": {
|
|
663
|
-
"
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
665
|
+
"anyOf": [
|
|
666
|
+
{
|
|
667
|
+
"type": "string",
|
|
668
|
+
"enum": [
|
|
669
|
+
"Amount",
|
|
670
|
+
"Rate",
|
|
671
|
+
"Surplus"
|
|
672
|
+
]
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"type": "integer",
|
|
676
|
+
"minimum": 0,
|
|
677
|
+
"maximum": 2
|
|
678
|
+
}
|
|
668
679
|
],
|
|
669
|
-
"description": "
|
|
680
|
+
"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)."
|
|
670
681
|
}
|
|
671
682
|
},
|
|
672
683
|
"required": [
|
|
@@ -675,13 +686,13 @@
|
|
|
675
686
|
"mode"
|
|
676
687
|
],
|
|
677
688
|
"additionalProperties": false,
|
|
678
|
-
"description": "Fund allocation item"
|
|
689
|
+
"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."
|
|
679
690
|
},
|
|
680
|
-
"description": "Fund allocation item list. Each item
|
|
691
|
+
"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)."
|
|
681
692
|
},
|
|
682
693
|
"fix": {
|
|
683
694
|
"$ref": "#/definitions/data/properties/order_new/properties/buy/properties/total_pay/anyOf/0/properties/balance",
|
|
684
|
-
"description": "
|
|
695
|
+
"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."
|
|
685
696
|
},
|
|
686
697
|
"max": {
|
|
687
698
|
"anyOf": [
|
|
@@ -692,7 +703,7 @@
|
|
|
692
703
|
"type": "null"
|
|
693
704
|
}
|
|
694
705
|
],
|
|
695
|
-
"description": "Maximum allocation
|
|
706
|
+
"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)."
|
|
696
707
|
}
|
|
697
708
|
},
|
|
698
709
|
"required": [
|
|
@@ -700,9 +711,9 @@
|
|
|
700
711
|
"sharing"
|
|
701
712
|
],
|
|
702
713
|
"additionalProperties": false,
|
|
703
|
-
"description": "Fund allocator"
|
|
714
|
+
"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."
|
|
704
715
|
},
|
|
705
|
-
"description": "Fund allocator list. Each
|
|
716
|
+
"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)."
|
|
706
717
|
}
|
|
707
718
|
},
|
|
708
719
|
"required": [
|
|
@@ -710,7 +721,7 @@
|
|
|
710
721
|
"allocators"
|
|
711
722
|
],
|
|
712
723
|
"additionalProperties": false,
|
|
713
|
-
"description": "Fund allocator list"
|
|
724
|
+
"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)."
|
|
714
725
|
},
|
|
715
726
|
{
|
|
716
727
|
"type": "null"
|
|
@@ -855,7 +866,7 @@
|
|
|
855
866
|
},
|
|
856
867
|
"publish": {
|
|
857
868
|
"type": "boolean",
|
|
858
|
-
"description": "Whether to publish the Service. After publishing, customers can place orders
|
|
869
|
+
"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."
|
|
859
870
|
}
|
|
860
871
|
},
|
|
861
872
|
"required": [
|
|
@@ -890,7 +901,7 @@
|
|
|
890
901
|
"testnet",
|
|
891
902
|
"mainnet"
|
|
892
903
|
],
|
|
893
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
904
|
+
"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."
|
|
894
905
|
},
|
|
895
906
|
"referrer": {
|
|
896
907
|
"$ref": "#/definitions/env/properties/account",
|
|
@@ -1270,7 +1281,7 @@
|
|
|
1270
1281
|
"description": "vecvecu8"
|
|
1271
1282
|
}
|
|
1272
1283
|
],
|
|
1273
|
-
"description": "Type of the value"
|
|
1284
|
+
"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."
|
|
1274
1285
|
},
|
|
1275
1286
|
"value": {
|
|
1276
1287
|
"anyOf": [
|
|
@@ -1363,12 +1374,12 @@
|
|
|
1363
1374
|
}
|
|
1364
1375
|
}
|
|
1365
1376
|
],
|
|
1366
|
-
"description": "The actual value data"
|
|
1377
|
+
"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)."
|
|
1367
1378
|
},
|
|
1368
1379
|
"name": {
|
|
1369
1380
|
"type": "string",
|
|
1370
1381
|
"default": "",
|
|
1371
|
-
"description": "
|
|
1382
|
+
"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."
|
|
1372
1383
|
},
|
|
1373
1384
|
"object_type": {
|
|
1374
1385
|
"type": "string",
|
|
@@ -1406,7 +1417,7 @@
|
|
|
1406
1417
|
"TableItem_AddressMark",
|
|
1407
1418
|
"TableItem_EntityRegistrar"
|
|
1408
1419
|
],
|
|
1409
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
1420
|
+
"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."
|
|
1410
1421
|
}
|
|
1411
1422
|
},
|
|
1412
1423
|
"required": [
|
|
@@ -1415,7 +1426,7 @@
|
|
|
1415
1426
|
"value_type"
|
|
1416
1427
|
],
|
|
1417
1428
|
"additionalProperties": false,
|
|
1418
|
-
"description": "Guard table item"
|
|
1429
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
1419
1430
|
},
|
|
1420
1431
|
"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...'}]"
|
|
1421
1432
|
}
|
|
@@ -1427,7 +1438,7 @@
|
|
|
1427
1438
|
"additionalProperties": false,
|
|
1428
1439
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
1429
1440
|
},
|
|
1430
|
-
"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."
|
|
1441
|
+
"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:[...]}}"
|
|
1431
1442
|
}
|
|
1432
1443
|
},
|
|
1433
1444
|
"required": [
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"number",
|
|
116
116
|
"string"
|
|
117
117
|
],
|
|
118
|
-
"description": "
|
|
118
|
+
"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."
|
|
119
119
|
},
|
|
120
120
|
"token_type": {
|
|
121
121
|
"type": "string",
|
|
@@ -634,7 +634,7 @@
|
|
|
634
634
|
"testnet",
|
|
635
635
|
"mainnet"
|
|
636
636
|
],
|
|
637
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
637
|
+
"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."
|
|
638
638
|
},
|
|
639
639
|
"referrer": {
|
|
640
640
|
"$ref": "#/definitions/env/properties/account",
|
|
@@ -1014,7 +1014,7 @@
|
|
|
1014
1014
|
"description": "vecvecu8"
|
|
1015
1015
|
}
|
|
1016
1016
|
],
|
|
1017
|
-
"description": "Type of the value"
|
|
1017
|
+
"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."
|
|
1018
1018
|
},
|
|
1019
1019
|
"value": {
|
|
1020
1020
|
"anyOf": [
|
|
@@ -1107,12 +1107,12 @@
|
|
|
1107
1107
|
}
|
|
1108
1108
|
}
|
|
1109
1109
|
],
|
|
1110
|
-
"description": "The actual value data"
|
|
1110
|
+
"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)."
|
|
1111
1111
|
},
|
|
1112
1112
|
"name": {
|
|
1113
1113
|
"type": "string",
|
|
1114
1114
|
"default": "",
|
|
1115
|
-
"description": "
|
|
1115
|
+
"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."
|
|
1116
1116
|
},
|
|
1117
1117
|
"object_type": {
|
|
1118
1118
|
"type": "string",
|
|
@@ -1150,7 +1150,7 @@
|
|
|
1150
1150
|
"TableItem_AddressMark",
|
|
1151
1151
|
"TableItem_EntityRegistrar"
|
|
1152
1152
|
],
|
|
1153
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
1153
|
+
"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."
|
|
1154
1154
|
}
|
|
1155
1155
|
},
|
|
1156
1156
|
"required": [
|
|
@@ -1159,7 +1159,7 @@
|
|
|
1159
1159
|
"value_type"
|
|
1160
1160
|
],
|
|
1161
1161
|
"additionalProperties": false,
|
|
1162
|
-
"description": "Guard table item"
|
|
1162
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
1163
1163
|
},
|
|
1164
1164
|
"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...'}]"
|
|
1165
1165
|
}
|
|
@@ -1171,7 +1171,7 @@
|
|
|
1171
1171
|
"additionalProperties": false,
|
|
1172
1172
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
1173
1173
|
},
|
|
1174
|
-
"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."
|
|
1174
|
+
"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:[...]}}"
|
|
1175
1175
|
}
|
|
1176
1176
|
},
|
|
1177
1177
|
"required": [
|
|
@@ -1582,7 +1582,7 @@
|
|
|
1582
1582
|
"properties": {
|
|
1583
1583
|
"prev_node": {
|
|
1584
1584
|
"type": "string",
|
|
1585
|
-
"description": "Previous node name"
|
|
1585
|
+
"description": "Previous node name. Empty string '' means initial entry node (the first node in the workflow)."
|
|
1586
1586
|
},
|
|
1587
1587
|
"threshold": {
|
|
1588
1588
|
"type": [
|
|
@@ -1642,38 +1642,46 @@
|
|
|
1642
1642
|
"guard": {
|
|
1643
1643
|
"anyOf": [
|
|
1644
1644
|
{
|
|
1645
|
-
"
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
"
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
"anyOf": [
|
|
1653
|
-
{
|
|
1654
|
-
"type": "array",
|
|
1655
|
-
"items": {
|
|
1656
|
-
"$ref": "#/definitions/onchain_table_data/properties/result/anyOf/8/properties/result/anyOf/0/properties/value/items/properties/threshold"
|
|
1657
|
-
}
|
|
1645
|
+
"anyOf": [
|
|
1646
|
+
{
|
|
1647
|
+
"type": "object",
|
|
1648
|
+
"properties": {
|
|
1649
|
+
"guard": {
|
|
1650
|
+
"type": "string",
|
|
1651
|
+
"description": "Guard object name or address (string). Example: 'my_attendance_guard' or '0x1234...'"
|
|
1658
1652
|
},
|
|
1659
|
-
{
|
|
1660
|
-
"
|
|
1653
|
+
"retained_submission": {
|
|
1654
|
+
"anyOf": [
|
|
1655
|
+
{
|
|
1656
|
+
"type": "array",
|
|
1657
|
+
"items": {
|
|
1658
|
+
"$ref": "#/definitions/onchain_table_data/properties/result/anyOf/8/properties/result/anyOf/0/properties/value/items/properties/threshold"
|
|
1659
|
+
}
|
|
1660
|
+
},
|
|
1661
|
+
{
|
|
1662
|
+
"type": "null"
|
|
1663
|
+
}
|
|
1664
|
+
],
|
|
1665
|
+
"description": "Data submitted by user during Guard object verification"
|
|
1661
1666
|
}
|
|
1667
|
+
},
|
|
1668
|
+
"required": [
|
|
1669
|
+
"guard"
|
|
1662
1670
|
],
|
|
1663
|
-
"
|
|
1671
|
+
"additionalProperties": false,
|
|
1672
|
+
"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."
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
"type": "string",
|
|
1676
|
+
"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."
|
|
1664
1677
|
}
|
|
1665
|
-
|
|
1666
|
-
"required": [
|
|
1667
|
-
"guard"
|
|
1668
|
-
],
|
|
1669
|
-
"additionalProperties": false,
|
|
1670
|
-
"description": "Record of Guard object in MachineForwardGuard object"
|
|
1678
|
+
]
|
|
1671
1679
|
},
|
|
1672
1680
|
{
|
|
1673
1681
|
"type": "null"
|
|
1674
1682
|
}
|
|
1675
1683
|
],
|
|
1676
|
-
"description": "Guard
|
|
1684
|
+
"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)."
|
|
1677
1685
|
}
|
|
1678
1686
|
},
|
|
1679
1687
|
"required": [
|
|
@@ -1683,7 +1691,7 @@
|
|
|
1683
1691
|
"additionalProperties": false,
|
|
1684
1692
|
"description": "Forward in Machine object"
|
|
1685
1693
|
},
|
|
1686
|
-
"description": "Forward list"
|
|
1694
|
+
"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."
|
|
1687
1695
|
}
|
|
1688
1696
|
},
|
|
1689
1697
|
"required": [
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"testnet",
|
|
46
46
|
"mainnet"
|
|
47
47
|
],
|
|
48
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
48
|
+
"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."
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
"required": [
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
},
|
|
100
100
|
"network": {
|
|
101
101
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
102
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
102
|
+
"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."
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
105
|
"required": [
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
"network": {
|
|
141
141
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
142
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
142
|
+
"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."
|
|
143
143
|
}
|
|
144
144
|
},
|
|
145
145
|
"required": [
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
},
|
|
175
175
|
"network": {
|
|
176
176
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
177
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
177
|
+
"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."
|
|
178
178
|
}
|
|
179
179
|
},
|
|
180
180
|
"required": [
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
},
|
|
209
209
|
"network": {
|
|
210
210
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
211
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
211
|
+
"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."
|
|
212
212
|
}
|
|
213
213
|
},
|
|
214
214
|
"required": [
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
},
|
|
249
249
|
"network": {
|
|
250
250
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
251
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
251
|
+
"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."
|
|
252
252
|
}
|
|
253
253
|
},
|
|
254
254
|
"required": [
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
},
|
|
294
294
|
"network": {
|
|
295
295
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
296
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
296
|
+
"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."
|
|
297
297
|
}
|
|
298
298
|
},
|
|
299
299
|
"required": [
|
|
@@ -334,7 +334,7 @@
|
|
|
334
334
|
},
|
|
335
335
|
"network": {
|
|
336
336
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
337
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
337
|
+
"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."
|
|
338
338
|
}
|
|
339
339
|
},
|
|
340
340
|
"required": [
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
},
|
|
367
367
|
"network": {
|
|
368
368
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
369
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
369
|
+
"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."
|
|
370
370
|
}
|
|
371
371
|
},
|
|
372
372
|
"required": [
|
|
@@ -401,7 +401,7 @@
|
|
|
401
401
|
},
|
|
402
402
|
"network": {
|
|
403
403
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
404
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
404
|
+
"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."
|
|
405
405
|
}
|
|
406
406
|
},
|
|
407
407
|
"required": [
|
|
@@ -442,7 +442,7 @@
|
|
|
442
442
|
},
|
|
443
443
|
"network": {
|
|
444
444
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
445
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
445
|
+
"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."
|
|
446
446
|
}
|
|
447
447
|
},
|
|
448
448
|
"required": [
|
|
@@ -507,7 +507,7 @@
|
|
|
507
507
|
},
|
|
508
508
|
"network": {
|
|
509
509
|
"$ref": "#/definitions/onchain_table_data/anyOf/0/anyOf/0/properties/network",
|
|
510
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
510
|
+
"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."
|
|
511
511
|
}
|
|
512
512
|
},
|
|
513
513
|
"required": [
|