@wowok/agent-mcp 3.2.9 → 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.
- package/README.md +2 -2
- package/dist/chain-semantics/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +10 -1
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.js +1 -1
- package/dist/extensions/capability-manifest.js +1 -1
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/graph/onchain/field-manifest.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/KeeperScan.d.ts +2 -1
- package/dist/keeper/KeeperScan.js +1 -1
- package/dist/keeper/keeper.spec.js +1 -1
- package/dist/keeper/types.d.ts +3 -0
- package/dist/keeper/types.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +34 -0
- package/dist/knowledge/allocator-rail-verifier.js +1 -0
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/arbitration-venue-order.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +19 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/alloc_audit.json +1 -1
- package/dist/knowledge/baselines/rules/arb.json +1 -1
- package/dist/knowledge/baselines/rules/guard.json +15 -5
- package/dist/knowledge/baselines/rules/machine.json +9 -6
- package/dist/knowledge/baselines/rules/plan.json +12 -12
- package/dist/knowledge/baselines/semantic-facts.js +1 -1
- package/dist/knowledge/builtin-templates.d.ts +1 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/contract-invariants.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-anchor-reach.d.ts +1 -1
- package/dist/knowledge/guard-anchor-reach.js +1 -1
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-puzzle.d.ts +1 -1
- package/dist/knowledge/machine-puzzle.js +1 -1
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-templates.js +1 -1
- package/dist/knowledge/machine-topology.d.ts +8 -0
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/protocol-facts.d.ts +16 -0
- package/dist/knowledge/protocol-facts.js +1 -0
- package/dist/knowledge/recipient-constraint.js +1 -1
- package/dist/knowledge/reward-ledger.d.ts +2 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-templates.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +0 -2
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +7 -0
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-loader.d.ts +13 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tool-constraints.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.d.ts +1 -1
- package/dist/monitor/types.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +1 -0
- package/dist/playbooks/service-build/game-theory.js +1 -1
- package/dist/playbooks/service-build/intent-analyzer.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/relationship/registry.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/role/profiles.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +5 -1
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/arbitration.d.ts +4 -4
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +39 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +1 -0
- package/dist/schema/call/contact.d.ts +4 -4
- package/dist/schema/call/demand.d.ts +4 -4
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +12 -4
- package/dist/schema/call/order.d.ts +4 -4
- package/dist/schema/call/permission.d.ts +4 -4
- package/dist/schema/call/progress.d.ts +4 -4
- package/dist/schema/call/receipt.d.ts +8 -0
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +4 -4
- package/dist/schema/call/reward.d.ts +24 -4
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +6 -4
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +4 -4
- package/dist/schema/common/index.d.ts +2 -2
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +5 -1
- package/dist/schema/goal/planning.d.ts +10 -2
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +3 -0
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +9 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +10 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/operations.d.ts +35 -22
- package/dist/schema/operations.js +1 -1
- package/dist/schema/query/bi.d.ts +16 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +52 -48
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +1 -0
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +1 -0
- package/dist/schemas/account_operation.schema.json +1 -1
- package/dist/schemas/benchmark_migration_operation.schema.json +27 -3
- package/dist/schemas/bridge_operation.output.json +1 -0
- package/dist/schemas/goal_operation.schema.json +26 -2
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +8 -0
- package/dist/schemas/industry_pack_operation.schema.json +9 -0
- package/dist/schemas/intent_radar.output.json +8 -2
- package/dist/schemas/intent_radar.schema.json +4 -1
- package/dist/schemas/local_cache_operation.output.json +1 -0
- package/dist/schemas/local_history_operation.output.json +1 -0
- package/dist/schemas/local_info_operation.output.json +1 -0
- package/dist/schemas/local_mark_operation.output.json +1 -0
- package/dist/schemas/monitor_events.schema.json +3 -1
- package/dist/schemas/onchain_events.output.json +275 -11
- package/dist/schemas/onchain_events.schema.json +25 -1
- package/dist/schemas/onchain_operations.output.json +40 -0
- package/dist/schemas/onchain_operations.schema.json +573 -104
- package/dist/schemas/onchain_operations_allocation.schema.json +2 -2
- package/dist/schemas/onchain_operations_arbitration.schema.json +11 -7
- package/dist/schemas/onchain_operations_contact.schema.json +9 -5
- package/dist/schemas/onchain_operations_demand.schema.json +9 -5
- package/dist/schemas/onchain_operations_guard.schema.json +342 -4
- package/dist/schemas/onchain_operations_machine.schema.json +17 -5
- package/dist/schemas/onchain_operations_order.schema.json +9 -5
- package/dist/schemas/onchain_operations_permission.schema.json +9 -5
- package/dist/schemas/onchain_operations_progress.schema.json +9 -5
- package/dist/schemas/onchain_operations_repository.schema.json +9 -5
- package/dist/schemas/onchain_operations_reward.schema.json +89 -9
- package/dist/schemas/onchain_operations_service.schema.json +18 -11
- package/dist/schemas/onchain_operations_treasury.schema.json +9 -5
- package/dist/schemas/query_toolkit.output.json +237 -14
- package/dist/schemas/schema_query.schema.json +3 -2
- package/dist/tools/handlers/benchmark-migration.d.ts +45 -1
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/keeper.d.ts +1 -1
- package/dist/tools/handlers/onchain.d.ts +12 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -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>;
|
|
@@ -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.'),'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
|
+
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
|
|
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']}};}
|
|
@@ -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 a433a,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=a433a(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};
|
|
@@ -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": {
|
|
@@ -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
|
-
"
|
|
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,6 +128,19 @@
|
|
|
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
|
}
|
|
@@ -1184,7 +1184,7 @@
|
|
|
1184
1184
|
}
|
|
1185
1185
|
},
|
|
1186
1186
|
"guard_resolutions": {
|
|
1187
|
-
"description": "Judgment-layer resolutions for pending guard designs (keyed by pending_guard_designs[].key; C6-DEEP). A blocked audit lists every unresolved design — resolve each here (kind 'inline' with the resolved Guard table+root, or kind 'template' with a matching tpl_* id) and call merchant_guide again. Caller input wins over module-derived resolutions. The publish freeze gate still runs: a resolution only unblocks the plan when the closed audit is clean.",
|
|
1187
|
+
"description": "Judgment-layer resolutions for pending guard designs (keyed by pending_guard_designs[].key; C6-DEEP). A blocked audit lists every unresolved design — resolve each here (kind 'inline' with the resolved Guard table+root, or kind 'template' with a matching tpl_* id) and call merchant_guide again. Advisory designs that do not apply to this shop may be resolved with {kind:'omit'} instead (honored only for designs with no inbound binding; an omit of a bound design is refused with GUARD_OMIT_UNSUPPORTED). Caller input wins over module-derived resolutions. The publish freeze gate still runs: a resolution only unblocks the plan when the closed audit is clean.",
|
|
1188
1188
|
"type": "object",
|
|
1189
1189
|
"propertyNames": {
|
|
1190
1190
|
"type": "string"
|
|
@@ -1229,6 +1229,7 @@
|
|
|
1229
1229
|
"type": "string"
|
|
1230
1230
|
},
|
|
1231
1231
|
"table": {
|
|
1232
|
+
"minItems": 1,
|
|
1232
1233
|
"type": "array",
|
|
1233
1234
|
"items": {
|
|
1234
1235
|
"type": "object",
|
|
@@ -1240,7 +1241,17 @@
|
|
|
1240
1241
|
"description": "Guard passport table rows (identifier/b_submission/value_type/...)."
|
|
1241
1242
|
},
|
|
1242
1243
|
"root": {
|
|
1243
|
-
"
|
|
1244
|
+
"type": "object",
|
|
1245
|
+
"properties": {
|
|
1246
|
+
"type": {
|
|
1247
|
+
"type": "string"
|
|
1248
|
+
}
|
|
1249
|
+
},
|
|
1250
|
+
"required": [
|
|
1251
|
+
"type"
|
|
1252
|
+
],
|
|
1253
|
+
"additionalProperties": {},
|
|
1254
|
+
"description": "Guard logic root node (a typed tree node)."
|
|
1244
1255
|
}
|
|
1245
1256
|
},
|
|
1246
1257
|
"required": [
|
|
@@ -1249,6 +1260,19 @@
|
|
|
1249
1260
|
"root"
|
|
1250
1261
|
],
|
|
1251
1262
|
"additionalProperties": false
|
|
1263
|
+
},
|
|
1264
|
+
{
|
|
1265
|
+
"type": "object",
|
|
1266
|
+
"properties": {
|
|
1267
|
+
"kind": {
|
|
1268
|
+
"type": "string",
|
|
1269
|
+
"const": "omit"
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
"required": [
|
|
1273
|
+
"kind"
|
|
1274
|
+
],
|
|
1275
|
+
"additionalProperties": false
|
|
1252
1276
|
}
|
|
1253
1277
|
]
|
|
1254
1278
|
}
|
package/dist/schemas/index.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"title": "WoWok MCP Schema Index",
|
|
4
4
|
"description": "Index of all available JSON schemas for WoWok MCP tools",
|
|
5
|
-
"generatedAt": "2026-10-
|
|
5
|
+
"generatedAt": "2026-10-16T09:16:30.649Z",
|
|
6
6
|
"tools": [
|
|
7
7
|
{
|
|
8
8
|
"name": "onchain_operations",
|
|
@@ -370,6 +370,14 @@
|
|
|
370
370
|
"ok": {
|
|
371
371
|
"type": "boolean",
|
|
372
372
|
"description": "Whether the file was written."
|
|
373
|
+
},
|
|
374
|
+
"restamped": {
|
|
375
|
+
"description": "true when the content equaled a builtin template's canonical body and was written with a fresh release stamp (b9-2: keeps the sentinel hash bound so the seed-upgrade channel stays reachable).",
|
|
376
|
+
"type": "boolean"
|
|
377
|
+
},
|
|
378
|
+
"note": {
|
|
379
|
+
"description": "Human-readable note (set when restamped).",
|
|
380
|
+
"type": "string"
|
|
373
381
|
}
|
|
374
382
|
},
|
|
375
383
|
"required": [
|
|
@@ -82,6 +82,15 @@
|
|
|
82
82
|
"description": "EXPLICIT USER AUTHORIZATION (C5) required before any action that MODIFIES a user-editable template file (any path under '<industry>/templates/') — write_file / delete_file / reset / move / rename on such a path, copy ONTO an existing such file, and every repair_builtin_templates execution. WITHOUT this flag the action refuses (or returns a plan-only preview for repair_builtin_templates). Set it ONLY after the user has explicitly confirmed the specific change in the conversation.",
|
|
83
83
|
"type": "boolean"
|
|
84
84
|
},
|
|
85
|
+
"include_user_edited": {
|
|
86
|
+
"description": "Builtin template ids ('<industry>/<variant>') whose USER-EDIT PROTECTION is explicitly lifted for repair_builtin_templates / template_drift (b9-2). A sentinel whose hash no longer binds its body normally locks the file out of the seed-upgrade channel (presumed user edit); pass the ids the user EXPLICITLY approved for reseed after reviewing the field-level diff — e.g. machine-proven provenance rot (stale deployment stamp or an authorized write that updated the body without re-stamping). The list IS the per-file consent: it must ride BOTH the plan-only preview and the authorize=true execute call. Never list an id the user has not personally confirmed.",
|
|
87
|
+
"maxItems": 50,
|
|
88
|
+
"type": "array",
|
|
89
|
+
"items": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"minLength": 1
|
|
92
|
+
}
|
|
93
|
+
},
|
|
85
94
|
"intent": {
|
|
86
95
|
"description": "Business intent text for recommend_industry (e.g. 'I rent cameras to photographers with deposit and damage inspection'). Falls back to project_description / project_name when omitted.",
|
|
87
96
|
"type": "string",
|
|
@@ -69,7 +69,10 @@
|
|
|
69
69
|
"TreasuryEvent",
|
|
70
70
|
"RewardClaimEvent",
|
|
71
71
|
"RewardFundEvent",
|
|
72
|
-
"
|
|
72
|
+
"RewardWithdrawEvent",
|
|
73
|
+
"NewPaymentEvent",
|
|
74
|
+
"PermissionChangedEvent",
|
|
75
|
+
"RepositoryDataOverwriteEvent"
|
|
73
76
|
]
|
|
74
77
|
}
|
|
75
78
|
},
|
|
@@ -165,7 +168,10 @@
|
|
|
165
168
|
"TreasuryEvent",
|
|
166
169
|
"RewardClaimEvent",
|
|
167
170
|
"RewardFundEvent",
|
|
168
|
-
"
|
|
171
|
+
"RewardWithdrawEvent",
|
|
172
|
+
"NewPaymentEvent",
|
|
173
|
+
"PermissionChangedEvent",
|
|
174
|
+
"RepositoryDataOverwriteEvent"
|
|
169
175
|
]
|
|
170
176
|
}
|
|
171
177
|
},
|