@wowok/agent-mcp 3.2.7 → 3.3.0

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 (265) hide show
  1. package/README.md +2 -2
  2. package/dist/chain-semantics/field-capability.js +1 -1
  3. package/dist/chain-semantics/freeze-map.js +1 -1
  4. package/dist/chain-semantics/fund-flow.js +1 -1
  5. package/dist/chain-semantics/guard-verbs.js +1 -1
  6. package/dist/chain-semantics/object-graph.js +1 -1
  7. package/dist/composition/audit.js +1 -1
  8. package/dist/composition/compile.d.ts +10 -1
  9. package/dist/composition/compile.js +1 -1
  10. package/dist/composition/inflight.d.ts +10 -0
  11. package/dist/composition/inflight.js +1 -1
  12. package/dist/extensions/business-modules.d.ts +1 -1
  13. package/dist/extensions/business-modules.js +1 -1
  14. package/dist/extensions/capability-manifest.js +1 -1
  15. package/dist/extensions/industry-audit.spec.js +1 -1
  16. package/dist/extensions/industry-pack.js +1 -1
  17. package/dist/graph/onchain/edge-schema.js +1 -1
  18. package/dist/graph/onchain/facts.spec.js +1 -1
  19. package/dist/graph/onchain/field-manifest.js +1 -1
  20. package/dist/harness/index.d.ts +1 -0
  21. package/dist/harness/index.js +1 -1
  22. package/dist/harness/operation-id.d.ts +1 -0
  23. package/dist/harness/operation-id.js +1 -0
  24. package/dist/harness/recover.js +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/intent/types.d.ts +1 -1
  27. package/dist/intent/types.js +1 -1
  28. package/dist/keeper/KeeperScan.d.ts +2 -1
  29. package/dist/keeper/KeeperScan.js +1 -1
  30. package/dist/keeper/keeper.spec.js +1 -1
  31. package/dist/keeper/types.d.ts +3 -0
  32. package/dist/keeper/types.js +1 -1
  33. package/dist/knowledge/allocator-rail-verifier.d.ts +34 -0
  34. package/dist/knowledge/allocator-rail-verifier.js +1 -0
  35. package/dist/knowledge/arbitration-ledger.js +1 -1
  36. package/dist/knowledge/arbitration-templates.js +1 -1
  37. package/dist/knowledge/arbitration-venue-order.js +1 -1
  38. package/dist/knowledge/audit-rules.d.ts +19 -1
  39. package/dist/knowledge/audit-rules.js +1 -1
  40. package/dist/knowledge/baselines/rules/alloc_audit.json +1 -1
  41. package/dist/knowledge/baselines/rules/arb.json +1 -1
  42. package/dist/knowledge/baselines/rules/guard.json +106 -1
  43. package/dist/knowledge/baselines/rules/machine.json +9 -6
  44. package/dist/knowledge/baselines/rules/plan.json +40 -17
  45. package/dist/knowledge/baselines/semantic-facts.js +1 -1
  46. package/dist/knowledge/builtin-templates.d.ts +1 -1
  47. package/dist/knowledge/builtin-templates.js +1 -1
  48. package/dist/knowledge/contract-invariants.js +1 -1
  49. package/dist/knowledge/discount-threshold.d.ts +11 -0
  50. package/dist/knowledge/discount-threshold.js +1 -1
  51. package/dist/knowledge/event-semantics.js +1 -1
  52. package/dist/knowledge/fund-layer.js +1 -1
  53. package/dist/knowledge/getting-started.js +1 -1
  54. package/dist/knowledge/guard-anchor-reach.d.ts +1 -1
  55. package/dist/knowledge/guard-anchor-reach.js +1 -1
  56. package/dist/knowledge/guard-bindings.js +1 -1
  57. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  58. package/dist/knowledge/guard-design-patterns.js +1 -1
  59. package/dist/knowledge/guard-field-cognition.js +1 -1
  60. package/dist/knowledge/guard-ledger.js +1 -1
  61. package/dist/knowledge/guard-lint.js +1 -1
  62. package/dist/knowledge/guard-render.js +1 -1
  63. package/dist/knowledge/guard-risk.d.ts +1 -0
  64. package/dist/knowledge/guard-risk.js +1 -1
  65. package/dist/knowledge/guard-submission-brief.d.ts +6 -0
  66. package/dist/knowledge/guard-submission-brief.js +1 -1
  67. package/dist/knowledge/guard-templates.d.ts +2 -2
  68. package/dist/knowledge/guard-templates.js +1 -1
  69. package/dist/knowledge/index.js +1 -1
  70. package/dist/knowledge/industry-registry.js +1 -1
  71. package/dist/knowledge/industry-strategy.js +1 -1
  72. package/dist/knowledge/jsonrpc-enum.js +1 -1
  73. package/dist/knowledge/machine-ledger.js +1 -1
  74. package/dist/knowledge/machine-puzzle.d.ts +1 -1
  75. package/dist/knowledge/machine-puzzle.js +1 -1
  76. package/dist/knowledge/machine-risk.js +1 -1
  77. package/dist/knowledge/machine-templates.js +1 -1
  78. package/dist/knowledge/machine-topology.d.ts +8 -0
  79. package/dist/knowledge/machine-topology.js +1 -1
  80. package/dist/knowledge/machine-translation.js +1 -1
  81. package/dist/knowledge/order-ledger.js +1 -1
  82. package/dist/knowledge/permission-ledger.js +1 -1
  83. package/dist/knowledge/protocol-facts.d.ts +16 -0
  84. package/dist/knowledge/protocol-facts.js +1 -0
  85. package/dist/knowledge/recipient-constraint.js +1 -1
  86. package/dist/knowledge/reward-ledger.d.ts +2 -1
  87. package/dist/knowledge/reward-ledger.js +1 -1
  88. package/dist/knowledge/reward-templates.js +1 -1
  89. package/dist/knowledge/safety-rules.d.ts +0 -2
  90. package/dist/knowledge/safety-rules.js +1 -1
  91. package/dist/knowledge/scenario-modes.d.ts +7 -0
  92. package/dist/knowledge/scenario-modes.js +1 -1
  93. package/dist/knowledge/strategy-manuals.js +1 -1
  94. package/dist/knowledge/template-loader.d.ts +13 -1
  95. package/dist/knowledge/template-loader.js +1 -1
  96. package/dist/knowledge/template-registry.js +1 -1
  97. package/dist/knowledge/template-scanner.d.ts +2 -0
  98. package/dist/knowledge/template-scanner.js +1 -1
  99. package/dist/knowledge/tool-constraints.js +1 -1
  100. package/dist/knowledge/tools-reference.js +1 -1
  101. package/dist/knowledge/workflow-guidance.d.ts +7 -3
  102. package/dist/knowledge/workflow-guidance.js +1 -1
  103. package/dist/monitor/MonitorLoop.js +1 -1
  104. package/dist/monitor/normalize.d.ts +1 -1
  105. package/dist/monitor/normalize.js +1 -1
  106. package/dist/monitor/types.d.ts +1 -1
  107. package/dist/monitor/types.js +1 -1
  108. package/dist/participation/radar-core.d.ts +1 -1
  109. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  110. package/dist/playbooks/service-build/game-theory.d.ts +1 -0
  111. package/dist/playbooks/service-build/game-theory.js +1 -1
  112. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  113. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  114. package/dist/playbooks/service-build/merchant-guide.d.ts +8 -0
  115. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  116. package/dist/playbooks/service-build/object-panorama.d.ts +28 -1
  117. package/dist/playbooks/service-build/object-panorama.js +1 -1
  118. package/dist/playbooks/service-build/participation-radar.d.ts +2 -0
  119. package/dist/playbooks/service-build/participation-radar.js +1 -1
  120. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  121. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +1 -1
  122. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  123. package/dist/playbooks/service-build/service-panorama.js +1 -1
  124. package/dist/playbooks/service-build/service-quote.js +1 -1
  125. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  126. package/dist/relationship/registry.js +1 -1
  127. package/dist/review/index.js +1 -1
  128. package/dist/role/profiles.js +1 -1
  129. package/dist/safety/confirm-gate.js +1 -1
  130. package/dist/safety/preview.d.ts +1 -0
  131. package/dist/safety/preview.js +1 -1
  132. package/dist/schema/benchmark-migration/index.d.ts +19 -1
  133. package/dist/schema/benchmark-migration/index.js +1 -1
  134. package/dist/schema/call/allocation.d.ts +1 -1
  135. package/dist/schema/call/arbitration.d.ts +8 -8
  136. package/dist/schema/call/arbitration.js +1 -1
  137. package/dist/schema/call/base.d.ts +52 -5
  138. package/dist/schema/call/base.js +1 -1
  139. package/dist/schema/call/bridge.d.ts +3 -0
  140. package/dist/schema/call/contact.d.ts +5 -5
  141. package/dist/schema/call/demand.d.ts +5 -5
  142. package/dist/schema/call/error-codes.d.ts +1 -1
  143. package/dist/schema/call/error-codes.js +1 -1
  144. package/dist/schema/call/guard.d.ts +3 -3
  145. package/dist/schema/call/guard.js +1 -1
  146. package/dist/schema/call/handler.js +1 -1
  147. package/dist/schema/call/machine.d.ts +13 -5
  148. package/dist/schema/call/machine.js +1 -1
  149. package/dist/schema/call/order.d.ts +5 -5
  150. package/dist/schema/call/order.js +1 -1
  151. package/dist/schema/call/permission.d.ts +5 -5
  152. package/dist/schema/call/personal.d.ts +4 -4
  153. package/dist/schema/call/progress.d.ts +5 -5
  154. package/dist/schema/call/progress.js +1 -1
  155. package/dist/schema/call/proof.js +1 -1
  156. package/dist/schema/call/receipt.d.ts +8 -0
  157. package/dist/schema/call/receipt.js +1 -1
  158. package/dist/schema/call/repository.d.ts +9 -9
  159. package/dist/schema/call/repository.js +1 -1
  160. package/dist/schema/call/reward.d.ts +25 -5
  161. package/dist/schema/call/reward.js +1 -1
  162. package/dist/schema/call/semantic.js +1 -1
  163. package/dist/schema/call/service.d.ts +10 -5
  164. package/dist/schema/call/service.js +1 -1
  165. package/dist/schema/call/treasury.d.ts +5 -5
  166. package/dist/schema/common/index.d.ts +6 -6
  167. package/dist/schema/common/index.js +1 -1
  168. package/dist/schema/goal/index.d.ts +17 -1
  169. package/dist/schema/goal/planning.d.ts +28 -2
  170. package/dist/schema/goal/planning.js +1 -1
  171. package/dist/schema/industry-pack/index.d.ts +3 -0
  172. package/dist/schema/industry-pack/index.js +1 -1
  173. package/dist/schema/intent-radar/index.d.ts +9 -0
  174. package/dist/schema/intent-radar/index.js +1 -1
  175. package/dist/schema/local/index.d.ts +31 -0
  176. package/dist/schema/local/index.js +1 -1
  177. package/dist/schema/messenger/index.js +1 -1
  178. package/dist/schema/operations.d.ts +57 -43
  179. package/dist/schema/operations.js +1 -1
  180. package/dist/schema/query/bi.d.ts +22 -6
  181. package/dist/schema/query/bi.js +1 -1
  182. package/dist/schema/query/index.d.ts +164 -102
  183. package/dist/schema/query/index.js +1 -1
  184. package/dist/schema/schema-query/index.d.ts +2 -0
  185. package/dist/schema/schema-query/index.js +1 -1
  186. package/dist/schema/schema-version.js +1 -1
  187. package/dist/schema/utils/permission-machine-check.d.ts +2 -0
  188. package/dist/schema/utils/permission-machine-check.js +1 -1
  189. package/dist/schema/workflow/index.d.ts +1 -1
  190. package/dist/schema-query-impl/index.d.ts +1 -1
  191. package/dist/schema-query-impl/index.js +1 -1
  192. package/dist/schemas/account_operation.output.json +3 -0
  193. package/dist/schemas/account_operation.schema.json +4 -4
  194. package/dist/schemas/benchmark_migration_operation.output.json +42 -0
  195. package/dist/schemas/benchmark_migration_operation.schema.json +40 -3
  196. package/dist/schemas/bridge_operation.output.json +3 -0
  197. package/dist/schemas/goal_operation.schema.json +52 -2
  198. package/dist/schemas/index.json +1 -1
  199. package/dist/schemas/industry_pack_operation.output.json +8 -0
  200. package/dist/schemas/industry_pack_operation.schema.json +9 -0
  201. package/dist/schemas/intent_radar.output.json +8 -2
  202. package/dist/schemas/intent_radar.schema.json +4 -1
  203. package/dist/schemas/local_cache_operation.output.json +3 -0
  204. package/dist/schemas/local_history_operation.output.json +3 -0
  205. package/dist/schemas/local_info_operation.output.json +3 -0
  206. package/dist/schemas/local_mark_operation.output.json +3 -0
  207. package/dist/schemas/messenger_operation.schema.json +4 -4
  208. package/dist/schemas/monitor_events.schema.json +3 -1
  209. package/dist/schemas/onchain_events.output.json +275 -11
  210. package/dist/schemas/onchain_events.schema.json +25 -1
  211. package/dist/schemas/onchain_operations.output.json +47 -5
  212. package/dist/schemas/onchain_operations.schema.json +664 -179
  213. package/dist/schemas/onchain_operations_allocation.schema.json +7 -7
  214. package/dist/schemas/onchain_operations_arbitration.schema.json +21 -15
  215. package/dist/schemas/onchain_operations_contact.schema.json +15 -10
  216. package/dist/schemas/onchain_operations_demand.schema.json +15 -10
  217. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -5
  218. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  219. package/dist/schemas/onchain_operations_guard.schema.json +346 -8
  220. package/dist/schemas/onchain_operations_machine.schema.json +24 -11
  221. package/dist/schemas/onchain_operations_order.schema.json +17 -12
  222. package/dist/schemas/onchain_operations_permission.schema.json +10 -5
  223. package/dist/schemas/onchain_operations_personal.schema.json +2 -2
  224. package/dist/schemas/onchain_operations_progress.schema.json +17 -12
  225. package/dist/schemas/onchain_operations_proof.schema.json +6 -6
  226. package/dist/schemas/onchain_operations_repository.schema.json +19 -14
  227. package/dist/schemas/onchain_operations_reward.schema.json +96 -15
  228. package/dist/schemas/onchain_operations_service.schema.json +33 -21
  229. package/dist/schemas/onchain_operations_treasury.schema.json +15 -10
  230. package/dist/schemas/onchain_table_data.output.json +7 -7
  231. package/dist/schemas/query_toolkit.output.json +268 -44
  232. package/dist/schemas/query_toolkit.schema.json +1 -1
  233. package/dist/schemas/schema_query.schema.json +7 -2
  234. package/dist/schemas/workflow_operation.schema.json +5 -5
  235. package/dist/schemas/wowok_buildin_info.output.json +140 -3
  236. package/dist/schemas/wowok_buildin_info.schema.json +2 -2
  237. package/dist/tools/handlers/benchmark-migration.d.ts +66 -1
  238. package/dist/tools/handlers/benchmark-migration.js +1 -1
  239. package/dist/tools/handlers/config.js +1 -1
  240. package/dist/tools/handlers/dispatch-expectations.d.ts +0 -1
  241. package/dist/tools/handlers/dispatch-expectations.js +1 -1
  242. package/dist/tools/handlers/industry-pack.js +1 -1
  243. package/dist/tools/handlers/intent-radar.js +1 -1
  244. package/dist/tools/handlers/keeper.d.ts +1 -1
  245. package/dist/tools/handlers/local.js +1 -1
  246. package/dist/tools/handlers/onchain.d.ts +12 -0
  247. package/dist/tools/handlers/onchain.js +1 -1
  248. package/dist/tools/handlers/query.d.ts +1 -0
  249. package/dist/tools/handlers/query.js +1 -1
  250. package/dist/tools/handlers/review-chain.js +1 -1
  251. package/dist/tools/handlers/schema-query.js +1 -1
  252. package/dist/tools/handlers/workflow.js +1 -1
  253. package/dist/tools/index.js +1 -1
  254. package/dist/tools/move-fn-index.gen.js +1 -1
  255. package/dist/tools/registry/agent.js +1 -1
  256. package/dist/tools/registry/business.js +1 -1
  257. package/dist/tools/registry/files.js +1 -1
  258. package/dist/tools/registry/query.js +1 -1
  259. package/dist/tools/rules-hook.js +1 -1
  260. package/dist/tools/upgrade-check.d.ts +23 -0
  261. package/dist/tools/upgrade-check.js +1 -1
  262. package/dist/tools/wip-deploy-assist.d.ts +6 -0
  263. package/dist/tools/wip-deploy-assist.js +1 -1
  264. package/dist/tools/wrap.js +1 -1
  265. package/package.json +2 -2
@@ -12,6 +12,7 @@ export declare const SchemaQueryInputSchema: z.ZodObject<{
12
12
  get_guard_design_patterns: "get_guard_design_patterns";
13
13
  get_safety_rules: "get_safety_rules";
14
14
  get_templates: "get_templates";
15
+ get_guard_queries: "get_guard_queries";
15
16
  analyze_guard_semantics: "analyze_guard_semantics";
16
17
  }>;
17
18
  name: z.ZodOptional<z.ZodString>;
@@ -50,6 +51,7 @@ export declare const SchemaQueryInputSchema: z.ZodObject<{
50
51
  testnet: "testnet";
51
52
  mainnet: "mainnet";
52
53
  }>>;
54
+ compare_with: z.ZodOptional<z.ZodString>;
53
55
  }, z.core.$strict>;
54
56
  export declare const SchemaQueryOutputSchema: z.ZodObject<{
55
57
  success: z.ZodBoolean;
@@ -1 +1 @@
1
- import{z}from'zod';export const SchemaQueryInputSchema=z['object']({'action':z['enum'](['list','get','get_output','search','list_operations','get_guard_templates','get_field','get_tool_reference','get_guard_design_patterns','get_safety_rules','get_templates','analyze_guard_semantics'])['describe']('Action\x20to\x20perform:\x20\x27list\x27\x20(all\x20schemas),\x20\x27get\x27\x20(specific\x20input\x20schema),\x20\x27get_output\x27\x20(tool\x20output\x20schema),\x20\x27get_field\x27\x20(field-path\x20query\x20e.g.\x20field_path=\x27data.node\x27),\x20\x27search\x27\x20(by\x20keyword),\x20\x27list_operations\x27\x20(on-chain\x20operations),\x20\x27get_guard_templates\x27\x20(Guard\x20creation\x20templates\x20+\x20best\x20practices),\x20\x27get_tool_reference\x27\x20(MCP\x20tool\x20usage\x20reference:\x20summaries,\x20actions,\x20prerequisites,\x20notes\x20—\x20sunk\x20from\x20wowok-tools\x20skill),\x20\x27get_guard_design_patterns\x27\x20(curated\x20Guard\x20design\x20pattern\x20catalog:\x20business\x20requirement\x20→\x20logic\x20tree\x20template\x20—\x20sunk\x20from\x20wowok-guard\x20skill),\x20\x27get_safety_rules\x27\x20(object\x20reuse/immutability/operation-classification/naming\x20rules\x20—\x20sunk\x20from\x20wowok-safety\x20skill),\x20\x27get_templates\x27\x20(unified\x20template\x20registry:\x20~90\x20parameterized\x20templates\x20across\x2011\x20object\x20types\x20—\x20guard/machine/service/order/progress/arbitration/treasury/permission/passport/allocation/reward;\x20omit\x20\x27template\x27\x20to\x20list\x20metadata,\x20provide\x20\x27template\x27\x20for\x20full\x20detail,\x20provide\x20\x27template\x27\x20+\x20\x27params\x27\x20to\x20instantiate\x20into\x20executable\x20JSON),\x20\x27analyze_guard_semantics\x27\x20(parse\x20+\x20evaluate\x20any\x20Guard\x20JSON:\x20rendered\x20logic\x20tree,\x20lint\x20diagnostics,\x20risk\x20assessment,\x20and\x20a\x20party-perspective\x20reading\x20—\x20who\x20can\x20trigger,\x20under\x20what\x20conditions,\x20with\x20what\x20evidence.\x20Both\x20transacting\x20parties\x20should\x20run\x20this\x20BEFORE\x20relying\x20on\x20a\x20Guard).'),'name':z['string']()['optional']()['describe']('Schema/tool\x20name\x20for\x20\x27get\x27/\x27get_output\x27/\x27get_field\x27/\x27get_tool_reference\x27\x20action\x20(e.g.,\x20\x27onchain_operations\x27,\x20\x27onchain_operations_machine\x27),\x20or\x20pattern\x20id\x20for\x20\x27get_guard_design_patterns\x27\x20(e.g.,\x20\x27pattern.identity_check_allowlist\x27).'),'query':z['string']()['optional']()['describe']('Search\x20query\x20for\x20\x27search\x27\x20action,\x20keyword\x20filter\x20for\x20\x27get_tool_reference\x27,\x20or\x20host\x20filter\x20for\x20\x27get_guard_design_patterns\x27\x20(e.g.\x20\x27service_buy_guard\x27,\x20\x27machine_forward\x27,\x20\x27reward_claim\x27).'),'field_path':z['string']()['optional']()['describe']('Dot-separated\x20field\x20path\x20for\x20\x27get_field\x27\x20action\x20(e.g.\x20\x27data.node\x27,\x20\x27data.node.nodes.0.pairs\x27).\x20Navigates\x20schema.properties.*\x20and\x20schema.items.*.'),'template':z['string']()['optional']()['describe']('Guard\x20template\x20name\x20for\x20\x27get_guard_templates\x27\x20action.\x20Omit\x20to\x20list\x20all\x20available\x20templates.\x20Available:\x20signer_verification,\x20progress_node_check,\x20order_owner_verification,\x20service_belonging_check,\x20reward_not_claimed,\x20combined_reward_guard.\x20For\x20\x27get_templates\x27:\x20unified\x20template\x20id\x20(e.g.\x20\x27tpl_buy_guard_whitelist\x27,\x20\x27tpl_machine_ecommerce_standard\x27,\x20\x27T-S-01\x27,\x20\x27T-O-01\x27,\x20\x27first_order\x27).'),'object_type':z['enum'](['guard','machine','service','order','progress','arbitration','treasury','permission','passport','allocation','reward'])['optional']()['describe']('Object-type\x20filter\x20for\x20\x27get_templates\x27\x20list\x20mode\x20(e.g.\x20\x27guard\x27\x20lists\x20only\x20Guard\x20templates).'),'params':z['string']()['optional']()['describe']('JSON-encoded\x20parameter\x20object\x20for\x20\x27get_templates\x27\x20instantiation\x20mode\x20(e.g.\x20\x27{\x22whitelist\x22:[\x220xabc\x22]}\x27).\x20Required\x20params\x20are\x20declared\x20in\x20each\x20template\x27s\x20\x27parameters\x27\x20list\x20(see\x20detail\x20mode).'),'output_file':z['string']()['optional']()['describe']('When\x20set,\x20writes\x20the\x20response\x20data\x20to\x20this\x20file\x20path\x20(relative\x20to\x20cwd)\x20and\x20returns\x20the\x20path\x20instead\x20of\x20inline\x20data.\x20Use\x20for\x20large\x20schemas\x20that\x20would\x20be\x20truncated.\x20Prefer\x20workspace\x20paths\x20like\x20\x27.trae/tmp/schema.json\x27\x20so\x20the\x20Read\x20tool\x20can\x20access\x20them.'),'guard':z['union']([z['string'](),z['record'](z['string'](),z['unknown']())])['optional']()['describe']('Guard\x20for\x20\x27analyze_guard_semantics\x27\x20action.\x20THREE\x20accepted\x20forms:\x20(1)\x20Guard\x20JSON\x20object,\x20(2)\x20JSON-encoded\x20string\x20(the\x20guard2file\x20export\x20format:\x20{description?,\x20table:\x20[...],\x20root:\x20{...},\x20rely?,\x20binding_hint?}),\x20(3)\x20an\x20on-chain\x20Guard\x20ADDRESS\x20(0x...)\x20or\x20LocalMark\x20name\x20—\x20loaded\x20from\x20chain\x20automatically.\x20Forms\x20(1)/(2)\x20analyze\x20a\x20local\x20definition;\x20form\x20(3)\x20analyzes\x20the\x20LIVE\x20on-chain\x20Guard.'),'binding':z['enum'](['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport','custom'])['optional']()['describe']('Optional\x20business-slot\x20binding\x20for\x20\x27analyze_guard_semantics\x27\x20(G1).\x20When\x20set,\x20the\x20analysis\x20includes\x20the\x20slot\x27s\x20business\x20semantics\x20(what\x20the\x20Guard\x20means,\x20what\x20your\x20submission\x20means,\x20pass/fail\x20consequences,\x20stakes).\x20E.g.\x20\x27buy\x27\x20for\x20a\x20Service.buy_guard,\x20\x27forward\x27\x20for\x20a\x20Machine\x20Forward.guard,\x20\x27allocate\x27\x20when\x20the\x20submission\x20identifies\x20a\x20payment\x20recipient.'),'network':z['enum'](['mainnet','testnet'])['optional']()['describe']('Network\x20for\x20\x27analyze_guard_semantics\x27\x20when\x20the\x20guard\x20is\x20given\x20as\x20an\x20on-chain\x20address/name\x20(G1).\x20Defaults\x20to\x20the\x20configured\x20network.')})['strict']();const SchemaListItemSchema=z['object']({'name':z['string']()['describe']('Schema/tool\x20identifier\x20(e.g.\x20\x27onchain_operations\x27).'),'title':z['string']()['optional']()['describe']('Human-readable\x20title,\x20if\x20known.'),'description':z['string']()['optional']()['describe']('Short\x20description,\x20if\x20known.')})['strict']();export const SchemaQueryOutputSchema=z['object']({'success':z['boolean']()['describe']('Whether\x20the\x20request\x20was\x20successful'),'action':z['string']()['describe']('The\x20action\x20that\x20was\x20performed'),'data':z['union']([z['array'](SchemaListItemSchema)['describe']('List\x20of\x20schema\x20summaries\x20(list/search/list_operations).'),z['record'](z['string'](),z['unknown']())['describe']('JSON\x20Schema\x20object\x20(get/get_output/get_field),\x20Guard\x20template\x20data,\x20tool\x20reference\x20data\x20(get_tool_reference),\x20Guard\x20design\x20pattern\x20catalog\x20(get_guard_design_patterns),\x20or\x20safety\x20rules\x20tables\x20(get_safety_rules).'),z['null']()['describe']('No\x20data\x20—\x20lookup\x20failed\x20or\x20returned\x20nothing,\x20or\x20data\x20was\x20written\x20to\x20output_file.')])['describe']('Response\x20data\x20—\x20array\x20of\x20schema\x20summaries\x20for\x20list-like\x20actions,\x20JSON\x20Schema\x20object\x20for\x20get/get_output/get_field,\x20Guard\x20template\x20data\x20for\x20get_guard_templates,\x20null\x20on\x20failure\x20or\x20when\x20output_file\x20is\x20used.'),'message':z['string']()['describe']('Human-readable\x20message\x20describing\x20the\x20result'),'suggestions':z['array'](z['string']())['optional']()['describe']('Suggested\x20next\x20steps\x20or\x20alternatives'),'output_file_path':z['string']()['optional']()['describe']('When\x20output_file\x20is\x20used,\x20contains\x20the\x20absolute\x20file\x20path\x20where\x20data\x20was\x20written.')})['strict']();
1
+ import{z}from'zod';export const SchemaQueryInputSchema=z['object']({'action':z['enum'](['list','get','get_output','search','list_operations','get_guard_templates','get_field','get_tool_reference','get_guard_design_patterns','get_safety_rules','get_templates','analyze_guard_semantics','get_guard_queries'])['describe']('Action\x20to\x20perform:\x20\x27list\x27\x20(all\x20schemas),\x20\x27get\x27\x20(specific\x20input\x20schema),\x20\x27get_output\x27\x20(tool\x20output\x20schema),\x20\x27get_field\x27\x20(field-path\x20query\x20e.g.\x20field_path=\x27data.node\x27),\x20\x27search\x27\x20(by\x20keyword),\x20\x27list_operations\x27\x20(on-chain\x20operations),\x20\x27get_guard_templates\x27\x20(Guard\x20creation\x20templates\x20+\x20best\x20practices),\x20\x27get_tool_reference\x27\x20(MCP\x20tool\x20usage\x20reference:\x20summaries,\x20actions,\x20prerequisites,\x20notes\x20—\x20sunk\x20from\x20wowok-tools\x20skill),\x20\x27get_guard_design_patterns\x27\x20(curated\x20Guard\x20design\x20pattern\x20catalog:\x20business\x20requirement\x20→\x20logic\x20tree\x20template\x20—\x20sunk\x20from\x20wowok-guard\x20skill),\x20\x27get_safety_rules\x27\x20(object\x20reuse/immutability/operation-classification/naming\x20rules\x20—\x20sunk\x20from\x20wowok-safety\x20skill),\x20\x27get_templates\x27\x20(unified\x20template\x20registry:\x20~90\x20parameterized\x20templates\x20across\x2011\x20object\x20types\x20—\x20guard/machine/service/order/progress/arbitration/treasury/permission/passport/allocation/reward;\x20omit\x20\x27template\x27\x20to\x20list\x20metadata,\x20provide\x20\x27template\x27\x20for\x20full\x20detail,\x20provide\x20\x27template\x27\x20+\x20\x27params\x27\x20to\x20instantiate\x20into\x20executable\x20JSON),\x20\x27analyze_guard_semantics\x27\x20(parse\x20+\x20evaluate\x20any\x20Guard\x20JSON:\x20rendered\x20logic\x20tree,\x20lint\x20diagnostics,\x20risk\x20assessment,\x20and\x20a\x20party-perspective\x20reading\x20—\x20who\x20can\x20trigger,\x20under\x20what\x20conditions,\x20with\x20what\x20evidence.\x20Both\x20transacting\x20parties\x20should\x20run\x20this\x20BEFORE\x20relying\x20on\x20a\x20Guard),\x20\x27get_guard_queries\x27\x20(the\x20GUARDQUERY\x20catalog\x20—\x20every\x20Guard\x20query\x20instruction\x20as\x20data:\x20{id,\x20name,\x20objectType,\x20returnType};\x20optional\x20query=\x27<keyword>\x27\x20for\x20full\x20entries\x20with\x20descriptions,\x20output_file\x20to\x20dump\x20all\x20details.\x20Use\x20this\x20to\x20build\x20the\x20field→query→semantics\x20map\x20BEFORE\x20writing\x20Guard\x20trees\x20—\x20and\x20prefer\x20NAME\x20references:\x20a\x20numeric\x20id\x20is\x20resolved\x20verbatim,\x20so\x20a\x20wrong-but-existing\x20id\x20silently\x20checks\x20a\x20different\x20field).'),'name':z['string']()['optional']()['describe']('Schema/tool\x20name\x20for\x20\x27get\x27/\x27get_output\x27/\x27get_field\x27/\x27get_tool_reference\x27\x20action\x20(e.g.,\x20\x27onchain_operations\x27,\x20\x27onchain_operations_machine\x27),\x20or\x20pattern\x20id\x20for\x20\x27get_guard_design_patterns\x27\x20(e.g.,\x20\x27pattern.identity_check_allowlist\x27).'),'query':z['string']()['optional']()['describe']('Search\x20query\x20for\x20\x27search\x27\x20action,\x20keyword\x20filter\x20for\x20\x27get_tool_reference\x27,\x20or\x20host\x20filter\x20for\x20\x27get_guard_design_patterns\x27\x20(e.g.\x20\x27service_buy_guard\x27,\x20\x27machine_forward\x27,\x20\x27reward_claim\x27).'),'field_path':z['string']()['optional']()['describe']('Dot-separated\x20field\x20path\x20for\x20\x27get_field\x27\x20action\x20(e.g.\x20\x27data.node\x27,\x20\x27data.node.nodes.0.pairs\x27).\x20Navigates\x20schema.properties.*\x20and\x20schema.items.*.'),'template':z['string']()['optional']()['describe']('Guard\x20template\x20name\x20for\x20\x27get_guard_templates\x27\x20action.\x20Omit\x20to\x20list\x20all\x20available\x20templates.\x20Available:\x20signer_verification,\x20progress_node_check,\x20order_owner_verification,\x20service_belonging_check,\x20reward_not_claimed,\x20combined_reward_guard.\x20For\x20\x27get_templates\x27:\x20unified\x20template\x20id\x20(e.g.\x20\x27tpl_buy_guard_whitelist\x27,\x20\x27tpl_machine_ecommerce_standard\x27,\x20\x27T-S-01\x27,\x20\x27T-O-01\x27,\x20\x27first_order\x27).'),'object_type':z['enum'](['guard','machine','service','order','progress','arbitration','treasury','permission','passport','allocation','reward'])['optional']()['describe']('Object-type\x20filter\x20for\x20\x27get_templates\x27\x20list\x20mode\x20(e.g.\x20\x27guard\x27\x20lists\x20only\x20Guard\x20templates).'),'params':z['string']()['optional']()['describe']('JSON-encoded\x20parameter\x20object\x20for\x20\x27get_templates\x27\x20instantiation\x20mode\x20(e.g.\x20\x27{\x22whitelist\x22:[\x220xabc\x22]}\x27).\x20Required\x20params\x20are\x20declared\x20in\x20each\x20template\x27s\x20\x27parameters\x27\x20list\x20(see\x20detail\x20mode).'),'output_file':z['string']()['optional']()['describe']('When\x20set,\x20writes\x20the\x20response\x20data\x20to\x20this\x20file\x20path\x20(relative\x20to\x20cwd)\x20and\x20returns\x20the\x20path\x20instead\x20of\x20inline\x20data.\x20Use\x20for\x20large\x20schemas\x20that\x20would\x20be\x20truncated.\x20Prefer\x20workspace\x20paths\x20like\x20\x27.trae/tmp/schema.json\x27\x20so\x20the\x20Read\x20tool\x20can\x20access\x20them.'),'guard':z['union']([z['string'](),z['record'](z['string'](),z['unknown']())])['optional']()['describe']('Guard\x20for\x20\x27analyze_guard_semantics\x27\x20action.\x20THREE\x20accepted\x20forms:\x20(1)\x20Guard\x20JSON\x20object,\x20(2)\x20JSON-encoded\x20string\x20(the\x20guard2file\x20export\x20format:\x20{description?,\x20table:\x20[...],\x20root:\x20{...},\x20rely?,\x20binding_hint?}),\x20(3)\x20an\x20on-chain\x20Guard\x20ADDRESS\x20(0x...)\x20or\x20LocalMark\x20name\x20—\x20loaded\x20from\x20chain\x20automatically.\x20Forms\x20(1)/(2)\x20analyze\x20a\x20local\x20definition;\x20form\x20(3)\x20analyzes\x20the\x20LIVE\x20on-chain\x20Guard.'),'binding':z['enum'](['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport','custom'])['optional']()['describe']('Optional\x20business-slot\x20binding\x20for\x20\x27analyze_guard_semantics\x27\x20(G1).\x20When\x20set,\x20the\x20analysis\x20includes\x20the\x20slot\x27s\x20business\x20semantics\x20(what\x20the\x20Guard\x20means,\x20what\x20your\x20submission\x20means,\x20pass/fail\x20consequences,\x20stakes).\x20E.g.\x20\x27buy\x27\x20for\x20a\x20Service.buy_guard,\x20\x27forward\x27\x20for\x20a\x20Machine\x20Forward.guard,\x20\x27allocate\x27\x20when\x20the\x20submission\x20identifies\x20a\x20payment\x20recipient.'),'network':z['enum'](['mainnet','testnet'])['optional']()['describe']('Network\x20for\x20\x27analyze_guard_semantics\x27\x20when\x20the\x20guard\x20is\x20given\x20as\x20an\x20on-chain\x20address/name\x20(G1).\x20Defaults\x20to\x20the\x20configured\x20network.'),'compare_with':z['string']()['optional']()['describe']('ROUND-TRIP\x20VERIFICATION\x20(ZR-32/BKN-P5):\x20an\x20on-chain\x20Guard\x20ADDRESS\x20or\x20LocalMark\x20name\x20to\x20diff\x20the\x20local\x20JSON\x20against.\x20When\x20set\x20(with\x20guard\x20given\x20as\x20JSON\x20forms\x201/2),\x20the\x20live\x20chain\x20Guard\x20is\x20loaded\x20and\x20structurally\x20diffed\x20(tree\x20node\x20census,\x20table\x20row\x20count,\x20per-slot\x20b_submission/value_type,\x20rely)\x20—\x20any\x20divergence\x20is\x20reported\x20as\x20an\x20ERROR\x20diagnostic\x20and\x20ready=false.\x20Guards\x20are\x20create-frozen,\x20so\x20this\x20is\x20the\x20only\x20way\x20to\x20prove\x20a\x20local\x20spec\x20still\x20matches\x20what\x20the\x20chain\x20actually\x20stored.')})['strict']();const SchemaListItemSchema=z['object']({'name':z['string']()['describe']('Schema/tool\x20identifier\x20(e.g.\x20\x27onchain_operations\x27).'),'title':z['string']()['optional']()['describe']('Human-readable\x20title,\x20if\x20known.'),'description':z['string']()['optional']()['describe']('Short\x20description,\x20if\x20known.')})['strict']();export const SchemaQueryOutputSchema=z['object']({'success':z['boolean']()['describe']('Whether\x20the\x20request\x20was\x20successful'),'action':z['string']()['describe']('The\x20action\x20that\x20was\x20performed'),'data':z['union']([z['array'](SchemaListItemSchema)['describe']('List\x20of\x20schema\x20summaries\x20(list/search/list_operations).'),z['record'](z['string'](),z['unknown']())['describe']('JSON\x20Schema\x20object\x20(get/get_output/get_field),\x20Guard\x20template\x20data,\x20tool\x20reference\x20data\x20(get_tool_reference),\x20Guard\x20design\x20pattern\x20catalog\x20(get_guard_design_patterns),\x20or\x20safety\x20rules\x20tables\x20(get_safety_rules).'),z['null']()['describe']('No\x20data\x20—\x20lookup\x20failed\x20or\x20returned\x20nothing,\x20or\x20data\x20was\x20written\x20to\x20output_file.')])['describe']('Response\x20data\x20—\x20array\x20of\x20schema\x20summaries\x20for\x20list-like\x20actions,\x20JSON\x20Schema\x20object\x20for\x20get/get_output/get_field,\x20Guard\x20template\x20data\x20for\x20get_guard_templates,\x20null\x20on\x20failure\x20or\x20when\x20output_file\x20is\x20used.'),'message':z['string']()['describe']('Human-readable\x20message\x20describing\x20the\x20result'),'suggestions':z['array'](z['string']())['optional']()['describe']('Suggested\x20next\x20steps\x20or\x20alternatives'),'output_file_path':z['string']()['optional']()['describe']('When\x20output_file\x20is\x20used,\x20contains\x20the\x20absolute\x20file\x20path\x20where\x20data\x20was\x20written.')})['strict']();
@@ -1 +1 @@
1
- import*as a420a from'@wowok/wowok';const SDK_SCHEMA_VERSION=a420a['SCHEMA_VERSION']??'1.0.0',checkSchemaCompatibility=a420a['checkSchemaCompatibility']??((a,b)=>({'compatible':!![]}));export const MCP_SCHEMA_VERSION='1.1.0';export function getSchemaVersions(){return{'sdk':SDK_SCHEMA_VERSION,'mcp':MCP_SCHEMA_VERSION};}export function checkClientSchemaCompatibility(a,b={}){const c=getSchemaVersions(),d={'compatible':!![],'warnings':[],'errors':[],'versions':c,'client_version':a};if(!a)return d;const e=checkSchemaCompatibility(a,c['sdk']);if(!e['compatible']){d['compatible']=![];const g='SDK\x20schema\x20incompatibility:\x20'+e['reason'];b['mode']==='strict'?d['errors']['push'](g):d['warnings']['push'](g);}const f=checkSchemaCompatibility(a,c['mcp']);if(!f['compatible']){d['compatible']=![];const h='MCP\x20schema\x20incompatibility:\x20'+f['reason'];b['mode']==='strict'?d['errors']['push'](h):d['warnings']['push'](h);}return d;}export function attachSchemaWarning(a,b){if(b['warnings']['length']===0x0&&b['errors']['length']===0x0)return a;const c=[];b['warnings']['length']>0x0&&c['push'](...b['warnings']);b['errors']['length']>0x0&&c['push'](...b['errors']);const d=a['semantic']?{...a['semantic'],'warnings':[...a['semantic']['warnings']||[],...c]}:undefined;return{...a,'semantic':d,'schema_warning':{'compatible':b['compatible'],'warnings':c,'client_version':b['client_version'],'server_versions':b['versions']}};}
1
+ import*as a423a from'@wowok/wowok';const SDK_SCHEMA_VERSION=a423a['SCHEMA_VERSION']??'1.0.0',checkSchemaCompatibility=a423a['checkSchemaCompatibility']??((a,b)=>({'compatible':!![]}));export const MCP_SCHEMA_VERSION='1.1.0';export function getSchemaVersions(){return{'sdk':SDK_SCHEMA_VERSION,'mcp':MCP_SCHEMA_VERSION};}export function checkClientSchemaCompatibility(a,b={}){const c=getSchemaVersions(),d={'compatible':!![],'warnings':[],'errors':[],'versions':c,'client_version':a};if(!a)return d;const e=checkSchemaCompatibility(a,c['sdk']);if(!e['compatible']){d['compatible']=![];const g='SDK\x20schema\x20incompatibility:\x20'+e['reason'];b['mode']==='strict'?d['errors']['push'](g):d['warnings']['push'](g);}const f=checkSchemaCompatibility(a,c['mcp']);if(!f['compatible']){d['compatible']=![];const h='MCP\x20schema\x20incompatibility:\x20'+f['reason'];b['mode']==='strict'?d['errors']['push'](h):d['warnings']['push'](h);}return d;}export function attachSchemaWarning(a,b){if(b['warnings']['length']===0x0&&b['errors']['length']===0x0)return a;const c=[];b['warnings']['length']>0x0&&c['push'](...b['warnings']);b['errors']['length']>0x0&&c['push'](...b['errors']);const d=a['semantic']?{...a['semantic'],'warnings':[...a['semantic']['warnings']||[],...c]}:undefined;return{...a,'semantic':d,'schema_warning':{'compatible':b['compatible'],'warnings':c,'client_version':b['client_version'],'server_versions':b['versions']}};}
@@ -15,12 +15,14 @@ export interface IndexAuthorizationStatus {
15
15
  index: number;
16
16
  authorized: boolean;
17
17
  entityCount: number;
18
+ verified: boolean;
18
19
  }
19
20
  export interface PermissionAuthorizationReport {
20
21
  statuses: IndexAuthorizationStatus[];
21
22
  missingIndexes: number[];
22
23
  authorizedIndexes: number[];
23
24
  allAuthorized: boolean;
25
+ allVerified: boolean;
24
26
  summary: string;
25
27
  }
26
28
  export declare function collectPermissionIndexes(nodes: Array<{
@@ -1 +1 @@
1
- export function collectPermissionIndexes(a){const b=[],c=[],d=[],e=new Set();for(const f of a){if(!f['pairs'])continue;for(const g of f['pairs']){if(!g['forwards'])continue;for(const h of g['forwards']){const i={'nodeName':f['name'],'prevNode':g['prev_node'],'forwardName':h['name'],'permissionIndex':h['permissionIndex']??null,'namedOperator':h['namedOperator']??null};if(i['permissionIndex']!=null)b['push'](i),e['add'](i['permissionIndex']);else i['namedOperator']!=null?c['push'](i):d['push'](i);}}}return{'indexRefs':b,'namedRefs':c,'missingRefs':d,'requiredIndexes':Array['from'](e)['sort']((j,k)=>j-k)};}export function checkPermissionAuthorization(a,b){const c=0x3e8,d=[],e=[],f=[];for(const i of a){if(i<c){d['push']({'index':i,'authorized':!![],'entityCount':-0x1}),f['push'](i);continue;}let j=![],k=0x0;if(b?.['entityPermissions']){for(const l of b['entityPermissions']['values']()){l['includes'](i)&&k++;}j=k>0x0;}else b?.['perm_remark']&&b['perm_remark']['length']>0x0?(j=b['perm_remark']['some'](m=>m['index']===i),k=j?-0x1:0x0):(j=!![],k=-0x1);d['push']({'index':i,'authorized':j,'entityCount':k}),j?f['push'](i):e['push'](i);}const g=e['length']===0x0,h=g?'All\x20'+a['length']+'\x20required\x20permission\x20index(es)\x20are\x20authorized.':e['length']+'/'+a['length']+'\x20required\x20permission\x20index(es)\x20are\x20NOT\x20authorized:\x20['+e['join'](',\x20')+'].\x20'+'Forwards\x20using\x20these\x20indexes\x20will\x20be\x20un-executable\x20—\x20Progress\x20will\x20be\x20stuck.\x20'+'Grant\x20entities\x20for\x20these\x20indexes\x20via\x20permission.op=\x22add\x20perm\x20by\x20index\x22\x20before\x20publishing\x20the\x20Machine.';return{'statuses':d,'missingIndexes':e,'authorizedIndexes':f,'allAuthorized':g,'summary':h};}export function formatPermissionWarning(a){if(a['allAuthorized'])return'';const b=['CRITICAL\x20PRE-PUBLISH:\x20Machine\x20forwards\x20reference\x20permission\x20indexes\x20that\x20are\x20NOT\x20authorized\x20in\x20the\x20Permission\x20object.','','Missing\x20indexes\x20(no\x20entities\x20granted):\x20'+a['missingIndexes']['join'](',\x20'),'','Impact:\x20Forwards\x20using\x20these\x20indexes\x20can\x20NEVER\x20be\x20executed\x20—\x20Progress\x20will\x20be\x20permanently\x20stuck\x20at\x20the\x20source\x20node.','Buyer\x20funds\x20may\x20be\x20trapped\x20if\x20the\x20workflow\x20cannot\x20advance\x20past\x20the\x20stuck\x20node.','','To\x20fix\x20BEFORE\x20publishing:','\x20\x201.\x20Call\x20onchain_operations\x20with\x20op=\x22permission\x22','\x20\x202.\x20Set\x20object=<your_permission_name_or_address>','\x20\x203.\x20Set\x20permission.op=\x22add\x20perm\x20by\x20index\x22','\x20\x204.\x20Set\x20index=<missing_index>\x20for\x20each\x20missing\x20index','\x20\x205.\x20Set\x20entity=[\x22<entity_address>\x22]\x20—\x20the\x20address\x20that\x20should\x20be\x20authorized','\x20\x206.\x20After\x20granting\x20all\x20missing\x20indexes,\x20re-attempt\x20the\x20Machine\x20publish.','','Required\x20permission\x20indexes\x20for\x20this\x20Machine:'];for(const c of a['statuses']){const d=c['authorized']?'AUTHORIZED':'MISSING',e=c['entityCount']===-0x1?'(built-in\x20or\x20heuristic)':'('+c['entityCount']+'\x20entity/entities)';b['push']('\x20\x20-\x20Index\x20'+c['index']+':\x20'+d+'\x20'+e);}return b['join']('\x0a');}
1
+ export function collectPermissionIndexes(a){const b=[],c=[],d=[],e=new Set();for(const f of a){if(!f['pairs'])continue;for(const g of f['pairs']){if(!g['forwards'])continue;for(const h of g['forwards']){const i={'nodeName':f['name'],'prevNode':g['prev_node'],'forwardName':h['name'],'permissionIndex':h['permissionIndex']??null,'namedOperator':h['namedOperator']??null};if(i['permissionIndex']!=null)b['push'](i),e['add'](i['permissionIndex']);else i['namedOperator']!=null?c['push'](i):d['push'](i);}}}return{'indexRefs':b,'namedRefs':c,'missingRefs':d,'requiredIndexes':Array['from'](e)['sort']((j,k)=>j-k)};}export function checkPermissionAuthorization(a,b){const c=0x3e8,d=[],e=[],f=[];let g=!![];for(const k of a){if(k<c){d['push']({'index':k,'authorized':!![],'entityCount':-0x1,'verified':!![]}),f['push'](k);continue;}let l=![],m=0x0,n=!![];if(b?.['entityPermissions']){for(const o of b['entityPermissions']['values']()){o['includes'](k)&&m++;}l=m>0x0;}else b?.['perm_remark']&&b['perm_remark']['length']>0x0?(l=b['perm_remark']['some'](p=>p['index']===k),m=l?-0x1:0x0,n=![],g=![]):(l=!![],m=-0x1,n=![],g=![]);d['push']({'index':k,'authorized':l,'entityCount':m,'verified':n}),l?f['push'](k):e['push'](k);}const h=e['length']===0x0,i=d['filter'](p=>!p['verified'])['map'](p=>p['index']),j=!h?e['length']+'/'+a['length']+'\x20required\x20permission\x20index(es)\x20are\x20NOT\x20authorized:\x20['+e['join'](',\x20')+'].\x20'+'Forwards\x20using\x20these\x20indexes\x20will\x20be\x20un-executable\x20—\x20Progress\x20will\x20be\x20stuck.\x20'+'Grant\x20entities\x20for\x20these\x20indexes\x20via\x20permission.op=\x22add\x20perm\x20by\x20index\x22\x20before\x20publishing\x20the\x20Machine.':i['length']>0x0?'COULD\x20NOT\x20VERIFY\x20'+i['length']+'\x20of\x20'+a['length']+'\x20required\x20permission\x20index(es):\x20['+i['join'](',\x20')+']\x20'+'(the\x20PermissionPerm\x20entity\x20table\x20was\x20not\x20readable).\x20They\x20are\x20NOT\x20confirmed\x20authorized\x20—\x20a\x20publish\x20with\x20zero\x20grants\x20'+'ships\x20dead\x20rails.\x20Grant\x20entities\x20for\x20every\x20custom\x20index\x20via\x20permission.op=\x22add\x20perm\x20by\x20index\x22,\x20or\x20re-check\x20with\x20'+'onchain_table\x20listing\x20the\x20Permission\x27s\x20perm\x20entries\x20before\x20publishing.':'All\x20'+a['length']+'\x20required\x20permission\x20index(es)\x20are\x20authorized\x20(verified\x20against\x20the\x20PermissionPerm\x20entity\x20table).';return{'statuses':d,'missingIndexes':e,'authorizedIndexes':f,'allAuthorized':h,'allVerified':g,'summary':j};}export function formatPermissionWarning(a){if(a['allAuthorized']&&a['allVerified'])return'';if(a['allAuthorized']&&!a['allVerified'])return'PRE-PUBLISH\x20WARNING\x20(unverified):\x20'+a['summary']+'\x0a';const b=['CRITICAL\x20PRE-PUBLISH:\x20Machine\x20forwards\x20reference\x20permission\x20indexes\x20that\x20are\x20NOT\x20authorized\x20in\x20the\x20Permission\x20object.','','Missing\x20indexes\x20(no\x20entities\x20granted):\x20'+a['missingIndexes']['join'](',\x20'),'','Impact:\x20Forwards\x20using\x20these\x20indexes\x20can\x20NEVER\x20be\x20executed\x20—\x20Progress\x20will\x20be\x20permanently\x20stuck\x20at\x20the\x20source\x20node.','Buyer\x20funds\x20may\x20be\x20trapped\x20if\x20the\x20workflow\x20cannot\x20advance\x20past\x20the\x20stuck\x20node.','','To\x20fix\x20BEFORE\x20publishing:','\x20\x201.\x20Call\x20onchain_operations\x20with\x20op=\x22permission\x22','\x20\x202.\x20Set\x20object=<your_permission_name_or_address>','\x20\x203.\x20Set\x20permission.op=\x22add\x20perm\x20by\x20index\x22','\x20\x204.\x20Set\x20index=<missing_index>\x20for\x20each\x20missing\x20index','\x20\x205.\x20Set\x20entity=[\x22<entity_address>\x22]\x20—\x20the\x20address\x20that\x20should\x20be\x20authorized','\x20\x206.\x20After\x20granting\x20all\x20missing\x20indexes,\x20re-attempt\x20the\x20Machine\x20publish.','','Required\x20permission\x20indexes\x20for\x20this\x20Machine:'];for(const c of a['statuses']){const d=!c['verified']?'UNVERIFIED':c['authorized']?'AUTHORIZED':'MISSING',e=c['entityCount']===-0x1?'(built-in\x20or\x20heuristic)':'('+c['entityCount']+'\x20entity/entities)';b['push']('\x20\x20-\x20Index\x20'+c['index']+':\x20'+d+'\x20'+e);}return b['join']('\x0a');}
@@ -113,7 +113,7 @@ export declare const WorkflowOperationInputSchema: z.ZodDiscriminatedUnion<[z.Zo
113
113
  submission: z.ZodArray<z.ZodObject<{
114
114
  identifier: z.ZodNumber;
115
115
  b_submission: z.ZodBoolean;
116
- value_type: z.ZodUnion<readonly [z.ZodLiteral<import("@wowok/wowok").ValueType.Bool>, z.ZodLiteral<import("@wowok/wowok").ValueType.Address>, z.ZodLiteral<import("@wowok/wowok").ValueType.String>, z.ZodLiteral<import("@wowok/wowok").ValueType.U8>, z.ZodLiteral<import("@wowok/wowok").ValueType.U16>, z.ZodLiteral<import("@wowok/wowok").ValueType.U32>, z.ZodLiteral<import("@wowok/wowok").ValueType.U64>, z.ZodLiteral<import("@wowok/wowok").ValueType.U128>, z.ZodLiteral<import("@wowok/wowok").ValueType.U256>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecBool>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecAddress>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecString>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU8>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU16>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU32>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU64>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU128>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU256>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecVecU8>, z.ZodLiteral<"Bool">, z.ZodLiteral<"Address">, z.ZodLiteral<"String">, z.ZodLiteral<"U8">, z.ZodLiteral<"U16">, z.ZodLiteral<"U32">, z.ZodLiteral<"U64">, z.ZodLiteral<"U128">, z.ZodLiteral<"U256">, z.ZodLiteral<"VecBool">, z.ZodLiteral<"VecAddress">, z.ZodLiteral<"VecString">, z.ZodLiteral<"VecU8">, z.ZodLiteral<"VecU16">, z.ZodLiteral<"VecU32">, z.ZodLiteral<"VecU64">, z.ZodLiteral<"VecU128">, z.ZodLiteral<"VecU256">, z.ZodLiteral<"VecVecU8">, z.ZodLiteral<"bool">, z.ZodLiteral<"address">, z.ZodLiteral<"string">, z.ZodLiteral<"u8">, z.ZodLiteral<"u16">, z.ZodLiteral<"u32">, z.ZodLiteral<"u64">, z.ZodLiteral<"u128">, z.ZodLiteral<"u256">, z.ZodLiteral<"vecbool">, z.ZodLiteral<"vecaddress">, z.ZodLiteral<"vecstring">, z.ZodLiteral<"vecu8">, z.ZodLiteral<"vecu16">, z.ZodLiteral<"vecu32">, z.ZodLiteral<"vecu64">, z.ZodLiteral<"vecu128">, z.ZodLiteral<"vecu256">, z.ZodLiteral<"vecvecu8">]>;
116
+ value_type: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodLiteral<import("@wowok/wowok").ValueType.Bool>, z.ZodLiteral<import("@wowok/wowok").ValueType.Address>, z.ZodLiteral<import("@wowok/wowok").ValueType.String>, z.ZodLiteral<import("@wowok/wowok").ValueType.U8>, z.ZodLiteral<import("@wowok/wowok").ValueType.U16>, z.ZodLiteral<import("@wowok/wowok").ValueType.U32>, z.ZodLiteral<import("@wowok/wowok").ValueType.U64>, z.ZodLiteral<import("@wowok/wowok").ValueType.U128>, z.ZodLiteral<import("@wowok/wowok").ValueType.U256>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecBool>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecAddress>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecString>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU8>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU16>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU32>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU64>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU128>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecU256>, z.ZodLiteral<import("@wowok/wowok").ValueType.VecVecU8>, z.ZodLiteral<"Bool">, z.ZodLiteral<"Address">, z.ZodLiteral<"String">, z.ZodLiteral<"U8">, z.ZodLiteral<"U16">, z.ZodLiteral<"U32">, z.ZodLiteral<"U64">, z.ZodLiteral<"U128">, z.ZodLiteral<"U256">, z.ZodLiteral<"VecBool">, z.ZodLiteral<"VecAddress">, z.ZodLiteral<"VecString">, z.ZodLiteral<"VecU8">, z.ZodLiteral<"VecU16">, z.ZodLiteral<"VecU32">, z.ZodLiteral<"VecU64">, z.ZodLiteral<"VecU128">, z.ZodLiteral<"VecU256">, z.ZodLiteral<"VecVecU8">, z.ZodLiteral<"bool">, z.ZodLiteral<"address">, z.ZodLiteral<"string">, z.ZodLiteral<"u8">, z.ZodLiteral<"u16">, z.ZodLiteral<"u32">, z.ZodLiteral<"u64">, z.ZodLiteral<"u128">, z.ZodLiteral<"u256">, z.ZodLiteral<"vecbool">, z.ZodLiteral<"vecaddress">, z.ZodLiteral<"vecstring">, z.ZodLiteral<"vecu8">, z.ZodLiteral<"vecu16">, z.ZodLiteral<"vecu32">, z.ZodLiteral<"vecu64">, z.ZodLiteral<"vecu128">, z.ZodLiteral<"vecu256">, z.ZodLiteral<"vecvecu8">]>>;
117
117
  value: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodUnion<readonly [z.ZodObject<{
118
118
  name_or_address: z.ZodOptional<z.ZodString>;
119
119
  local_mark_first: z.ZodOptional<z.ZodBoolean>;
@@ -8,7 +8,7 @@ export interface SchemaInfo {
8
8
  outputPath?: string;
9
9
  }
10
10
  export interface SchemaQueryRequest {
11
- action: "list" | "get" | "search" | "list_operations" | "get_output" | "get_guard_templates" | "get_field" | "get_tool_reference" | "get_guard_design_patterns" | "get_safety_rules" | "get_templates";
11
+ action: "list" | "get" | "search" | "list_operations" | "get_output" | "get_guard_templates" | "get_field" | "get_tool_reference" | "get_guard_design_patterns" | "get_safety_rules" | "get_templates" | "get_guard_queries";
12
12
  name?: string;
13
13
  query?: string;
14
14
  field_path?: string;
@@ -1 +1 @@
1
- import{readFileSync,existsSync,writeFileSync,mkdirSync}from'fs';import{resolve,join,dirname}from'path';import{fileURLToPath}from'url';import{TOOLS_REFERENCE,getToolReference,searchToolReference,getToolSequence}from'../knowledge/tools-reference.js';import{GUARD_DESIGN_PATTERNS,getGuardDesignPattern,GUARD_DESIGN_PATTERNS_VERSION,GUARD_SCHEMA_NOTES}from'../knowledge/guard-design-patterns.js';import{OBJECT_REUSE_RULES,CREATE_VS_MODIFY_PATTERN,IMMUTABILITY_RULES,PROTOCOL_SLOT_RULES,OPERATION_TYPE_CLASSIFICATION,OPERATION_CLASS_META,NAMING_CONVENTIONS,SAFETY_RULES_VERSION}from'../knowledge/safety-rules.js';import{listTemplates as a432a,getTemplateDetail,instantiateTemplate,getTemplateCounts,TEMPLATE_OBJECT_TYPES}from'../knowledge/template-registry.js';import{lintGuard,formatLintResult}from'../knowledge/guard-lint.js';import{renderGuardTreeIndented,renderGuardMermaid,walkGuardTree}from'../knowledge/guard-render.js';import{getGuardQueryByIdOrName}from'../schema/utils/guard-query-utils.js';const __filename=fileURLToPath(import.meta.url),__dirname=fileURLToPath(new URL('.',import.meta.url)),SCHEMAS_DIR=resolve(__dirname,'../../dist/schemas'),GUARD_TEMPLATES_PATH_SCRIPTS=resolve(__dirname,'../../scripts/guard-templates.json'),GUARD_TEMPLATES_PATH_DIST=resolve(__dirname,'../../dist/schemas/guard-templates.json'),GUARD_TEMPLATES_PATH=existsSync(GUARD_TEMPLATES_PATH_SCRIPTS)?GUARD_TEMPLATES_PATH_SCRIPTS:GUARD_TEMPLATES_PATH_DIST,WORKSPACE_TMP_DIR=resolve(process['cwd'](),'.trae','tmp');export function areSchemasAvailable(){return existsSync(SCHEMAS_DIR)&&existsSync(join(SCHEMAS_DIR,'index.json'));}export function getSchemaIndex(){try{const a=join(SCHEMAS_DIR,'index.json');if(!existsSync(a))return null;const b=readFileSync(a,'utf-8');return JSON['parse'](b);}catch{return null;}}export function listSchemas(){const a=getSchemaIndex();if(!a)return[];return[...a['tools']||[],...a['operations']||[]];}export function getSchema(a){try{let b=join(SCHEMAS_DIR,a+'.schema.json');!existsSync(b)&&(b=join(SCHEMAS_DIR,a+'.json'));if(!existsSync(b))return null;const c=readFileSync(b,'utf-8'),d=JSON['parse'](c);return resolveSchemaRefs(d);}catch{return null;}}export function getOutputSchema(a){try{const b=join(SCHEMAS_DIR,a+'.output.json');if(!existsSync(b))return null;const c=readFileSync(b,'utf-8'),d=JSON['parse'](c);return resolveSchemaRefs(d);}catch{return null;}}export function getGuardTemplates(a){try{if(!existsSync(GUARD_TEMPLATES_PATH))return null;const b=readFileSync(GUARD_TEMPLATES_PATH,'utf-8'),c=JSON['parse'](b);if(!a)return{'version':c['version'],'description':c['description'],'templates':(c['templates']||[])['map'](e=>({'name':e['name'],'title':e['title'],'description':e['description'],'use_case':e['use_case']})),'query_reference':c['query_reference'],'node_return_types':c['node_return_types']};const d=(c['templates']||[])['find'](e=>e['name']===a);if(!d)return null;return d;}catch{return null;}}export function getSchemaField(a,b){const c=getSchema(a);if(!c)return null;const d=b['split']('.')['filter'](Boolean);let e=c;for(const f of d){if(!e||typeof e!=='object')return null;if(e['properties']&&f in e['properties']){e=e['properties'][f];continue;}if(e['items']&&typeof e['items']==='object'){if(/^\d+$/['test'](f)){e=e['items'];continue;}if(e['items']['properties']&&f in e['items']['properties']){e=e['items']['properties'][f];continue;}}if(Array['isArray'](e['oneOf'])||Array['isArray'](e['anyOf'])){const g=e['oneOf']??e['anyOf'];for(const h of g){if(h&&typeof h==='object'&&h['properties']&&f in h['properties']){e=h['properties'][f];break;}}continue;}if(f in e){e=e[f];continue;}return null;}return e;}function resolveSchemaRefs(a,b=new Set()){if(!a||typeof a!=='object')return a;if(Array['isArray'](a))return a['map'](d=>resolveSchemaRefs(d,b));const c={};for(const [d,e]of Object['entries'](a)){if(d==='$ref'&&typeof e==='string'){if(e['startsWith']('#'))c[d]=e;else{const f=loadRefSchema(e,b);f&&Object['assign'](c,resolveSchemaRefs(f,b));}}else typeof e==='object'?c[d]=resolveSchemaRefs(e,b):c[d]=e;}return c;}function loadRefSchema(a,b){if(a['startsWith']('#'))return null;if(b['has'](a))return{'description':'Circular\x20reference\x20to\x20'+a};b['add'](a);try{const c=join(SCHEMAS_DIR,a);if(!existsSync(c))return null;const d=readFileSync(c,'utf-8');return JSON['parse'](d);}catch{return null;}}export function searchSchemas(a){const b=listSchemas(),c=a['toLowerCase']();return b['filter'](d=>{const e=d['name']['toLowerCase']()['includes'](c),f=d['title']?.['toLowerCase']()['includes'](c),g=d['description']?.['toLowerCase']()['includes'](c);return e||f||g;});}export function listOperations(){const a=getSchemaIndex();if(!a)return[];return(a['operations']||[])['filter'](b=>b['name']['startsWith']('onchain_operations_'));}function writeResponseToFile(a,b){try{let c;if(b)c=resolve(process['cwd'](),b);else{!existsSync(WORKSPACE_TMP_DIR)&&mkdirSync(WORKSPACE_TMP_DIR,{'recursive':!![]});const g=Date['now']();c=join(WORKSPACE_TMP_DIR,'schema-'+g+'.json');}const d=dirname(c);!existsSync(d)&&mkdirSync(d,{'recursive':!![]});const f=typeof a==='string'?a:JSON['stringify'](a,null,0x2);return writeFileSync(c,f,'utf-8'),c;}catch(h){return null;}}const INLINE_CHAR_LIMIT=0x20*0x400,AUTO_OVERFLOW_DIR='.wowok/tmp';function unionVariantLabel(a){if(!a||typeof a!=='object')return'variant';const b=a['properties']&&typeof a['properties']==='object'?a['properties']:undefined;if(b)for(const [c,d]of Object['entries'](b)){if(d&&typeof d==='object'&&d['const']!==undefined)return c+'='+String(d['const']);}return typeof a['title']==='string'?a['title']:'variant';}export function buildSchemaSummary(a){const b=[];a&&typeof a['title']==='string'&&b['push']('Title:\x20'+a['title']);const c=a&&typeof a==='object'?a['properties']:undefined;if(c&&typeof c==='object'&&!Array['isArray'](c)){const d=Array['isArray'](a['required'])?a['required']:[],e=Object['keys'](c);b['push']('Top-level\x20fields\x20('+e['length']+',\x20*\x20=\x20required):');for(const f of e['slice'](0x0,0x28)){const g=c[f]??{},h=Array['isArray'](g['type'])?g['type']['join']('|'):g['type']??(g['$ref']?'ref':g['anyOf']||g['oneOf']?'union':'any'),i=d['includes'](f)?'*':'',j=typeof g['description']==='string'&&g['description']['length']>0x0?'\x20—\x20'+g['description']['split']('\x0a')[0x0]['slice'](0x0,0x50):'';b['push']('\x20\x20-\x20'+f+i+':\x20'+h+j);}e['length']>0x28&&b['push']('\x20\x20-\x20...and\x20'+(e['length']-0x28)+'\x20more\x20—\x20use\x20action=\x27get_field\x27\x20with\x20field_path\x20to\x20inspect');}else{if(a&&(Array['isArray'](a['oneOf'])||Array['isArray'](a['anyOf']))){const k=a['oneOf']??a['anyOf'];b['push']('Union\x20of\x20'+k['length']+'\x20variants:');for(const m of k['slice'](0x0,0x28)){const o=m&&typeof m['description']==='string'&&m['description']['length']>0x0?'\x20—\x20'+m['description']['split']('\x0a')[0x0]['slice'](0x0,0x50):'';b['push']('\x20\x20-\x20'+unionVariantLabel(m)+o);}k['length']>0x28&&b['push']('\x20\x20-\x20...and\x20'+(k['length']-0x28)+'\x20more');const l=k['filter'](q=>q&&typeof q==='object'&&q['properties']&&typeof q['properties']==='object');if(l['length']===k['length']&&l['length']>0x0){const q=Object['keys'](l[0x0]['properties'])['filter'](r=>l['every'](s=>Object['prototype']['hasOwnProperty']['call'](s['properties'],r)));b['push'](q['length']>0x0?'Common\x20fields\x20(declared\x20by\x20ALL\x20'+l['length']+'\x20variants):\x20'+q['join'](',\x20')+'.':'No\x20field\x20is\x20declared\x20by\x20all\x20'+l['length']+'\x20variants\x20—\x20each\x20variant\x20takes\x20its\x20own\x20parameters.');}else b['push']('Field\x20names\x20differ\x20per\x20variant\x20—\x20read\x20the\x20variant\x27s\x20own\x20list\x20above.\x20'+'The\x20discriminator\x20(\x22operation\x22\x20and\x20friends)\x20is\x20the\x20only\x20shared\x20key.');for(const r of k['slice'](0x0,0x28)){const s=r&&typeof r==='object'&&r['properties']&&typeof r['properties']==='object'?Object['keys'](r['properties']):[];if(s['length']===0x0)continue;b['push']('\x20\x20\x20\x20'+unionVariantLabel(r)+'\x20fields:\x20'+s['join'](',\x20'));}b['push']('Drill\x20into\x20the\x20variant\x20you\x20need\x20with\x20action=\x27get_field\x27\x20(name\x20+\x20field_path)\x20—\x20the\x20lists\x20above\x20are\x20a\x20summary,\x20not\x20the\x20schema.');}else b['push']('No\x20top-level\x20properties\x20map\x20—\x20use\x20action=\x27get_field\x27\x20with\x20a\x20field_path\x20to\x20inspect\x20this\x20schema.');}return b['join']('\x0a');}export function autoOverflowToFile(a,b){try{const c=JSON['stringify'](a)['length'];if(c<=INLINE_CHAR_LIMIT)return null;const d=process['env']['WOWOK_SCHEMA_TMP_DIR'],e=d?resolve(d):resolve(process['cwd'](),AUTO_OVERFLOW_DIR);!existsSync(e)&&mkdirSync(e,{'recursive':!![]});const f=b['replace'](/[^a-zA-Z0-9_-]/g,'_'),g=f+'.schema.json',h=join(e,g);return writeFileSync(h,JSON['stringify'](a,null,0x2),'utf-8'),{'absolute_path':h,'relative_path':d?h:join(AUTO_OVERFLOW_DIR,g),'bytes':c,'summary':buildSchemaSummary(a)};}catch{return null;}}export function processSchemaQuery(a){const {action:b,name:c,query:d,field_path:f,template:g,output_file:h,object_type:i,params:j}=a;if(b==='get_guard_templates'){const k=getGuardTemplates(g);if(!k)return{'success':![],'action':b,'data':null,'message':g?'Guard\x20template\x20\x27'+g+'\x27\x20not\x20found.\x20Omit\x20\x27template\x27\x20to\x20list\x20all\x20available\x20templates.':'Guard\x20templates\x20file\x20not\x20found.\x20Ensure\x20scripts/guard-templates.json\x20exists.','suggestions':['Omit\x20\x27template\x27\x20to\x20list\x20all\x20available\x20templates.','Available\x20template\x20names:\x20signer_verification,\x20progress_node_check,\x20order_owner_verification,\x20service_belonging_check,\x20reward_not_claimed,\x20combined_reward_guard']};if(h){const l=writeResponseToFile(k,h);if(l)return{'success':!![],'action':b,'data':null,'message':'Guard\x20template'+(g?'\x20\x27'+g+'\x27':'s')+'\x20written\x20to\x20file:\x20'+l,'output_file_path':l,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+l]};}return{'success':!![],'action':b,'data':k,'message':g?'Retrieved\x20Guard\x20template:\x20'+g:'Retrieved\x20'+(Array['isArray'](k['templates'])?k['templates']['length']:0x0)+'\x20Guard\x20templates'};}if(b==='get_templates'){if(!g){const p=a432a(i),q=getTemplateCounts(),r={'total':p['length'],'filter':i??null,'counts_by_object_type':q,'templates':p};if(h){const s=writeResponseToFile(r,h);if(s)return{'success':!![],'action':b,'data':null,'message':p['length']+'\x20templates\x20written\x20to\x20file:\x20'+s,'output_file_path':s,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+s]};}return{'success':!![],'action':b,'data':r,'message':p['length']+'\x20template(s)'+(i?'\x20for\x20object_type=\x27'+i+'\x27':'')+'\x20'+('(total\x20registry:\x20'+Object['values'](q)['reduce']((t,u)=>t+u,0x0)+'\x20across\x20'+TEMPLATE_OBJECT_TYPES['length']+'\x20object\x20types).\x20')+'Provide\x20\x27template\x27\x20(id)\x20for\x20full\x20detail;\x20add\x20\x27params\x27\x20(JSON\x20string)\x20to\x20instantiate.'};}if(!j){const t=getTemplateDetail(g);if(!t)return{'success':![],'action':b,'data':null,'message':'Template\x20\x27'+g+'\x27\x20not\x20found\x20in\x20the\x20unified\x20registry.','suggestions':['Omit\x20\x27template\x27\x20to\x20list\x20all\x20template\x20metadata\x20(id\x20+\x20object_type\x20+\x20parameters).','Filter\x20by\x20object_type:\x20'+TEMPLATE_OBJECT_TYPES['join'](',\x20')]};if(h){const u=writeResponseToFile(t,h);if(u)return{'success':!![],'action':b,'data':null,'message':'Template\x20\x27'+g+'\x27\x20detail\x20written\x20to\x20file:\x20'+u,'output_file_path':u,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+u]};}return{'success':!![],'action':b,'data':t,'message':'Template\x20\x27'+g+'\x27\x20('+t['object_type']+',\x20'+(t['instantiable']?'instantiable':'guidance-only')+').\x20'+'To\x20instantiate,\x20call\x20again\x20with\x20\x27params\x27\x20=\x20JSON\x20object\x20of\x20the\x20declared\x20parameters.'};}let m;try{const v=JSON['parse'](j);if(!v||typeof v!=='object'||Array['isArray'](v))return{'success':![],'action':b,'data':null,'message':'\x27params\x27\x20must\x20be\x20a\x20JSON\x20object\x20(e.g.\x20\x27{\x22key\x22:\x22value\x22}\x27),\x20got\x20'+(Array['isArray'](v)?'array':typeof v)+'.'};m=v;}catch(w){return{'success':![],'action':b,'data':null,'message':'Failed\x20to\x20parse\x20\x27params\x27\x20as\x20JSON:\x20'+(w instanceof Error?w['message']:String(w)),'suggestions':['Example:\x20params=\x27{\x22whitelist\x22:[\x220xabc...\x22]}\x27']};}const n=instantiateTemplate(g,m);if(!n['ok'])return{'success':![],'action':b,'data':n['guidance']!==undefined?{'guidance':n['guidance']}:null,'message':'Instantiation\x20failed\x20for\x20\x27'+g+'\x27:\x20'+n['error'],'suggestions':n['missing_params']?['Missing\x20required\x20params:\x20'+n['missing_params']['join'](',\x20'),'Call\x20with\x20\x27template\x27\x20only\x20(no\x20\x27params\x27)\x20to\x20see\x20full\x20parameter\x20declarations.']:['Call\x20with\x20\x27template\x27\x20only\x20(no\x20\x27params\x27)\x20to\x20see\x20full\x20parameter\x20declarations.']};const o={'object_type':n['object_type'],'template_id':n['template_id'],'body':n['body'],...n['notes']?{'notes':n['notes']}:{}};if(h){const x=writeResponseToFile(o,h);if(x)return{'success':!![],'action':b,'data':null,'message':'Instantiated\x20template\x20\x27'+g+'\x27\x20written\x20to\x20file:\x20'+x,'output_file_path':x,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+x]};}return{'success':!![],'action':b,'data':o,'message':'Instantiated\x20\x27'+g+'\x27\x20('+n['object_type']+').\x20'+'Review\x20the\x20body\x20against\x20the\x20onchain_operations\x20schema\x20before\x20submitting.'};}if(b==='get_tool_reference'){if(c){const z=getToolReference(c);if(!z)return{'success':![],'action':b,'data':null,'message':'Tool\x20\x27'+c+'\x27\x20not\x20found\x20in\x20the\x20tool\x20reference.','suggestions':['Omit\x20\x27name\x27\x20to\x20list\x20all\x20tools.','Available\x20tools:\x20'+TOOLS_REFERENCE['map'](B=>B['name'])['join'](',\x20')]};const A=getToolSequence(c);return{'success':!![],'action':b,'data':{'tool':z,'call_sequence':A??null},'message':'Retrieved\x20tool\x20reference:\x20'+c};}if(d){const B=searchToolReference(d);return{'success':!![],'action':b,'data':{'tools':B,'count':B['length']},'message':'Found\x20'+B['length']+'\x20tool(s)\x20matching\x20\x27'+d+'\x27','suggestions':B['length']===0x0?['Try\x20a\x20broader\x20keyword\x20(e.g.\x20\x27onchain\x27,\x20\x27guard\x27,\x20\x27schema\x27),\x20or\x20omit\x20\x27query\x27\x20to\x20list\x20all\x20tools.']:undefined};}const y=TOOLS_REFERENCE['map'](C=>({'name':C['name'],'summary':C['summary'],'actions':C['actions']??[],'notes':C['notes']??[]}));return{'success':!![],'action':b,'data':{'tools':y,'count':y['length']},'message':'Retrieved\x20reference\x20for\x20'+y['length']+'\x20MCP\x20tools.\x20Pass\x20name=\x27<tool>\x27\x20for\x20full\x20detail\x20(params,\x20prerequisites,\x20follow-ups).'};}if(b==='get_guard_design_patterns'){if(c){const D=getGuardDesignPattern(c);if(!D)return{'success':![],'action':b,'data':null,'message':'Guard\x20design\x20pattern\x20\x27'+c+'\x27\x20not\x20found.','suggestions':['Omit\x20\x27name\x27\x20to\x20list\x20the\x20full\x20catalog.','Available\x20pattern\x20ids:\x20'+GUARD_DESIGN_PATTERNS['map'](E=>E['id'])['join'](',\x20')]};return{'success':!![],'action':b,'data':{'pattern':D},'message':'Retrieved\x20Guard\x20design\x20pattern:\x20'+c};}if(d){const E=GUARD_DESIGN_PATTERNS['filter'](G=>G['host']===d),F=E['length']>0x0?E:GUARD_DESIGN_PATTERNS['filter'](G=>G['business_requirement']['toLowerCase']()['includes'](d['toLowerCase']())||G['logic_summary']['toLowerCase']()['includes'](d['toLowerCase']()));return{'success':!![],'action':b,'data':{'patterns':F,'count':F['length'],'filtered_by':E['length']>0x0?'host':'keyword','schema_notes':GUARD_SCHEMA_NOTES},'message':'Found\x20'+F['length']+'\x20Guard\x20design\x20pattern(s)\x20matching\x20\x27'+d+'\x27','suggestions':F['length']===0x0?['Filter\x20by\x20host:\x20service_buy_guard,\x20service_allocator_guard,\x20machine_forward,\x20progress_submission,\x20reward_claim,\x20repository_write,\x20arbitration_usage,\x20arbitration_voting,\x20gen_passport']:undefined};}const C=GUARD_DESIGN_PATTERNS['map'](G=>({'id':G['id'],'business_requirement':G['business_requirement'],'host':G['host'],'data_source':G['data_source'],'verifier_level':G['verifier_level'],'logic_summary':G['logic_summary'],'key_queries':G['key_queries'],'notes':G['notes']??[]}));return{'success':!![],'action':b,'data':{'patterns':C,'count':C['length'],'version':GUARD_DESIGN_PATTERNS_VERSION,'schema_notes':GUARD_SCHEMA_NOTES},'message':'Retrieved\x20'+C['length']+'\x20Guard\x20design\x20patterns.\x20Pass\x20name=\x27<pattern_id>\x27\x20for\x20full\x20detail\x20(witness\x20types,\x20mitigated\x20risks,\x20industries).'};}if(b==='get_safety_rules')return{'success':!![],'action':b,'data':{'version':SAFETY_RULES_VERSION,'object_reuse_rules':OBJECT_REUSE_RULES,'create_vs_modify_pattern':CREATE_VS_MODIFY_PATTERN,'immutability_rules':IMMUTABILITY_RULES,'protocol_slot_rules':PROTOCOL_SLOT_RULES,'operation_type_classification':OPERATION_TYPE_CLASSIFICATION,'operation_class_meta':OPERATION_CLASS_META,'naming_conventions':NAMING_CONVENTIONS},'message':'Retrieved\x20safety\x20rule\x20tables\x20(reuse\x20/\x20immutability\x20/\x20protocol\x20slots\x20/\x20operation\x20classification\x20/\x20naming).\x20'+'Key\x20points:\x20prefer\x20REUSING\x20existing\x20objects\x20(string\x20reference\x20=\x20reuse,\x20object\x20shape\x20=\x20create);\x20'+'Machine\x20publish\x20locks\x20nodes/pairs/forwards,\x20Service\x20publish\x20locks\x20machine/order_allocators/arbitrations\x20(sales\x20stays\x20mutable);\x20'+'Guard\x20is\x20CREATE-only\x20immutable;\x20on-chain\x20writes\x20require\x20explicit\x20user\x20confirmation;\x20'+'Guards\x20bound\x20on\x20machine\x20forwards\x20MUST\x20declare\x20protocol\x20slot\x20254\x20(task\x20binding),\x20and\x20every\x20allocator\x20{GuardIdentifier:N}\x20leg\x20MUST\x20name\x20a\x20declared\x20b_submission\x20Address\x20slot.'};if(!areSchemasAvailable())return{'success':![],'action':b,'data':null,'message':'Schema\x20files\x20are\x20not\x20available.\x20Please\x20run\x20\x27npm\x20run\x20generate:schemas\x27\x20first.','suggestions':['Run\x20\x27npm\x20run\x20generate:schemas\x27\x20to\x20generate\x20schema\x20files','Ensure\x20the\x20dist/schemas\x20directory\x20exists']};switch(b){case'list':{const G=listSchemas();return{'success':!![],'action':b,'data':G,'message':'Found\x20'+G['length']+'\x20available\x20schemas'};}case'get':{if(!c)return{'success':![],'action':b,'data':null,'message':'Schema\x20name\x20is\x20required\x20for\x20\x27get\x27\x20action','suggestions':['Provide\x20a\x20schema\x20name','Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20schemas']};const H=getSchema(c);if(!H){const J=searchSchemas(c)['slice'](0x0,0x5);return{'success':![],'action':b,'data':null,'message':'Schema\x20\x27'+c+'\x27\x20not\x20found','suggestions':J['length']>0x0?J['map'](K=>'Did\x20you\x20mean:\x20'+K['name']+'?'):['Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20schemas']};}if(h){const K=writeResponseToFile(H,h);if(K)return{'success':!![],'action':b,'data':null,'message':'Schema\x20\x27'+c+'\x27\x20written\x20to\x20file:\x20'+K,'output_file_path':K,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+K]};}const I=autoOverflowToFile(H,c);if(I)return{'success':!![],'action':b,'data':null,'message':'Schema\x20\x27'+c+'\x27\x20is\x20large\x20('+Math['round'](I['bytes']/0x400)+'\x20KB)\x20—\x20'+'written\x20to\x20file\x20instead\x20of\x20inlining\x20to\x20protect\x20your\x20context.','output_file_path':I['absolute_path'],'inline_summary':I['summary'],'suggestions':['Read\x20the\x20full\x20file\x20with\x20the\x20Read\x20tool:\x20'+I['absolute_path'],'If\x20the\x20sandbox\x20blocks\x20that\x20path,\x20resolve\x20the\x20relative\x20path\x20\x27'+I['relative_path']+'\x27\x20against\x20the\x20workspace\x20root\x20and\x20read\x20that.','Without\x20file\x20access,\x20query\x20specific\x20fields\x20via\x20action=\x27get_field\x27\x20with\x20name=\x27'+c+'\x27\x20and\x20a\x20field_path\x20from\x20the\x20summary\x20below.']};return{'success':!![],'action':b,'data':H,'message':'Retrieved\x20schema:\x20'+c};}case'get_field':{if(!c||!f)return{'success':![],'action':b,'data':null,'message':'Both\x20\x27name\x27\x20and\x20\x27field_path\x27\x20are\x20required\x20for\x20\x27get_field\x27\x20action','suggestions':['Example:\x20{action:\x20\x27get_field\x27,\x20name:\x20\x27onchain_operations_machine\x27,\x20field_path:\x20\x27data.node\x27}','Use\x20\x27get\x27\x20action\x20to\x20retrieve\x20the\x20full\x20schema']};const L=getSchemaField(c,f);if(!L)return{'success':![],'action':b,'data':null,'message':'Field\x20path\x20\x27'+f+'\x27\x20not\x20found\x20in\x20schema\x20\x27'+c+'\x27','suggestions':['Check\x20the\x20field\x20path\x20(dot-separated,\x20e.g.\x20\x27data.node\x27)','Use\x20\x27get\x27\x20action\x20to\x20see\x20the\x20full\x20schema\x20structure']};return{'success':!![],'action':b,'data':L,'message':'Retrieved\x20field\x20\x27'+f+'\x27\x20from\x20schema\x20\x27'+c+'\x27'};}case'search':{if(!d)return{'success':![],'action':b,'data':null,'message':'Search\x20query\x20is\x20required\x20for\x20\x27search\x27\x20action'};const M=searchSchemas(d);return{'success':!![],'action':b,'data':M,'message':'Found\x20'+M['length']+'\x20schemas\x20matching\x20\x27'+d+'\x27'};}case'list_operations':{const N=listOperations();return{'success':!![],'action':b,'data':N,'message':'Found\x20'+N['length']+'\x20on-chain\x20operations'};}case'get_output':{if(!c)return{'success':![],'action':b,'data':null,'message':'Tool\x20name\x20is\x20required\x20for\x20\x27get_output\x27\x20action','suggestions':['Provide\x20a\x20tool\x20name','Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20tools\x20and\x20their\x20outputPath']};const O=getOutputSchema(c);if(!O){const Q=listSchemas(),R=Q['find'](T=>T['name']===c);if(R)return{'success':![],'action':b,'data':null,'message':'Tool\x20\x27'+c+'\x27\x20exists\x20but\x20has\x20no\x20output\x20schema\x20file.\x20The\x20tool\x20may\x20not\x20declare\x20an\x20outputSchema,\x20or\x20the\x20schema\x20file\x20was\x20not\x20generated.','suggestions':['Use\x20\x27get\x27\x20action\x20with\x20name=\x27'+c+'\x27\x20to\x20retrieve\x20its\x20input\x20schema']};const S=searchSchemas(c)['slice'](0x0,0x5);return{'success':![],'action':b,'data':null,'message':'Tool\x20\x27'+c+'\x27\x20not\x20found','suggestions':S['length']>0x0?S['map'](T=>'Did\x20you\x20mean:\x20'+T['name']+'?'):['Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20tools']};}if(h){const T=writeResponseToFile(O,h);if(T)return{'success':!![],'action':b,'data':null,'message':'Output\x20schema\x20\x27'+c+'\x27\x20written\x20to\x20file:\x20'+T,'output_file_path':T,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+T]};}const P=autoOverflowToFile(O,c);if(P)return{'success':!![],'action':b,'data':null,'message':'Output\x20schema\x20\x27'+c+'\x27\x20is\x20large\x20('+Math['round'](P['bytes']/0x400)+'\x20KB)\x20—\x20'+'written\x20to\x20file\x20instead\x20of\x20inlining\x20to\x20protect\x20your\x20context.','output_file_path':P['absolute_path'],'inline_summary':P['summary'],'suggestions':['Read\x20the\x20full\x20file\x20with\x20the\x20Read\x20tool:\x20'+P['absolute_path'],'If\x20the\x20sandbox\x20blocks\x20that\x20path,\x20resolve\x20the\x20relative\x20path\x20\x27'+P['relative_path']+'\x27\x20against\x20the\x20workspace\x20root\x20and\x20read\x20that.','Without\x20file\x20access,\x20query\x20specific\x20fields\x20via\x20action=\x27get_field\x27\x20with\x20name=\x27'+c+'\x27\x20and\x20a\x20field_path\x20from\x20the\x20summary\x20below.']};return{'success':!![],'action':b,'data':O,'message':'Retrieved\x20output\x20schema:\x20'+c};}default:return{'success':![],'action':b,'data':null,'message':'Unknown\x20action:\x20'+b,'suggestions':['Use\x20\x27list\x27,\x20\x27get\x27,\x20\x27get_field\x27,\x20\x27get_output\x27,\x20\x27search\x27,\x20\x27list_operations\x27,\x20\x27get_guard_templates\x27,\x20\x27get_tool_reference\x27,\x20\x27get_guard_design_patterns\x27,\x20\x27get_safety_rules\x27,\x20\x27get_templates\x27,\x20or\x20\x27analyze_guard_semantics\x27']};}}const GUARD_SEMANTICS_READING_CHECKLIST=['WHO\x20can\x20satisfy\x20this\x20Guard\x20(identity:\x20Signer\x20bindings,\x20Entity\x20membership,\x20allowlists)?','WHEN\x20can\x20it\x20be\x20satisfied\x20(time:\x20Clock\x20comparisons,\x20deadlines,\x20windows)?','WHAT\x20evidence\x20must\x20the\x20caller\x20submit\x20(b_submission\x20table\x20entries\x20—\x20Payment/Order/Proof\x20objects)?','WHICH\x20on-chain\x20data\x20does\x20it\x20read,\x20and\x20can\x20that\x20data\x20change\x20(Repository\x20entries\x20are\x20MUTABLE\x20—\x20who\x20controls\x20the\x20writes)?','WHAT\x20does\x20the\x20counterparty\x20gain/lose\x20in\x20each\x20branch\x20of\x20the\x20logic\x20tree?','ARE\x20there\x20error-level\x20diagnostics\x20or\x20critical\x20risks\x20(they\x20block\x20or\x20endanger\x20execution)?'];export async function analyzeGuardSemantics(a){const b=await lintGuard(a,{'auto_fix':![]}),c={'root':a['root'],'table':(a['table']??[])['map'](k=>({'identifier':k['identifier'],'name':k['name'],'value_type':k['value_type']??'Address','b_submission':k['b_submission']??![],'value':k['value']})),'guardName':a['description']??null,'rely':a['rely']??null},d=renderGuardTreeIndented(c),e=renderGuardMermaid(a['root']),f=new Set(),g=[];let h=![],i=![];walkGuardTree(a['root'],k=>{if(k['type']==='context'){if(k['context']==='Clock')h=!![];if(k['context']==='Signer')i=!![];}if(k['type']==='query'&&k['query']!==undefined&&k['query']!==null){if(typeof k['query']==='number'){const l=getGuardQueryByIdOrName(k['query']);if(l)f['add'](l['id']);else g['push'](k['query']);}else{const m=getGuardQueryByIdOrName(k['query']);if(m)f['add'](m['id']);else g['push'](k['query']);}}});const j={'submission_requirements':(a['table']??[])['filter'](k=>k['b_submission']===!![])['map'](k=>({'identifier':k['identifier'],'value_type':k['value_type'],'object_type':k['object_type'],'name':k['name']})),'data_sources':(a['table']??[])['filter'](k=>k['b_submission']!==!![])['map'](k=>({'identifier':k['identifier'],'kind':k['is_system_address']?'system_address':k['object_type']?'object':'fixed_value','value_type':k['value_type'],'object_type':k['object_type'],'name':k['name'],'is_mutable_onchain':k['object_type']==='Repository'})),'query_dependencies':[...f]['sort']((k,l)=>k-l),'unresolved_queries':g,'has_time_conditions':h,'has_signer_constraints':i,'has_rely_composition':Array['isArray'](a['rely']?.['guards'])&&a['rely']['guards']['length']>0x0,'reading_checklist':GUARD_SEMANTICS_READING_CHECKLIST};return{'render':{'tree_indented':d,'mermaid':e},'lint':b,'party_evaluation':j};}export{formatLintResult};
1
+ import{readFileSync,existsSync,writeFileSync,mkdirSync}from'fs';import{resolve,join,dirname}from'path';import{fileURLToPath}from'url';import{GUARDQUERY,ObjectType,ValueType}from'@wowok/wowok';import{TOOLS_REFERENCE,getToolReference,searchToolReference,getToolSequence}from'../knowledge/tools-reference.js';import{GUARD_DESIGN_PATTERNS,getGuardDesignPattern,GUARD_DESIGN_PATTERNS_VERSION,GUARD_SCHEMA_NOTES}from'../knowledge/guard-design-patterns.js';import{OBJECT_REUSE_RULES,CREATE_VS_MODIFY_PATTERN,IMMUTABILITY_RULES,PROTOCOL_SLOT_RULES,OPERATION_TYPE_CLASSIFICATION,OPERATION_CLASS_META,NAMING_CONVENTIONS,SAFETY_RULES_VERSION}from'../knowledge/safety-rules.js';import{listTemplates as a435a,getTemplateDetail,instantiateTemplate,getTemplateCounts,TEMPLATE_OBJECT_TYPES}from'../knowledge/template-registry.js';import{lintGuard,formatLintResult}from'../knowledge/guard-lint.js';import{renderGuardTreeIndented,renderGuardMermaid,walkGuardTree}from'../knowledge/guard-render.js';import{getGuardQueryByIdOrName}from'../schema/utils/guard-query-utils.js';const __filename=fileURLToPath(import.meta.url),__dirname=fileURLToPath(new URL('.',import.meta.url)),SCHEMAS_DIR=resolve(__dirname,'../../dist/schemas'),GUARD_TEMPLATES_PATH_SCRIPTS=resolve(__dirname,'../../scripts/guard-templates.json'),GUARD_TEMPLATES_PATH_DIST=resolve(__dirname,'../../dist/schemas/guard-templates.json'),GUARD_TEMPLATES_PATH=existsSync(GUARD_TEMPLATES_PATH_SCRIPTS)?GUARD_TEMPLATES_PATH_SCRIPTS:GUARD_TEMPLATES_PATH_DIST,WORKSPACE_TMP_DIR=resolve(process['cwd'](),'.trae','tmp');export function areSchemasAvailable(){return existsSync(SCHEMAS_DIR)&&existsSync(join(SCHEMAS_DIR,'index.json'));}export function getSchemaIndex(){try{const a=join(SCHEMAS_DIR,'index.json');if(!existsSync(a))return null;const b=readFileSync(a,'utf-8');return JSON['parse'](b);}catch{return null;}}export function listSchemas(){const a=getSchemaIndex();if(!a)return[];return[...a['tools']||[],...a['operations']||[]];}export function getSchema(a){try{let b=join(SCHEMAS_DIR,a+'.schema.json');!existsSync(b)&&(b=join(SCHEMAS_DIR,a+'.json'));if(!existsSync(b))return null;const c=readFileSync(b,'utf-8'),d=JSON['parse'](c);return resolveSchemaRefs(d);}catch{return null;}}export function getOutputSchema(a){try{const b=join(SCHEMAS_DIR,a+'.output.json');if(!existsSync(b))return null;const c=readFileSync(b,'utf-8'),d=JSON['parse'](c);return resolveSchemaRefs(d);}catch{return null;}}export function getGuardTemplates(a){try{if(!existsSync(GUARD_TEMPLATES_PATH))return null;const b=readFileSync(GUARD_TEMPLATES_PATH,'utf-8'),c=JSON['parse'](b);if(!a)return{'version':c['version'],'description':c['description'],'templates':(c['templates']||[])['map'](e=>({'name':e['name'],'title':e['title'],'description':e['description'],'use_case':e['use_case']})),'query_reference':c['query_reference'],'node_return_types':c['node_return_types']};const d=(c['templates']||[])['find'](e=>e['name']===a);if(!d)return null;return d;}catch{return null;}}export function getSchemaField(a,b){const c=getSchema(a);if(!c)return null;const d=b['split']('.')['filter'](Boolean);let e=c;for(const f of d){if(!e||typeof e!=='object')return null;if(e['properties']&&f in e['properties']){e=e['properties'][f];continue;}if(e['items']&&typeof e['items']==='object'){if(/^\d+$/['test'](f)){e=e['items'];continue;}if(e['items']['properties']&&f in e['items']['properties']){e=e['items']['properties'][f];continue;}}if(Array['isArray'](e['oneOf'])||Array['isArray'](e['anyOf'])){const g=e['oneOf']??e['anyOf'];for(const h of g){if(h&&typeof h==='object'&&h['properties']&&f in h['properties']){e=h['properties'][f];break;}}continue;}if(f in e){e=e[f];continue;}return null;}return e;}function resolveSchemaRefs(a,b=new Set()){if(!a||typeof a!=='object')return a;if(Array['isArray'](a))return a['map'](d=>resolveSchemaRefs(d,b));const c={};for(const [d,e]of Object['entries'](a)){if(d==='$ref'&&typeof e==='string'){if(e['startsWith']('#'))c[d]=e;else{const f=loadRefSchema(e,b);f&&Object['assign'](c,resolveSchemaRefs(f,b));}}else typeof e==='object'?c[d]=resolveSchemaRefs(e,b):c[d]=e;}return c;}function loadRefSchema(a,b){if(a['startsWith']('#'))return null;if(b['has'](a))return{'description':'Circular\x20reference\x20to\x20'+a};b['add'](a);try{const c=join(SCHEMAS_DIR,a);if(!existsSync(c))return null;const d=readFileSync(c,'utf-8');return JSON['parse'](d);}catch{return null;}}export function searchSchemas(a){const b=listSchemas(),c=a['toLowerCase']();return b['filter'](d=>{const e=d['name']['toLowerCase']()['includes'](c),f=d['title']?.['toLowerCase']()['includes'](c),g=d['description']?.['toLowerCase']()['includes'](c);return e||f||g;});}export function listOperations(){const a=getSchemaIndex();if(!a)return[];return(a['operations']||[])['filter'](b=>b['name']['startsWith']('onchain_operations_'));}function writeResponseToFile(a,b){try{let c;if(b)c=resolve(process['cwd'](),b);else{!existsSync(WORKSPACE_TMP_DIR)&&mkdirSync(WORKSPACE_TMP_DIR,{'recursive':!![]});const g=Date['now']();c=join(WORKSPACE_TMP_DIR,'schema-'+g+'.json');}const d=dirname(c);!existsSync(d)&&mkdirSync(d,{'recursive':!![]});const f=typeof a==='string'?a:JSON['stringify'](a,null,0x2);return writeFileSync(c,f,'utf-8'),c;}catch(h){return null;}}const INLINE_CHAR_LIMIT=0x20*0x400,AUTO_OVERFLOW_DIR='.wowok/tmp';function unionVariantLabel(a){if(!a||typeof a!=='object')return'variant';const b=a['properties']&&typeof a['properties']==='object'?a['properties']:undefined;if(b)for(const [c,d]of Object['entries'](b)){if(d&&typeof d==='object'&&d['const']!==undefined)return c+'='+String(d['const']);}return typeof a['title']==='string'?a['title']:'variant';}export function buildSchemaSummary(a){const b=[];a&&typeof a['title']==='string'&&b['push']('Title:\x20'+a['title']);const c=a&&typeof a==='object'?a['properties']:undefined;if(c&&typeof c==='object'&&!Array['isArray'](c)){const d=Array['isArray'](a['required'])?a['required']:[],e=Object['keys'](c);b['push']('Top-level\x20fields\x20('+e['length']+',\x20*\x20=\x20required):');for(const f of e['slice'](0x0,0x28)){const g=c[f]??{},h=Array['isArray'](g['type'])?g['type']['join']('|'):g['type']??(g['$ref']?'ref':g['anyOf']||g['oneOf']?'union':'any'),i=d['includes'](f)?'*':'',j=typeof g['description']==='string'&&g['description']['length']>0x0?'\x20—\x20'+g['description']['split']('\x0a')[0x0]['slice'](0x0,0x50):'';b['push']('\x20\x20-\x20'+f+i+':\x20'+h+j);}e['length']>0x28&&b['push']('\x20\x20-\x20...and\x20'+(e['length']-0x28)+'\x20more\x20—\x20use\x20action=\x27get_field\x27\x20with\x20field_path\x20to\x20inspect');}else{if(a&&(Array['isArray'](a['oneOf'])||Array['isArray'](a['anyOf']))){const k=a['oneOf']??a['anyOf'];b['push']('Union\x20of\x20'+k['length']+'\x20variants:');for(const m of k['slice'](0x0,0x28)){const o=m&&typeof m['description']==='string'&&m['description']['length']>0x0?'\x20—\x20'+m['description']['split']('\x0a')[0x0]['slice'](0x0,0x50):'';b['push']('\x20\x20-\x20'+unionVariantLabel(m)+o);}k['length']>0x28&&b['push']('\x20\x20-\x20...and\x20'+(k['length']-0x28)+'\x20more');const l=k['filter'](q=>q&&typeof q==='object'&&q['properties']&&typeof q['properties']==='object');if(l['length']===k['length']&&l['length']>0x0){const q=Object['keys'](l[0x0]['properties'])['filter'](r=>l['every'](s=>Object['prototype']['hasOwnProperty']['call'](s['properties'],r)));b['push'](q['length']>0x0?'Common\x20fields\x20(declared\x20by\x20ALL\x20'+l['length']+'\x20variants):\x20'+q['join'](',\x20')+'.':'No\x20field\x20is\x20declared\x20by\x20all\x20'+l['length']+'\x20variants\x20—\x20each\x20variant\x20takes\x20its\x20own\x20parameters.');}else b['push']('Field\x20names\x20differ\x20per\x20variant\x20—\x20read\x20the\x20variant\x27s\x20own\x20list\x20above.\x20'+'The\x20discriminator\x20(\x22operation\x22\x20and\x20friends)\x20is\x20the\x20only\x20shared\x20key.');for(const r of k['slice'](0x0,0x28)){const s=r&&typeof r==='object'&&r['properties']&&typeof r['properties']==='object'?Object['keys'](r['properties']):[];if(s['length']===0x0)continue;b['push']('\x20\x20\x20\x20'+unionVariantLabel(r)+'\x20fields:\x20'+s['join'](',\x20'));}b['push']('Drill\x20into\x20the\x20variant\x20you\x20need\x20with\x20action=\x27get_field\x27\x20(name\x20+\x20field_path)\x20—\x20the\x20lists\x20above\x20are\x20a\x20summary,\x20not\x20the\x20schema.');}else b['push']('No\x20top-level\x20properties\x20map\x20—\x20use\x20action=\x27get_field\x27\x20with\x20a\x20field_path\x20to\x20inspect\x20this\x20schema.');}return b['join']('\x0a');}export function autoOverflowToFile(a,b){try{const c=JSON['stringify'](a)['length'];if(c<=INLINE_CHAR_LIMIT)return null;const d=process['env']['WOWOK_SCHEMA_TMP_DIR'],e=d?resolve(d):resolve(process['cwd'](),AUTO_OVERFLOW_DIR);!existsSync(e)&&mkdirSync(e,{'recursive':!![]});const f=b['replace'](/[^a-zA-Z0-9_-]/g,'_'),g=f+'.schema.json',h=join(e,g);return writeFileSync(h,JSON['stringify'](a,null,0x2),'utf-8'),{'absolute_path':h,'relative_path':d?h:join(AUTO_OVERFLOW_DIR,g),'bytes':c,'summary':buildSchemaSummary(a)};}catch{return null;}}export function processSchemaQuery(a){const {action:b,name:c,query:d,field_path:f,template:g,output_file:h,object_type:i,params:j}=a;if(b==='get_guard_templates'){const k=getGuardTemplates(g);if(!k)return{'success':![],'action':b,'data':null,'message':g?'Guard\x20template\x20\x27'+g+'\x27\x20not\x20found.\x20Omit\x20\x27template\x27\x20to\x20list\x20all\x20available\x20templates.':'Guard\x20templates\x20file\x20not\x20found.\x20Ensure\x20scripts/guard-templates.json\x20exists.','suggestions':['Omit\x20\x27template\x27\x20to\x20list\x20all\x20available\x20templates.','Available\x20template\x20names:\x20signer_verification,\x20progress_node_check,\x20order_owner_verification,\x20service_belonging_check,\x20reward_not_claimed,\x20combined_reward_guard']};if(h){const l=writeResponseToFile(k,h);if(l)return{'success':!![],'action':b,'data':null,'message':'Guard\x20template'+(g?'\x20\x27'+g+'\x27':'s')+'\x20written\x20to\x20file:\x20'+l,'output_file_path':l,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+l]};}return{'success':!![],'action':b,'data':k,'message':g?'Retrieved\x20Guard\x20template:\x20'+g:'Retrieved\x20'+(Array['isArray'](k['templates'])?k['templates']['length']:0x0)+'\x20Guard\x20templates'};}if(b==='get_templates'){if(!g){const p=a435a(i),q=getTemplateCounts(),r={'total':p['length'],'filter':i??null,'counts_by_object_type':q,'templates':p};if(h){const s=writeResponseToFile(r,h);if(s)return{'success':!![],'action':b,'data':null,'message':p['length']+'\x20templates\x20written\x20to\x20file:\x20'+s,'output_file_path':s,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+s]};}return{'success':!![],'action':b,'data':r,'message':p['length']+'\x20template(s)'+(i?'\x20for\x20object_type=\x27'+i+'\x27':'')+'\x20'+('(total\x20registry:\x20'+Object['values'](q)['reduce']((t,u)=>t+u,0x0)+'\x20across\x20'+TEMPLATE_OBJECT_TYPES['length']+'\x20object\x20types).\x20')+'Provide\x20\x27template\x27\x20(id)\x20for\x20full\x20detail;\x20add\x20\x27params\x27\x20(JSON\x20string)\x20to\x20instantiate.'};}if(!j){const t=getTemplateDetail(g);if(!t)return{'success':![],'action':b,'data':null,'message':'Template\x20\x27'+g+'\x27\x20not\x20found\x20in\x20the\x20unified\x20registry.','suggestions':['Omit\x20\x27template\x27\x20to\x20list\x20all\x20template\x20metadata\x20(id\x20+\x20object_type\x20+\x20parameters).','Filter\x20by\x20object_type:\x20'+TEMPLATE_OBJECT_TYPES['join'](',\x20')]};if(h){const u=writeResponseToFile(t,h);if(u)return{'success':!![],'action':b,'data':null,'message':'Template\x20\x27'+g+'\x27\x20detail\x20written\x20to\x20file:\x20'+u,'output_file_path':u,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+u]};}return{'success':!![],'action':b,'data':t,'message':'Template\x20\x27'+g+'\x27\x20('+t['object_type']+',\x20'+(t['instantiable']?'instantiable':'guidance-only')+').\x20'+'To\x20instantiate,\x20call\x20again\x20with\x20\x27params\x27\x20=\x20JSON\x20object\x20of\x20the\x20declared\x20parameters.'};}let m;try{const v=JSON['parse'](j);if(!v||typeof v!=='object'||Array['isArray'](v))return{'success':![],'action':b,'data':null,'message':'\x27params\x27\x20must\x20be\x20a\x20JSON\x20object\x20(e.g.\x20\x27{\x22key\x22:\x22value\x22}\x27),\x20got\x20'+(Array['isArray'](v)?'array':typeof v)+'.'};m=v;}catch(w){return{'success':![],'action':b,'data':null,'message':'Failed\x20to\x20parse\x20\x27params\x27\x20as\x20JSON:\x20'+(w instanceof Error?w['message']:String(w)),'suggestions':['Example:\x20params=\x27{\x22whitelist\x22:[\x220xabc...\x22]}\x27']};}const n=instantiateTemplate(g,m);if(!n['ok'])return{'success':![],'action':b,'data':n['guidance']!==undefined?{'guidance':n['guidance']}:null,'message':'Instantiation\x20failed\x20for\x20\x27'+g+'\x27:\x20'+n['error'],'suggestions':n['missing_params']?['Missing\x20required\x20params:\x20'+n['missing_params']['join'](',\x20'),'Call\x20with\x20\x27template\x27\x20only\x20(no\x20\x27params\x27)\x20to\x20see\x20full\x20parameter\x20declarations.']:['Call\x20with\x20\x27template\x27\x20only\x20(no\x20\x27params\x27)\x20to\x20see\x20full\x20parameter\x20declarations.']};const o={'object_type':n['object_type'],'template_id':n['template_id'],'body':n['body'],...n['notes']?{'notes':n['notes']}:{}};if(h){const x=writeResponseToFile(o,h);if(x)return{'success':!![],'action':b,'data':null,'message':'Instantiated\x20template\x20\x27'+g+'\x27\x20written\x20to\x20file:\x20'+x,'output_file_path':x,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+x]};}return{'success':!![],'action':b,'data':o,'message':'Instantiated\x20\x27'+g+'\x27\x20('+n['object_type']+').\x20'+'Review\x20the\x20body\x20against\x20the\x20onchain_operations\x20schema\x20before\x20submitting.'};}if(b==='get_tool_reference'){if(c){const z=getToolReference(c);if(!z)return{'success':![],'action':b,'data':null,'message':'Tool\x20\x27'+c+'\x27\x20not\x20found\x20in\x20the\x20tool\x20reference.','suggestions':['Omit\x20\x27name\x27\x20to\x20list\x20all\x20tools.','Available\x20tools:\x20'+TOOLS_REFERENCE['map'](B=>B['name'])['join'](',\x20')]};const A=getToolSequence(c);return{'success':!![],'action':b,'data':{'tool':z,'call_sequence':A??null},'message':'Retrieved\x20tool\x20reference:\x20'+c};}if(d){const B=searchToolReference(d);return{'success':!![],'action':b,'data':{'tools':B,'count':B['length']},'message':'Found\x20'+B['length']+'\x20tool(s)\x20matching\x20\x27'+d+'\x27','suggestions':B['length']===0x0?['Try\x20a\x20broader\x20keyword\x20(e.g.\x20\x27onchain\x27,\x20\x27guard\x27,\x20\x27schema\x27),\x20or\x20omit\x20\x27query\x27\x20to\x20list\x20all\x20tools.']:undefined};}const y=TOOLS_REFERENCE['map'](C=>({'name':C['name'],'summary':C['summary'],'actions':C['actions']??[],'notes':C['notes']??[]}));return{'success':!![],'action':b,'data':{'tools':y,'count':y['length']},'message':'Retrieved\x20reference\x20for\x20'+y['length']+'\x20MCP\x20tools.\x20Pass\x20name=\x27<tool>\x27\x20for\x20full\x20detail\x20(params,\x20prerequisites,\x20follow-ups).'};}if(b==='get_guard_design_patterns'){if(c){const D=getGuardDesignPattern(c);if(!D)return{'success':![],'action':b,'data':null,'message':'Guard\x20design\x20pattern\x20\x27'+c+'\x27\x20not\x20found.','suggestions':['Omit\x20\x27name\x27\x20to\x20list\x20the\x20full\x20catalog.','Available\x20pattern\x20ids:\x20'+GUARD_DESIGN_PATTERNS['map'](E=>E['id'])['join'](',\x20')]};return{'success':!![],'action':b,'data':{'pattern':D},'message':'Retrieved\x20Guard\x20design\x20pattern:\x20'+c};}if(d){const E=GUARD_DESIGN_PATTERNS['filter'](G=>G['host']===d),F=E['length']>0x0?E:GUARD_DESIGN_PATTERNS['filter'](G=>G['business_requirement']['toLowerCase']()['includes'](d['toLowerCase']())||G['logic_summary']['toLowerCase']()['includes'](d['toLowerCase']()));return{'success':!![],'action':b,'data':{'patterns':F,'count':F['length'],'filtered_by':E['length']>0x0?'host':'keyword','schema_notes':GUARD_SCHEMA_NOTES},'message':'Found\x20'+F['length']+'\x20Guard\x20design\x20pattern(s)\x20matching\x20\x27'+d+'\x27','suggestions':F['length']===0x0?['Filter\x20by\x20host:\x20service_buy_guard,\x20service_allocator_guard,\x20machine_forward,\x20progress_submission,\x20reward_claim,\x20repository_write,\x20arbitration_usage,\x20arbitration_voting,\x20gen_passport']:undefined};}const C=GUARD_DESIGN_PATTERNS['map'](G=>({'id':G['id'],'business_requirement':G['business_requirement'],'host':G['host'],'data_source':G['data_source'],'verifier_level':G['verifier_level'],'logic_summary':G['logic_summary'],'key_queries':G['key_queries'],'notes':G['notes']??[]}));return{'success':!![],'action':b,'data':{'patterns':C,'count':C['length'],'version':GUARD_DESIGN_PATTERNS_VERSION,'schema_notes':GUARD_SCHEMA_NOTES},'message':'Retrieved\x20'+C['length']+'\x20Guard\x20design\x20patterns.\x20Pass\x20name=\x27<pattern_id>\x27\x20for\x20full\x20detail\x20(witness\x20types,\x20mitigated\x20risks,\x20industries).'};}if(b==='get_safety_rules')return{'success':!![],'action':b,'data':{'version':SAFETY_RULES_VERSION,'object_reuse_rules':OBJECT_REUSE_RULES,'create_vs_modify_pattern':CREATE_VS_MODIFY_PATTERN,'immutability_rules':IMMUTABILITY_RULES,'protocol_slot_rules':PROTOCOL_SLOT_RULES,'operation_type_classification':OPERATION_TYPE_CLASSIFICATION,'operation_class_meta':OPERATION_CLASS_META,'naming_conventions':NAMING_CONVENTIONS},'message':'Retrieved\x20safety\x20rule\x20tables\x20(reuse\x20/\x20immutability\x20/\x20protocol\x20slots\x20/\x20operation\x20classification\x20/\x20naming).\x20'+'Key\x20points:\x20prefer\x20REUSING\x20existing\x20objects\x20(string\x20reference\x20=\x20reuse,\x20object\x20shape\x20=\x20create);\x20'+'Machine\x20publish\x20locks\x20nodes/pairs/forwards,\x20Service\x20publish\x20locks\x20machine/order_allocators/arbitrations\x20(sales\x20stays\x20mutable);\x20'+'Guard\x20is\x20CREATE-only\x20immutable;\x20on-chain\x20writes\x20require\x20explicit\x20user\x20confirmation;\x20'+'Guards\x20bound\x20on\x20machine\x20forwards\x20MUST\x20declare\x20protocol\x20slot\x20254\x20(task\x20binding),\x20and\x20every\x20allocator\x20{GuardIdentifier:N}\x20leg\x20MUST\x20name\x20a\x20declared\x20b_submission\x20Address\x20slot.'};if(!areSchemasAvailable())return{'success':![],'action':b,'data':null,'message':'Schema\x20files\x20are\x20not\x20available.\x20Please\x20run\x20\x27npm\x20run\x20generate:schemas\x27\x20first.','suggestions':['Run\x20\x27npm\x20run\x20generate:schemas\x27\x20to\x20generate\x20schema\x20files','Ensure\x20the\x20dist/schemas\x20directory\x20exists']};switch(b){case'list':{const G=listSchemas();return{'success':!![],'action':b,'data':G,'message':'Found\x20'+G['length']+'\x20available\x20schemas'};}case'get':{if(!c)return{'success':![],'action':b,'data':null,'message':'Schema\x20name\x20is\x20required\x20for\x20\x27get\x27\x20action','suggestions':['Provide\x20a\x20schema\x20name','Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20schemas']};const H=getSchema(c);if(!H){const J=searchSchemas(c)['slice'](0x0,0x5);return{'success':![],'action':b,'data':null,'message':'Schema\x20\x27'+c+'\x27\x20not\x20found','suggestions':J['length']>0x0?J['map'](K=>'Did\x20you\x20mean:\x20'+K['name']+'?'):['Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20schemas']};}if(h){const K=writeResponseToFile(H,h);if(K)return{'success':!![],'action':b,'data':null,'message':'Schema\x20\x27'+c+'\x27\x20written\x20to\x20file:\x20'+K,'output_file_path':K,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+K]};}const I=autoOverflowToFile(H,c);if(I)return{'success':!![],'action':b,'data':null,'message':'Schema\x20\x27'+c+'\x27\x20is\x20large\x20('+Math['round'](I['bytes']/0x400)+'\x20KB)\x20—\x20'+'written\x20to\x20file\x20instead\x20of\x20inlining\x20to\x20protect\x20your\x20context.','output_file_path':I['absolute_path'],'inline_summary':I['summary'],'suggestions':['Read\x20the\x20full\x20file\x20with\x20the\x20Read\x20tool:\x20'+I['absolute_path'],'If\x20the\x20sandbox\x20blocks\x20that\x20path,\x20resolve\x20the\x20relative\x20path\x20\x27'+I['relative_path']+'\x27\x20against\x20the\x20workspace\x20root\x20and\x20read\x20that.','Without\x20file\x20access,\x20query\x20specific\x20fields\x20via\x20action=\x27get_field\x27\x20with\x20name=\x27'+c+'\x27\x20and\x20a\x20field_path\x20from\x20the\x20summary\x20below.']};return{'success':!![],'action':b,'data':H,'message':'Retrieved\x20schema:\x20'+c};}case'get_field':{if(!c||!f)return{'success':![],'action':b,'data':null,'message':'Both\x20\x27name\x27\x20and\x20\x27field_path\x27\x20are\x20required\x20for\x20\x27get_field\x27\x20action','suggestions':['Example:\x20{action:\x20\x27get_field\x27,\x20name:\x20\x27onchain_operations_machine\x27,\x20field_path:\x20\x27data.node\x27}','Use\x20\x27get\x27\x20action\x20to\x20retrieve\x20the\x20full\x20schema']};const L=getSchemaField(c,f);if(!L)return{'success':![],'action':b,'data':null,'message':'Field\x20path\x20\x27'+f+'\x27\x20not\x20found\x20in\x20schema\x20\x27'+c+'\x27','suggestions':['Check\x20the\x20field\x20path\x20(dot-separated,\x20e.g.\x20\x27data.node\x27)','Use\x20\x27get\x27\x20action\x20to\x20see\x20the\x20full\x20schema\x20structure']};return{'success':!![],'action':b,'data':L,'message':'Retrieved\x20field\x20\x27'+f+'\x27\x20from\x20schema\x20\x27'+c+'\x27'};}case'search':{if(!d)return{'success':![],'action':b,'data':null,'message':'Search\x20query\x20is\x20required\x20for\x20\x27search\x27\x20action'};const M=searchSchemas(d);return{'success':!![],'action':b,'data':M,'message':'Found\x20'+M['length']+'\x20schemas\x20matching\x20\x27'+d+'\x27'};}case'list_operations':{const N=listOperations();return{'success':!![],'action':b,'data':N,'message':'Found\x20'+N['length']+'\x20on-chain\x20operations'};}case'get_guard_queries':{const O=d?.['trim']()['toLowerCase'](),P=R=>({'id':R['id'],'name':R['name'],'objectType':ObjectType[R['objectType']]??String(R['objectType']),'returnType':ValueType[R['return']]??String(R['return'])});if(O){const R=GUARDQUERY['filter'](S=>S['name']['toLowerCase']()['includes'](O)||S['description']?.['toLowerCase']()['includes'](O)||String(S['id'])===O)['map'](S=>({...P(S),'description':S['description']}));return{'success':!![],'action':b,'data':R,'message':'Found\x20'+R['length']+'\x20GUARDQUERY\x20entries\x20matching\x20\x27'+d+'\x27\x20'+('(of\x20'+GUARDQUERY['length']+'\x20total).\x20Use\x20names,\x20not\x20numeric\x20ids,\x20in\x20Guard\x20trees\x20—\x20')+'names\x20fail\x20loudly\x20at\x20validation\x20when\x20wrong;\x20a\x20wrong-but-existing\x20id\x20silently\x20checks\x20a\x20different\x20field.'};}if(h){const S=GUARDQUERY['map'](U=>({...P(U),'description':U['description']})),T=writeResponseToFile(S,h);if(T)return{'success':!![],'action':b,'data':null,'message':'Full\x20GUARDQUERY\x20catalog\x20('+S['length']+'\x20entries)\x20written\x20to\x20file:\x20'+T,'output_file_path':T,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+T]};}const Q=GUARDQUERY['map'](P);return{'success':!![],'action':b,'data':Q,'message':'GUARDQUERY\x20catalog:\x20'+Q['length']+'\x20entries\x20(compact\x20form\x20—\x20id,\x20name,\x20objectType,\x20returnType).\x20'+'Add\x20query=\x27<keyword>\x27\x20for\x20full\x20entries\x20with\x20descriptions,\x20or\x20output_file\x20to\x20dump\x20all\x20details\x20to\x20a\x20file.\x20'+'Prefer\x20NAME\x20references\x20in\x20Guard\x20trees;\x20a\x20numeric\x20id\x20is\x20resolved\x20verbatim\x20and\x20a\x20wrong-but-existing\x20id\x20'+'silently\x20checks\x20a\x20different\x20field.'};}case'get_output':{if(!c)return{'success':![],'action':b,'data':null,'message':'Tool\x20name\x20is\x20required\x20for\x20\x27get_output\x27\x20action','suggestions':['Provide\x20a\x20tool\x20name','Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20tools\x20and\x20their\x20outputPath']};const U=getOutputSchema(c);if(!U){const W=listSchemas(),X=W['find'](Z=>Z['name']===c);if(X)return{'success':![],'action':b,'data':null,'message':'Tool\x20\x27'+c+'\x27\x20exists\x20but\x20has\x20no\x20output\x20schema\x20file.\x20The\x20tool\x20may\x20not\x20declare\x20an\x20outputSchema,\x20or\x20the\x20schema\x20file\x20was\x20not\x20generated.','suggestions':['Use\x20\x27get\x27\x20action\x20with\x20name=\x27'+c+'\x27\x20to\x20retrieve\x20its\x20input\x20schema']};const Y=searchSchemas(c)['slice'](0x0,0x5);return{'success':![],'action':b,'data':null,'message':'Tool\x20\x27'+c+'\x27\x20not\x20found','suggestions':Y['length']>0x0?Y['map'](Z=>'Did\x20you\x20mean:\x20'+Z['name']+'?'):['Use\x20\x27list\x27\x20action\x20to\x20see\x20available\x20tools']};}if(h){const Z=writeResponseToFile(U,h);if(Z)return{'success':!![],'action':b,'data':null,'message':'Output\x20schema\x20\x27'+c+'\x27\x20written\x20to\x20file:\x20'+Z,'output_file_path':Z,'suggestions':['Use\x20Read\x20tool\x20to\x20open\x20'+Z]};}const V=autoOverflowToFile(U,c);if(V)return{'success':!![],'action':b,'data':null,'message':'Output\x20schema\x20\x27'+c+'\x27\x20is\x20large\x20('+Math['round'](V['bytes']/0x400)+'\x20KB)\x20—\x20'+'written\x20to\x20file\x20instead\x20of\x20inlining\x20to\x20protect\x20your\x20context.','output_file_path':V['absolute_path'],'inline_summary':V['summary'],'suggestions':['Read\x20the\x20full\x20file\x20with\x20the\x20Read\x20tool:\x20'+V['absolute_path'],'If\x20the\x20sandbox\x20blocks\x20that\x20path,\x20resolve\x20the\x20relative\x20path\x20\x27'+V['relative_path']+'\x27\x20against\x20the\x20workspace\x20root\x20and\x20read\x20that.','Without\x20file\x20access,\x20query\x20specific\x20fields\x20via\x20action=\x27get_field\x27\x20with\x20name=\x27'+c+'\x27\x20and\x20a\x20field_path\x20from\x20the\x20summary\x20below.']};return{'success':!![],'action':b,'data':U,'message':'Retrieved\x20output\x20schema:\x20'+c};}default:return{'success':![],'action':b,'data':null,'message':'Unknown\x20action:\x20'+b,'suggestions':['Use\x20\x27list\x27,\x20\x27get\x27,\x20\x27get_field\x27,\x20\x27get_output\x27,\x20\x27search\x27,\x20\x27list_operations\x27,\x20\x27get_guard_templates\x27,\x20\x27get_tool_reference\x27,\x20\x27get_guard_design_patterns\x27,\x20\x27get_safety_rules\x27,\x20\x27get_templates\x27,\x20or\x20\x27analyze_guard_semantics\x27']};}}const GUARD_SEMANTICS_READING_CHECKLIST=['WHO\x20can\x20satisfy\x20this\x20Guard\x20(identity:\x20Signer\x20bindings,\x20Entity\x20membership,\x20allowlists)?','WHEN\x20can\x20it\x20be\x20satisfied\x20(time:\x20Clock\x20comparisons,\x20deadlines,\x20windows)?','WHAT\x20evidence\x20must\x20the\x20caller\x20submit\x20(b_submission\x20table\x20entries\x20—\x20Payment/Order/Proof\x20objects)?','WHICH\x20on-chain\x20data\x20does\x20it\x20read,\x20and\x20can\x20that\x20data\x20change\x20(Repository\x20entries\x20are\x20MUTABLE\x20—\x20who\x20controls\x20the\x20writes)?','WHAT\x20does\x20the\x20counterparty\x20gain/lose\x20in\x20each\x20branch\x20of\x20the\x20logic\x20tree?','ARE\x20there\x20error-level\x20diagnostics\x20or\x20critical\x20risks\x20(they\x20block\x20or\x20endanger\x20execution)?'];export async function analyzeGuardSemantics(a){const b=await lintGuard(a,{'auto_fix':![]}),c={'root':a['root'],'table':(a['table']??[])['map'](k=>({'identifier':k['identifier'],'name':k['name'],'value_type':k['value_type']??'Address','b_submission':k['b_submission']??![],'value':k['value']})),'guardName':a['description']??null,'rely':a['rely']??null},d=renderGuardTreeIndented(c),e=renderGuardMermaid(a['root']),f=new Set(),g=[];let h=![],i=![];walkGuardTree(a['root'],k=>{if(k['type']==='context'){if(k['context']==='Clock')h=!![];if(k['context']==='Signer')i=!![];}if(k['type']==='query'&&k['query']!==undefined&&k['query']!==null){if(typeof k['query']==='number'){const l=getGuardQueryByIdOrName(k['query']);if(l)f['add'](l['id']);else g['push'](k['query']);}else{const m=getGuardQueryByIdOrName(k['query']);if(m)f['add'](m['id']);else g['push'](k['query']);}}});const j={'submission_requirements':(a['table']??[])['filter'](k=>k['b_submission']===!![])['map'](k=>({'identifier':k['identifier'],'value_type':k['value_type'],'object_type':k['object_type'],'name':k['name']})),'data_sources':(a['table']??[])['filter'](k=>k['b_submission']!==!![])['map'](k=>({'identifier':k['identifier'],'kind':k['is_system_address']?'system_address':k['object_type']?'object':'fixed_value','value_type':k['value_type'],'object_type':k['object_type'],'name':k['name'],'is_mutable_onchain':k['object_type']==='Repository'})),'query_dependencies':[...f]['sort']((k,l)=>k-l),'unresolved_queries':g,'has_time_conditions':h,'has_signer_constraints':i,'has_rely_composition':Array['isArray'](a['rely']?.['guards'])&&a['rely']['guards']['length']>0x0,'reading_checklist':GUARD_SEMANTICS_READING_CHECKLIST};return{'render':{'tree_indented':d,'mermaid':e},'lint':b,'party_evaluation':j};}export{formatLintResult};
@@ -2350,13 +2350,16 @@
2350
2350
  "network_error",
2351
2351
  "rate_limit",
2352
2352
  "gas_exceeded",
2353
+ "insufficient_gas",
2353
2354
  "bcs_error",
2354
2355
  "signature_error",
2355
2356
  "config_error",
2356
2357
  "wip_verification_failed",
2357
2358
  "wip_storage_unavailable",
2359
+ "wip_storage_rejected",
2358
2360
  "submission_unknown",
2359
2361
  "move_abort_unmapped",
2362
+ "missing_data",
2360
2363
  "unknown"
2361
2364
  ]
2362
2365
  },
@@ -47,7 +47,7 @@
47
47
  "additionalProperties": false
48
48
  },
49
49
  "suspend": {
50
- "description": "Remove account from active account list (cannot sign transactions), and delete its name",
50
+ "description": "Remove account from active account list (cannot sign transactions), and delete its name. NOT allowed on the default account (client-only: ask the user to do it in the client's Wallet tab).",
51
51
  "type": "object",
52
52
  "properties": {
53
53
  "name_or_address": {
@@ -76,7 +76,7 @@
76
76
  "additionalProperties": false
77
77
  },
78
78
  "rename": {
79
- "description": "Rename account. name_or_address can be name or address, new_name must be a name.",
79
+ "description": "Rename account. name_or_address can be name or address, new_name must be a name. NOT allowed on the default account (client-only: ask the user to do it in the client's Wallet tab).",
80
80
  "type": "object",
81
81
  "properties": {
82
82
  "name_or_address": {
@@ -94,7 +94,7 @@
94
94
  "additionalProperties": false
95
95
  },
96
96
  "swap_name": {
97
- "description": "Swap the names of two accounts",
97
+ "description": "Swap the names of two accounts. NOT allowed when either end is the default account (empty/omitted name) — client-only: ask the user to manage it in the client's Wallet tab. Swap two named (non-default) accounts instead.",
98
98
  "type": "object",
99
99
  "properties": {
100
100
  "name1": {
@@ -155,7 +155,7 @@
155
155
  "additionalProperties": false
156
156
  },
157
157
  "get": {
158
- "description": "💰 FUND MOVEMENT (on-chain, irreversible, spends gas): split/merge the account's coins to produce a coin object carrying AT LEAST the required balance, then self-deliver it to the same account. The account's total balance does not leave the account (minus gas), but a real on-chain transaction IS executed and its digest is returned. IMPORTANT: balance_required is an AMOUNT string (e.g. \"1WOW\" or raw smallest-unit integer like \"1000000000\"). Amount parsing: display strings like \"2.5WOW\" are converted to raw smallest units with the token's decimals; bare decimal numbers are rejected. Requires confirmation — first call previews, re-call with confirmed=true. RESULT CONTRACT: on success the result carries `coin_address`, `digest` AND `balance` — the coin's ACTUAL final on-chain amount, read back from the chain. Always compare `balance` against the amount you need; a returned digest does NOT by itself mean the coin is large enough. If the requested amount cannot be covered the call FAILS with the required amount, the account's total, and the largest single coin, and NO transaction is sent (no gas spent) — in that case fund the account first, or request at most the largest single coin. Do not retry the same balance_required after such a failure; re-reading the balance will not change the answer.",
158
+ "description": "💰 FUND MOVEMENT (on-chain, irreversible, spends gas): split/merge the account's coins to produce a coin object carrying AT LEAST the required balance, then self-deliver it to the same account. NOT a balance query — the returned `balance` is the produced coin's amount, never the account's total; to CHECK an account's balance use the balance query surface (query_toolkit) instead. balance_required must be > 0 — a zero request is rejected. The account's total balance does not leave the account (minus gas), but a real on-chain transaction IS executed and its digest is returned. IMPORTANT: balance_required is an AMOUNT string (e.g. \"1WOW\" or raw smallest-unit integer like \"1000000000\"). Amount parsing: display strings like \"2.5WOW\" are converted to raw smallest units with the token's decimals; bare decimal numbers are rejected. Requires confirmation — first call previews, re-call with confirmed=true. RESULT CONTRACT: on success the result carries `coin_address`, `digest` AND `balance` — the coin's ACTUAL final on-chain amount, read back from the chain. Always compare `balance` against the amount you need; a returned digest does NOT by itself mean the coin is large enough. If the requested amount cannot be covered the call FAILS with the required amount, the account's total, and the largest single coin, and NO transaction is sent (no gas spent) — in that case fund the account first, or request at most the largest single coin. Do not retry the same balance_required after such a failure; re-reading the balance will not change the answer.",
159
159
  "type": "object",
160
160
  "properties": {
161
161
  "name_or_address": {
@@ -223,6 +223,26 @@
223
223
  "additionalProperties": {},
224
224
  "description": "Creation plan from the merchant-guide pipeline (never executed on-chain)."
225
225
  },
226
+ "verdict": {
227
+ "type": "object",
228
+ "properties": {
229
+ "buildable": {
230
+ "type": "boolean"
231
+ },
232
+ "blockers": {
233
+ "type": "array",
234
+ "items": {
235
+ "type": "string"
236
+ }
237
+ }
238
+ },
239
+ "required": [
240
+ "buildable",
241
+ "blockers"
242
+ ],
243
+ "additionalProperties": false,
244
+ "description": "Single aggregate ruling over the three signal faces (scan.passed / plan.graph_validation.valid / plan.audit.blocking) — the authoritative go/no-go (bkmn-261012 F-M62); the individual faces stay advisory."
245
+ },
226
246
  "next_action": {
227
247
  "type": "string",
228
248
  "description": "Top-level forwarding of the materialization contract (C6): the guide's 'Plan ready. Materialize: ...' text verbatim when the audit is clean; a BLOCKED reroute back to this action otherwise."
@@ -233,6 +253,7 @@
233
253
  "template_id",
234
254
  "scan",
235
255
  "plan",
256
+ "verdict",
236
257
  "next_action"
237
258
  ],
238
259
  "additionalProperties": false
@@ -902,6 +923,26 @@
902
923
  "additionalProperties": {},
903
924
  "description": "Creation plan from the merchant-guide pipeline (never executed on-chain)."
904
925
  },
926
+ "verdict": {
927
+ "type": "object",
928
+ "properties": {
929
+ "buildable": {
930
+ "type": "boolean"
931
+ },
932
+ "blockers": {
933
+ "type": "array",
934
+ "items": {
935
+ "type": "string"
936
+ }
937
+ }
938
+ },
939
+ "required": [
940
+ "buildable",
941
+ "blockers"
942
+ ],
943
+ "additionalProperties": false,
944
+ "description": "Single aggregate ruling over the three signal faces (scan.passed / plan.graph_validation.valid / plan.audit.blocking) — the authoritative go/no-go (bkmn-261012 F-M62); the individual faces stay advisory."
945
+ },
905
946
  "next_action": {
906
947
  "type": "string",
907
948
  "description": "Top-level forwarding of the materialization contract (C6): the guide's 'Plan ready. Materialize: ...' text verbatim when the audit is clean; a BLOCKED reroute back to this action otherwise."
@@ -913,6 +954,7 @@
913
954
  "network",
914
955
  "scan",
915
956
  "plan",
957
+ "verdict",
916
958
  "next_action"
917
959
  ],
918
960
  "additionalProperties": false
@@ -16,7 +16,7 @@
16
16
  "migration_review",
17
17
  "migration_apply"
18
18
  ],
19
- "description": "Action: 'template_list' = list the loaded MD industry templates (optional industry filter); 'template_get' = fetch one template by id (template_id required); 'template_generate' = generate a creation plan from a template via the merchant-guide pipeline (template_id required; scan-first — CRITICAL findings block; never executes on-chain); 'template_scan' = pre-deploy risk scan of one template (template_id required; returns risk_level/findings/red_flags; CRITICAL blocks generation/apply); 'migration_import' = competitor URL/description → migration plan + MigrationLog (description required); 'migration_review' = surface the MigrationLog for user confirmation (log required); 'migration_apply' = run the approved template through the merchant-guide pipeline (template_id required; scan-first — CRITICAL findings block; default network testnet)."
19
+ "description": "Action: 'template_list' = list the loaded MD industry templates (optional industry filter); 'template_get' = fetch one template by id (template_id required); 'template_generate' = generate a creation plan from a template via the merchant-guide pipeline (template_id required; scan-first — CRITICAL findings block; never executes on-chain); 'template_scan' = pre-deploy risk scan of one template (template_id required; returns risk_level/findings/red_flags plus a drift face — disk-vs-catalog provenance of the scanned body; CRITICAL blocks generation/apply); 'migration_import' = competitor URL/description → migration plan + MigrationLog (description required); 'migration_review' = surface the MigrationLog for user confirmation (log required); 'migration_apply' = run the approved template through the merchant-guide pipeline (template_id required; scan-first — CRITICAL findings block; default network testnet)."
20
20
  },
21
21
  "template_id": {
22
22
  "description": "Template id '<industry>/<variant>' (required for template_get / template_generate / template_scan / migration_apply), e.g. 'retail/scale-marketplace'.",
@@ -52,7 +52,7 @@
52
52
  }
53
53
  },
54
54
  "guard_resolutions": {
55
- "description": "Judgment-layer resolutions for pending guard designs (C6-DEEP), keyed by plan.pending_guard_designs[].key. A blocked migration_apply/template_generate lists every unresolved design — resolve each here (kind 'inline' with the Guard table+root, or kind 'template' with a tpl_* id) and re-run the action. The audit freeze gate still decides: resolutions only unblock a plan whose closed audit is clean.",
55
+ "description": "Judgment-layer resolutions for pending guard designs (C6-DEEP), keyed by plan.pending_guard_designs[].key. A blocked migration_apply/template_generate lists every unresolved design — resolve each here (kind 'inline' with the Guard table+root, or kind 'template' with a tpl_* id) and re-run the action. Advisory designs that do not apply to this shop may be resolved with {kind:'omit'} instead (run75747 F-38: honored only for designs with no inbound binding; an omit of a bound design is refused with GUARD_OMIT_UNSUPPORTED). The audit freeze gate still decides: resolutions only unblock a plan whose closed audit is clean.",
56
56
  "type": "object",
57
57
  "propertyNames": {
58
58
  "type": "string"
@@ -97,6 +97,7 @@
97
97
  "type": "string"
98
98
  },
99
99
  "table": {
100
+ "minItems": 1,
100
101
  "type": "array",
101
102
  "items": {
102
103
  "type": "object",
@@ -108,7 +109,17 @@
108
109
  "description": "Guard passport table rows (identifier/b_submission/value_type/...)."
109
110
  },
110
111
  "root": {
111
- "description": "Guard logic root node."
112
+ "type": "object",
113
+ "properties": {
114
+ "type": {
115
+ "type": "string"
116
+ }
117
+ },
118
+ "required": [
119
+ "type"
120
+ ],
121
+ "additionalProperties": {},
122
+ "description": "Guard logic root node (a typed tree node)."
112
123
  }
113
124
  },
114
125
  "required": [
@@ -117,10 +128,36 @@
117
128
  "root"
118
129
  ],
119
130
  "additionalProperties": false
131
+ },
132
+ {
133
+ "type": "object",
134
+ "properties": {
135
+ "kind": {
136
+ "type": "string",
137
+ "const": "omit"
138
+ }
139
+ },
140
+ "required": [
141
+ "kind"
142
+ ],
143
+ "additionalProperties": false
120
144
  }
121
145
  ]
122
146
  }
123
147
  },
148
+ "review_mode": {
149
+ "description": "Per-build review-rail mode (v53 templates). Absent = the template's declared review_mode applies.",
150
+ "type": "string",
151
+ "enum": [
152
+ "review",
153
+ "review_reward",
154
+ "none"
155
+ ]
156
+ },
157
+ "reward_funding": {
158
+ "description": "Review reward pool funding, smallest-unit string. Required by template_generate/migration_apply when the effective review mode is review_reward (INV-4: the incentive must be funded at build time).",
159
+ "type": "string"
160
+ },
124
161
  "log": {
125
162
  "description": "A prior MigrationLog (required for migration_review).",
126
163
  "type": "object",
@@ -59,13 +59,16 @@
59
59
  "network_error",
60
60
  "rate_limit",
61
61
  "gas_exceeded",
62
+ "insufficient_gas",
62
63
  "bcs_error",
63
64
  "signature_error",
64
65
  "config_error",
65
66
  "wip_verification_failed",
66
67
  "wip_storage_unavailable",
68
+ "wip_storage_rejected",
67
69
  "submission_unknown",
68
70
  "move_abort_unmapped",
71
+ "missing_data",
69
72
  "unknown"
70
73
  ]
71
74
  },