@wowok/agent-mcp 3.2.6 → 3.2.7

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.
Files changed (222) hide show
  1. package/dist/chain-semantics/field-capability.js +1 -1
  2. package/dist/chain-semantics/freeze-map.js +1 -1
  3. package/dist/chain-semantics/object-graph.js +1 -1
  4. package/dist/communication/wts-attestation.js +1 -1
  5. package/dist/composition/audit.js +1 -1
  6. package/dist/composition/compile.d.ts +3 -2
  7. package/dist/composition/compile.js +1 -1
  8. package/dist/composition/inflight.d.ts +17 -0
  9. package/dist/composition/inflight.js +1 -0
  10. package/dist/config/config-audit.spec.js +1 -1
  11. package/dist/customer/account-events.js +1 -1
  12. package/dist/customer/order-monitor.js +1 -1
  13. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  14. package/dist/evaluation/engine.js +1 -1
  15. package/dist/experience/realtime-feedback.js +1 -1
  16. package/dist/extensions/constraint-registry.d.ts +6 -1
  17. package/dist/extensions/constraint-registry.js +1 -1
  18. package/dist/extensions/index.d.ts +1 -1
  19. package/dist/extensions/index.js +1 -1
  20. package/dist/extensions/industry-pack.d.ts +5 -0
  21. package/dist/extensions/industry-pack.js +1 -1
  22. package/dist/extensions/mode-evaluator.d.ts +3 -2
  23. package/dist/extensions/mode-evaluator.js +1 -1
  24. package/dist/extensions/modes.js +1 -1
  25. package/dist/graph/onchain/analyze.js +1 -1
  26. package/dist/graph/onchain/analyze.spec.js +1 -1
  27. package/dist/graph/onchain/anti-cheat.d.ts +32 -2
  28. package/dist/graph/onchain/anti-cheat.js +1 -1
  29. package/dist/graph/onchain/anti-cheat.spec.js +1 -1
  30. package/dist/graph/onchain/expand.js +1 -1
  31. package/dist/graph/onchain/exposure.js +1 -1
  32. package/dist/graph/onchain/extract.js +1 -1
  33. package/dist/graph/onchain/graph-policy.spec.js +1 -1
  34. package/dist/graph/onchain/index.d.ts +2 -2
  35. package/dist/graph/onchain/index.js +1 -1
  36. package/dist/graph/onchain/project-relationship.js +1 -1
  37. package/dist/graph/onchain/table-ledger.spec.js +1 -1
  38. package/dist/graph/onchain/types.d.ts +3 -0
  39. package/dist/harness/recover.js +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/knowledge/arbitration-venue-order.d.ts +25 -0
  42. package/dist/knowledge/arbitration-venue-order.js +1 -0
  43. package/dist/knowledge/audit-rules.d.ts +10 -0
  44. package/dist/knowledge/audit-rules.js +1 -1
  45. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -1
  46. package/dist/knowledge/baselines/rules/graph.json +81 -0
  47. package/dist/knowledge/baselines/rules/machine.json +3 -3
  48. package/dist/knowledge/baselines/rules/plan.json +80 -2
  49. package/dist/knowledge/builtin-templates.d.ts +17 -2
  50. package/dist/knowledge/builtin-templates.js +1 -1
  51. package/dist/knowledge/discount-threshold.js +1 -1
  52. package/dist/knowledge/event-semantics.js +1 -1
  53. package/dist/knowledge/getting-started.js +1 -1
  54. package/dist/knowledge/guard-bindings.js +1 -1
  55. package/dist/knowledge/guard-design-patterns.js +1 -1
  56. package/dist/knowledge/guard-field-cognition.js +1 -1
  57. package/dist/knowledge/guard-ledger.js +1 -1
  58. package/dist/knowledge/guard-lint.d.ts +1 -0
  59. package/dist/knowledge/guard-lint.js +1 -1
  60. package/dist/knowledge/guard-node-gates.d.ts +4 -0
  61. package/dist/knowledge/guard-node-gates.js +1 -0
  62. package/dist/knowledge/guard-puzzle.js +1 -1
  63. package/dist/knowledge/guard-risk.js +1 -1
  64. package/dist/knowledge/guard-submission-prompt.d.ts +1 -0
  65. package/dist/knowledge/guard-submission-prompt.js +1 -1
  66. package/dist/knowledge/guard-templates.d.ts +2 -1
  67. package/dist/knowledge/guard-templates.js +1 -1
  68. package/dist/knowledge/guard-translation.js +1 -1
  69. package/dist/knowledge/index.d.ts +2 -2
  70. package/dist/knowledge/index.js +1 -1
  71. package/dist/knowledge/industry-registry.js +1 -1
  72. package/dist/knowledge/jsonrpc-enum.js +1 -1
  73. package/dist/knowledge/machine-topology.d.ts +6 -0
  74. package/dist/knowledge/machine-topology.js +1 -1
  75. package/dist/knowledge/reputation-rules.d.ts +3 -9
  76. package/dist/knowledge/reputation-rules.js +1 -1
  77. package/dist/knowledge/safety-rules.d.ts +10 -1
  78. package/dist/knowledge/safety-rules.js +1 -1
  79. package/dist/knowledge/scenario-modes.js +1 -1
  80. package/dist/knowledge/settlement-semantics.d.ts +1 -0
  81. package/dist/knowledge/settlement-semantics.js +1 -0
  82. package/dist/knowledge/template-loader.d.ts +22 -0
  83. package/dist/knowledge/template-loader.js +1 -1
  84. package/dist/knowledge/template-registry.js +1 -1
  85. package/dist/knowledge/template-scanner.d.ts +14 -0
  86. package/dist/knowledge/template-scanner.js +1 -1
  87. package/dist/knowledge/tools-reference.js +1 -1
  88. package/dist/knowledge/workflow-guidance.d.ts +1 -0
  89. package/dist/knowledge/workflow-guidance.js +1 -1
  90. package/dist/monitor/MonitorLoop.js +1 -1
  91. package/dist/participation/allocation-advice.js +1 -1
  92. package/dist/participation/customer-interest.js +1 -1
  93. package/dist/participation/radar-core.d.ts +6 -1
  94. package/dist/participation/radar-core.js +1 -1
  95. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  96. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  97. package/dist/playbooks/service-build/merchant-guide.d.ts +38 -15
  98. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  99. package/dist/playbooks/service-build/migration-planner.d.ts +7 -0
  100. package/dist/playbooks/service-build/migration-planner.js +1 -1
  101. package/dist/playbooks/service-build/object-panorama.js +1 -1
  102. package/dist/playbooks/service-build/participation-radar.js +1 -1
  103. package/dist/playbooks/service-build/pipeline-actions.d.ts +1 -1
  104. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  105. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  106. package/dist/playbooks/service-build/risk-aggregator.d.ts +1 -1
  107. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  108. package/dist/playbooks/service-build/service-panorama.js +1 -1
  109. package/dist/playbooks/service-build/service-quote.js +1 -1
  110. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  111. package/dist/relationship/derivation.d.ts +1 -0
  112. package/dist/review/index.js +1 -1
  113. package/dist/runtime/instance-registry.d.ts +8 -0
  114. package/dist/runtime/instance-registry.js +1 -0
  115. package/dist/safety/confirm-gate.js +1 -1
  116. package/dist/schema/benchmark-migration/index.d.ts +14 -0
  117. package/dist/schema/benchmark-migration/index.js +1 -1
  118. package/dist/schema/call/arbitration.js +1 -1
  119. package/dist/schema/call/base.d.ts +109 -0
  120. package/dist/schema/call/base.js +1 -1
  121. package/dist/schema/call/bridge.d.ts +14 -0
  122. package/dist/schema/call/contact.js +1 -1
  123. package/dist/schema/call/error-codes.d.ts +1 -1
  124. package/dist/schema/call/error-codes.js +1 -1
  125. package/dist/schema/call/guard.d.ts +7 -0
  126. package/dist/schema/call/guard.js +1 -1
  127. package/dist/schema/call/handler.js +1 -1
  128. package/dist/schema/call/machine.d.ts +7 -0
  129. package/dist/schema/call/machine.js +1 -1
  130. package/dist/schema/call/payment.js +1 -1
  131. package/dist/schema/call/permission-handler.js +1 -1
  132. package/dist/schema/call/progress.d.ts +46 -0
  133. package/dist/schema/call/progress.js +1 -1
  134. package/dist/schema/call/semantic.js +1 -1
  135. package/dist/schema/call/service.d.ts +8 -8
  136. package/dist/schema/call/service.js +1 -1
  137. package/dist/schema/common/index.js +1 -1
  138. package/dist/schema/goal/index.d.ts +11 -0
  139. package/dist/schema/goal/planning.d.ts +32 -1
  140. package/dist/schema/goal/planning.js +1 -1
  141. package/dist/schema/industry-pack/index.d.ts +40 -0
  142. package/dist/schema/industry-pack/index.js +1 -1
  143. package/dist/schema/keeper/index.d.ts +13 -0
  144. package/dist/schema/local/index.d.ts +75 -0
  145. package/dist/schema/local/index.js +1 -1
  146. package/dist/schema/messenger/index.d.ts +17 -0
  147. package/dist/schema/messenger/index.js +1 -1
  148. package/dist/schema/operations.d.ts +39 -2
  149. package/dist/schema/operations.js +1 -1
  150. package/dist/schema/query/bi.d.ts +64 -0
  151. package/dist/schema/query/bi.js +1 -1
  152. package/dist/schema/query/index.d.ts +94 -0
  153. package/dist/schema/query/index.js +1 -1
  154. package/dist/schema/schema-version.d.ts +1 -1
  155. package/dist/schema/schema-version.js +1 -1
  156. package/dist/schema/utils/permission-machine-check.js +1 -1
  157. package/dist/schema/workspace/index.d.ts +1 -1
  158. package/dist/schema-query-impl/index.js +1 -1
  159. package/dist/schemas/account_operation.output.json +45 -0
  160. package/dist/schemas/benchmark_migration_operation.output.json +24 -4
  161. package/dist/schemas/benchmark_migration_operation.schema.json +70 -0
  162. package/dist/schemas/bridge_operation.output.json +45 -0
  163. package/dist/schemas/goal_operation.schema.json +78 -0
  164. package/dist/schemas/guard2file.output.json +6 -1
  165. package/dist/schemas/guard2file.schema.json +9 -0
  166. package/dist/schemas/index.json +1 -1
  167. package/dist/schemas/industry_pack_operation.output.json +91 -0
  168. package/dist/schemas/industry_pack_operation.schema.json +19 -1
  169. package/dist/schemas/keeper_operation.output.json +44 -0
  170. package/dist/schemas/local_cache_operation.output.json +45 -0
  171. package/dist/schemas/local_history_operation.output.json +45 -0
  172. package/dist/schemas/local_info_operation.output.json +45 -0
  173. package/dist/schemas/local_mark_operation.output.json +45 -0
  174. package/dist/schemas/machineNode2file.output.json +6 -1
  175. package/dist/schemas/machineNode2file.schema.json +9 -0
  176. package/dist/schemas/messenger_operation.output.json +52 -0
  177. package/dist/schemas/monitor_events.output.json +44 -0
  178. package/dist/schemas/monitor_subscription.output.json +44 -0
  179. package/dist/schemas/onchain_events.output.json +44 -0
  180. package/dist/schemas/onchain_operations.output.json +133 -0
  181. package/dist/schemas/onchain_operations.schema.json +73 -16
  182. package/dist/schemas/onchain_operations_arbitration.schema.json +2 -1
  183. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  184. package/dist/schemas/onchain_operations_guard.schema.json +2 -2
  185. package/dist/schemas/onchain_operations_machine.schema.json +2 -2
  186. package/dist/schemas/onchain_operations_payment.schema.json +1 -1
  187. package/dist/schemas/onchain_operations_progress.schema.json +57 -0
  188. package/dist/schemas/onchain_operations_service.schema.json +7 -8
  189. package/dist/schemas/onchain_table_data.output.json +81 -13
  190. package/dist/schemas/onchain_table_data.schema.json +21 -21
  191. package/dist/schemas/query_toolkit.output.json +218 -9
  192. package/dist/schemas/query_toolkit.schema.json +50 -26
  193. package/dist/schemas/wowok_buildin_info.output.json +80 -1
  194. package/dist/schemas/wowok_buildin_info.schema.json +1 -1
  195. package/dist/tools/handlers/benchmark-migration.d.ts +1 -0
  196. package/dist/tools/handlers/benchmark-migration.js +1 -1
  197. package/dist/tools/handlers/config.js +1 -1
  198. package/dist/tools/handlers/file-export.js +1 -1
  199. package/dist/tools/handlers/industry-pack.js +1 -1
  200. package/dist/tools/handlers/messenger.js +1 -1
  201. package/dist/tools/handlers/onchain.js +1 -1
  202. package/dist/tools/handlers/review-chain.d.ts +22 -0
  203. package/dist/tools/handlers/review-chain.js +1 -0
  204. package/dist/tools/registry/agent.js +1 -1
  205. package/dist/tools/registry/business.js +1 -1
  206. package/dist/tools/registry/config.js +1 -1
  207. package/dist/tools/registry/evaluation.js +1 -1
  208. package/dist/tools/registry/files.js +1 -1
  209. package/dist/tools/registry/identity.js +1 -1
  210. package/dist/tools/registry/local.js +1 -1
  211. package/dist/tools/registry/messenger.js +1 -1
  212. package/dist/tools/registry/monitor.js +1 -1
  213. package/dist/tools/registry/onchain.js +1 -1
  214. package/dist/tools/registry/query.js +1 -1
  215. package/dist/tools/rules-hook.js +1 -1
  216. package/dist/tools/runtime-health.d.ts +10 -0
  217. package/dist/tools/runtime-health.js +1 -0
  218. package/dist/tools/upgrade-check.d.ts +10 -1
  219. package/dist/tools/upgrade-check.js +1 -1
  220. package/dist/tools/wrap.d.ts +3 -0
  221. package/dist/tools/wrap.js +1 -1
  222. package/package.json +2 -2
@@ -318,6 +318,63 @@
318
318
  "const": "recently"
319
319
  }
320
320
  ]
321
+ },
322
+ "review": {
323
+ "description": "Structured review composite (REVIEW component): after this forward succeeds, write the structured reputation record into a Repository (+ optional reward claim), reusing this call's passport submission. Requires operate (the chain fires only after a successful forward).",
324
+ "type": "object",
325
+ "properties": {
326
+ "repository": {
327
+ "type": "string",
328
+ "description": "Repository object ID or name that stores the structured reputation record. Its matching policy key should use id_from=Signer (one record per buyer, rewrite = own-record overwrite) and accept a JSON payload {rating, tags?, orderRef?}. PREFERRED: the service's review repository EMITTED BY THE BUILD PLAN when review_mode was set (AR-1) — resolve it from the service's repositories list (service_panorama / onchain_objects, name suffix '_review') — never guess an address."
329
+ },
330
+ "key": {
331
+ "description": "Data key (policy rule name) to write under. Default 'review'.",
332
+ "type": "string"
333
+ },
334
+ "rating": {
335
+ "type": "string",
336
+ "enum": [
337
+ "like",
338
+ "dislike"
339
+ ],
340
+ "description": "Buyer rating. Ratings NEVER affect settlement (the settlement anchor is the delivered moment, not this review) — this is reputation only."
341
+ },
342
+ "tags": {
343
+ "description": "Optional structured tags for statistics and market exposure (e.g. ['fast_delivery','good_quality']).",
344
+ "type": "array",
345
+ "items": {
346
+ "type": "string"
347
+ }
348
+ },
349
+ "reward_claim": {
350
+ "description": "Optional reward claim chained after the repository write (fail-isolated: a failed claim never undoes the write or the forward).",
351
+ "type": "object",
352
+ "properties": {
353
+ "reward": {
354
+ "type": "string",
355
+ "description": "Reward object ID or name to claim from. Resolve it from the service's rewards list (service_panorama / service_quote reward_terms) — never guess an address."
356
+ },
357
+ "guard": {
358
+ "type": "string",
359
+ "description": "Guard object that gates this claim. MUST be covered by this call's passport submission (one of the submission.guard entries, same address), otherwise the chain aborts."
360
+ }
361
+ },
362
+ "required": [
363
+ "reward",
364
+ "guard"
365
+ ],
366
+ "additionalProperties": false
367
+ },
368
+ "write_guard": {
369
+ "description": "Policy write guard for the repository write. DEFAULT: the first guard of this call's passport submission (the review-edge credential). Required when the matched Repository policy uses id_from=None with declared guards (the chain aborts with 22, E_POLICY_WRITE_GUARD_REQUIRED, otherwise). The guard MUST be covered by the passport submission.",
370
+ "type": "string"
371
+ }
372
+ },
373
+ "required": [
374
+ "repository",
375
+ "rating"
376
+ ],
377
+ "additionalProperties": false
321
378
  }
322
379
  },
323
380
  "required": [
@@ -95,7 +95,7 @@
95
95
  "description": "Two ways to specify an object: (1) STRING - Reference an EXISTING object by name or ID; (2) OBJECT - CREATE a NEW object with full configuration including name, tags, description, token type for payments, and Permission-based access control. The object format is used when you need both token specification AND permission management."
96
96
  },
97
97
  "order_new": {
98
- "description": "Create new order.",
98
+ "description": "Create new order. RETRY DISCIPLINE: the order creation is atomic on-chain but NOT in observability — a transport drop after submit leaves the commit state UNKNOWN, and a blind resubmit creates a second order with a second full escrow (live mainnet incident). On any failure/timeout, verify whether an order with this exact signature (service + buyer + items) already landed — via the in-flight marker in the failure envelope, the sender's recent on-chain objects, or onchain_events — and adopt it if present; resubmit only if confirmed absent.",
99
99
  "type": "object",
100
100
  "properties": {
101
101
  "buy": {
@@ -137,6 +137,7 @@
137
137
  "description": "List of products or services to purchase"
138
138
  },
139
139
  "total_pay": {
140
+ "description": "Actual payment amount. FORMAT: {balance: <amount_in_smallest_unit>} or {coin: <coin_object_id>}. The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. OPTIONAL without a discount (M-K17): omit it and the handler derives the EXACT total Σ(sale price × quantity) from the Service's on-chain sales list and discloses the derived value — no transcription, no drift. REQUIRED when 'discount' is set (the discounted total depends on the coupon's live value: run query_toolkit query_type='service_quote' and pass total_pay.balance = the quoted final_total). An explicit value is always honored as-is. AMOUNT GATE (M-K11-a): a total that EXACTLY equals Σ published sale price × quantity (catalog-priced buy, in the Service's own payment coin — WOW or bridged USDT/USDC/ETH/BTC) bypasses the harness pre-sign amount gate; any other amount above the threshold is blocked until WOWOK_AMOUNT_THRESHOLD is raised after explicit user confirmation.",
140
141
  "anyOf": [
141
142
  {
142
143
  "type": "object",
@@ -172,8 +173,7 @@
172
173
  ],
173
174
  "additionalProperties": false
174
175
  }
175
- ],
176
- "description": "Actual payment amount. FORMAT: {balance: <amount_in_smallest_unit>} or {coin: <coin_object_id>}. The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. "
176
+ ]
177
177
  },
178
178
  "discount": {
179
179
  "description": "Discount object ID or name",
@@ -189,8 +189,7 @@
189
189
  }
190
190
  },
191
191
  "required": [
192
- "items",
193
- "total_pay"
192
+ "items"
194
193
  ],
195
194
  "additionalProperties": false
196
195
  },
@@ -923,7 +922,7 @@
923
922
  "description": "Discount magnitude, meaning depends on discount_type. RATES (0): per-10000 off rate — 10 = 0.1% off, 1000 = 10% off, 10000 = 100% off; values above 10000 are rejected. FIXED (1): fixed deduction from the order total in the Service token's smallest units (e.g. 1000000000 = 1 WOW at 9 decimals)."
924
923
  },
925
924
  "benchmark": {
926
- "description": "Minimum order total (in the Service token's smallest units) for the discount to apply — when set, the discount is applied only if the PRE-discount order total is GREATER THAN OR EQUAL TO this value. ✅ OMITTING this field (or passing null, or 0) means NO threshold — the discount applies UNCONDITIONALLY, and that is the common, correct case. This is the on-chain behaviour: benchmark_met = if (option::is_some(&discount.benchmark)) { total >= benchmark } else { true } (wow-framework sources/w/service.move:274-278, inside the discount-application step). ⚠️ SHARP EDGE when you DO set a threshold: a below-threshold order is NOT rejected — it completes at FULL price and the one-time coupon is still consumed and destroyed, so the buyer pays full price AND loses the coupon. Keep thresholds low enough that your typical basket clears them. If the order total is below the discounted price the payment aborts — pay the list price; the excess is returned as a new Coin.",
925
+ "description": "Minimum order total (in the Service token's smallest units) for the discount to apply — when set, the discount is applied only if the PRE-discount order total is GREATER THAN OR EQUAL TO this value. ✅ OMITTING this field (or passing null, or 0) means NO threshold — the discount applies UNCONDITIONALLY, and that is the common, correct case. This is the on-chain behaviour: benchmark_met = if (option::is_some(&discount.benchmark)) { total >= benchmark } else { true } (wow-framework sources/w/service.move:274-278, inside the discount-application step). ⚠️ SHARP EDGE when you DO set a threshold: an order below the threshold CANNOT use the coupon — attaching it at buy aborts (error 38: the transaction rolls back, nothing is paid, and the coupon is preserved); dropping it means the buyer pays FULL price and keeps the coupon for a future order. Keep thresholds low enough that your typical basket clears them. If the order total is below the discounted price the payment aborts — pay the list price; the excess is returned as a new Coin.",
927
926
  "anyOf": [
928
927
  {
929
928
  "type": "number"
@@ -1425,7 +1424,7 @@
1425
1424
  ]
1426
1425
  },
1427
1426
  "compensation_fund_add": {
1428
- "description": "Deposit funds into the Service compensation_fund. Used to pay indemnity when arbitration resolves in customer's favor. FORMAT: {balance: <amount_in_smallest_unit>} — the field name is 'balance' (NOT 'amount'). The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. For tokens with different decimals, adjust accordingly (e.g. USDC has 6 decimals, so {balance: 1000000} = 1 USDC). REQUIRES: Permission index 315 (SERVICE_COMPENSATION_FUND_DEPOSIT) must be granted to the calling account first. COMMON MISTAKE: using {amount: ...} or {amount: ..., type: 'WOW'} — these will fail. The correct field is 'balance'.",
1427
+ "description": "Deposit funds into the Service compensation_fund. Used to pay indemnity when arbitration resolves in customer's favor. FORMAT: {balance: <amount_in_smallest_unit>} — the field name is 'balance' (NOT 'amount'). The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. For tokens with different decimals, adjust accordingly (e.g. USDC has 6 decimals, so {balance: 1000000} = 1 USDC). REQUIRES: Permission index 315 (SERVICE_COMPENSATION_FUND_DEPOSIT) for NON-ADMIN callers. The Permission owner and admin short-circuit every builtin index check (no grant needed); only non-admin callers must be granted 315 first. COMMON MISTAKE: using {amount: ...} or {amount: ..., type: 'WOW'} — these will fail. The correct field is 'balance'.",
1429
1428
  "anyOf": [
1430
1429
  {
1431
1430
  "type": "object",
@@ -1784,7 +1783,7 @@
1784
1783
  "type": "boolean"
1785
1784
  },
1786
1785
  "publish": {
1787
- "description": "Whether to publish the Service. After publishing, customers can place orders. ⚠️ PRE-PUBLISH EVALUATION (mandatory, stop-node fund-exit coverage): service.allocators MUST cover EVERY stop node of the bound Machine — every node where an order can rest (terminal nodes AND waiting states: review windows, handovers, open disputes) needs BOTH a withdrawal (release) AND a refund allocation rule, and each mapping guard must be satisfiable in BOTH directions. An uncovered stop node strands escrowed funds permanently (order_allocators is L1-immutable). Review-gated release is a TIME VARIANT inside ONE exit guard ('reviewed OR unreviewed after T'), never parallel outgoing edges (race deadlock). See pattern.fund_flow_stop_node_coverage + rules R-M5-03 / R-M5-09. VERIFIED against Move source + SDK (4-level immutability matrix):\n L1 — PERMANENTLY LOCKED after publish (assert!(!bPublished), no pause+lock exception):\n • machine (workflow template)\n • order_allocators (fund distribution rules — full replacement locked; APPEND-ONLY additions remain possible via order_allocators_append, prefix/threshold frozen)\n L2 — TIME-LOCKED after publish (unpublished-state check — requires pause + setting_lock_duration elapsed):\n • arbitrations remove/clear (dispute resolution objects)\n • rewards remove/clear (reward objects)\n • compensation_fund_withdraw (withdraw ALL funds)\n L3 — REMAIN MUTABLE after publish (no SDK check, no Move check):\n • arbitrations add, rewards add (no assert — can add after publish)\n • buy_guard, sales, discount, description, location, pause, repositories,\n • compensation_fund_add, setting_lock_duration_add, customer_required, um (Contact)\nThese 2 L1-LOCKED fields (machine/order_allocators) MUST be set BEFORE publish=true.\narbitrations/rewards can be ADDED after publish but remove/clear requires pause+lock.\n\n⚠️ COMPENSATION_FUND + ARBITRATION LINKAGE:\n At publish time, if compensation_fund > 0, Arbitration MUST be bound:\n if (balance::value(&self.compensation_fund) > 0) {\n assert!(arbitration_count > 0, E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\n }\n The MCP handler enforces this as a HARD PRE-CHECK: if publish=true AND compensation_fund_add is set in the same call AND arbitrations is empty, the call is REJECTED before submission. If compensation_fund was deposited in a prior call, a SOFT WARNING is issued.\n\nSCHEMA-03 / P0-01 fix — DEPLOYMENT WORKFLOW (two-phase, avoids circular dependency):\n Phase 1 — CREATE (no publish): object={name:'my-service', type_parameter, permission} + machine + order_allocators + arbitrations.\n NOTE: buy_guard can use a LocalMark NAME (not address) to break the Guard→Service circular dependency.\n The name is resolved to an address at transaction build time.\n Phase 2 — PUBLISH: object='my-service' (string ref) + publish=true.\n All L1-LOCKED fields must be set in Phase 1; Phase 2 only flips the publish flag.\n Post-publish updates: buy_guard, sales, description, repositories (add), rewards (add), arbitrations (add), etc.",
1786
+ "description": "Whether to publish the Service. After publishing, customers can place orders. ⚠️ PRE-PUBLISH EVALUATION (mandatory, stop-node fund-exit coverage): service.allocators MUST cover EVERY stop node of the bound Machine — every node where an order can rest (terminal nodes AND waiting states: review windows, handovers, open disputes) needs BOTH a withdrawal (release) AND a refund allocation rule, and each mapping guard must be satisfiable in BOTH directions. An uncovered stop node strands escrowed funds permanently (order_allocators is L1-immutable). Review-gated release is a TIME VARIANT inside ONE exit guard ('reviewed OR unreviewed after T'), never parallel outgoing edges (race deadlock). See pattern.fund_flow_stop_node_coverage + rules R-M5-03 / R-M5-09. VERIFIED against Move source + SDK (4-level immutability matrix):\n L1 — PERMANENTLY LOCKED after publish (assert!(!bPublished), no pause+lock exception):\n • machine (workflow template)\n • order_allocators (fund distribution rules — full replacement locked; APPEND-ONLY additions remain possible via order_allocators_append, prefix/threshold frozen)\n L2 — TIME-LOCKED after publish (unpublished-state check — requires pause + setting_lock_duration elapsed):\n • arbitrations remove/clear (dispute resolution objects)\n • rewards remove/clear (reward objects)\n • compensation_fund_withdraw (withdraw ALL funds)\n RATIONALE (deliberate design, NOT a defect): these three REVOKE buyer-facing guarantees that placed orders already rely on — the lock protects buyer expectations. Daily operations (sales add/remove, price, stock, description) are NEVER gated by this lock.\n L3 — REMAIN MUTABLE after publish (no SDK check, no Move check):\n • arbitrations add, rewards add (no assert — can add after publish)\n • buy_guard, sales, discount, description, location, pause, repositories,\n • compensation_fund_add, setting_lock_duration_add, customer_required, um (Contact)\nThese 2 L1-LOCKED fields (machine/order_allocators) MUST be set BEFORE publish=true.\narbitrations/rewards can be ADDED after publish but remove/clear requires pause+lock.\n\n⚠️ COMPENSATION_FUND + ARBITRATION LINKAGE:\n At publish time, if compensation_fund > 0, Arbitration MUST be bound:\n if (balance::value(&self.compensation_fund) > 0) {\n assert!(arbitration_count > 0, E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\n }\n The MCP handler enforces this as a HARD PRE-CHECK: if publish=true AND compensation_fund_add is set in the same call AND arbitrations is empty, the call is REJECTED before submission. If compensation_fund was deposited in a prior call, a SOFT WARNING is issued.\n\nSCHEMA-03 / P0-01 fix — DEPLOYMENT WORKFLOW (two-phase, avoids circular dependency):\n Phase 1 — CREATE (no publish): object={name:'my-service', type_parameter, permission} + machine + order_allocators + arbitrations.\n NOTE: buy_guard can use a LocalMark NAME (not address) to break the Guard→Service circular dependency.\n The name is resolved to an address at transaction build time.\n Phase 2 — PUBLISH: object='my-service' (string ref) + publish=true.\n All L1-LOCKED fields must be set in Phase 1; Phase 2 only flips the publish flag.\n Post-publish updates: buy_guard, sales, description, repositories (add), rewards (add), arbitrations (add), etc.",
1788
1787
  "type": "boolean"
1789
1788
  }
1790
1789
  },
@@ -9053,7 +9053,7 @@
9053
9053
  "mainnet",
9054
9054
  "localnet"
9055
9055
  ],
9056
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9056
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9057
9057
  }
9058
9058
  },
9059
9059
  "required": [
@@ -9116,7 +9116,7 @@
9116
9116
  "mainnet",
9117
9117
  "localnet"
9118
9118
  ],
9119
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9119
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9120
9120
  }
9121
9121
  },
9122
9122
  "required": [
@@ -9124,7 +9124,7 @@
9124
9124
  "service_address"
9125
9125
  ],
9126
9126
  "additionalProperties": false,
9127
- "description": "READ-ONLY pre-purchase quote of a Service (finding 3.6 — order_new total_pay pre-check): per-item unit price × quantity, the basket total that order_new.buy.total_pay.balance must exactly equal (the on-chain buy aborts on any drift), and the order_allocators fee-split preview (sharing rows of the FIRST allocator — the normal payout path; guards select per-case allocators such as refund/damage, so the live split depends on which guard passes). Mirrors the on-chain price×quantity semantics WITHOUT calling quote on-chain and NEVER submits a transaction. Amounts are payment-token smallest units plus a human display when the token precision resolves."
9127
+ "description": "READ-ONLY pre-purchase quote of a Service (finding 3.6 — order_new total_pay pre-check): per-item unit price × quantity, the basket total that order_new.buy.total_pay.balance must exactly equal (the on-chain buy aborts on any drift), and the order_allocators fee-split preview (sharing rows of the FIRST allocator — the normal payout path; guards select per-case allocators such as refund/damage, so the live split depends on which guard passes). Also previews the reward terms of every Reward hung on the Service (pool balance, per-claim amount, claim window) so a buyer never budgets on an expired or unfunded reward. Mirrors the on-chain price×quantity semantics WITHOUT calling quote on-chain and NEVER submits a transaction. Amounts are payment-token smallest units plus a human display when the token precision resolves."
9128
9128
  },
9129
9129
  {
9130
9130
  "type": "object",
@@ -9144,7 +9144,7 @@
9144
9144
  "mainnet",
9145
9145
  "localnet"
9146
9146
  ],
9147
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9147
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9148
9148
  }
9149
9149
  },
9150
9150
  "required": [
@@ -9179,7 +9179,7 @@
9179
9179
  "mainnet",
9180
9180
  "localnet"
9181
9181
  ],
9182
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9182
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9183
9183
  }
9184
9184
  },
9185
9185
  "required": [
@@ -9206,7 +9206,7 @@
9206
9206
  "mainnet",
9207
9207
  "localnet"
9208
9208
  ],
9209
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9209
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9210
9210
  }
9211
9211
  },
9212
9212
  "required": [
@@ -9240,7 +9240,7 @@
9240
9240
  "mainnet",
9241
9241
  "localnet"
9242
9242
  ],
9243
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9243
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9244
9244
  },
9245
9245
  "context_depth": {
9246
9246
  "description": "BFS recursion depth for dependency expansion in assemble_context (default 0 = no expansion). When >0, the assembly recursively queries objects referenced by the center objects (permission, guard, machine, service, repositories, etc.) up to the given depth, using the same address-field extraction rules as extractAddressFields. Each level issues one batched query_objects call (≤50 IDs per batch). Cycles are detected and skipped via a visited set. Discovered dependencies are returned in `dependencies` (edge metadata) and `dependency_objects` (full object states). Recommended: 1–2 for most use cases; 3+ may pull large subgraphs (use context_include to constrain).",
@@ -9283,7 +9283,7 @@
9283
9283
  "mainnet",
9284
9284
  "localnet"
9285
9285
  ],
9286
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9286
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9287
9287
  },
9288
9288
  "reverse_order_amount": {
9289
9289
  "description": "Escrowed order amount (smallest-unit string) for reverse_map — included in the report summary as the concrete escrow mention.",
@@ -9334,6 +9334,30 @@
9334
9334
  "description": "Attach order-monitor alerts (progress stall / compensation fund / review & arbitration windows) to each per-order result. Default true.",
9335
9335
  "type": "boolean"
9336
9336
  },
9337
+ "radar_review_summary": {
9338
+ "description": "Merchant-side review coverage summary (REVIEW-COMPONENT-PLAN batch 4): completed orders vs orders with a structured review record. Review rows live in a caller-named Repository — gather both counts via onchain_table_data (repository rows under the 'review' key, id_from=Signer → one row per buyer) and pass them in; the radar derives the merchant-side review-rate hint (high missing rate with a reward attached → reward lapsed or window too short). Omit when no review repository is bound.",
9339
+ "type": "object",
9340
+ "properties": {
9341
+ "orders_completed": {
9342
+ "type": "integer",
9343
+ "minimum": 0,
9344
+ "maximum": 9007199254740991
9345
+ },
9346
+ "reviews_written": {
9347
+ "type": "integer",
9348
+ "minimum": 0,
9349
+ "maximum": 9007199254740991
9350
+ },
9351
+ "reward_bound": {
9352
+ "type": "boolean"
9353
+ }
9354
+ },
9355
+ "required": [
9356
+ "orders_completed",
9357
+ "reviews_written"
9358
+ ],
9359
+ "additionalProperties": false
9360
+ },
9337
9361
  "radar_monitor_thresholds": {
9338
9362
  "description": "Optional per-call overrides for order-monitor alert thresholds (only used when radar_include_alerts is on). All fields optional; omitted fields keep defaults. Units: hours/days as marked per field.",
9339
9363
  "type": "object",
@@ -9380,7 +9404,7 @@
9380
9404
  "mainnet",
9381
9405
  "localnet"
9382
9406
  ],
9383
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9407
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9384
9408
  }
9385
9409
  },
9386
9410
  "required": [
@@ -9425,7 +9449,7 @@
9425
9449
  "mainnet",
9426
9450
  "localnet"
9427
9451
  ],
9428
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9452
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9429
9453
  }
9430
9454
  },
9431
9455
  "required": [
@@ -9470,7 +9494,7 @@
9470
9494
  "mainnet",
9471
9495
  "localnet"
9472
9496
  ],
9473
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9497
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9474
9498
  },
9475
9499
  "account": {
9476
9500
  "description": "Scope the aggregation to ONE account address (the client's current account). Omit to aggregate across ALL local accounts.",
@@ -9505,7 +9529,7 @@
9505
9529
  "mainnet",
9506
9530
  "localnet"
9507
9531
  ],
9508
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9532
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9509
9533
  },
9510
9534
  "account": {
9511
9535
  "description": "Scope to ONE account address (the client's current account). Omit to merge across ALL local accounts.",
@@ -9581,7 +9605,7 @@
9581
9605
  "mainnet",
9582
9606
  "localnet"
9583
9607
  ],
9584
- "description": "Network for the query — equivalent to the `network` parameter (prefer `network`). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9608
+ "description": "Network for the query — THIS field is `context_network` (the query tools accept no separate `network` key). Defaults to the user's CURRENT network (client UI selection / authority config) when omitted. 'localnet' is for internal test use against a local fullnode."
9585
9609
  },
9586
9610
  "intent": {
9587
9611
  "description": "SEMANTIC exploration strategy (G3) — what this topology call is trying to establish. Deterministically shapes the edge whitelist, per-family depth caps and budget: full_map=complete structural map; order_health=order lifecycle+completion+disputes; fund_flow=payments+allocation waterfall+guard-gated splits; workflow=Machine node graphs+transitions+progress; counterparty=who is on the other side (buyer/seller/agents/operators); reputation=votes+arbitration record+contacts; permission=permission groups+bindings+entity tables; supply_chain=multi-leg allocation/sub-order settlement; arbitration=dispute cases+voters; demand_match=demand presenters+guards+rewards. When omitted, defaults come from the persona system (role default intents < account persona preference), then industry templates; every applied layer is reported in result.strategy.trace.",
@@ -11038,6 +11062,50 @@
11038
11062
  "current_node"
11039
11063
  ],
11040
11064
  "additionalProperties": false
11065
+ },
11066
+ "review_steps": {
11067
+ "description": "Composite review submission report: the structured-reputation repository write (+ optional reward claim) chained after a successful progress forward via the data.review block, each reusing the forward's passport submission. Fail-isolated — a failed step never rolled back the forward. Relay failed steps to the user with the retry path (dedicated repository/reward tools).",
11068
+ "type": "array",
11069
+ "items": {
11070
+ "type": "object",
11071
+ "properties": {
11072
+ "step": {
11073
+ "type": "string",
11074
+ "enum": [
11075
+ "repository_write",
11076
+ "reward_claim"
11077
+ ],
11078
+ "description": "Which chained review step this report describes. repository_write = structured reputation record (rating/tags) into the caller-named Repository; reward_claim = incentive claim on the caller-named Reward."
11079
+ },
11080
+ "status": {
11081
+ "type": "string",
11082
+ "enum": [
11083
+ "success",
11084
+ "failed"
11085
+ ],
11086
+ "description": "Step outcome. Steps are fail-isolated: a failed step never affects the forward or the other step (on-chain has no rollback)."
11087
+ },
11088
+ "detail": {
11089
+ "type": "string",
11090
+ "description": "On success: what was written/claimed (payload summary). On failure: what the step attempted."
11091
+ },
11092
+ "digest": {
11093
+ "description": "Transaction digest when the step succeeded.",
11094
+ "type": "string"
11095
+ },
11096
+ "error": {
11097
+ "description": "Error message when the step failed. Retry via the dedicated repository/reward tools with the same submission values.",
11098
+ "type": "string"
11099
+ }
11100
+ },
11101
+ "required": [
11102
+ "step",
11103
+ "status",
11104
+ "detail"
11105
+ ],
11106
+ "additionalProperties": false,
11107
+ "description": "One fail-isolated chained step of the progress composite review submission (REVIEW component, data.review block)."
11108
+ }
11041
11109
  }
11042
11110
  },
11043
11111
  "required": [
@@ -44,7 +44,7 @@
44
44
  "type": "boolean"
45
45
  },
46
46
  "network": {
47
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
47
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
48
48
  "type": "string",
49
49
  "enum": [
50
50
  "localnet",
@@ -103,7 +103,7 @@
103
103
  "type": "boolean"
104
104
  },
105
105
  "network": {
106
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
106
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
107
107
  "type": "string",
108
108
  "enum": [
109
109
  "localnet",
@@ -160,7 +160,7 @@
160
160
  "type": "boolean"
161
161
  },
162
162
  "network": {
163
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
163
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
164
164
  "type": "string",
165
165
  "enum": [
166
166
  "localnet",
@@ -212,7 +212,7 @@
212
212
  "type": "boolean"
213
213
  },
214
214
  "network": {
215
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
215
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
216
216
  "type": "string",
217
217
  "enum": [
218
218
  "localnet",
@@ -263,7 +263,7 @@
263
263
  "type": "boolean"
264
264
  },
265
265
  "network": {
266
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
266
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
267
267
  "type": "string",
268
268
  "enum": [
269
269
  "localnet",
@@ -314,7 +314,7 @@
314
314
  "type": "boolean"
315
315
  },
316
316
  "network": {
317
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
317
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
318
318
  "type": "string",
319
319
  "enum": [
320
320
  "localnet",
@@ -365,7 +365,7 @@
365
365
  "type": "boolean"
366
366
  },
367
367
  "network": {
368
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
368
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
369
369
  "type": "string",
370
370
  "enum": [
371
371
  "localnet",
@@ -416,7 +416,7 @@
416
416
  "type": "boolean"
417
417
  },
418
418
  "network": {
419
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
419
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
420
420
  "type": "string",
421
421
  "enum": [
422
422
  "localnet",
@@ -472,7 +472,7 @@
472
472
  "type": "boolean"
473
473
  },
474
474
  "network": {
475
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
475
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
476
476
  "type": "string",
477
477
  "enum": [
478
478
  "localnet",
@@ -523,7 +523,7 @@
523
523
  "type": "boolean"
524
524
  },
525
525
  "network": {
526
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
526
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
527
527
  "type": "string",
528
528
  "enum": [
529
529
  "localnet",
@@ -574,7 +574,7 @@
574
574
  "type": "boolean"
575
575
  },
576
576
  "network": {
577
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
577
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
578
578
  "type": "string",
579
579
  "enum": [
580
580
  "localnet",
@@ -625,7 +625,7 @@
625
625
  "type": "boolean"
626
626
  },
627
627
  "network": {
628
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
628
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
629
629
  "type": "string",
630
630
  "enum": [
631
631
  "localnet",
@@ -676,7 +676,7 @@
676
676
  "type": "boolean"
677
677
  },
678
678
  "network": {
679
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
679
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
680
680
  "type": "string",
681
681
  "enum": [
682
682
  "localnet",
@@ -727,7 +727,7 @@
727
727
  "type": "boolean"
728
728
  },
729
729
  "network": {
730
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
730
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
731
731
  "type": "string",
732
732
  "enum": [
733
733
  "localnet",
@@ -774,7 +774,7 @@
774
774
  "type": "boolean"
775
775
  },
776
776
  "network": {
777
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
777
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
778
778
  "type": "string",
779
779
  "enum": [
780
780
  "localnet",
@@ -826,7 +826,7 @@
826
826
  "type": "boolean"
827
827
  },
828
828
  "network": {
829
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
829
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
830
830
  "type": "string",
831
831
  "enum": [
832
832
  "localnet",
@@ -874,7 +874,7 @@
874
874
  "type": "boolean"
875
875
  },
876
876
  "network": {
877
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
877
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
878
878
  "type": "string",
879
879
  "enum": [
880
880
  "localnet",
@@ -911,7 +911,7 @@
911
911
  "type": "boolean"
912
912
  },
913
913
  "network": {
914
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
914
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
915
915
  "type": "string",
916
916
  "enum": [
917
917
  "localnet",
@@ -955,7 +955,7 @@
955
955
  "type": "boolean"
956
956
  },
957
957
  "network": {
958
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
958
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
959
959
  "type": "string",
960
960
  "enum": [
961
961
  "localnet",
@@ -1003,7 +1003,7 @@
1003
1003
  "type": "boolean"
1004
1004
  },
1005
1005
  "network": {
1006
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
1006
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
1007
1007
  "type": "string",
1008
1008
  "enum": [
1009
1009
  "localnet",
@@ -1082,7 +1082,7 @@
1082
1082
  "type": "boolean"
1083
1083
  },
1084
1084
  "network": {
1085
- "description": "Network to query: 'mainnet' or 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
1085
+ "description": "Network to query: 'localnet' | 'mainnet' | 'testnet'. If omitted, the SDK's current default network is used (check via wowok_buildin_info info='current network'); the response echoes the resolved network so results can never be misattributed.",
1086
1086
  "type": "string",
1087
1087
  "enum": [
1088
1088
  "localnet",