@wowok/agent-mcp 2.7.2 → 2.7.4
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/dist/config/runtime.js +1 -1
- package/dist/customer/account-events.d.ts +32 -0
- package/dist/customer/account-events.js +1 -0
- package/dist/customer/customer-advice.d.ts +1 -0
- package/dist/customer/customer-advice.js +1 -1
- package/dist/customer/info-puzzle.js +1 -1
- package/dist/customer/order-strategy.d.ts +1 -1
- package/dist/customer/reminder-system.d.ts +2 -0
- package/dist/customer/reminder-system.js +1 -1
- package/dist/customer/risk-assessment.d.ts +1 -0
- package/dist/customer/risk-assessment.js +1 -1
- package/dist/customer/types.d.ts +2 -0
- package/dist/evaluation/builtins/arbitration-score.d.ts +41 -0
- package/dist/evaluation/builtins/arbitration-score.js +1 -0
- package/dist/evaluation/builtins/index.d.ts +1 -0
- package/dist/evaluation/builtins/index.js +1 -1
- package/dist/evaluation/category-match-rules.d.ts +30 -0
- package/dist/evaluation/category-match-rules.js +1 -0
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/index.d.ts +1 -0
- package/dist/evaluation/index.js +1 -1
- package/dist/evaluation/location-match.d.ts +42 -0
- package/dist/evaluation/location-match.js +1 -0
- package/dist/evaluation/path-reasoning.d.ts +35 -0
- package/dist/evaluation/path-reasoning.js +1 -0
- package/dist/evaluation/region.d.ts +6 -0
- package/dist/evaluation/region.js +1 -1
- package/dist/evaluation/types.d.ts +17 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/experience/user-profile.d.ts +1 -1
- package/dist/extensions/index.d.ts +6 -0
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-layers.d.ts +75 -0
- package/dist/extensions/industry-layers.js +1 -0
- package/dist/extensions/industry-pack.d.ts +105 -0
- package/dist/extensions/industry-pack.js +1 -0
- package/dist/extensions/metric-registry.js +1 -1
- package/dist/extensions/mode-evaluator.d.ts +1 -1
- package/dist/extensions/registry.d.ts +1 -0
- package/dist/extensions/registry.js +1 -1
- package/dist/graph/base.d.ts +8 -0
- package/dist/graph/base.js +1 -0
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/index.js +1 -1
- package/dist/harness/plan.d.ts +2 -0
- package/dist/harness/plan.js +1 -1
- package/dist/harness/recover.d.ts +1 -1
- package/dist/harness/types.d.ts +2 -3
- package/dist/index.js +1 -1
- package/dist/knowledge/allocation-confirm.js +1 -1
- package/dist/knowledge/anti-cheat.d.ts +37 -0
- package/dist/knowledge/anti-cheat.js +1 -0
- package/dist/knowledge/arb-confirm.d.ts +28 -0
- package/dist/knowledge/arb-confirm.js +1 -0
- package/dist/knowledge/arb-translation.d.ts +48 -0
- package/dist/knowledge/arb-translation.js +1 -0
- package/dist/knowledge/arbitration-context.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/bridge-confirm.d.ts +26 -0
- package/dist/knowledge/bridge-confirm.js +1 -0
- package/dist/knowledge/bridge-translation.d.ts +37 -0
- package/dist/knowledge/bridge-translation.js +1 -0
- package/dist/knowledge/contact-confirm.d.ts +27 -0
- package/dist/knowledge/contact-confirm.js +1 -0
- package/dist/knowledge/contact-translation.d.ts +39 -0
- package/dist/knowledge/contact-translation.js +1 -0
- package/dist/knowledge/demand-confirm.js +1 -1
- package/dist/knowledge/demand-context.d.ts +17 -0
- package/dist/knowledge/demand-context.js +1 -0
- package/dist/knowledge/demand-ledger.d.ts +26 -0
- package/dist/knowledge/demand-ledger.js +1 -0
- package/dist/knowledge/demand-puzzle.d.ts +29 -0
- package/dist/knowledge/demand-puzzle.js +1 -0
- package/dist/knowledge/demand-risk.js +1 -1
- package/dist/knowledge/demand-templates.d.ts +12 -0
- package/dist/knowledge/demand-templates.js +1 -0
- package/dist/knowledge/demand-translation.js +1 -1
- package/dist/knowledge/deployment-scanner.js +1 -1
- package/dist/knowledge/evidence-review.d.ts +12 -0
- package/dist/knowledge/evidence-review.js +1 -0
- package/dist/knowledge/examples-scanner-cli.js +1 -1
- package/dist/knowledge/examples-scanner.js +1 -1
- package/dist/knowledge/flywheel-loop.d.ts +0 -1
- package/dist/knowledge/flywheel-loop.js +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-migration.d.ts +1 -1
- package/dist/knowledge/index.d.ts +71 -3
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/machine-render.js +1 -1
- package/dist/knowledge/market-metrics.d.ts +12 -0
- package/dist/knowledge/market-metrics.js +1 -0
- package/dist/knowledge/market-operations.d.ts +46 -0
- package/dist/knowledge/market-operations.js +1 -0
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
- package/dist/knowledge/mcp-schema-audit.d.ts +22 -22
- package/dist/knowledge/mcp-schema-audit.js +1 -1
- package/dist/knowledge/onchain-constants.d.ts +2 -2
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/payment-confirm.d.ts +26 -0
- package/dist/knowledge/payment-confirm.js +1 -0
- package/dist/knowledge/payment-risk.js +1 -1
- package/dist/knowledge/payment-translation.d.ts +37 -0
- package/dist/knowledge/payment-translation.js +1 -0
- package/dist/knowledge/permission-context.d.ts +11 -0
- package/dist/knowledge/permission-context.js +1 -1
- package/dist/knowledge/permission-ledger.d.ts +11 -0
- package/dist/knowledge/permission-ledger.js +1 -1
- package/dist/knowledge/personal-confirm.d.ts +29 -0
- package/dist/knowledge/personal-confirm.js +1 -0
- package/dist/knowledge/personal-risk.js +1 -1
- package/dist/knowledge/personal-translation.d.ts +37 -0
- package/dist/knowledge/personal-translation.js +1 -0
- package/dist/knowledge/process-model.d.ts +1 -11
- package/dist/knowledge/process-model.js +1 -1
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/progress-risk.js +1 -1
- package/dist/knowledge/progress-templates.js +1 -1
- package/dist/knowledge/progress-translation.js +1 -1
- package/dist/knowledge/proof-context.d.ts +17 -0
- package/dist/knowledge/proof-context.js +1 -0
- package/dist/knowledge/proof-ledger.d.ts +34 -0
- package/dist/knowledge/proof-ledger.js +1 -0
- package/dist/knowledge/proof-puzzle.d.ts +35 -0
- package/dist/knowledge/proof-puzzle.js +1 -0
- package/dist/knowledge/proof-templates.d.ts +22 -0
- package/dist/knowledge/proof-templates.js +1 -0
- package/dist/knowledge/registrar-confirm.d.ts +26 -0
- package/dist/knowledge/registrar-confirm.js +1 -0
- package/dist/knowledge/registrar-risk.js +1 -1
- package/dist/knowledge/registrar-translation.d.ts +37 -0
- package/dist/knowledge/registrar-translation.js +1 -0
- package/dist/knowledge/repository-context.d.ts +12 -0
- package/dist/knowledge/repository-context.js +1 -0
- package/dist/knowledge/repository-ledger.d.ts +25 -0
- package/dist/knowledge/repository-ledger.js +1 -0
- package/dist/knowledge/repository-puzzle.d.ts +30 -0
- package/dist/knowledge/repository-puzzle.js +1 -0
- package/dist/knowledge/repository-templates.d.ts +14 -0
- package/dist/knowledge/repository-templates.js +1 -0
- package/dist/knowledge/resource-confirm.d.ts +25 -0
- package/dist/knowledge/resource-confirm.js +1 -0
- package/dist/knowledge/resource-translation.d.ts +37 -0
- package/dist/knowledge/resource-translation.js +1 -0
- package/dist/knowledge/reward-context.d.ts +2 -2
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-translation.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +1 -0
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/service-risk.d.ts +1 -1
- package/dist/knowledge/service-risk.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/treasury-context.d.ts +1 -1
- package/dist/knowledge/treasury-context.js +1 -1
- package/dist/knowledge/treasury-ledger.js +1 -1
- package/dist/knowledge/treasury-risk.js +1 -1
- package/dist/knowledge/universal-template.d.ts +22 -0
- package/dist/knowledge/universal-template.js +1 -0
- package/dist/knowledge/util-confirm.d.ts +24 -0
- package/dist/knowledge/util-confirm.js +1 -0
- package/dist/knowledge/util-risk.js +1 -1
- package/dist/knowledge/util-translation.d.ts +39 -0
- package/dist/knowledge/util-translation.js +1 -0
- package/dist/knowledge/workflow-guidance.d.ts +180 -0
- package/dist/knowledge/workflow-guidance.js +1 -0
- package/dist/participation/employee-kpi.d.ts +25 -0
- package/dist/participation/employee-kpi.js +1 -0
- package/dist/participation/employee-store.d.ts +16 -0
- package/dist/participation/employee-store.js +1 -0
- package/dist/participation/index.d.ts +2 -0
- package/dist/participation/index.js +1 -0
- package/dist/persona/defaults.js +1 -1
- package/dist/persona/index.d.ts +9 -2
- package/dist/persona/index.js +1 -1
- package/dist/persona/local-region.d.ts +20 -0
- package/dist/persona/local-region.js +1 -0
- package/dist/persona/model.js +1 -1
- package/dist/persona/overrides.d.ts +10 -0
- package/dist/persona/overrides.js +1 -0
- package/dist/persona/pack-personae.d.ts +11 -0
- package/dist/persona/pack-personae.js +1 -0
- package/dist/persona/strategy-intent.d.ts +20 -0
- package/dist/persona/strategy-intent.js +1 -0
- package/dist/persona/types.d.ts +3 -1
- package/dist/project/business-puzzle.d.ts +1 -1
- package/dist/project/business-puzzle.js +1 -1
- package/dist/project/deployment-doc.js +1 -1
- package/dist/project/edit-planner.js +1 -1
- package/dist/project/evaluation.d.ts +37 -1
- package/dist/project/evaluation.js +1 -1
- package/dist/project/graph-builder.d.ts +2 -2
- package/dist/project/graph-builder.js +1 -1
- package/dist/project/graph.d.ts +3 -6
- package/dist/project/handlers.d.ts +33 -2
- package/dist/project/handlers.js +1 -1
- package/dist/project/index.d.ts +1 -0
- package/dist/project/index.js +1 -1
- package/dist/project/merchant-guide.d.ts +19 -0
- package/dist/project/merchant-guide.js +1 -1
- package/dist/project/mode-actions.js +1 -1
- package/dist/project/rollback-policy.js +1 -1
- package/dist/project/semantic-assembler.d.ts +2 -2
- package/dist/project/semantic-assembler.js +1 -1
- package/dist/project/semantic-graph.d.ts +3 -5
- package/dist/project/workflow-design-assessment.d.ts +24 -0
- package/dist/project/workflow-design-assessment.js +1 -0
- package/dist/safety/confirm-gate.d.ts +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/call/allocation.d.ts +186 -1385
- package/dist/schema/call/arbitration.d.ts +272 -1871
- package/dist/schema/call/base.d.ts +1831 -9076
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +911 -3171
- package/dist/schema/call/contact.d.ts +135 -931
- package/dist/schema/call/demand.d.ts +164 -1194
- package/dist/schema/call/guard.d.ts +298 -1140
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/machine.d.ts +459 -5403
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +137 -844
- package/dist/schema/call/payment.d.ts +74 -561
- package/dist/schema/call/permission.d.ts +335 -2791
- package/dist/schema/call/personal.d.ts +227 -1814
- package/dist/schema/call/progress.d.ts +140 -843
- package/dist/schema/call/proof.d.ts +42 -258
- package/dist/schema/call/repository.d.ts +324 -2222
- package/dist/schema/call/reward.d.ts +153 -1183
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +376 -3431
- package/dist/schema/call/treasury.d.ts +252 -2158
- package/dist/schema/common/index.d.ts +222 -697
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +18 -161
- package/dist/schema/employee/index.d.ts +99 -0
- package/dist/schema/employee/index.js +1 -0
- package/dist/schema/evaluation/index.d.ts +1035 -3918
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +132 -0
- package/dist/schema/industry-pack/index.js +1 -0
- package/dist/schema/intent-radar/index.d.ts +92 -245
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +2045 -18080
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.d.ts +61 -651
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +949 -5557
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +3168 -26468
- package/dist/schema/operations.js +1 -1
- package/dist/schema/permission/index.d.ts +121 -0
- package/dist/schema/permission/index.js +1 -0
- package/dist/schema/persona/index.d.ts +469 -1820
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/project/index.d.ts +1023 -8450
- package/dist/schema/project/index.js +1 -1
- package/dist/schema/query/index.d.ts +12121 -75556
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-query/index.d.ts +35 -98
- package/dist/schema/schema-query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/task-status.d.ts +26 -132
- package/dist/schema/trust/index.d.ts +194 -1290
- package/dist/schema/utils/guard-parser.js +1 -1
- package/dist/schema/utils/node-parser.js +1 -1
- package/dist/schema/utils/skills-recommendation.d.ts +1 -0
- package/dist/schema/utils/skills-recommendation.js +1 -1
- package/dist/schema/workflow/index.d.ts +161 -0
- package/dist/schema/workflow/index.js +1 -0
- package/dist/schema/workspace/index.d.ts +69 -0
- package/dist/schema/workspace/index.js +1 -0
- package/dist/{schema-query → schema-query-impl}/index.js +1 -1
- package/dist/schemas/account_operation.output.json +3147 -1655
- package/dist/schemas/account_operation.schema.json +225 -218
- package/dist/schemas/bridge_operation.output.json +1168 -653
- package/dist/schemas/bridge_operation.schema.json +736 -504
- package/dist/schemas/config_operation.output.json +185 -179
- package/dist/schemas/config_operation.schema.json +21 -26
- package/dist/schemas/employee_operation.output.json +207 -0
- package/dist/schemas/employee_operation.schema.json +176 -0
- package/dist/schemas/evaluation_operation.output.json +2268 -601
- package/dist/schemas/evaluation_operation.schema.json +2919 -787
- package/dist/schemas/guard2file.output.json +58 -64
- package/dist/schemas/guard2file.schema.json +79 -81
- package/dist/schemas/index.json +41 -11
- package/dist/schemas/industry_pack_operation.output.json +594 -0
- package/dist/schemas/industry_pack_operation.schema.json +55 -0
- package/dist/schemas/intent_radar.output.json +275 -203
- package/dist/schemas/intent_radar.schema.json +124 -126
- package/dist/schemas/local_info_operation.output.json +1174 -660
- package/dist/schemas/local_info_operation.schema.json +119 -125
- package/dist/schemas/local_mark_operation.output.json +1239 -692
- package/dist/schemas/local_mark_operation.schema.json +91 -96
- package/dist/schemas/machineNode2file.output.json +63 -69
- package/dist/schemas/machineNode2file.schema.json +79 -81
- package/dist/schemas/messenger_operation.output.json +2722 -1531
- package/dist/schemas/messenger_operation.schema.json +1482 -1264
- package/dist/schemas/onchain_events.output.json +2590 -978
- package/dist/schemas/onchain_events.schema.json +117 -99
- package/dist/schemas/onchain_operations.output.json +3957 -2312
- package/dist/schemas/onchain_operations.schema.json +20799 -9285
- package/dist/schemas/onchain_operations_allocation.schema.json +171 -107
- package/dist/schemas/onchain_operations_arbitration.schema.json +233 -146
- package/dist/schemas/onchain_operations_contact.schema.json +129 -90
- package/dist/schemas/onchain_operations_demand.schema.json +170 -112
- package/dist/schemas/onchain_operations_gen_passport.schema.json +61 -646
- package/dist/schemas/onchain_operations_gen_proof.schema.json +40 -172
- package/dist/schemas/onchain_operations_guard.schema.json +3765 -294
- package/dist/schemas/onchain_operations_machine.schema.json +536 -163
- package/dist/schemas/onchain_operations_order.schema.json +126 -96
- package/dist/schemas/onchain_operations_payment.schema.json +82 -67
- package/dist/schemas/onchain_operations_permission.schema.json +331 -93
- package/dist/schemas/onchain_operations_personal.schema.json +636 -96
- package/dist/schemas/onchain_operations_progress.schema.json +125 -92
- package/dist/schemas/onchain_operations_proof.schema.json +76 -69
- package/dist/schemas/onchain_operations_repository.schema.json +636 -249
- package/dist/schemas/onchain_operations_reward.schema.json +218 -108
- package/dist/schemas/onchain_operations_service.schema.json +678 -220
- package/dist/schemas/onchain_operations_treasury.schema.json +401 -135
- package/dist/schemas/onchain_table_data.output.json +6833 -2432
- package/dist/schemas/onchain_table_data.schema.json +684 -417
- package/dist/schemas/permission_operation.output.json +173 -0
- package/dist/schemas/permission_operation.schema.json +39 -0
- package/dist/schemas/persona_operation.output.json +1568 -268
- package/dist/schemas/persona_operation.schema.json +346 -205
- package/dist/schemas/project_operation.output.json +6922 -5132
- package/dist/schemas/project_operation.schema.json +1050 -1020
- package/dist/schemas/query_task_status.output.json +195 -99
- package/dist/schemas/query_task_status.schema.json +12 -18
- package/dist/schemas/query_toolkit.output.json +18862 -14561
- package/dist/schemas/query_toolkit.schema.json +614 -522
- package/dist/schemas/schema_query.output.json +127 -129
- package/dist/schemas/schema_query.schema.json +64 -69
- package/dist/schemas/trust_score.output.json +678 -587
- package/dist/schemas/trust_score.schema.json +289 -277
- package/dist/schemas/wip_file.output.json +116 -124
- package/dist/schemas/wip_file.schema.json +142 -143
- package/dist/schemas/workflow_operation.output.json +164 -0
- package/dist/schemas/workflow_operation.schema.json +116 -0
- package/dist/schemas/workspace_operation.output.json +277 -0
- package/dist/schemas/workspace_operation.schema.json +45 -0
- package/dist/schemas/wowok_buildin_info.output.json +1682 -844
- package/dist/schemas/wowok_buildin_info.schema.json +576 -526
- package/dist/tools/handlers/bridge.d.ts +8 -1
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/employee.d.ts +2 -0
- package/dist/tools/handlers/employee.js +1 -0
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/industry-pack.d.ts +2 -0
- package/dist/tools/handlers/industry-pack.js +1 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/permission.d.ts +2 -0
- package/dist/tools/handlers/permission.js +1 -0
- package/dist/tools/handlers/persona.js +1 -1
- package/dist/tools/handlers/project.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/trust.js +1 -1
- package/dist/tools/handlers/wip.js +1 -1
- package/dist/tools/handlers/workflow.d.ts +2 -0
- package/dist/tools/handlers/workflow.js +1 -0
- package/dist/tools/handlers/workspace.d.ts +4 -0
- package/dist/tools/handlers/workspace.js +1 -0
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/rules-hook.d.ts +1 -1
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/shared.d.ts +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/types.d.ts +2 -1
- package/package.json +4 -5
- package/dist/knowledge/arbitration-trust.d.ts +0 -24
- package/dist/knowledge/arbitration-trust.js +0 -1
- package/dist/schema/call/bridge-handler.d.ts +0 -8
- package/dist/schema/call/bridge-handler.js +0 -1
- package/dist/schema/sync-layer4.d.ts +0 -21
- package/dist/schema/sync-layer4.js +0 -1
- /package/dist/{schema-query → schema-query-impl}/index.d.ts +0 -0
|
@@ -1 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CallOutput } from "../../schema/call/base.js";
|
|
2
|
+
export declare function handleBridgeOperations(args: unknown): Promise<{
|
|
3
|
+
content: {
|
|
4
|
+
type: "text";
|
|
5
|
+
text: string;
|
|
6
|
+
}[];
|
|
7
|
+
structuredContent: CallOutput;
|
|
8
|
+
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{BridgeClient,LocalMark}from'@wowok/wowok';import{classifyError,buildSemantic,buildDataSemantic}from'../../schema/call/semantic.js';let _bridgeClient=null,_bridgeClientEnv=null;function getBridgeClient(a){const b=a||{},c=b?.['account'];return(_bridgeClient===null||_bridgeClientEnv===null||c!==_bridgeClientEnv?.['account'])&&(_bridgeClient=new BridgeClient({'wowEnv':b}),_bridgeClientEnv=b),_bridgeClient;}function getBridgeClientForQuery(){if(_bridgeClient!==null)return _bridgeClient;return _bridgeClient=new BridgeClient({}),_bridgeClientEnv={},_bridgeClient;}function validateMainnet(a){const b=a?.['network'];if(b&&b!=='mainnet')throw new Error('Bridge\x20only\x20supports\x20WOW\x20mainnet\x20(current\x20network:\x20\x27'+b+'\x27).\x20Only\x20mainnet\x20provides\x20cross-chain\x20functionality.');}async function resolveWowAddress(a,b){if(!a){const c=b?.['account'];return c;}if(/^0x[0-9a-fA-F]{64}$/['test'](a))return a;try{const d=await LocalMark['Instance']()['get_address'](a);if(d)return d;return a;}catch{return a;}}function safeJson(a){return JSON['stringify'](a,(b,c)=>typeof c==='bigint'?c['toString']():c,0x2);}function convertBigInts(a){if(typeof a==='bigint')return a['toString']();if(Array['isArray'](a))return a['map'](convertBigInts);if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a))b[c]=convertBigInts(a[c]);return b;}return a;}function ok(a,b,c){const d=convertBigInts(b),e=buildSemantic(d,c),f={'message':a,'result':{'type':'data','data':d},'semantic':e};return{'content':[{'type':'text','text':a},{'type':'text','text':safeJson(d)}],'structuredContent':f};}function err(a,b){const c=classifyError(a),d=buildDataSemantic(undefined,b,!![],a),e={'message':a,'result':{'type':'error','error':a,'error_code':c['error_code'],'retryable':c['retryable'],'recovery_hint':c['recovery_hint']},'semantic':d};return{'content':[{'type':'text','text':a}],'structuredContent':e};}export async function handleBridgeOperations(a){if(!a||typeof a!=='object')return err('Invalid\x20args:\x20expected\x20an\x20object\x20with\x20operation_type');let b;try{const {strictParse:f}=await import('../../schema/call/base.js');b=f((await import('../../schema/call/bridge.js'))['BridgeOperationsSchema'],a,'bridge_operations\x20input');}catch(g){return err('Parameter\x20validation\x20failed:\x20'+(g?.['message']??String(g)));}const c=b['env'],d={'operation_type':'bridge_'+b['operation_type'],'data':b['data']};try{switch(b['operation_type']){case'cross_chain_wow_to_evm':{validateMainnet(c);const h=b['data'],i=getBridgeClient(c),j=await i['bridgeWowToEvmSimple']({'token':h['token'],'amount':BigInt(h['amount']),'withdrawTo':h['withdrawTo'],'waitForFinalization':![],'idempotencyKey':h['idempotencyKey'],'idempotentByParams':h['idempotentByParams']}),k=j['idempotentHit']?'\x20[IDEMPOTENT\x20HIT\x20—\x20no\x20new\x20deposit]':'';return ok('WOW→EVM\x20cross-chain\x20step\x201\x20(deposit)\x20submitted.\x20transferId='+j['transferId']+',\x20activeEvmAccount='+j['activeEvmAccount']+'.'+k+'\x20'+'Next:\x20poll\x20query_transfer_status\x20until\x20bridge\x20signs\x20(~1-5\x20min),\x20then\x20call\x20claim_wow_to_evm\x20to\x20complete.',j,d);}case'cross_chain_evm_to_wow':{validateMainnet(c);const l=b['data'],m=await resolveWowAddress(l['recipientWowAddress'],c),n=getBridgeClient(c),o=await n['bridgeEvmToWowSimple']({'token':l['token'],'amount':BigInt(l['amount']),'recipientWowAddress':m,'waitForFinalization':![],'idempotencyKey':l['idempotencyKey'],'idempotentByParams':l['idempotentByParams']}),p=o['idempotentHit']?'\x20[IDEMPOTENT\x20HIT\x20—\x20no\x20new\x20deposit]':'';return ok('EVM→WOW\x20cross-chain\x20submitted.\x20transferId='+o['transferId']+',\x20activeEvmAccount='+o['activeEvmAccount']+'.'+p+'\x20'+'Bridge\x20will\x20auto-claim\x20on\x20WOW\x20(~10-20\x20min).\x20Poll\x20query_transfer_status\x20to\x20monitor\x20progress.',o,d);}case'claim_wow_to_evm':{validateMainnet(c);const q=b['data'],r=getBridgeClient(c),s=await r['claimWowToEvm'](q['transferId']);return ok('WOW→EVM\x20claim\x20(step\x202)\x20completed.\x20transferId='+s['transferId']+',\x20claimTxHash='+s['claimTxHash'],s,d);}case'resume_transfer':{validateMainnet(c);const t=b['data'],u=getBridgeClient(c),v=await u['resumeTransfer'](t['transferId']);return ok('Transfer\x20'+t['transferId']+'\x20resumed.\x20Current\x20step:\x20'+v['step']+',\x20status:\x20'+v['status']+'.',v,d);}case'withdraw':{const w=b['data'],x=getBridgeClientForQuery();let y=w['tokenAddress'];if(!y&&w['token']&&w['token']!=='ETH'){const A=x['config'],B=A?.['evmChains']?.['find'](D=>D['name']===(w['network']??'mainnet')),C=B?.['tokens']?.['find'](D=>D['symbol']===w['token']);y=C?.['evmAddress'];if(!y)return err('Cannot\x20resolve\x20ERC20\x20token\x20address\x20for\x20symbol\x20\x27'+w['token']+'\x27\x20on\x20chain\x20\x27'+(w['network']??'mainnet')+'\x27.\x20Please\x20pass\x20tokenAddress\x20explicitly.',d);}const z=await x['withdrawFromActiveEvmAccount']({'to':w['to'],'amount':BigInt(w['amount']),'tokenAddress':y,'token':w['token']?w['token']:undefined,'network':w['network']});return ok('Withdrawal\x20submitted.\x20transferId='+z['transferId']+',\x20txHash='+z['txHash'],z,d);}case'query_active_evm_account':{const D=b['data']??{},E=getBridgeClientForQuery(),F=await E['queryActiveEvmAccount']({'network':D['network'],'tokens':D['tokens']});return ok('activeEvmAccount:\x20'+F['address']+'\x20('+F['chains']['length']+'\x20chain(s))',F,d);}case'query_supported_evm_chains':{const G=getBridgeClientForQuery(),H=await G['querySupportedEvmChains']();return ok(H['length']+'\x20EVM\x20chain(s)\x20supported:\x20'+H['map'](I=>I['name']+'(chainId='+I['chainId']+')')['join'](',\x20'),H,d);}case'query_supported_tokens':{const I=b['data']??{},J=getBridgeClientForQuery(),K=await J['querySupportedTokens']({'network':I['network']}),L=K['reduce']((M,N)=>M+N['tokens']['length'],0x0);return ok(K['length']+'\x20chain(s),\x20'+L+'\x20token\x20entries:\x20'+K['map'](M=>M['chainName']+'('+M['tokens']['length']+'\x20tokens)')['join'](',\x20'),K,d);}case'query_transfer_list':{const M=b['data']??{},N=getBridgeClientForQuery();let O=await N['queryTransferList']({'onlyActive':M['onlyActive']});M['status']&&(O=O['filter'](Q=>Q['status']===M['status']));M['direction']&&(O=O['filter'](Q=>Q['direction']===M['direction']));M['token']&&(O=O['filter'](Q=>Q['token']===M['token']));M['limit']&&M['limit']>0x0&&(O=O['slice'](0x0,M['limit']));const P=O['filter'](Q=>Q['status']!=='success'&&Q['status']!=='failed')['length'];return ok(O['length']+'\x20transfer\x20record(s)\x20('+P+'\x20in\x20progress)'+(M['status']||M['direction']||M['token']?'\x20(filtered)':''),O,d);}case'query_transfer_status':{const Q=b['data'],R=getBridgeClientForQuery(),S=Q['refresh']!==![];if(S)try{await Promise['race']([R['refreshTransferStatus'](Q['transferId']),new Promise((U,V)=>setTimeout(()=>V(new Error('refresh\x20timeout')),0x3a98))]);}catch{}const T=await R['queryTransferStatus'](Q['transferId']);if(!T)return err('transferId\x20\x27'+Q['transferId']+'\x27\x20not\x20found.\x20'+'Use\x20query_transfer_list\x20to\x20see\x20all\x20valid\x20transferIds.\x20'+'Note:\x20transfer\x20history\x20is\x20persisted\x20in\x20cache.db\x20and\x20restored\x20on\x20MCP\x20restart,\x20'+'so\x20this\x20transferId\x20may\x20never\x20have\x20been\x20created\x20in\x20this\x20environment.',d);return ok('Transfer\x20'+Q['transferId']+':\x20'+T['direction']+'\x20/\x20'+T['step']+'\x20/\x20'+T['status'],T,d);}case'manage_evm_rpc':{const U=b['data'],V=getBridgeClientForQuery(),W=await V['manageEvmRpc']({'op':U['op'],'network':U['network'],'rpcUrls':U['rpcUrls']});return ok('RPC\x20\x27'+U['op']+'\x27\x20operation\x20'+(W['success']?'succeeded':'failed'),W,d);}default:{return err('Unsupported\x20operation_type:\x20'+b['operation_type'],d);}}}catch(X){const Y=X?.['message']??String(X);return err('Bridge\x20operation\x20failed:\x20'+Y,d);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{listServices,getServiceInfo,toggle as
|
|
1
|
+
import{listServices,getServiceInfo,toggle as a352a,setEnabled as a352b,reset as a352c}from'../../config/index.js';import{strictParse}from'../../schema/index.js';import{ConfigOperationInputSchema}from'../../schema/config/index.js';export async function handleConfigOperation(a){const b=strictParse(ConfigOperationInputSchema,a,'config_operation\x20input'),{action:c,service:d}=b;let e;switch(c){case'list':e={'action':'list','services':listServices()};break;case'toggle':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20toggle');const f=d,g=getServiceInfo(f);if(!g)throw new Error('Unknown\x20service:\x20'+f+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');const h=a352a(f);e={'action':'toggle','service':f,'enabled':h,'reminder':g['reminder']};break;}case'enable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20enable');const i=d,j=getServiceInfo(i);if(!j)throw new Error('Unknown\x20service:\x20'+i+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a352b(i,!![]),e={'action':'enable','service':i,'enabled':!![],'reminder':j['reminder']};break;}case'disable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20disable');const k=d,l=getServiceInfo(k);if(!l)throw new Error('Unknown\x20service:\x20'+k+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a352b(k,![]),e={'action':'disable','service':k,'enabled':![],'reminder':l['reminder']};break;}case'reset':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20reset');const m=d,n=getServiceInfo(m);if(!n)throw new Error('Unknown\x20service:\x20'+m+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a352c(m),e={'action':'reset','service':m,'enabled':getServiceInfo(m)?.['enabled'],'reminder':n['reminder'],'reset':!![]};break;}case'info':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20info');const o=d,p=getServiceInfo(o);if(!p)throw new Error('Unknown\x20service:\x20'+o+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');e={'action':'info',...p};break;}default:throw new Error('Unknown\x20config_operation\x20action:\x20'+String(c));}return{'content':[{'type':'text','text':JSON['stringify']({'result':e})}],'structuredContent':{'result':e}};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{strictParse}from'../../schema/index.js';import{EmployeeOperationInputSchema}from'../../schema/employee/index.js';import{getEmployeeStore}from'../../participation/employee-store.js';import{assessReactionKpi,resolveLiability}from'../../participation/employee-kpi.js';export async function handleEmployeeOperation(a){const b=strictParse(EmployeeOperationInputSchema,a,'employee_operation\x20input'),c=getEmployeeStore();let d;switch(b['action']){case'set':{await c['save'](b['account'],b['profile']),d={'action':'set','account':b['account'],'profile':b['profile']};break;}case'get':{d={'action':'get','account':b['account'],'profile':await c['get'](b['account'])};break;}case'remove':{d={'action':'remove','account':b['account'],'removed':await c['remove'](b['account'])};break;}case'assess_kpi':{let e=b['budget_ms'];if(e===undefined&&b['account']){const f=await c['get'](b['account']);e=f?.['response_time_budget_ms'];}d={'action':'assess_kpi',...assessReactionKpi(b['node'],b['assigned_at'],b['advanced_at'],e)};break;}case'resolve_liability':{let g=b['liability'];if(g===undefined&&b['account']){const h=await c['get'](b['account']);g=h?.['liability'];}if(g===undefined)throw new Error('resolve_liability\x20requires\x20`account`\x20(with\x20a\x20stored\x20profile)\x20or\x20an\x20explicit\x20`liability`');d={'action':'resolve_liability',...resolveLiability(g,b['loss_amount'],b['hybrid_threshold']??0x0)};break;}default:throw new Error('Unknown\x20employee_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{strictParse}from'../../schema/index.js';import{EvaluationOperationInputSchema}from'../../schema/evaluation/index.js';import{evaluateArbGame}from'../../evaluation/arbitration-game.js';import{evaluateNodeGame}from'../../evaluation/node-game.js';import{summarizeCapabilityGaps}from'../../evaluation/gap.js';import{composeServicesForDemand}from'../../evaluation/composer.js';import{matchDemandToServices,matchServiceToDemands}from'../../evaluation/builtins/demand-match.js';import{assessServiceRisk}from'../../evaluation/builtins/service-risk.js';import{registerBuiltinEvaluations}from'../../evaluation/builtins/index.js';import{getEffectivePersona,mergeInjections,personaToInjection}from'../../persona/index.js';registerBuiltinEvaluations();function capabilityFromInput(a){return{'id':a['id'],'kind':a['kind'],'owner':a['owner']??'','industry':a['industry'],'industry_confidence':a['industry_confidence']??0x0,'region':a['region'],'price_min':a['price_min']!==undefined?BigInt(a['price_min']):undefined,'price_max':a['price_max']!==undefined?BigInt(a['price_max']):undefined,'token_type':a['token_type']??'','ticket_size':a['ticket_size']??'medium','trust_score':a['trust_score']??0x32,'reputation_like_ratio':a['reputation_like_ratio']??0x1,'arbitration_independent':a['arbitration_independent']??![],'merchant_history_count':a['merchant_history_count']??0x0,'capabilities':a['capabilities'],'tags':a['tags']??[],'keywords':a['keywords']??[]};}function puzzleRawFromInput(a){return{'service':{...a['service'],'priceRaw':a['service']['priceRaw']!==undefined?BigInt(a['service']['priceRaw']):undefined,'compensation_fund':a['service']['compensation_fund']?{'balance':a['service']['compensation_fund']['balance']!==undefined?BigInt(a['service']['compensation_fund']['balance']):undefined}:undefined},'machine_nodes':a['machine_nodes'],'machine_published':a['machine_published'],'machine_paused':a['machine_paused'],'reviews':a['reviews'],'events':a['events'],'similar_services':a['similar_services']?.['map'](b=>({'price':BigInt(b['price'])})),'order_amount':a['order_amount']!==undefined?BigInt(a['order_amount']):undefined,'trust_score':a['trust_score'],'arbitration_owner':a['arbitration_owner'],'service_owner':a['service_owner'],'wip_verified':a['wip_verified'],'order_history':a['order_history'],'merchant_reputation':a['merchant_reputation']};}async function resolveInjection(a,b){const c=a?personaToInjection(await getEffectivePersona(a)):undefined;return mergeInjections(c,b);}export async function handleEvaluationOperation(a){const b=strictParse(EvaluationOperationInputSchema,a,'evaluation_operation\x20input');let c;switch(b['action']){case'arb_game':{const d=b['account']?await getEffectivePersona(b['account']):null,e=b['appetite']??d?.['layer']['preferences']?.['risk_appetite'],f=b['requirements']??d?.['layer']['requirements'];c={'action':'arb_game',...evaluateArbGame(b['status'],b['perspective'],{'risk_appetite':e,'requirements':f})};break;}case'node_game':{const g=b['account']?await getEffectivePersona(b['account']):null,h=b['appetite']??g?.['layer']['preferences']?.['risk_appetite'],i=b['requirements']??g?.['layer']['requirements'];c={'action':'node_game',...evaluateNodeGame({'current_node':b['current_node'],'perspective':b['perspective'],'appetite':h,'requirements':i,'threshold':b['threshold'],'allocation':b['allocation'],'order_amount':b['order_amount'],'compensation_fund':b['compensation_fund'],'operable':b['operable'],'waiting_on':b['waiting_on']??[]})};break;}case'capability_gap':{c={'action':'capability_gap','report':summarizeCapabilityGaps(capabilityFromInput(b['demand']),capabilityFromInput(b['service']))};break;}case'compose_service':{c={'action':'compose_service','plan':composeServicesForDemand(capabilityFromInput(b['demand']),b['services']['map'](capabilityFromInput))};break;}case'demand_match':{c={'action':'demand_match','matches':await matchDemandToServices(capabilityFromInput(b['demand_cap']),b['services'],await resolveInjection(b['account'],b['injection']))};break;}case'service_match':{c={'action':'service_match','matches':await matchServiceToDemands(capabilityFromInput(b['service_cap']),b['demands'],await resolveInjection(b['account'],b['injection']))};break;}case'service_risk':{c={'action':'service_risk','result':await assessServiceRisk(b['service_id'],puzzleRawFromInput(b['puzzle_raw']),await resolveInjection(b['account'],b['injection']),b['depth']??'preorder')};break;}default:throw new Error('Unknown\x20evaluation_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|
|
1
|
+
import{strictParse}from'../../schema/index.js';import{EvaluationOperationInputSchema}from'../../schema/evaluation/index.js';import{evaluateArbGame}from'../../evaluation/arbitration-game.js';import{evaluateNodeGame}from'../../evaluation/node-game.js';import{evaluatePathReasoning}from'../../evaluation/path-reasoning.js';import{assessEvidenceReview}from'../../knowledge/evidence-review.js';import{expandSearchScope,inferSensitivity,rankByLocation}from'../../evaluation/location-match.js';import{query_services,query_arbs,query_demands,query_objects,ArbStatus}from'@wowok/wowok';import{fetchObjectLinkerCore}from'../../knowledge/index.js';import{summarizeCapabilityGaps}from'../../evaluation/gap.js';import{composeServicesForDemand}from'../../evaluation/composer.js';import{matchDemandToServices,matchServiceToDemands}from'../../evaluation/builtins/demand-match.js';import{extractDemandCapability}from'../../evaluation/extract.js';import{assessServiceRisk}from'../../evaluation/builtins/service-risk.js';import{assessArbitration}from'../../evaluation/builtins/arbitration-score.js';import{resolveCategoryMatchRules,toSoftWeightInjection,applyHardConstraints}from'../../evaluation/category-match-rules.js';import{computeMarketMetrics}from'../../knowledge/market-metrics.js';import{assessAntiCheat}from'../../knowledge/anti-cheat.js';import{computeJourneyFunnel,attributeReferrals,buildCustomerRelationships}from'../../knowledge/market-operations.js';import{suggestPricing}from'../../knowledge/dynamic-pricing.js';import{runAccountEventWatchers}from'../../customer/account-events.js';import{registerBuiltinEvaluations}from'../../evaluation/builtins/index.js';import{getEffectivePersona,mergeInjections,personaToInjection}from'../../persona/index.js';registerBuiltinEvaluations();function arbCaseFromObject(b){const c=typeof b['time']==='number'?b['time']:Number(b['time']??0x0);return{'status':b['status'],'time':Number['isFinite'](c)?c:undefined,'resolved_time':typeof b['indemnity']?.['time']==='number'?b['indemnity']['time']:b['compensation_time']??undefined,'indemnity_amount':b['indemnity']?.['amount'],'objected':b['status']===ArbStatus['Objectionable']||b['objection']!=null&&b['objection']['length']>0x0};}async function arbCasesWithRoles(a,b){const c=a['map'](arbCaseFromObject),d=Array['from'](new Set(a['map'](j=>j['order'])['filter'](Boolean))),e=new Map(),f=[];if(d['length']>0x0){const j=await query_objects({'objects':d,'network':b});for(const k of j['objects']??[]){const l=k;if(!l?.['object'])continue;e['set'](l['object'],l);if(l['service'])f['push'](l['service']);}}const g=new Map(),h=Array['from'](new Set(f));if(h['length']>0x0){const m=await query_objects({'objects':h,'network':b});for(const n of m['objects']??[]){const p=n;if(p?.['object'])g['set'](p['object'],p);}}for(let q=0x0;q<a['length'];q++){const r=e['get'](a[q]['order']);if(!r)continue;c[q]['customer']=r['builder']||undefined;const t=g['get'](r['service']);if(t)c[q]['merchant']=t['permission']||undefined;}return c;}function capabilityFromInput(a){return{'id':a['id'],'kind':a['kind'],'owner':a['owner']??'','industry':a['industry'],'industry_confidence':a['industry_confidence']??0x0,'region':a['region'],'price_min':a['price_min']!==undefined?BigInt(a['price_min']):undefined,'price_max':a['price_max']!==undefined?BigInt(a['price_max']):undefined,'token_type':a['token_type']??'','ticket_size':a['ticket_size']??'medium','trust_score':a['trust_score']??0x32,'reputation_like_ratio':a['reputation_like_ratio']??0x1,'arbitration_independent':a['arbitration_independent']??![],'merchant_history_count':a['merchant_history_count']??0x0,'capabilities':a['capabilities'],'tags':a['tags']??[],'keywords':a['keywords']??[]};}function puzzleRawFromInput(a){return{'service':{...a['service'],'priceRaw':a['service']['priceRaw']!==undefined?BigInt(a['service']['priceRaw']):undefined,'compensation_fund':a['service']['compensation_fund']?{'balance':a['service']['compensation_fund']['balance']!==undefined?BigInt(a['service']['compensation_fund']['balance']):undefined}:undefined},'machine_nodes':a['machine_nodes'],'machine_published':a['machine_published'],'machine_paused':a['machine_paused'],'reviews':a['reviews'],'events':a['events'],'similar_services':a['similar_services']?.['map'](b=>({'price':BigInt(b['price'])})),'order_amount':a['order_amount']!==undefined?BigInt(a['order_amount']):undefined,'trust_score':a['trust_score'],'arbitration_owner':a['arbitration_owner'],'service_owner':a['service_owner'],'wip_verified':a['wip_verified'],'order_history':a['order_history'],'merchant_reputation':a['merchant_reputation']};}async function resolveInjection(a,b){const c=a?personaToInjection(await getEffectivePersona(a)):undefined;return mergeInjections(c,b);}function serviceSummaryToExtract(a){const b=a['json']??{},c=f=>typeof f==='string'?f:undefined,d=f=>typeof f==='string'?f:null,e=Array['isArray'](b['sales'])?b['sales']['map'](f=>({'name':typeof f?.['name']==='string'?f['name']:undefined,'price':typeof f?.['price']==='string'?f['price']:f?.['price']!=null?String(f['price']):'0','wip_hash':typeof f?.['wip_hash']==='string'?f['wip_hash']:undefined})):[];return{'object':a['object'],'description':c(b['description'])??'','location':a['location']??c(b['location'])??'','sales':e,'arbitrations':Array['isArray'](b['arbitrations'])?b['arbitrations']['map'](String):[],'compensation_fund':c(b['compensation_fund']),'buy_guard':d(b['buy_guard']),'machine':d(b['machine']),'um':d(b['um']),'bPublished':b['bPublished']===!![],'bPaused':b['bPaused']===!![]};}export async function handleEvaluationOperation(a){const b=strictParse(EvaluationOperationInputSchema,a,'evaluation_operation\x20input');let c;switch(b['action']){case'arb_game':{const e=b['account']?await getEffectivePersona(b['account']):null,f=b['appetite']??e?.['layer']['preferences']?.['risk_appetite'],g=b['requirements']??e?.['layer']['requirements'];c={'action':'arb_game',...evaluateArbGame(b['status'],b['perspective'],{'risk_appetite':f,'requirements':g})};break;}case'node_game':{const h=b['account']?await getEffectivePersona(b['account']):null,i=b['appetite']??h?.['layer']['preferences']?.['risk_appetite'],j=b['requirements']??h?.['layer']['requirements'];c={'action':'node_game',...evaluateNodeGame({'current_node':b['current_node'],'perspective':b['perspective'],'appetite':i,'requirements':j,'threshold':b['threshold'],'allocation':b['allocation'],'order_amount':b['order_amount'],'compensation_fund':b['compensation_fund'],'operable':b['operable'],'waiting_on':b['waiting_on']??[]})};break;}case'capability_gap':{c={'action':'capability_gap','report':summarizeCapabilityGaps(capabilityFromInput(b['demand']),capabilityFromInput(b['service']))};break;}case'compose_service':{c={'action':'compose_service','plan':composeServicesForDemand(capabilityFromInput(b['demand']),b['services']['map'](capabilityFromInput))};break;}case'demand_match':{c={'action':'demand_match','matches':await matchDemandToServices(capabilityFromInput(b['demand_cap']),b['services'],await resolveInjection(b['account'],b['injection']))};break;}case'service_match':{c={'action':'service_match','matches':await matchServiceToDemands(capabilityFromInput(b['service_cap']),b['demands'],await resolveInjection(b['account'],b['injection']))};break;}case'service_risk':{c={'action':'service_risk','result':await assessServiceRisk(b['service_id'],puzzleRawFromInput(b['puzzle_raw']),await resolveInjection(b['account'],b['injection']),b['depth']??'preorder')};break;}case'path_reasoning':{const k=b['account']?await getEffectivePersona(b['account']):null,l=b['appetite']??k?.['layer']['preferences']?.['risk_appetite'],m=b['requirements']??k?.['layer']['requirements'];c={'action':'path_reasoning',...evaluatePathReasoning({'current_node':b['current_node'],'perspective':b['perspective'],'machine_nodes':b['machine_nodes'],'node_annotations':b['node_annotations'],'appetite':l,'requirements':m,'order_amount':b['order_amount'],'max_depth':b['max_depth']})};break;}case'evidence_review':{c={'action':'evidence_review','review':assessEvidenceReview({'kind':b['kind'],'hash_committed':b['hash_committed'],'digital_check_passed':b['digital_check_passed'],'contradiction':b['contradiction']})};break;}case'discover_services':{const n=!b['sensitivity']?inferSensitivity(b['description']??''):null,o=b['sensitivity']??n['sensitivity'],p=n?.['signals']??[],q=b['context_network']??'testnet',r={'raw':b['location'],...b['region']??{}},s=expandSearchScope(o,r),t=await query_services({'coin_type':b['coin_type'],'name_contains':b['name_contains'],'location_any':s['search_terms'],'max_objects':b['max_objects'],'network':q,'no_cache':b['no_cache']}),u=rankByLocation(o,r,t['services']['map'](v=>({'id':v['object'],'name':v['name'],'location':v['location']})));c={'action':'discover_services','sensitivity':o,'inference_signals':p,'services':u['map'](v=>{const w=t['services']['find'](x=>x['object']===v['id']);return{'object':v['id'],'name':w?.['name'],'location':w?.['location'],'relation':v['relation'],'satisfied':v['satisfied'],'score':v['score'],'reason':v['reason']};}),'total_enumerated':t['total_enumerated'],'has_more':t['has_more'],'scope_advice':{'search_terms':s['search_terms'],'ai_enrichment_note':s['ai_enrichment_note']}};break;}case'discover_demands':{const v=b['context_network']??'testnet',w=await query_demands({'max_objects':b['max_objects'],'network':v,'no_cache':b['no_cache']}),x=b['location']?.['toLowerCase'](),y=w['demands']['filter'](z=>!x||(z['location']??'')['toLowerCase']()['includes'](x))['map'](z=>({'object':z['object'],'description':z['description']??'','location':z['location']??'','presenters_count':z['presenters_count']??0x0,'permission':z['permission']??''}));c={'action':'discover_demands','demands':y,'total_enumerated':w['total_enumerated'],'has_more':w['has_more']};break;}case'market_metrics':{const z=b['context_network']??'testnet',A=await computeMarketMetrics(z,b['no_cache']);c={'action':'market_metrics',...A};break;}case'anti_cheat':{const B=assessAntiCheat({'service':{'object':b['service']['object'],'arbitrations':b['service']['arbitrations'],'compensation_fund':b['service']['compensation_fund'],'machine':b['service']['machine'],'bPublished':b['service']['bPublished']},'orders':b['orders'],'reviews':b['reviews']});c={'action':'anti_cheat','signals':B};break;}case'market_operations':{if(b['op']==='journey_funnel')c={'action':'market_operations','result':computeJourneyFunnel({'due_diligence':b['due_diligence']??0x0,'orders':b['orders']??0x0,'completed':b['completed']??0x0,'reviews':b['reviews']??0x0})};else{if(b['op']==='referral_attribution')c={'action':'market_operations','result':attributeReferrals(b['referral_orders']??[])};else{if(b['op']==='dynamic_pricing'){const C=b['market_signals'];if(!C)throw new Error('dynamic_pricing\x20op\x20requires\x20market_signals');c={'action':'market_operations','result':suggestPricing({'supplyCount':C['supplyCount'],'demandCount':C['demandCount'],'avgPrice':C['avgPrice'],'myPrice':C['myPrice'],'competitorPrices':C['competitorPrices'],'recentOrderCount':C['recentOrderCount'],'repeatCustomerRate':C['repeatCustomerRate']})};}else c={'action':'market_operations','result':buildCustomerRelationships(b['customer_orders']??[])};}}break;}case'match_discover':{const D=!b['sensitivity']?inferSensitivity(b['description']??''):null,E=b['sensitivity']??D['sensitivity'],F=D?.['signals']??[],G=b['context_network']??'testnet',H={'raw':b['location'],...b['region']??{}},I=expandSearchScope(E,H),J=await query_services({'coin_type':b['coin_type'],'name_contains':b['name_contains'],'location_any':I['search_terms'],'max_objects':b['max_objects'],'network':G,'no_cache':b['no_cache']}),K=new Set(b['required_capabilities']??[]),L=extractDemandCapability({'object':'intent','description':b['description'],'location':b['location'],'owner':b['account']},{'price_max':b['budget']!==undefined?BigInt(b['budget']):undefined,'capabilities':{'has_arbitration':K['has']('has_arbitration'),'has_refund_path':K['has']('has_refund_path'),'has_milestone_nodes':K['has']('has_milestone_nodes'),'has_compensation_fund':K['has']('has_compensation_fund'),'has_wip_verification':K['has']('has_wip_verification'),'has_messenger':K['has']('has_messenger'),'has_buy_guard':K['has']('has_buy_guard'),'has_dynamic_pricing':K['has']('has_dynamic_pricing'),'is_published':!![],'is_paused':![]}}),M=rankByLocation(E,H,J['services']['map'](X=>({'id':X['object'],'name':X['name'],'location':X['location']}))),N=M['filter'](X=>X['satisfied']),O=J['services']['filter'](X=>N['some'](Y=>Y['id']===X['object']))['map'](serviceSummaryToExtract),P=resolveCategoryMatchRules(b['category']);let Q=O;const R=[];if(P){const X=applyHardConstraints(P,O);Q=X['passed'];for(const Y of X['dropped']){R['push']({'object':Y['candidate']['object'],'reason':Y['constraint']['description']});}}let S=await resolveInjection(b['account'],b['injection']);P&&(S=mergeInjections(S,toSoftWeightInjection(P)));const T=await matchDemandToServices(L,Q,S,Q['length']),U=new Map(T['map'](Z=>[Z['service']['object'],Z['result']])),V=new Set(Q['map'](Z=>Z['object'])),W=N['filter'](Z=>V['has'](Z['id']))['map'](Z=>{const a0=J['services']['find'](a1=>a1['object']===Z['id']);return{'service':serviceSummaryToExtract(a0),'location':{'relation':Z['relation'],'satisfied':Z['satisfied'],'score':Z['score'],'reason':Z['reason']},'result':U['get'](Z['id'])};});c={'action':'match_discover','sensitivity':E,'inference_signals':F,'matches':W,'total_enumerated':J['total_enumerated'],'has_more':J['has_more'],'scope_advice':{'search_terms':I['search_terms'],'ai_enrichment_note':I['ai_enrichment_note']}};break;}case'arbitration_score':{let Z=b['history'];const a0=b['context_network']??'testnet';if((!Z||Z['length']===0x0)&&b['arbitration']['object'])try{const a2=await query_arbs({'arbitration':b['arbitration']['object'],'network':a0});Z=await arbCasesWithRoles(a2['arbs'],a0);}catch{Z=b['history'];}if((!Z||Z['length']===0x0)&&b['arbitration']['object'])try{const a3=await query_objects({'objects':[b['arbitration']['object']],'network':a0}),a4=a3?.['objects']?.[0x0];if(a4?.['permission']){const a5=await fetchObjectLinkerCore(a4['permission'],a0),a6=(a5?.['items']??[])['map'](a8=>a8['who'])['filter'](a8=>a8!==b['arbitration']['object']),a7=[];for(const a8 of a6['slice'](0x0,0xa)){const a9=await query_arbs({'arbitration':a8,'network':a0})['catch'](()=>undefined);a9?.['arbs']?.['length']&&a7['push'](...await arbCasesWithRoles(a9['arbs'],a0));}if(a7['length']>0x0)Z=a7;}}catch{}const a1=await assessArbitration({'arbitration':{'object':b['arbitration']['object'],'fee':b['arbitration']['fee'],'balance':b['arbitration']['balance'],'voting_guard_count':b['arbitration']['voting_guard_count'],'bPaused':b['arbitration']['bPaused'],'location':b['arbitration']['location'],'has_verified_identity':b['arbitration']['has_verified_identity']},'history':Z,'entity_votes':b['entity_votes'],'fee_median':b['fee_median']},await resolveInjection(b['account'],b['injection']));c={'action':'arbitration_score',...a1};break;}case'account_events':{const aa=await runAccountEventWatchers({'account':b['account'],'network':b['context_network']??'testnet','reviews':b['reviews']?.['map'](ab=>({'reviewer':ab['reviewer'],'rating':ab['rating'],'tags':ab['tags'],'comment':ab['comment'],'orderRef':ab['orderRef'],'timestamp':ab['timestamp'],'verified':ab['verified']??![]})),'order_history':b['order_history']},b['categories']);c={'action':'account_events','events':aa};break;}default:throw new Error('Unknown\x20evaluation_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{resolve}from'path';import{strictParse,getEnvConfig,Guard2File_InputSchema,MachineNode2File_InputSchema}from'../../schema/index.js';import{guard2file,machineNode2file}from'@wowok/wowok';export async function handleGuard2File(a){const b=strictParse(Guard2File_InputSchema,a,'guard2file\x20input'),c=getEnvConfig(b['env']);try{await guard2file(b['guard'],b['file_path'],b['format']||'json',c['network'])
|
|
1
|
+
import{resolve}from'path';import{strictParse,getEnvConfig,Guard2File_InputSchema,MachineNode2File_InputSchema}from'../../schema/index.js';import{guard2file,machineNode2file}from'@wowok/wowok';export async function handleGuard2File(a){const b=strictParse(Guard2File_InputSchema,a,'guard2file\x20input'),c=getEnvConfig(b['env']);try{const d=await guard2file(b['guard'],b['file_path'],b['format']||'json',c['network']),e={'result':{'status':'success','data':{'file_path':resolve(d),'format':b['format']||'json','guard':b['guard']}}};return{'content':[{'type':'text','text':JSON['stringify'](e)}],'structuredContent':e};}catch(f){const g={'result':{'status':'error','error':f['message']}};return{'content':[{'type':'text','text':JSON['stringify'](g)}],'structuredContent':g};}}export async function handleMachineNode2File(a){const b=strictParse(MachineNode2File_InputSchema,a,'machineNode2file\x20input'),c=getEnvConfig(b['env']);try{const d=await machineNode2file(b['machine'],b['file_path'],b['format']||'json',c['network']);let e=undefined;try{const g=resolve(d),h=await import('fs/promises')['then'](i=>i['readFile'](g,'utf-8'));if((b['format']||'json')==='json'){const i=JSON['parse'](h);Array['isArray'](i)&&(e=i['length']);}else{const j=h['match'](/^##\s+Node:/gm);e=j?j['length']:0x0;}}catch{e=undefined;}const f={'result':{'status':'success','data':{'file_path':resolve(d),'format':b['format']||'json','machine_object':b['machine']}}};return e!==undefined&&(f['result']['data']['node_count']=e),{'content':[{'type':'text','text':JSON['stringify'](f)}],'structuredContent':f};}catch(k){const l={'result':{'status':'error','error':k['message']}};return{'content':[{'type':'text','text':JSON['stringify'](l)}],'structuredContent':l};}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{readdirSync,readFileSync,writeFileSync,existsSync,mkdirSync,statSync,cpSync,renameSync,rmSync}from'node:fs';import{join,relative,resolve,sep,dirname,basename}from'node:path';import{strictParse}from'../../schema/index.js';import{IndustryPackOperationInputSchema}from'../../schema/industry-pack/index.js';import{scaffoldIndustryPack,listRegisteredPacks,scanDefaultIndustryPacks,seedBuiltinIndustryTemplates,ensureIndustryReadme,resolveIndustryPackDir,rescanPack,resolveDisputeRules,resolveComplianceRules,resolveSupplyRules,resolveIndustryRules,resolveIndustryPlaybook,diffIndustryPack,resetIndustryPath}from'../../extensions/index.js';const INDUSTRY_ROOT=resolveIndustryPackDir();function resolveIndustryPath(a){const b=resolve(INDUSTRY_ROOT,a);if(b!==INDUSTRY_ROOT&&!b['startsWith'](INDUSTRY_ROOT+sep))throw new Error('path\x20\x27'+a+'\x27\x20escapes\x20the\x20industry\x20root');return b;}function rescanAffectedPack(a){const b=a['split'](/[\\/]+/)['find'](c=>c['length']>0x0);if(!b)return;rescanPack(b);}function listRecursive(a,b,c,d=0x0){if(d>0x8)return;let f;try{f=readdirSync(a,{'withFileTypes':!![]});}catch{return;}for(const g of f){const h=join(a,g['name']),i=relative(b,h)['split'](sep)['join']('/');let j=0x0,k=0x0;try{const l=statSync(h);k=l['size'],j=l['mtimeMs'];}catch{}g['isDirectory']()?(c['push']({'path':i,'is_dir':!![],'size':0x0,'mtime':j}),listRecursive(h,b,c,d+0x1)):c['push']({'path':i,'is_dir':![],'size':k,'mtime':j});}}export async function handleIndustryPackOperation(a){const b=strictParse(IndustryPackOperationInputSchema,a,'industry_pack_operation\x20input');mkdirSync(INDUSTRY_ROOT,{'recursive':!![]}),seedBuiltinIndustryTemplates(),ensureIndustryReadme();let c;switch(b['action']){case'scaffold':{if(!b['name'])throw new Error('\x27name\x27\x20is\x20required\x20for\x20action=\x27scaffold\x27');const d=scaffoldIndustryPack(b['name']);c={'action':'scaffold','ok':d['ok'],'dir':d['dir'],'files':d['files'],'errors':d['errors']};if(d['ok'])rescanPack(b['name']);break;}case'list':{c={'action':'list','packs':listRegisteredPacks()};break;}case'scan':{c={'action':'scan','results':scanDefaultIndustryPacks()};break;}case'resolve':{c={'action':'resolve','dir':INDUSTRY_ROOT};break;}case'list_files':{const e=[];listRecursive(INDUSTRY_ROOT,INDUSTRY_ROOT,e),c={'action':'list_files','dir':INDUSTRY_ROOT,'files':e};break;}case'read_file':{if(!b['path'])throw new Error('\x27path\x27\x20is\x20required\x20for\x20action=\x27read_file\x27');const f=resolveIndustryPath(b['path']);if(!existsSync(f))throw new Error('file\x20not\x20found:\x20'+b['path']);c={'action':'read_file','path':f,'content':readFileSync(f,'utf-8')};break;}case'write_file':{if(!b['path'])throw new Error('\x27path\x27\x20is\x20required\x20for\x20action=\x27write_file\x27');if(b['content']===undefined)throw new Error('\x27content\x27\x20is\x20required\x20for\x20action=\x27write_file\x27');const g=resolveIndustryPath(b['path']);mkdirSync(dirname(g),{'recursive':!![]}),writeFileSync(g,b['content'],'utf-8'),c={'action':'write_file','path':g,'ok':!![]},rescanAffectedPack(b['path']);break;}case'get':{if(!b['name'])throw new Error('\x27name\x27\x20is\x20required\x20for\x20action=\x27get\x27');const h=b['name'];c={'action':'get','category':h,...resolveDisputeRules(h)?{'dispute':resolveDisputeRules(h)}:{},...resolveComplianceRules(h)?{'compliance':resolveComplianceRules(h)}:{},...resolveSupplyRules(h)?{'supply':resolveSupplyRules(h)}:{},...resolveIndustryRules(h)?{'rules':resolveIndustryRules(h)}:{},...resolveIndustryPlaybook(h)?{'playbook':resolveIndustryPlaybook(h)}:{}};break;}case'diff':{if(!b['name'])throw new Error('\x27name\x27\x20is\x20required\x20for\x20action=\x27diff\x27');c={'action':'diff',...diffIndustryPack(b['name'])};break;}case'reset':{if(!b['path'])throw new Error('\x27path\x27\x20is\x20required\x20for\x20action=\x27reset\x27');const i=resetIndustryPath(b['path']);c={'action':'reset','ok':i['ok'],'layout':i['layout'],'target':i['target'],'restored_files':i['restored_files'],'errors':i['errors']},rescanAffectedPack(b['path']);break;}case'delete_file':{if(!b['path'])throw new Error('\x27path\x27\x20is\x20required\x20for\x20action=\x27delete_file\x27');const j=resolveIndustryPath(b['path']);if(!existsSync(j))throw new Error('file\x20not\x20found:\x20'+b['path']);rmSync(j,{'recursive':!![],'force':!![]}),c={'action':'delete_file','path':j,'ok':!![]},rescanAffectedPack(b['path']);break;}case'create_file':{if(!b['path'])throw new Error('\x27path\x27\x20is\x20required\x20for\x20action=\x27create_file\x27');const k=resolveIndustryPath(b['path']);if(existsSync(k))throw new Error('file\x20already\x20exists:\x20'+b['path']);mkdirSync(dirname(k),{'recursive':!![]}),writeFileSync(k,b['content']??'','utf-8'),c={'action':'create_file','path':k,'ok':!![]},rescanAffectedPack(b['path']);break;}case'create_dir':{if(!b['path'])throw new Error('\x27path\x27\x20is\x20required\x20for\x20action=\x27create_dir\x27');const l=resolveIndustryPath(b['path']);mkdirSync(l,{'recursive':!![]}),c={'action':'create_dir','path':l,'ok':!![]},rescanAffectedPack(b['path']);break;}case'copy':{if(!b['from'])throw new Error('\x27from\x27\x20is\x20required\x20for\x20action=\x27copy\x27');if(!b['to'])throw new Error('\x27to\x27\x20is\x20required\x20for\x20action=\x27copy\x27');const m=resolveIndustryPath(b['from']);let n=resolveIndustryPath(b['to']);if(!existsSync(m))throw new Error('source\x20not\x20found:\x20'+b['from']);try{existsSync(n)&&statSync(n)['isDirectory']()&&(n=join(n,basename(m)));}catch{}if(n===m)throw new Error('\x27copy\x27\x20cannot\x20copy\x20a\x20file\x20onto\x20itself');mkdirSync(dirname(n),{'recursive':!![]}),cpSync(m,n,{'recursive':!![],'force':!![]}),c={'action':'copy','from':m,'to':n,'ok':!![]},rescanAffectedPack(b['to']);break;}case'move':case'rename':{if(!b['from'])throw new Error('\x27from\x27\x20is\x20required\x20for\x20action=\x27'+b['action']+'\x27');if(!b['to'])throw new Error('\x27to\x27\x20is\x20required\x20for\x20action=\x27'+b['action']+'\x27');const o=resolveIndustryPath(b['from']);let p=resolveIndustryPath(b['to']);if(!existsSync(o))throw new Error('source\x20not\x20found:\x20'+b['from']);try{existsSync(p)&&statSync(p)['isDirectory']()&&(p=join(p,basename(o)));}catch{}if(p===o)throw new Error('\x27'+b['action']+'\x27\x20cannot\x20move\x20onto\x20itself');mkdirSync(dirname(p),{'recursive':!![]}),renameSync(o,p),c={'action':b['action'],'from':o,'to':p,'ok':!![]},rescanAffectedPack(b['from']),rescanAffectedPack(b['to']);break;}default:throw new Error('Unknown\x20industry_pack_operation\x20action:\x20'+String(b['action']));}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readFileSync,writeFileSync,existsSync,mkdirSync}from'fs';import{resolve,dirname,join}from'path';import{getWowMcpDir}from'@wowok/wowok';import{CallService,CallMachine,CallProgress,CallGuard,CallArbitration,CallRepository,CallContact,CallTreasury,CallReward,CallAllocation,CallPersonal,CallPayment,CallDemand,CallOrder,gen_passport,CallProof,gen_proof,ResponseData,LocalProject,LocalMark,query_objects,parseGuardFile,formatGuardParseErrors,transformRewardInput,transformPersonalInput}from'@wowok/wowok';import{OnchainOperationsSchema,strictParse,getEnvConfig,handleCallResult,checkClientSchemaCompatibility,parseMachineNodesFromText,formatNodeErrors as a306a,transformSubmission}from'../../schema/index.js';import{handlePermissionOperations}from'../../schema/call/permission-handler.js';import{collectPermissionIndexes,checkPermissionAuthorization,formatPermissionWarning}from'../../schema/utils/permission-machine-check.js';import{isProjectServiceEnabled,normalize as a306b}from'../../project/index.js';import{getSkillsHintForOnchain}from'../../schema/utils/skills-recommendation.js';import{prepareFundOperation,generateSkillsHint as a306c}from'../../knowledge/fund-layer.js';import{generateGuardSubmissionPrompt,formatSubmissionPrompt}from'../../knowledge/guard-submission-prompt.js';import{classifyWipPath}from'../wip-deploy-assist.js';import{withHarness}from'../shared.js';const REFERRER_FILE=join(getWowMcpDir(),'referrer');function readStoredReferrer(){try{if(!existsSync(REFERRER_FILE))return null;const a=readFileSync(REFERRER_FILE,'utf8')['trim']();return a||null;}catch{return null;}}const PROJECT_SKILL_DIRS=['.claude/skills','.agents/skills','.cursor/rules','.github/prompts','.windsurf/skills','.codex/skills','.qoder/skills','.roo/skills','.codebuddy/skills'],PROJECT_SKILL_MARKERS=['wowok-provider','wowok-supplier','wowok-collaborator','wowok-arbitrator','wowok-order','wowok-messenger','wowok-machine','wowok-output','wowok-onboard','wowok-planner','wowok-auditor'],SKILLS_HINT_FILE=join(getWowMcpDir(),'skills-hint-asked.json');function projectHasSkills(a){for(const b of PROJECT_SKILL_DIRS){for(const c of PROJECT_SKILL_MARKERS){if(existsSync(join(a,b,c)))return!![];}}return![];}function loadSkillsAsked(){try{if(!existsSync(SKILLS_HINT_FILE))return{};return JSON['parse'](readFileSync(SKILLS_HINT_FILE,'utf8'))??{};}catch{return{};}}function persistSkillsAsked(a){try{const b=loadSkillsAsked();b[a]=!![],mkdirSync(dirname(SKILLS_HINT_FILE),{'recursive':!![]}),writeFileSync(SKILLS_HINT_FILE,JSON['stringify'](b,null,0x2),'utf8');}catch{}}function getProjectSkillsHint(){try{const a=process['cwd']();if(!a||projectHasSkills(a))return null;const b=loadSkillsAsked();if(b[a])return null;return persistSkillsAsked(a),'WoWok\x20skills\x20are\x20not\x20installed\x20in\x20this\x20project.\x20Run\x20`wowok-skills\x20init`\x20'+'here\x20to\x20install\x20them\x20(the\x20MCP\x20works\x20regardless;\x20skills\x20improve\x20AI\x20orchestration).';}catch{return null;}}function formatRecipientLabel(a){if(!a)return'unknown';if(typeof a==='string')return a;if('GuardIdentifier'in a)return'GuardIdentifier('+a['GuardIdentifier']+')';if('Entity'in a){const b=a['Entity'];if(typeof b==='string'&&b['length']>0x10)return'Entity('+b['slice'](0x0,0x8)+'...'+b['slice'](-0x4)+')';return'Entity('+b+')';}if('Signer'in a)return'Signer\x20(transaction\x20signer)';return JSON['stringify'](a);}function formatMistAmount(a){const b=Number(a)/0x3b9aca00;if(b===0x0)return'0\x20WOW';const c=b['toFixed'](0x9)['replace'](/\.?0+$/,'');return c+'\x20WOW\x20('+a['toString']()+'\x20MIST)';}function extractNodesForCheck(a){if(!a?.['node'])return[];if(a['node']['nodes']&&Array['isArray'](a['node']['nodes']))return a['node']['nodes'];return[];}function resolvePermissionRef(a){if(!a?.['object'])return null;if(typeof a['object']==='string')return null;const b=a['object'];if(b['permission']){if(typeof b['permission']==='string')return b['permission'];return null;}return null;}async function checkMachinePermissionBeforePublish(a,b){if(a?.['publish']!==!![])return'';const c=extractNodesForCheck(a);if(c['length']===0x0)return'';const d=collectPermissionIndexes(c);if(d['requiredIndexes']['length']===0x0)return'';let e='';if(d['missingRefs']['length']>0x0){e+='WARNING:\x20Some\x20forwards\x20have\x20NEITHER\x20permissionIndex\x20nor\x20namedOperator.\x20'+'These\x20forwards\x20cannot\x20be\x20executed.\x20Add\x20one\x20or\x20the\x20other:\x0a';for(const k of d['missingRefs']){e+='\x20\x20-\x20Node\x20\x22'+k['nodeName']+'\x22,\x20pair\x20prev_node=\x22'+k['prevNode']+'\x22,\x20forward\x20\x22'+k['forwardName']+'\x22\x0a';}e+='\x0a';}const f=resolvePermissionRef(a);if(!f)return d['requiredIndexes']['length']>0x0&&(e+='PRE-PUBLISH\x20REMINDER:\x20This\x20Machine\x20uses\x20'+d['requiredIndexes']['length']+'\x20custom\x20permission\x20index(es):\x20['+d['requiredIndexes']['join'](',\x20')+'].\x20'+'After\x20creating\x20the\x20Permission\x20object,\x20grant\x20entities\x20for\x20each\x20index\x20via\x20'+'permission.op=\x22add\x20perm\x20by\x20index\x22\x20BEFORE\x20publishing\x20the\x20Machine.\x20'+'Otherwise,\x20forwards\x20using\x20these\x20indexes\x20will\x20be\x20un-executable.\x0a'),e;let g=f;if(!f['startsWith']('0x'))try{const l=await LocalMark['Instance']()['get'](f);if(l?.['address'])g=l['address'];else return e+'PRE-PUBLISH:\x20Could\x20not\x20resolve\x20Permission\x20name\x20\x27'+f+'\x27\x20to\x20an\x20address.\x20Ensure\x20the\x20Permission\x20object\x20exists\x20and\x20is\x20marked.\x20'+'Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';}catch{return e+'PRE-PUBLISH:\x20Failed\x20to\x20lookup\x20Permission\x20name\x20\x27'+f+'\x27.\x20Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';}const h=b?.['network']??'testnet';let i=null;try{const m=await query_objects({'objects':[g],'network':h}),n=m?.['objects']?.[0x0];n&&(i={'address':g,'entity_count':n['entity_count'],'perm_remark':n['perm_remark'],'owner':n['owner']??n['builder'],'admin':n['admin']});}catch{return e+'PRE-PUBLISH:\x20Failed\x20to\x20query\x20Permission\x20object\x20'+g+'.\x20Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';}if(!i)return e+'PRE-PUBLISH:\x20Permission\x20object\x20'+g+'\x20not\x20found\x20on-chain.\x20Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';const j=checkPermissionAuthorization(d['requiredIndexes'],i);return!j['allAuthorized']&&(e+=formatPermissionWarning(j)+'\x0a'),e;}async function detectServiceGuardCircularDependency(a){if(!a||typeof a['object']!=='object'||a['object']===null)return null;const b=a['order_allocators'];if(!b||typeof b!=='object')return null;const c=Array['isArray'](b['allocators'])?b['allocators']:[];if(c['length']===0x0)return null;const d=[],e=new Set();for(const k of c){const l=k?.['guard'];if(typeof l==='string'&&!l['startsWith']('0x')){if(e['has'](l))continue;e['add'](l);try{const m=await LocalMark['Instance']()['get_address'](l);!m&&d['push'](l);}catch{d['push'](l);}}}if(d['length']===0x0)return null;const f=d['map'](n=>'\x27'+n+'\x27')['join'](',\x20'),g=a['object'],h=g['name']??'<service_name>',i=[{'step':0x1,'action':'onchain_operations','operation_type':'service','params':{...a,'order_allocators':null,'publish':![]},'purpose':'Create\x20Service\x20\x27'+h+'\x27\x20WITHOUT\x20order_allocators\x20to\x20establish\x20'+('its\x20LocalMark\x20entry.\x20After\x20this\x20step,\x20the\x20name\x20\x27'+h+'\x27\x20resolves\x20')+'to\x20an\x20on-chain\x20address.'},{'step':0x2,'action':'onchain_operations','operation_type':'guard','params':d['map'](n=>({'object':{'name':n,'type':'Guard'},'_hint':'Table\x20items\x20may\x20reference\x20Service\x20\x27'+h+'\x27\x20by\x20name'})),'purpose':'Create\x20Guard(s)\x20'+f+'.\x20Their\x20table\x20items\x20can\x20now\x20resolve\x20'+('Service\x20\x27'+h+'\x27\x20by\x20name\x20(LocalMark\x20entry\x20from\x20step\x201).')},{'step':0x3,'action':'onchain_operations','operation_type':'service','params':{'object':h,'order_allocators':b,'publish':a['publish']??!![]},'purpose':'Update\x20Service\x20with\x20order_allocators\x20(referencing\x20Guards\x20created\x20in\x20'+'step\x202)\x20and\x20publish.\x20After\x20publish,\x20order_allocators\x20becomes\x20SDK-LOCKED.'}],j='⚠️\x20Circular\x20dependency\x20detected:\x20Service\x20↔\x20Guard\x0a\x0a'+('Cannot\x20create\x20Service\x20with\x20order_allocators\x20referencing\x20non-existent\x20Guard(s):\x20'+f+'.\x0a\x0a')+'Explanation:\x20Guard\x20table\x20items\x20may\x20reference\x20the\x20Service\x20by\x20name,\x20creating\x20a\x20circular\x20'+'dependency:\x20the\x20Service\x20must\x20exist\x20as\x20a\x20LocalMark\x20before\x20the\x20Guard\x20can\x20resolve\x20it,\x20'+'but\x20the\x20Guard\x20must\x20exist\x20before\x20the\x20Service\x20can\x20reference\x20it\x20in\x20order_allocators.\x20'+'The\x20SDK\x20would\x20fail\x20with\x20a\x20BCS\x20serialization\x20error:\x20\x22Expected\x20valid\x20Address\x20for\x20'+'ValueType.Address,\x20but\x20failed\x20to\x20resolve\x20string:\x20<name>\x22.\x0a\x0a'+'Recommended\x20steps:\x0a'+i['map'](n=>'\x20\x20Step\x20'+n['step']+'\x20('+n['operation_type']+'):\x20'+n['purpose'])['join']('\x0a')+'\x0a\x0aHint:\x20This\x20is\x20the\x20canonical\x20Service↔Guard\x20circular\x20dependency.\x20The\x203-step\x20'+'pattern\x20above\x20is\x20the\x20documented\x20solution\x20(see\x20SCHEMA-03\x20/\x20P0-01\x20fix\x20in\x20'+'schema/call/service.ts\x20publish\x20field\x20description).';return{'content':[{'type':'text','text':j}],'structuredContent':{'result':{'type':'error','error':'Cannot\x20create\x20Service\x20with\x20order_allocators\x20referencing\x20non-existent\x20Guard(s):\x20'+f+'.\x20Circular\x20dependency:\x20Service↔Guard.','error_code':'circular_dependency_detected','retryable':!![],'recovery_hint':JSON['stringify'](i),'related_object':h},'message':'Circular\x20dependency\x20detected:\x20Service\x20↔\x20Guard.\x20See\x20recovery_hint\x20for\x20the\x203-step\x20creation\x20pattern.'}};}function buildFundBlockResult(a,b){const c=a['matchErrors']['length']>0x0,d=a['errors']['length']>0x0,e=c&&d?'FUND\x20OPERATION\x20BLOCKED':c?'TOKEN\x20TYPE\x20MISMATCH\x20—\x20operation\x20blocked':'FUND\x20INPUT\x20BLOCKED\x20—\x20operation\x20blocked',f=c&&d?'fund_blocked':c?'token_type_mismatch':'fund_input_error',g='⛔\x20'+e+'\x0a\x0a'+a['blockingErrors']['map'](h=>'\x20\x20•\x20'+h)['join']('\x0a')+'\x0a\x0aThe\x20token\x20type\x20of\x20a\x20generic\x20on-chain\x20object\x20(e.g.\x20Treasury<T>,\x20Service<T>)\x20is\x20'+'determined\x20at\x20creation\x20and\x20can\x20NEVER\x20be\x20changed,\x20and\x20monetary\x20input\x20is\x20never\x20'+('processed\x20with\x20unknown\x20token\x20precision.\x20This\x20'+b+'\x20operation\x20was\x20')+'NOT\x20executed.\x20Fix\x20the\x20errors\x20above\x20and\x20re-issue\x20the\x20operation'+(a['objectTokenType']?'\x20(object\x20token\x20type:\x20'+a['objectTokenType']+')':'')+'.';return{'content':[{'type':'text','text':g}],'structuredContent':{'result':{'type':'error','error':a['blockingErrors']['join']('\x20|\x20'),'error_code':f,'retryable':!![],'recovery_hint':'Use\x20token\x20type\x20'+(a['objectTokenType']??'<the\x20object\x27s\x20generic\x20token\x20type>')+'\x20for\x20all\x20'+('amounts,\x20coins,\x20and\x20receive\x20records\x20in\x20this\x20'+b+'\x20operation.\x20')+'Query\x20the\x20object\x20via\x20query_toolkit\x20onchain_objects\x20to\x20confirm\x20its\x20generic\x20'+'token\x20type\x20(type_raw,\x20e.g.\x20\x220x2::treasury::Treasury<0x2::wow::WOW>\x22).\x20'+'For\x20precision-unavailable\x20tokens,\x20retry\x20the\x20operation\x20—\x20the\x20on-chain\x20'+'metadata\x20lookup\x20may\x20have\x20been\x20transient.'},'message':'Fund\x20operation\x20blocked\x20before\x20execution.'}};}function checkSalesWipNetworkDeployment(a,b,c){const d=a?.['sales'];if(!d||typeof d!=='object')return null;if(d['op']!=='add'&&d['op']!=='set')return null;const e=Array['isArray'](d['sales'])?d['sales']:[];if(e['length']===0x0)return null;const f=b?.['network']==='localnet';for(const g of e){const h=g?.['wip'];if(typeof h!=='string'||h==='')continue;const i=classifyWipPath(h);if(!i['is_local'])continue;if(i['type']==='local_http'){if(f){c['push']('WIP\x20INTERNAL-TEST-ONLY\x20REMINDER\x20(sale\x20\x22'+g['name']+'\x22):\x20wip\x20=\x20\x22'+h+'\x22\x20is\x20a\x20'+('local-network\x20URL\x20('+i['description']+').\x20It\x20is\x20reachable\x20ONLY\x20on\x20the\x20')+'local\x20machine\x20/\x20LAN\x20where\x20a\x20local\x20WIP\x20server\x20runs.\x20This\x20is\x20acceptable\x20for\x20LOCALNET\x20'+'internal\x20testing,\x20but\x20customers\x20and\x20on-chain\x20verifiers\x20on\x20OTHER\x20machines\x20CANNOT\x20'+'reach\x20it\x20—\x20on\x20testnet/mainnet,\x20every\x20customer\x20order_new\x20would\x20fail\x20100%\x20because\x20the\x20'+'WIP\x20file\x20cannot\x20be\x20verified.\x20For\x20any\x20non-localnet\x20deployment,\x20replace\x20this\x20URL\x20with\x20'+'a\x20public\x20endpoint\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website)\x20or\x20leave\x20sale.wip\x20empty.');continue;}const l='a\x20local-network\x20URL\x20('+i['description']+')',m='⛔\x20WIP\x20IS\x20NOT\x20NETWORK-DEPLOYABLE\x20—\x20sales\x20NOT\x20submitted\x0a\x0a'+('Sale\x20\x22'+g['name']+'\x22\x20has\x20wip\x20=\x20\x22'+h+'\x22,\x20which\x20is\x20'+l+'.\x0a\x0a')+'INTERNAL\x20TEST\x20USE\x20ONLY:\x20this\x20URL\x20is\x20reachable\x20only\x20from\x20the\x20merchant\x27s\x20own\x20machine/LAN.\x20'+'Customers\x20on\x20other\x20machines\x20cannot\x20reach\x20it,\x20so\x20verifying\x20the\x20WIP\x20file\x20at\x20order\x20time\x20'+'fails\x20and\x20order_new\x20aborts\x20100%.\x20Local-network\x20WIP\x20URLs\x20are\x20allowed\x20ONLY\x20for\x20'+('localnet\x20internal\x20testing\x20(env.network\x20=\x20\x22localnet\x22);\x20on\x20'+(b?.['network']??'this\x20network')+'\x20')+'they\x20must\x20never\x20be\x20stored\x20on-chain.\x0a\x0a'+'Fix:\x20deploy\x20the\x20.wip\x20file\x20to\x20a\x20publicly\x20reachable\x20endpoint,\x20then\x20re-run\x20with\x20'+'sale.wip\x20=\x20\x22<public\x20URL>\x22\x20(e.g.\x20GitHub\x20Pages,\x20IPFS\x20gateway,\x20or\x20your\x20own\x20website).\x0a'+'\x20\x20•\x20GitHub\x20Pages:\x20https://<user>.github.io/<repo>/<file>.wip\x0a'+'\x20\x20•\x20IPFS:\x20\x20\x20\x20\x20\x20\x20\x20https://ipfs.io/ipfs/<CID>\x20\x20(or\x20ipfs://<CID>)\x0a'+'\x20\x20•\x20Your\x20site:\x20\x20\x20https://<your-domain>/<path>/<file>.wip\x0a'+'Alternatively,\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20SKIP\x20WIP\x20verification\x20—\x20'+'TESTING\x20ONLY,\x20not\x20recommended\x20for\x20production.';return{'content':[{'type':'text','text':m}],'structuredContent':{'result':{'type':'error','error':'Sale\x20\x22'+g['name']+'\x22\x20wip\x20is\x20'+l+':\x20'+h+'.\x20Local-network\x20URLs\x20are\x20INTERNAL\x20TEST\x20USE\x20ONLY\x20—\x20customers\x20cannot\x20verify\x20them,\x20aborting\x20order_new\x20100%.','error_code':'wip_not_network_deployed','retryable':!![],'recovery_hint':'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20endpoint\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website)\x20'+'and\x20set\x20sale.wip\x20to\x20the\x20public\x20URL;\x20or\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20skip\x20WIP\x20'+'verification\x20(TESTING\x20ONLY).','related_object':g['name']},'message':'WIP\x20is\x20a\x20local-network\x20URL\x20(INTERNAL\x20TEST\x20USE\x20ONLY)\x20—\x20sales\x20not\x20submitted.\x20See\x20recovery_hint.'}};}const j='a\x20LOCAL\x20'+i['type']+'\x20path',k='⛔\x20WIP\x20IS\x20NOT\x20NETWORK-DEPLOYABLE\x20—\x20sales\x20NOT\x20submitted\x0a\x0a'+('Sale\x20\x22'+g['name']+'\x22\x20has\x20wip\x20=\x20\x22'+h+'\x22,\x20which\x20is\x20'+j+'.\x0a\x0a')+'Why\x20this\x20is\x20fatal:\x20the\x20WIP\x20path\x20is\x20stored\x20ON-CHAIN\x20and\x20every\x20customer\x20'+'(on\x20a\x20different\x20machine)\x20fetches\x20it\x20when\x20placing\x20an\x20order.\x20A\x20local\x20path\x20/\x20'+'localhost\x20/\x20LAN\x20URL\x20is\x20reachable\x20only\x20from\x20YOUR\x20machine\x20—\x20it\x20passes\x20the\x20'+'merchant-side\x20set-time\x20verification\x20but\x20makes\x20order_new\x20abort\x20100%\x20for\x20customers.\x0a\x0a'+'Fix:\x20deploy\x20the\x20.wip\x20file\x20to\x20a\x20publicly\x20reachable\x20endpoint,\x20then\x20re-run\x20with\x20'+'sale.wip\x20=\x20\x22<public\x20URL>\x22\x20(e.g.\x20GitHub\x20Pages,\x20IPFS\x20gateway,\x20or\x20your\x20own\x20website).\x0a'+'\x20\x20•\x20GitHub\x20Pages:\x20https://<user>.github.io/<repo>/<file>.wip\x0a'+'\x20\x20•\x20IPFS:\x20\x20\x20\x20\x20\x20\x20\x20https://ipfs.io/ipfs/<CID>\x20\x20(or\x20ipfs://<CID>)\x0a'+'\x20\x20•\x20Your\x20site:\x20\x20\x20https://<your-domain>/<path>/<file>.wip\x0a'+'Alternatively,\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20SKIP\x20WIP\x20verification\x20—\x20'+'TESTING\x20ONLY,\x20not\x20recommended\x20for\x20production.';return{'content':[{'type':'text','text':k}],'structuredContent':{'result':{'type':'error','error':'Sale\x20\x22'+g['name']+'\x22\x20wip\x20is\x20'+j+':\x20'+h+'.\x20Local\x20WIP\x20paths\x20are\x20unreachable\x20by\x20customers\x20and\x20abort\x20order_new\x20100%.','error_code':'wip_not_network_deployed','retryable':!![],'recovery_hint':'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20endpoint\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website)\x20'+'and\x20set\x20sale.wip\x20to\x20the\x20public\x20URL;\x20or\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20skip\x20WIP\x20'+'verification\x20(TESTING\x20ONLY).','related_object':g['name']},'message':'WIP\x20is\x20not\x20network-deployable\x20—\x20sales\x20not\x20submitted.\x20See\x20recovery_hint.'}};}return null;}export async function handleOnchainOperations(a){let b,c=[],d=[];async function f(g,h,k){if(!g)return;const l=new Set(['service','machine','progress','repository','arbitration','contact','treasury','reward','allocation','permission','guard','personal','demand','order','proof']);if(!l['has'](h))return;if(!k||typeof k!=='object'||'error'in k)return;if(!k['digest'])return;try{const m=LocalProject['Instance'](),n=await m['getProjectByPrefix'](g);if(!n){console['warn']('[autoAddToProject]\x20Project\x20with\x20prefix\x20\x27'+g+'\x27\x20not\x20found\x20—\x20object\x20not\x20auto-associated.\x20Create\x20the\x20project\x20first\x20via\x20project_operation\x20action=\x27create_project\x27.');return;}const o=ResponseData(k),p=o['filter'](q=>q['change']==='created'&&q['object']);for(const q of p){const r=!!(q['type_raw']&&q['type_raw']['includes']('service::Service'));await m['addObject'](n['id'],{'objectAddress':q['object'],'objectType':q['type_raw'],'role':r?'core':'reference'});}if(h==='service'){const s=p['find'](t=>t['type_raw']&&t['type_raw']['includes']('service::Service'));s&&s['object']&&await m['updateProject'](n['id'],{'serviceAddress':s['object']})['catch'](()=>{});}}catch{}}try{if(typeof a==='object'&&a!==null&&'description'in a&&!('operation_type'in a)){const r=a['description'],s=typeof r==='string'&&(r['includes']('operation_type')||r['includes']('data'));if(s)throw new Error('Invalid\x20parameter\x20structure.\x20Parameters\x20should\x20NOT\x20be\x20wrapped\x20in\x20\x27description\x27\x20field.\x0a'+'Correct\x20format:\x20{\x20operation_type:\x20\x27...\x27,\x20data:\x20{...}\x20}\x0a'+'Incorrect\x20format:\x20{\x20description:\x20\x27{\x20operation_type:\x20...\x20}\x27\x20}');}b=strictParse(OnchainOperationsSchema,a,'onchain_operations\x20input');const g=getEnvConfig(b['env']);if(!g['referrer']){const t=readStoredReferrer();if(t)g['referrer']=t;}const h=g['client_schema_version'],k=g['schema_strict_mode'],l=h?checkClientSchemaCompatibility(h,{'mode':k?'strict':'warn'}):undefined,m=u=>({'operation_type':b['operation_type'],'data':u,'pre_warnings':[...c,...d]['length']?[...c,...d]:undefined,'schema_check':l}),n=g['project'];if(isProjectServiceEnabled()&&'data'in b&&b['data']){const u=a306b({'operation_type':b['operation_type'],'data':b['data'],'projectPrefix':n});b['data']=u['data'],d=u['warnings']??[];}if(!g['account']&&n)try{const v=await LocalProject['Instance']()['getProjectByPrefix'](n);v?.['defaultAccount']&&(g['account']=v['defaultAccount']);}catch{}delete g['confirmed'],delete g['user_intent_phrases'],delete g['project'],delete g['client_schema_version'],delete g['schema_strict_mode'];const o=getSkillsHintForOnchain(b['operation_type'],b['data']);o&&c['push'](o);const p=getProjectSkillsHint();p&&c['push'](p);switch(b['operation_type']){case'service':{const w=b['data'],x=await detectServiceGuardCircularDependency(w);if(x)return x;const y=checkSalesWipNetworkDeployment(w,g,c);if(y)return y;const z=await prepareFundOperation(w,'service',g?.['network']);if(z['blockingErrors']['length']>0x0)return buildFundBlockResult(z,'service');c['push'](...z['warnings']);if(z['confirmation']){c['push'](z['confirmation']['message']);const J=a306c(z['confirmation']);if(J)c['push'](J);}const A=w?.['order_allocators'];if(A&&typeof A==='object'){const K=Array['isArray'](A['allocators'])?A['allocators']:[];for(let L=0x0;L<K['length'];L++){const M=K[L],N=Array['isArray'](M?.['sharing'])?M['sharing']:[];if(N['length']<=0x1)continue;const O=new Map();for(let P=0x0;P<N['length'];P++){const Q=N[P]?.['who'];let R='';if(typeof Q==='string')R=Q;else{if(Q&&typeof Q==='object'){if(Q['Entity']&&typeof Q['Entity']==='object')R='Entity:'+(Q['Entity']['name_or_address']??'');else{if(Q['Signer'])R='Signer';else Q['GuardIdentifier']!==undefined?R='Guard:'+Q['GuardIdentifier']:R=JSON['stringify'](Q);}}}if(!R)continue;const S=O['get'](R)??0x0;O['set'](R,S+0x1);}for(const [T,U]of O){U>0x1&&c['push']('DUPLICATE\x20SHARING\x20ENTITY:\x20Allocator['+L+']\x20has\x20entity\x20\x22'+T+'\x22\x20appearing\x20'+U+'\x20times\x20'+'in\x20the\x20sharing\x20array.\x20This\x20is\x20likely\x20a\x20configuration\x20error\x20—\x20each\x20entity\x20should\x20appear\x20'+('at\x20most\x20once\x20per\x20allocator.\x20Total\x20sharing:\x20'+U*0x64+'%\x20to\x20the\x20same\x20entity.\x20')+'If\x20intentional,\x20ignore\x20this\x20warning.');}}}const B=new CallService(b['data']);let C;try{C=b['submission']?await B['call_with_submission'](g,await transformSubmission(b['submission'])):await B['call'](g);}catch(V){const W=V['message']??String(V);if(/not found|GetObjectExisted|resolve|LocalMark|failed to resolve/i['test'](W)){const X=typeof w?.['object']==='object'&&w?.['object']!==null?w['object']['permission']:undefined;throw new Error('DEPENDENCY\x20RESOLUTION\x20FAILED:\x20One\x20or\x20more\x20referenced\x20objects\x20could\x20not\x20be\x20resolved.\x0a'+('Original\x20error:\x20'+W+'\x0a')+'Common\x20causes:\x0a'+'\x20\x201.\x20Object\x20name\x20typo\x20—\x20check\x20spelling\x20in\x20LocalMark\x0a'+'\x20\x202.\x20Object\x20not\x20yet\x20created\x20—\x20create\x20dependencies\x20first\x0a'+'\x20\x203.\x20Object\x20on\x20different\x20network\x20—\x20check\x20env.network\x0a'+('Referenced\x20objects\x20in\x20this\x20call:\x20machine='+(w?.['machine']??'<none>')+',\x20')+('buy_guard='+(w?.['buy_guard']??'<none>')+',\x20')+('permission='+(X??'<inline/new>')+',\x20')+('arbitrations='+(Array['isArray'](w?.['arbitrations'])?w['arbitrations']['length']+'\x20item(s)':'<none>')));}throw V;}const D=w?.['publish']?'publish\x20service':w?.['bPublished']!==undefined?'modify\x20service':'create\x20service',E=w?.['object']!=null&&typeof w['object']==='object',F=w?.['compensation_fund_add']!=null;E&&!F&&c['push']('Service.compensation_fund\x20balance\x20is\x200\x20—\x20no\x20refund\x20protection\x20for\x20buyers.\x20'+'If\x20buyers\x20need\x20refund\x20protection,\x20call\x20service.compensation_fund_add\x20with\x20a\x20Coin<T>\x20'+'to\x20deposit.\x20Without\x20deposit,\x20arbitration\x20rulings\x20cannot\x20withdraw\x20compensation\x20'+'from\x20this\x20Service.\x20(Note:\x20some\x20industries\x20like\x20freelance\x20do\x20not\x20require\x20this;\x20'+'the\x20evaluation\x20engine\x20will\x20check\x20industry-specific\x20requirements.)');const G=w?.['publish']===!![],H=Array['isArray'](w?.['arbitrations'])&&w['arbitrations']['length']>0x0;if(G&&!H&&F)throw new Error('HARD\x20PRE-CHECK\x20FAILED:\x20Cannot\x20publish\x20Service\x20with\x20compensation_fund\x20>\x200\x20but\x20no\x20Arbitration\x20bound.\x0a'+'Contract\x20(service.move:494):\x20assert!(arbitration_count\x20>\x200,\x20E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND).\x0a'+'The\x20transaction\x20WILL\x20ABORT\x20on-chain\x20if\x20you\x20proceed.\x0a'+'Fix:\x20(1)\x20Create\x20an\x20Arbitration\x20object\x20first\x20(onchain_operations\x20with\x20operation_type=\x27arbitration\x27).\x0a'+'\x20\x20\x20\x20\x20(2)\x20Set\x20data.arbitrations=[<arbitration_name_or_id>]\x20in\x20this\x20same\x20call.\x0a'+'\x20\x20\x20\x20\x20(3)\x20Then\x20call\x20publish=true.\x0a'+'Note:\x20After\x20publish,\x20arbitrations\x20can\x20still\x20be\x20ADDED\x20(but\x20not\x20removed\x20without\x20pause+lock).');G&&!H&&!F&&c['push']('WARNING:\x20Publishing\x20Service\x20without\x20arbitrations.\x20If\x20compensation_fund\x20was\x20'+'deposited\x20in\x20a\x20prior\x20call,\x20the\x20contract\x20(service.move:494)\x20WILL\x20ABORT\x20with\x20'+'E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND.\x20If\x20compensation_fund\x20is\x200,\x20'+'publish\x20will\x20succeed\x20but\x20buyers\x20have\x20no\x20dispute\x20resolution\x20path.\x20'+'Recommended:\x20bind\x20arbitrations\x20before\x20publish.');!G&&F&&!H&&c['push']('WARNING:\x20Depositing\x20compensation_fund\x20on\x20a\x20Service\x20without\x20arbitrations\x20bound.\x20'+'If\x20this\x20Service\x20is\x20already\x20published,\x20arbitration\x20rulings\x20will\x20not\x20be\x20able\x20to\x20'+'withdraw\x20compensation\x20from\x20this\x20Service.\x20Recommended:\x20bind\x20arbitrations\x20first,\x20'+'then\x20deposit\x20compensation_fund.');const I=handleCallResult(C,withHarness(m(w),'service',D));return f(n,b['operation_type'],C)['catch'](()=>{}),I;}case'machine':{if(b['data']['node']&&typeof b['data']['node']==='object'&&'json_or_markdown_file'in b['data']['node']){const a4=b['data']['node']['json_or_markdown_file'];let a5;try{const a7=resolve(a4);a5=readFileSync(a7,'utf-8');}catch(a8){throw new Error('Failed\x20to\x20read\x20file\x20\x27'+a4+'\x27:\x20'+a8['message']);}const a6=parseMachineNodesFromText(a5);if(!a6['success']){const a9=a306a(a6['errors']);throw new Error('Machine\x20node\x20validation\x20failed\x20for\x20file\x20\x27'+a4+'\x27:\x0a\x0a'+a9);}if(!a6['data'])throw new Error('No\x20nodes\x20found\x20in\x20file\x20\x27'+a4+'\x27');b['data']['node']={'op':'set','nodes':a6['data'],'bReplace':!![]};}const Y=b['data'],Z=await checkMachinePermissionBeforePublish(Y,g);Z&&c['push'](Z);const a0=Y?.['node']?.['nodes']??Y?.['node'];if(Array['isArray'](a0)){const aa=/^(dispute|disputed|arbitration|arb_|arb\.|resolve_dispute|start_arbitration|open_dispute)/i;for(const ab of a0){const ac=typeof ab==='object'?ab?.['name']:'';typeof ac==='string'&&aa['test'](ac)&&c['push']('ARBITRATION\x20SEPARATION\x20WARNING:\x20Machine\x20node\x20\x22'+ac+'\x22\x20appears\x20to\x20be\x20an\x20arbitration-related\x20node.\x0a'+'CORE\x20PRINCIPLE:\x20A\x20merchant\x20cannot\x20handle\x20disputes\x20fairly\x20—\x20they\x20would\x20be\x20\x27both\x20player\x20and\x20referee\x27.\x0a'+'The\x20WoWok\x20smart\x20contract\x20design\x20makes\x20Arbitration\x20a\x20completely\x20separate\x20object:\x0a'+'\x20\x20-\x20Arbitration\x20has\x20its\x20own\x20Permission,\x20voting_guard,\x20usage_guard,\x20and\x20balance\x0a'+'\x20\x20-\x20Arb\x20instances\x20have\x20a\x207-state\x20lifecycle\x20managed\x20by\x20Arbitration,\x20not\x20by\x20Machine\x0a'+'\x20\x20-\x20The\x20Order\x20object\x20is\x20the\x20bridge:\x20it\x20has\x20\x27progress\x27\x20(Machine)\x20and\x20\x27dispute\x27\x20(Arb\x20list)\x20fields\x0a'+'\x20\x20-\x20When\x20Arb\x20rules,\x20it\x20calls\x20order::compensate()\x20—\x20the\x20ONLY\x20connection\x20to\x20the\x20business\x20flow\x0a\x0a'+'CORRECT\x20PATTERN:\x0a'+'\x20\x20-\x20Machine:\x20business\x20states\x20only\x20(ordered\x20->\x20shipped\x20->\x20delivered\x20->\x20completed)\x0a'+'\x20\x20-\x20Arbitration:\x20separate\x20object\x20with\x20its\x20own\x20Permission\x20(NOT\x20shared\x20with\x20Service)\x0a'+'\x20\x20-\x20Arb:\x207-state\x20lifecycle\x20(Principal_confirming\x20->\x20Arbitrator_confirming\x20->\x20Voting\x20->\x20Arbitrated\x20->\x20Objectionable\x20->\x20Finished\x20->\x20Withdrawn)\x0a'+'\x20\x20-\x20R-M1-11:\x20NEVER\x20name\x20nodes\x20\x27refunded\x27/\x27disputed\x27/\x27arb\x27/\x27refund\x27\x20—\x20use\x20business\x20states\x20(\x27cancelled\x27/\x27returned\x27)\x20for\x20dispute\x20OUTCOMES;\x20refunds\x20route\x20via\x20Allocator\x20triggered\x20by\x20those\x20states,\x20disputes\x20via\x20the\x20separate\x20Arbitration\x20object\x0a\x0a'+'If\x20this\x20node\x20name\x20is\x20a\x20legitimate\x20business\x20state\x20(not\x20arbitration),\x20ignore\x20this\x20warning.');}}const a1=new CallMachine(b['data']),a2=b['submission']?await a1['call_with_submission'](g,await transformSubmission(b['submission'])):await a1['call'](g),a3=handleCallResult(a2,m(b['data']));return f(n,b['operation_type'],a2)['catch'](()=>{}),a3;}case'progress':{b['data']?.['operate']&&c['push']('Progress\x20routing\x20hint:\x20if\x20this\x20Progress\x20is\x20bound\x20to\x20an\x20Order\x20and\x20the\x20target\x20'+'Forward\x20uses\x20namedOperator=\x22\x22\x20(empty\x20string\x20=\x20OrderHolder),\x20use\x20'+'order.progress\x20(NOT\x20progress.operate).\x20Direct\x20progress::next\x20fails\x20with\x20'+'Permission\x20denied\x20for\x20OrderHolder\x20forwards.\x20Use\x20progress.operate\x20only\x20for\x20'+'non-empty\x20namedOperator\x20or\x20permissionIndex-only\x20forwards.');const ad=new CallProgress(b['data']),ae=b['submission']?await ad['call_with_submission'](g,await transformSubmission(b['submission'])):await ad['call'](g);if(!b['submission']&&ae&&typeof ae==='object'&&'submission'in ae){const ag=ae['submission'];if(Array['isArray'](ag)&&ag['length']>0x0){const ah=ag[0x0]?.['guard'];if(ah){const ai={'operation':'progress_next','network':g?.['network'],'signer':g?.['account'],'progress_address':b['data']?.['object'],'order_address':b['data']?.['task']},aj=await generateGuardSubmissionPrompt(ah,ai);aj&&c['push'](formatSubmissionPrompt(aj));}}}if(ae&&typeof ae==='object'&&'digest'in ae&&ae?.['effects']?.['status']?.['status']==='success')try{const ak=b['data']?.['object'];let al;typeof ak==='string'&&(ak['startsWith']('0x')?al=ak:al=await LocalMark['Instance']()['get_address'](ak)??undefined);if(al){const am=await query_objects({'objects':[al],'no_cache':!![],'network':g?.['network']}),an=am?.['objects']?.[0x0];if(an?.['type']==='Progress'){const ao=an['current']??'<unknown>',ap=Array['isArray'](an['session'])?an['session']['length']:0x0,aq=an['machine'],ar=['PROGRESS\x20PREVIEW:','\x20\x20•\x20current\x20node:\x20\x22'+ao+'\x22','\x20\x20•\x20history\x20count:\x20'+ap+'\x20session(s)'];aq&&ar['push']('\x20\x20•\x20machine:\x20'+aq),c['push'](ar['join']('\x0a'));}}}catch{}const af=handleCallResult(ae,m(b['data']));return f(n,b['operation_type'],ae)['catch'](()=>{}),af;}case'repository':{const as=new CallRepository(b['data']),at=b['submission']?await as['call_with_submission'](g,await transformSubmission(b['submission'])):await as['call'](g),au=handleCallResult(at,m(b['data']));return f(n,b['operation_type'],at)['catch'](()=>{}),au;}case'arbitration':{const av=await prepareFundOperation(b['data'],'arbitration',g?.['network']);if(av['blockingErrors']['length']>0x0)return buildFundBlockResult(av,'arbitration');c['push'](...av['warnings']);if(av['confirmation']){c['push'](av['confirmation']['message']);const az=a306c(av['confirmation']);if(az)c['push'](az);}const aw=new CallArbitration(b['data']),ax=b['submission']?await aw['call_with_submission'](g,await transformSubmission(b['submission'])):await aw['call'](g),ay=handleCallResult(ax,m(b['data']));return f(n,b['operation_type'],ax)['catch'](()=>{}),ay;}case'contact':{const aA=new CallContact(b['data']),aB=b['submission']?await aA['call_with_submission'](g,await transformSubmission(b['submission'])):await aA['call'](g),aC=handleCallResult(aB,m(b['data']));return f(n,b['operation_type'],aB)['catch'](()=>{}),aC;}case'treasury':{const aD=await prepareFundOperation(b['data'],'treasury',g?.['network']);if(aD['blockingErrors']['length']>0x0)return buildFundBlockResult(aD,'treasury');c['push'](...aD['warnings']);if(aD['confirmation']){c['push'](aD['confirmation']['message']);const aH=a306c(aD['confirmation']);if(aH)c['push'](aH);}const aE=new CallTreasury(b['data']),aF=b['submission']?await aE['call_with_submission'](g,await transformSubmission(b['submission'])):await aE['call'](g),aG=handleCallResult(aF,m(b['data']));return f(n,b['operation_type'],aF)['catch'](()=>{}),aG;}case'reward':{const aI=await prepareFundOperation(b['data'],'reward',g?.['network']);if(aI['blockingErrors']['length']>0x0)return buildFundBlockResult(aI,'reward');c['push'](...aI['warnings']);if(aI['confirmation']){c['push'](aI['confirmation']['message']);const aN=a306c(aI['confirmation']);if(aN)c['push'](aN);}const aJ=transformRewardInput(b['data']),aK=new CallReward(aJ),aL=b['submission']?await aK['call_with_submission'](g,await transformSubmission(b['submission'])):await aK['call'](g),aM=handleCallResult(aL,m(b['data']));return f(n,b['operation_type'],aL)['catch'](()=>{}),aM;}case'allocation':{const aO=await prepareFundOperation(b['data'],'allocation',g?.['network']);if(aO['blockingErrors']['length']>0x0)return buildFundBlockResult(aO,'allocation');c['push'](...aO['warnings']);if(aO['confirmation']){c['push'](aO['confirmation']['message']);const aT=a306c(aO['confirmation']);if(aT)c['push'](aT);}const aP=new CallAllocation(b['data']),aQ=b['submission']?await aP['call_with_submission'](g,await transformSubmission(b['submission'])):await aP['call'](g),aR=b['data'];if(aR?.['alloc_by_guard']){const aU=ResponseData(aQ)['filter'](aV=>aV?.['type']==='Payment'&&aV?.['change']==='created');if(aU['length']>0x0){const aV=aU['map'](aW=>aW['object'])['join'](',\x20');try{const aW=await query_objects({'objects':aU['map'](aZ=>aZ['object']),'no_cache':!![],'network':g?.['network']}),aX=[];let aY=BigInt(0x0);for(const aZ of aW?.['objects']||[]){if(aZ?.['type']==='Payment'&&aZ?.['record']){for(const b0 of aZ['record']){const b1=formatRecipientLabel(b0['recipient']),b2=typeof b0['amount']==='string'?b0['amount']:String(b0['amount']),b3=BigInt(b2);aY+=b3,aX['push']('\x20\x20•\x20'+b1+':\x20'+formatMistAmount(b3));}aZ['object']&&aX['push']('\x20\x20•\x20Payment\x20object:\x20'+aZ['object']);}}if(aX['length']>0x0){aX['unshift']('DISTRIBUTION\x20DETAILS\x20(alloc_by_guard):'),aX['push']('\x20\x20─────────────────','\x20\x20•\x20Total\x20distributed:\x20'+formatMistAmount(aY));const b4=aW?.['objects']?.['some'](b5=>b5?.['type']==='Payment'&&b5?.['info']?.['for_object']);b4&&aX['push']('','ESCROW\x20MODE:\x20Funds\x20are\x20held\x20in\x20escrow\x20(Payment.for_object\x20points\x20to\x20an\x20Order).\x20'+'The\x20Order\x20owner\x20must\x20call\x20order_claim\x20(or\x20service_order_claim)\x20to\x20actually\x20receive\x20the\x20funds.\x20'+'This\x20happens\x20when\x20the\x20Guard\x27s\x20sharing\x20config\x20uses\x20{\x20GuardIdentifier:\x200\x20}.'),c['push'](aX['join']('\x0a'));}}catch{c['push']('alloc_by_guard\x20created\x20Payment\x20object(s)\x20['+aV+'].\x20'+'Query\x20these\x20Payment\x20objects\x20to\x20see\x20the\x20distribution\x20details\x20and\x20check\x20for_object\x20for\x20escrow\x20mode.');}}}const aS=handleCallResult(aQ,m(b['data']));return f(n,b['operation_type'],aQ)['catch'](()=>{}),aS;}case'permission':{const b5=b['operation_type'],b6=handlePermissionOperations(b['data'],g,m);return b6&&typeof b6==='object'&&'then'in b6&&b6['then'](b7=>{b7?.['structuredContent']?.['result']&&f(n,b5,b7['structuredContent']['result'])['catch'](()=>{});})['catch'](()=>{}),b6;}case'guard':{const b7=b['data'];if(b7['root']?.['type']==='file'){const bb=resolve(b7['root']['file_path']);let bc;try{bc=readFileSync(bb,'utf-8');}catch(bf){throw new Error('Failed\x20to\x20read\x20Guard\x20definition\x20file\x20\x27'+b7['root']['file_path']+'\x27:\x20'+bf['message']);}const bd=parseGuardFile(bc,b7['root']['format']);if(!bd['success']){const bg=formatGuardParseErrors(bd['errors']);throw new Error('Guard\x20validation\x20failed\x20for\x20file\x20\x27'+b7['root']['file_path']+'\x27:\x0a\x0a'+bg);}const be=bd['data'];b7['root']={'type':'node','node':be['root']},be['table']!==undefined&&b7['table']===undefined&&(b7['table']=be['table']),be['description']!==undefined&&b7['description']===undefined&&(b7['description']=be['description']),be['rely']!==undefined&&b7['rely']===undefined&&(b7['rely']=be['rely']),be['namedNew']!==undefined&&b7['namedNew']===undefined&&(b7['namedNew']=be['namedNew']);}if(b7['root']&&typeof b7['root']==='object'){const bh=b7['root'];bh['type']==='node'&&bh['node']&&(b7['root']=bh['node']);}if(!b7['table']||b7['table']['length']===0x0)throw new Error('Guard\x20\x27table\x27\x20field\x20is\x20required\x20and\x20cannot\x20be\x20empty');if(!b7['root'])throw new Error('Guard\x20\x27root\x27\x20field\x20is\x20required');const b8=new CallGuard(b7),b9=await b8['call'](g);if(b9&&typeof b9==='object'&&'digest'in b9&&b9?.['effects']?.['status']?.['status']==='success')try{const bi=b7['root']?.['type']??'<unknown>',bj=Array['isArray'](b7['table'])?b7['table']:[],bk=bj['length'],bl=bj['filter'](bq=>bq?.['b_submission']===!![])['length'],bm=b7['rely']?.['guards'],bn=Array['isArray'](bm)?bm['length']:0x0,bo=b7['rely']?.['logic_or']===!![]?'OR':b7['rely']?.['logic_or']===![]?'AND':'none',bp=['GUARD\x20LOGIC\x20SUMMARY:','\x20\x20•\x20root\x20type:\x20'+bi,'\x20\x20•\x20table\x20entries:\x20'+bk+'\x20('+bl+'\x20require\x20runtime\x20submission)'];bn>0x0&&bp['push']('\x20\x20•\x20relies\x20on:\x20'+bn+'\x20guard(s)\x20(mode:\x20'+bo+')');if(b7['description']){const bq=String(b7['description'])['slice'](0x0,0x50);bp['push']('\x20\x20•\x20description:\x20\x22'+bq+'\x22');}c['push'](bp['join']('\x0a'));}catch{}const ba=handleCallResult(b9,m(b['data']));return f(n,b['operation_type'],b9)['catch'](()=>{}),ba;}case'personal':{const br=transformPersonalInput(b['data']),bs=new CallPersonal(br),bt=await bs['call'](g),bu=handleCallResult(bt,m(b['data']));return f(n,b['operation_type'],bt)['catch'](()=>{}),bu;}case'payment':{const bv=await prepareFundOperation(b['data'],'payment',g?.['network']);if(bv['blockingErrors']['length']>0x0)return buildFundBlockResult(bv,'payment');c['push'](...bv['warnings']);if(bv['confirmation']){c['push'](bv['confirmation']['message']);const bA=a306c(bv['confirmation']);if(bA)c['push'](bA);}const bw=b['data'];if(bw?.['receive']===!![])c['push']('RECEIVE\x20MODE\x20(order_claim):\x20You\x20are\x20unwrapping\x20a\x20CoinWrapper\x20to\x20your\x20wallet.\x20'+'This\x20is\x20the\x20final\x20step\x20of\x20the\x20escrow\x20flow:\x0a'+'\x20\x201.\x20Allocation\x27s\x20alloc_by_guard\x20created\x20a\x20Payment\x20object\x20with\x20your\x20address\x20as\x20a\x20recipient\x0a'+'\x20\x202.\x20The\x20Payment\x27s\x20revenue\x20split\x20transferred\x20a\x20CoinWrapper\x20to\x20your\x20wallet\x20(owned\x20but\x20not\x20spendable)\x0a'+'\x20\x203.\x20THIS\x20operation\x20unwraps\x20the\x20CoinWrapper\x20via\x20payment::unwrap_to_myself,\x20deleting\x20the\x20'+'CoinWrapper\x20and\x20transferring\x20the\x20underlying\x20coin\x20to\x20tx_context::sender\x0a'+'Requirements:\x0a'+'\x20\x20-\x20You\x20MUST\x20be\x20the\x20CoinWrapper\x27s\x20owner\x20(the\x20recipient\x20specified\x20in\x20the\x20Allocation)\x0a'+'\x20\x20-\x20type_parameter\x20is\x20OPTIONAL:\x20when\x20omitted\x20it\x20is\x20auto-derived\x20from\x20the\x20CoinWrapper\x27s\x20'+'own\x20on-chain\x20type\x20(the\x20inner\x20T\x20of\x20CoinWrapper<T>)\x0a'+'\x20\x20-\x20object\x20can\x20be\x20a\x20CoinWrapper\x20ID\x20(0x...)\x20or\x20a\x20local\x20mark\x20name\x0a'+'To\x20find\x20received\x20CoinWrappers:\x20call\x20query_toolkit\x20with\x20query_type=\x27onchain_received\x27\x20'+'and\x20type=\x27CoinWrapper\x27\x20for\x20your\x20account.\x0a'+'After\x20success:\x20verify\x20your\x20balance\x20increased\x20via\x20account_balance\x20query.');else bw?.['revenue']&&c['push']('CREATE\x20MODE:\x20Creating\x20a\x20new\x20Payment\x20object.\x20Payments\x20are\x20IMMUTABLE\x20after\x20creation\x20—\x20'+'they\x20cannot\x20be\x20modified.\x20The\x20\x27revenue\x27\x20array\x20defines\x20the\x20recipients\x20and\x20amounts;\x20'+'ensure\x20correctness\x20before\x20submitting.\x20The\x20\x27info.for_guard\x27\x20field\x20(if\x20set)\x20binds\x20this\x20'+'Payment\x20to\x20a\x20Guard\x20for\x20conditional\x20release\x20(common\x20in\x20escrow\x20workflows).');const bx=new CallPayment(b['data']),by=await bx['call'](g),bz=handleCallResult(by,m(b['data']));return f(n,b['operation_type'],by)['catch'](()=>{}),bz;}case'demand':{const bB=new CallDemand(b['data']),bC=b['submission']?await bB['call_with_submission'](g,await transformSubmission(b['submission'])):await bB['call'](g),bD=handleCallResult(bC,m(b['data']));return f(n,b['operation_type'],bC)['catch'](()=>{}),bD;}case'order':{b['data']?.['progress']&&(c['push']('Order\x20routing\x20hint:\x20order.progress\x20works\x20only\x20for\x20Forwards\x20with\x20'+'namedOperator=\x22\x22\x20(OrderHolder).\x20If\x20the\x20target\x20Forward\x20uses\x20a\x20'+'non-empty\x20namedOperator\x20or\x20permissionIndex-only,\x20use\x20progress.operate\x20'+'on\x20the\x20Progress\x20object\x20directly\x20instead.'),c['push']('Allocation\x20hint:\x20if\x20this\x20operation\x20advances\x20the\x20order\x20to\x20a\x20terminal\x20'+'state\x20(e.g.\x20Completed/Cancelled/Refunded),\x20funds\x20remain\x20in\x20the\x20'+'Allocation\x20object\x20and\x20are\x20NOT\x20auto-distributed.\x20To\x20release\x20funds,\x20'+'trigger\x20the\x20corresponding\x20Guard\x20verification\x20via\x20allocation\x20operation\x20'+'(the\x20Guard\x20bound\x20to\x20the\x20matching\x20Allocator\x20will\x20verify\x20and\x20distribute).'));const bE=new CallOrder(b['data']),bF=b['submission']?await bE['call_with_submission'](g,await transformSubmission(b['submission'])):await bE['call'](g),bG=handleCallResult(bF,m(b['data']));return f(n,b['operation_type'],bF)['catch'](()=>{}),bG;}case'gen_passport':{const bH=await gen_passport(g,b['guard'],b['info']),bI=handleCallResult(bH,m(b['data']));return f(n,b['operation_type'],bH)['catch'](()=>{}),bI;}case'proof':{const bJ=new CallProof(b['data']),bK=b['submission']?await bJ['call_with_submission'](g,await transformSubmission(b['submission'])):await bJ['call'](g),bL=handleCallResult(bK,m(b['data']));return f(n,b['operation_type'],bK)['catch'](()=>{}),bL;}case'gen_proof':{const bM=await gen_proof(g,b['proof'],b['server_pubkey'],b['server_signature'],b['proof_type'],b['description'],b['item_count'],b['about_address']),bN=handleCallResult(bM,m(b['data']));return f(n,b['operation_type'],bM)['catch'](()=>{}),bN;}}const q=b;throw new Error('Unknown\x20on-chain\x20operation\x20type:\x20'+String(q['operation_type']));}catch(bO){const bP=bO instanceof Error?bO['message']:String(bO),bQ=b?.['operation_type'],bR=b&&'data'in b?b['data']:undefined;return handleCallResult({'error':bP},bQ?{'operation_type':bQ,'data':bR}:undefined);}}
|
|
1
|
+
import{readFileSync,writeFileSync,existsSync,mkdirSync}from'fs';import{resolve,dirname,join}from'path';import{getWowMcpDir}from'@wowok/wowok';import{CallService,CallMachine,CallProgress,CallGuard,CallArbitration,CallRepository,CallContact,CallTreasury,CallReward,CallAllocation,CallPersonal,CallPayment,CallDemand,CallOrder,gen_passport,CallProof,gen_proof,ResponseData,LocalProject,LocalMark,query_objects,parseGuardFile,formatGuardParseErrors,transformRewardInput,transformPersonalInput}from'@wowok/wowok';import{OnchainOperationsSchema,strictParse,getEnvConfig,handleCallResult,checkClientSchemaCompatibility,parseMachineNodesFromText,formatNodeErrors as a360a,transformSubmission}from'../../schema/index.js';import{handlePermissionOperations}from'../../schema/call/permission-handler.js';import{collectPermissionIndexes,checkPermissionAuthorization,formatPermissionWarning}from'../../schema/utils/permission-machine-check.js';import{isProjectServiceEnabled,normalize as a360b}from'../../project/index.js';import{getSkillsHintForOnchain}from'../../schema/utils/skills-recommendation.js';import{prepareFundOperation,generateSkillsHint as a360c}from'../../knowledge/fund-layer.js';import{generateGuardSubmissionPrompt,formatSubmissionPrompt}from'../../knowledge/guard-submission-prompt.js';import{enrichWorkflowGuidance,mergeGuidanceIntoOutput}from'../../knowledge/workflow-guidance.js';import{classifyWipPath}from'../wip-deploy-assist.js';import{withHarness}from'../shared.js';const REFERRER_FILE=join(getWowMcpDir(),'referrer');function readStoredReferrer(){try{if(!existsSync(REFERRER_FILE))return null;const a=readFileSync(REFERRER_FILE,'utf8')['trim']();return a||null;}catch{return null;}}const PROJECT_SKILL_DIRS=['.claude/skills','.agents/skills','.cursor/rules','.github/prompts','.windsurf/skills','.codex/skills','.qoder/skills','.roo/skills','.codebuddy/skills'],PROJECT_SKILL_MARKERS=['wowok-provider','wowok-supplier','wowok-collaborator','wowok-arbitrator','wowok-order','wowok-messenger','wowok-machine','wowok-output','wowok-onboard','wowok-planner','wowok-auditor'],SKILLS_HINT_FILE=join(getWowMcpDir(),'skills-hint-asked.json');function projectHasSkills(a){for(const b of PROJECT_SKILL_DIRS){for(const c of PROJECT_SKILL_MARKERS){if(existsSync(join(a,b,c)))return!![];}}return![];}function loadSkillsAsked(){try{if(!existsSync(SKILLS_HINT_FILE))return{};return JSON['parse'](readFileSync(SKILLS_HINT_FILE,'utf8'))??{};}catch{return{};}}function persistSkillsAsked(a){try{const b=loadSkillsAsked();b[a]=!![],mkdirSync(dirname(SKILLS_HINT_FILE),{'recursive':!![]}),writeFileSync(SKILLS_HINT_FILE,JSON['stringify'](b,null,0x2),'utf8');}catch{}}function getProjectSkillsHint(){try{const a=process['cwd']();if(!a||projectHasSkills(a))return null;const b=loadSkillsAsked();if(b[a])return null;return persistSkillsAsked(a),'WoWok\x20skills\x20are\x20not\x20installed\x20in\x20this\x20project.\x20Run\x20`wowok-skills\x20init`\x20'+'here\x20to\x20install\x20them\x20(the\x20MCP\x20works\x20regardless;\x20skills\x20improve\x20AI\x20orchestration).';}catch{return null;}}function formatRecipientLabel(a){if(!a)return'unknown';if(typeof a==='string')return a;if('GuardIdentifier'in a)return'GuardIdentifier('+a['GuardIdentifier']+')';if('Entity'in a){const b=a['Entity'];if(typeof b==='string'&&b['length']>0x10)return'Entity('+b['slice'](0x0,0x8)+'...'+b['slice'](-0x4)+')';return'Entity('+b+')';}if('Signer'in a)return'Signer\x20(transaction\x20signer)';return JSON['stringify'](a);}function formatMistAmount(a){const b=Number(a)/0x3b9aca00;if(b===0x0)return'0\x20WOW';const c=b['toFixed'](0x9)['replace'](/\.?0+$/,'');return c+'\x20WOW\x20('+a['toString']()+'\x20MIST)';}function extractNodesForCheck(a){if(!a?.['node'])return[];if(a['node']['nodes']&&Array['isArray'](a['node']['nodes']))return a['node']['nodes'];return[];}function resolvePermissionRef(a){if(!a?.['object'])return null;if(typeof a['object']==='string')return null;const b=a['object'];if(b['permission']){if(typeof b['permission']==='string')return b['permission'];return null;}return null;}async function checkMachinePermissionBeforePublish(a,b){if(a?.['publish']!==!![])return'';const c=extractNodesForCheck(a);if(c['length']===0x0)return'';const d=collectPermissionIndexes(c);if(d['requiredIndexes']['length']===0x0)return'';let e='';if(d['missingRefs']['length']>0x0){e+='WARNING:\x20Some\x20forwards\x20have\x20NEITHER\x20permissionIndex\x20nor\x20namedOperator.\x20'+'These\x20forwards\x20cannot\x20be\x20executed.\x20Add\x20one\x20or\x20the\x20other:\x0a';for(const k of d['missingRefs']){e+='\x20\x20-\x20Node\x20\x22'+k['nodeName']+'\x22,\x20pair\x20prev_node=\x22'+k['prevNode']+'\x22,\x20forward\x20\x22'+k['forwardName']+'\x22\x0a';}e+='\x0a';}const f=resolvePermissionRef(a);if(!f)return d['requiredIndexes']['length']>0x0&&(e+='PRE-PUBLISH\x20REMINDER:\x20This\x20Machine\x20uses\x20'+d['requiredIndexes']['length']+'\x20custom\x20permission\x20index(es):\x20['+d['requiredIndexes']['join'](',\x20')+'].\x20'+'After\x20creating\x20the\x20Permission\x20object,\x20grant\x20entities\x20for\x20each\x20index\x20via\x20'+'permission.op=\x22add\x20perm\x20by\x20index\x22\x20BEFORE\x20publishing\x20the\x20Machine.\x20'+'Otherwise,\x20forwards\x20using\x20these\x20indexes\x20will\x20be\x20un-executable.\x0a'),e;let g=f;if(!f['startsWith']('0x'))try{const l=await LocalMark['Instance']()['get'](f);if(l?.['address'])g=l['address'];else return e+'PRE-PUBLISH:\x20Could\x20not\x20resolve\x20Permission\x20name\x20\x27'+f+'\x27\x20to\x20an\x20address.\x20Ensure\x20the\x20Permission\x20object\x20exists\x20and\x20is\x20marked.\x20'+'Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';}catch{return e+'PRE-PUBLISH:\x20Failed\x20to\x20lookup\x20Permission\x20name\x20\x27'+f+'\x27.\x20Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';}const h=b?.['network']??'testnet';let i=null;try{const m=await query_objects({'objects':[g],'network':h}),n=m?.['objects']?.[0x0];n&&(i={'address':g,'entity_count':n['entity_count'],'perm_remark':n['perm_remark'],'owner':n['owner']??n['builder'],'admin':n['admin']});}catch{return e+'PRE-PUBLISH:\x20Failed\x20to\x20query\x20Permission\x20object\x20'+g+'.\x20Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';}if(!i)return e+'PRE-PUBLISH:\x20Permission\x20object\x20'+g+'\x20not\x20found\x20on-chain.\x20Required\x20indexes:\x20['+d['requiredIndexes']['join'](',\x20')+']\x0a';const j=checkPermissionAuthorization(d['requiredIndexes'],i);return!j['allAuthorized']&&(e+=formatPermissionWarning(j)+'\x0a'),e;}async function detectServiceGuardCircularDependency(a){if(!a||typeof a['object']!=='object'||a['object']===null)return null;const b=a['order_allocators'];if(!b||typeof b!=='object')return null;const c=Array['isArray'](b['allocators'])?b['allocators']:[];if(c['length']===0x0)return null;const d=[],e=new Set();for(const k of c){const l=k?.['guard'];if(typeof l==='string'&&!l['startsWith']('0x')){if(e['has'](l))continue;e['add'](l);try{const m=await LocalMark['Instance']()['get_address'](l);!m&&d['push'](l);}catch{d['push'](l);}}}if(d['length']===0x0)return null;const f=d['map'](n=>'\x27'+n+'\x27')['join'](',\x20'),g=a['object'],h=g['name']??'<service_name>',i=[{'step':0x1,'action':'onchain_operations','operation_type':'service','params':{...a,'order_allocators':null,'publish':![]},'purpose':'Create\x20Service\x20\x27'+h+'\x27\x20WITHOUT\x20order_allocators\x20to\x20establish\x20'+('its\x20LocalMark\x20entry.\x20After\x20this\x20step,\x20the\x20name\x20\x27'+h+'\x27\x20resolves\x20')+'to\x20an\x20on-chain\x20address.'},{'step':0x2,'action':'onchain_operations','operation_type':'guard','params':d['map'](n=>({'object':{'name':n,'type':'Guard'},'_hint':'Table\x20items\x20may\x20reference\x20Service\x20\x27'+h+'\x27\x20by\x20name'})),'purpose':'Create\x20Guard(s)\x20'+f+'.\x20Their\x20table\x20items\x20can\x20now\x20resolve\x20'+('Service\x20\x27'+h+'\x27\x20by\x20name\x20(LocalMark\x20entry\x20from\x20step\x201).')},{'step':0x3,'action':'onchain_operations','operation_type':'service','params':{'object':h,'order_allocators':b,'publish':a['publish']??!![]},'purpose':'Update\x20Service\x20with\x20order_allocators\x20(referencing\x20Guards\x20created\x20in\x20'+'step\x202)\x20and\x20publish.\x20After\x20publish,\x20order_allocators\x20becomes\x20SDK-LOCKED.'}],j='⚠️\x20Circular\x20dependency\x20detected:\x20Service\x20↔\x20Guard\x0a\x0a'+('Cannot\x20create\x20Service\x20with\x20order_allocators\x20referencing\x20non-existent\x20Guard(s):\x20'+f+'.\x0a\x0a')+'Explanation:\x20Guard\x20table\x20items\x20may\x20reference\x20the\x20Service\x20by\x20name,\x20creating\x20a\x20circular\x20'+'dependency:\x20the\x20Service\x20must\x20exist\x20as\x20a\x20LocalMark\x20before\x20the\x20Guard\x20can\x20resolve\x20it,\x20'+'but\x20the\x20Guard\x20must\x20exist\x20before\x20the\x20Service\x20can\x20reference\x20it\x20in\x20order_allocators.\x20'+'The\x20SDK\x20would\x20fail\x20with\x20a\x20BCS\x20serialization\x20error:\x20\x22Expected\x20valid\x20Address\x20for\x20'+'ValueType.Address,\x20but\x20failed\x20to\x20resolve\x20string:\x20<name>\x22.\x0a\x0a'+'Recommended\x20steps:\x0a'+i['map'](n=>'\x20\x20Step\x20'+n['step']+'\x20('+n['operation_type']+'):\x20'+n['purpose'])['join']('\x0a')+'\x0a\x0aHint:\x20This\x20is\x20the\x20canonical\x20Service↔Guard\x20circular\x20dependency.\x20The\x203-step\x20'+'pattern\x20above\x20is\x20the\x20documented\x20solution\x20(see\x20SCHEMA-03\x20/\x20P0-01\x20fix\x20in\x20'+'schema/call/service.ts\x20publish\x20field\x20description).';return{'content':[{'type':'text','text':j}],'structuredContent':{'result':{'type':'error','error':'Cannot\x20create\x20Service\x20with\x20order_allocators\x20referencing\x20non-existent\x20Guard(s):\x20'+f+'.\x20Circular\x20dependency:\x20Service↔Guard.','error_code':'circular_dependency_detected','retryable':!![],'recovery_hint':JSON['stringify'](i),'related_object':h},'message':'Circular\x20dependency\x20detected:\x20Service\x20↔\x20Guard.\x20See\x20recovery_hint\x20for\x20the\x203-step\x20creation\x20pattern.'}};}function buildFundBlockResult(a,b){const c=a['matchErrors']['length']>0x0,d=a['errors']['length']>0x0,e=c&&d?'FUND\x20OPERATION\x20BLOCKED':c?'TOKEN\x20TYPE\x20MISMATCH\x20—\x20operation\x20blocked':'FUND\x20INPUT\x20BLOCKED\x20—\x20operation\x20blocked',f=c&&d?'fund_blocked':c?'token_type_mismatch':'fund_input_error',g='⛔\x20'+e+'\x0a\x0a'+a['blockingErrors']['map'](h=>'\x20\x20•\x20'+h)['join']('\x0a')+'\x0a\x0aThe\x20token\x20type\x20of\x20a\x20generic\x20on-chain\x20object\x20(e.g.\x20Treasury<T>,\x20Service<T>)\x20is\x20'+'determined\x20at\x20creation\x20and\x20can\x20NEVER\x20be\x20changed,\x20and\x20monetary\x20input\x20is\x20never\x20'+('processed\x20with\x20unknown\x20token\x20precision.\x20This\x20'+b+'\x20operation\x20was\x20')+'NOT\x20executed.\x20Fix\x20the\x20errors\x20above\x20and\x20re-issue\x20the\x20operation'+(a['objectTokenType']?'\x20(object\x20token\x20type:\x20'+a['objectTokenType']+')':'')+'.';return{'content':[{'type':'text','text':g}],'structuredContent':{'result':{'type':'error','error':a['blockingErrors']['join']('\x20|\x20'),'error_code':f,'retryable':!![],'recovery_hint':'Use\x20token\x20type\x20'+(a['objectTokenType']??'<the\x20object\x27s\x20generic\x20token\x20type>')+'\x20for\x20all\x20'+('amounts,\x20coins,\x20and\x20receive\x20records\x20in\x20this\x20'+b+'\x20operation.\x20')+'Query\x20the\x20object\x20via\x20query_toolkit\x20onchain_objects\x20to\x20confirm\x20its\x20generic\x20'+'token\x20type\x20(type_raw,\x20e.g.\x20\x220x2::treasury::Treasury<0x2::wow::WOW>\x22).\x20'+'For\x20precision-unavailable\x20tokens,\x20retry\x20the\x20operation\x20—\x20the\x20on-chain\x20'+'metadata\x20lookup\x20may\x20have\x20been\x20transient.'},'message':'Fund\x20operation\x20blocked\x20before\x20execution.'}};}function checkSalesWipNetworkDeployment(a,b,c){const d=a?.['sales'];if(!d||typeof d!=='object')return null;if(d['op']!=='add'&&d['op']!=='set')return null;const e=Array['isArray'](d['sales'])?d['sales']:[];if(e['length']===0x0)return null;const f=b?.['network']==='localnet';for(const g of e){const h=g?.['wip'];if(typeof h!=='string'||h==='')continue;const i=classifyWipPath(h);if(!i['is_local'])continue;if(i['type']==='local_http'){if(f){c['push']('WIP\x20INTERNAL-TEST-ONLY\x20REMINDER\x20(sale\x20\x22'+g['name']+'\x22):\x20wip\x20=\x20\x22'+h+'\x22\x20is\x20a\x20'+('local-network\x20URL\x20('+i['description']+').\x20It\x20is\x20reachable\x20ONLY\x20on\x20the\x20')+'local\x20machine\x20/\x20LAN\x20where\x20a\x20local\x20WIP\x20server\x20runs.\x20This\x20is\x20acceptable\x20for\x20LOCALNET\x20'+'internal\x20testing,\x20but\x20customers\x20and\x20on-chain\x20verifiers\x20on\x20OTHER\x20machines\x20CANNOT\x20'+'reach\x20it\x20—\x20on\x20testnet/mainnet,\x20every\x20customer\x20order_new\x20would\x20fail\x20100%\x20because\x20the\x20'+'WIP\x20file\x20cannot\x20be\x20verified.\x20For\x20any\x20non-localnet\x20deployment,\x20replace\x20this\x20URL\x20with\x20'+'a\x20public\x20endpoint\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website)\x20or\x20leave\x20sale.wip\x20empty.');continue;}const l='a\x20local-network\x20URL\x20('+i['description']+')',m='⛔\x20WIP\x20IS\x20NOT\x20NETWORK-DEPLOYABLE\x20—\x20sales\x20NOT\x20submitted\x0a\x0a'+('Sale\x20\x22'+g['name']+'\x22\x20has\x20wip\x20=\x20\x22'+h+'\x22,\x20which\x20is\x20'+l+'.\x0a\x0a')+'INTERNAL\x20TEST\x20USE\x20ONLY:\x20this\x20URL\x20is\x20reachable\x20only\x20from\x20the\x20merchant\x27s\x20own\x20machine/LAN.\x20'+'Customers\x20on\x20other\x20machines\x20cannot\x20reach\x20it,\x20so\x20verifying\x20the\x20WIP\x20file\x20at\x20order\x20time\x20'+'fails\x20and\x20order_new\x20aborts\x20100%.\x20Local-network\x20WIP\x20URLs\x20are\x20allowed\x20ONLY\x20for\x20'+('localnet\x20internal\x20testing\x20(env.network\x20=\x20\x22localnet\x22);\x20on\x20'+(b?.['network']??'this\x20network')+'\x20')+'they\x20must\x20never\x20be\x20stored\x20on-chain.\x0a\x0a'+'Fix:\x20deploy\x20the\x20.wip\x20file\x20to\x20a\x20publicly\x20reachable\x20endpoint,\x20then\x20re-run\x20with\x20'+'sale.wip\x20=\x20\x22<public\x20URL>\x22\x20(e.g.\x20GitHub\x20Pages,\x20IPFS\x20gateway,\x20or\x20your\x20own\x20website).\x0a'+'\x20\x20•\x20GitHub\x20Pages:\x20https://<user>.github.io/<repo>/<file>.wip\x0a'+'\x20\x20•\x20IPFS:\x20\x20\x20\x20\x20\x20\x20\x20https://ipfs.io/ipfs/<CID>\x20\x20(or\x20ipfs://<CID>)\x0a'+'\x20\x20•\x20Your\x20site:\x20\x20\x20https://<your-domain>/<path>/<file>.wip\x0a'+'Alternatively,\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20SKIP\x20WIP\x20verification\x20—\x20'+'TESTING\x20ONLY,\x20not\x20recommended\x20for\x20production.';return{'content':[{'type':'text','text':m}],'structuredContent':{'result':{'type':'error','error':'Sale\x20\x22'+g['name']+'\x22\x20wip\x20is\x20'+l+':\x20'+h+'.\x20Local-network\x20URLs\x20are\x20INTERNAL\x20TEST\x20USE\x20ONLY\x20—\x20customers\x20cannot\x20verify\x20them,\x20aborting\x20order_new\x20100%.','error_code':'wip_not_network_deployed','retryable':!![],'recovery_hint':'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20endpoint\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website)\x20'+'and\x20set\x20sale.wip\x20to\x20the\x20public\x20URL;\x20or\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20skip\x20WIP\x20'+'verification\x20(TESTING\x20ONLY).','related_object':g['name']},'message':'WIP\x20is\x20a\x20local-network\x20URL\x20(INTERNAL\x20TEST\x20USE\x20ONLY)\x20—\x20sales\x20not\x20submitted.\x20See\x20recovery_hint.'}};}const j='a\x20LOCAL\x20'+i['type']+'\x20path',k='⛔\x20WIP\x20IS\x20NOT\x20NETWORK-DEPLOYABLE\x20—\x20sales\x20NOT\x20submitted\x0a\x0a'+('Sale\x20\x22'+g['name']+'\x22\x20has\x20wip\x20=\x20\x22'+h+'\x22,\x20which\x20is\x20'+j+'.\x0a\x0a')+'Why\x20this\x20is\x20fatal:\x20the\x20WIP\x20path\x20is\x20stored\x20ON-CHAIN\x20and\x20every\x20customer\x20'+'(on\x20a\x20different\x20machine)\x20fetches\x20it\x20when\x20placing\x20an\x20order.\x20A\x20local\x20path\x20/\x20'+'localhost\x20/\x20LAN\x20URL\x20is\x20reachable\x20only\x20from\x20YOUR\x20machine\x20—\x20it\x20passes\x20the\x20'+'merchant-side\x20set-time\x20verification\x20but\x20makes\x20order_new\x20abort\x20100%\x20for\x20customers.\x0a\x0a'+'Fix:\x20deploy\x20the\x20.wip\x20file\x20to\x20a\x20publicly\x20reachable\x20endpoint,\x20then\x20re-run\x20with\x20'+'sale.wip\x20=\x20\x22<public\x20URL>\x22\x20(e.g.\x20GitHub\x20Pages,\x20IPFS\x20gateway,\x20or\x20your\x20own\x20website).\x0a'+'\x20\x20•\x20GitHub\x20Pages:\x20https://<user>.github.io/<repo>/<file>.wip\x0a'+'\x20\x20•\x20IPFS:\x20\x20\x20\x20\x20\x20\x20\x20https://ipfs.io/ipfs/<CID>\x20\x20(or\x20ipfs://<CID>)\x0a'+'\x20\x20•\x20Your\x20site:\x20\x20\x20https://<your-domain>/<path>/<file>.wip\x0a'+'Alternatively,\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20SKIP\x20WIP\x20verification\x20—\x20'+'TESTING\x20ONLY,\x20not\x20recommended\x20for\x20production.';return{'content':[{'type':'text','text':k}],'structuredContent':{'result':{'type':'error','error':'Sale\x20\x22'+g['name']+'\x22\x20wip\x20is\x20'+j+':\x20'+h+'.\x20Local\x20WIP\x20paths\x20are\x20unreachable\x20by\x20customers\x20and\x20abort\x20order_new\x20100%.','error_code':'wip_not_network_deployed','retryable':!![],'recovery_hint':'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20endpoint\x20(GitHub\x20Pages\x20/\x20IPFS\x20/\x20your\x20own\x20website)\x20'+'and\x20set\x20sale.wip\x20to\x20the\x20public\x20URL;\x20or\x20set\x20sale.wip\x20=\x20\x22\x22\x20(empty)\x20to\x20skip\x20WIP\x20'+'verification\x20(TESTING\x20ONLY).','related_object':g['name']},'message':'WIP\x20is\x20not\x20network-deployable\x20—\x20sales\x20not\x20submitted.\x20See\x20recovery_hint.'}};}return null;}export async function handleOnchainOperations(a){let b,c=[],d=[];async function f(g,h,k){if(!g)return;const l=new Set(['service','machine','progress','repository','arbitration','contact','treasury','reward','allocation','permission','guard','personal','demand','order','proof']);if(!l['has'](h))return;if(!k||typeof k!=='object'||'error'in k)return;if(!k['digest'])return;try{const m=LocalProject['Instance'](),n=await m['getProjectByPrefix'](g);if(!n){console['warn']('[autoAddToProject]\x20Project\x20with\x20prefix\x20\x27'+g+'\x27\x20not\x20found\x20—\x20object\x20not\x20auto-associated.\x20Create\x20the\x20project\x20first\x20via\x20project_operation\x20action=\x27create_project\x27.');return;}const o=ResponseData(k),p=o['filter'](q=>q['change']==='created'&&q['object']);for(const q of p){const r=!!(q['type_raw']&&q['type_raw']['includes']('service::Service'));await m['addObject'](n['id'],{'objectAddress':q['object'],'objectType':q['type_raw'],'role':r?'core':'reference'});}if(h==='service'){const s=p['find'](t=>t['type_raw']&&t['type_raw']['includes']('service::Service'));s&&s['object']&&await m['updateProject'](n['id'],{'serviceAddress':s['object']})['catch'](()=>{});}}catch{}}try{if(typeof a==='object'&&a!==null&&'description'in a&&!('operation_type'in a)){const r=a['description'],s=typeof r==='string'&&(r['includes']('operation_type')||r['includes']('data'));if(s)throw new Error('Invalid\x20parameter\x20structure.\x20Parameters\x20should\x20NOT\x20be\x20wrapped\x20in\x20\x27description\x27\x20field.\x0a'+'Correct\x20format:\x20{\x20operation_type:\x20\x27...\x27,\x20data:\x20{...}\x20}\x0a'+'Incorrect\x20format:\x20{\x20description:\x20\x27{\x20operation_type:\x20...\x20}\x27\x20}');}b=strictParse(OnchainOperationsSchema,a,'onchain_operations\x20input');const g=getEnvConfig(b['env']);if(!g['referrer']){const t=readStoredReferrer();if(t)g['referrer']=t;}const h=g['client_schema_version'],k=g['schema_strict_mode'],l=h?checkClientSchemaCompatibility(h,{'mode':k?'strict':'warn'}):undefined,m=u=>({'operation_type':b['operation_type'],'data':u,'pre_warnings':[...c,...d]['length']?[...c,...d]:undefined,'schema_check':l}),n=g['project'];if(isProjectServiceEnabled()&&'data'in b&&b['data']){const u=a360b({'operation_type':b['operation_type'],'data':b['data'],'projectPrefix':n});b['data']=u['data'],d=u['warnings']??[];}if(!g['account']&&n)try{const v=await LocalProject['Instance']()['getProjectByPrefix'](n);v?.['defaultAccount']&&(g['account']=v['defaultAccount']);}catch{}delete g['confirmed'],delete g['user_intent_phrases'],delete g['project'],delete g['client_schema_version'],delete g['schema_strict_mode'];const o=getSkillsHintForOnchain(b['operation_type'],b['data']);o&&c['push'](o);const p=getProjectSkillsHint();p&&c['push'](p);switch(b['operation_type']){case'service':{const w=b['data'],x=await detectServiceGuardCircularDependency(w);if(x)return x;const y=checkSalesWipNetworkDeployment(w,g,c);if(y)return y;const z=await prepareFundOperation(w,'service',g?.['network']);if(z['blockingErrors']['length']>0x0)return buildFundBlockResult(z,'service');c['push'](...z['warnings']);if(z['confirmation']){c['push'](z['confirmation']['message']);const J=a360c(z['confirmation']);if(J)c['push'](J);}const A=w?.['order_allocators'];if(A&&typeof A==='object'){const K=Array['isArray'](A['allocators'])?A['allocators']:[];for(let L=0x0;L<K['length'];L++){const M=K[L],N=Array['isArray'](M?.['sharing'])?M['sharing']:[];if(N['length']<=0x1)continue;const O=new Map();for(let P=0x0;P<N['length'];P++){const Q=N[P]?.['who'];let R='';if(typeof Q==='string')R=Q;else{if(Q&&typeof Q==='object'){if(Q['Entity']&&typeof Q['Entity']==='object')R='Entity:'+(Q['Entity']['name_or_address']??'');else{if(Q['Signer'])R='Signer';else Q['GuardIdentifier']!==undefined?R='Guard:'+Q['GuardIdentifier']:R=JSON['stringify'](Q);}}}if(!R)continue;const S=O['get'](R)??0x0;O['set'](R,S+0x1);}for(const [T,U]of O){U>0x1&&c['push']('DUPLICATE\x20SHARING\x20ENTITY:\x20Allocator['+L+']\x20has\x20entity\x20\x22'+T+'\x22\x20appearing\x20'+U+'\x20times\x20'+'in\x20the\x20sharing\x20array.\x20This\x20is\x20likely\x20a\x20configuration\x20error\x20—\x20each\x20entity\x20should\x20appear\x20'+('at\x20most\x20once\x20per\x20allocator.\x20Total\x20sharing:\x20'+U*0x64+'%\x20to\x20the\x20same\x20entity.\x20')+'If\x20intentional,\x20ignore\x20this\x20warning.');}}}const B=new CallService(b['data']);let C;try{C=b['submission']?await B['call_with_submission'](g,await transformSubmission(b['submission'])):await B['call'](g);}catch(V){const W=V['message']??String(V);if(/not found|GetObjectExisted|resolve|LocalMark|failed to resolve/i['test'](W)){const X=typeof w?.['object']==='object'&&w?.['object']!==null?w['object']['permission']:undefined;throw new Error('DEPENDENCY\x20RESOLUTION\x20FAILED:\x20One\x20or\x20more\x20referenced\x20objects\x20could\x20not\x20be\x20resolved.\x0a'+('Original\x20error:\x20'+W+'\x0a')+'Common\x20causes:\x0a'+'\x20\x201.\x20Object\x20name\x20typo\x20—\x20check\x20spelling\x20in\x20LocalMark\x0a'+'\x20\x202.\x20Object\x20not\x20yet\x20created\x20—\x20create\x20dependencies\x20first\x0a'+'\x20\x203.\x20Object\x20on\x20different\x20network\x20—\x20check\x20env.network\x0a'+('Referenced\x20objects\x20in\x20this\x20call:\x20machine='+(w?.['machine']??'<none>')+',\x20')+('buy_guard='+(w?.['buy_guard']??'<none>')+',\x20')+('permission='+(X??'<inline/new>')+',\x20')+('arbitrations='+(Array['isArray'](w?.['arbitrations'])?w['arbitrations']['length']+'\x20item(s)':'<none>')));}throw V;}const D=w?.['publish']?'publish\x20service':w?.['bPublished']!==undefined?'modify\x20service':'create\x20service',E=w?.['object']!=null&&typeof w['object']==='object',F=w?.['compensation_fund_add']!=null;E&&!F&&c['push']('Service.compensation_fund\x20balance\x20is\x200\x20—\x20no\x20refund\x20protection\x20for\x20buyers.\x20'+'If\x20buyers\x20need\x20refund\x20protection,\x20call\x20service.compensation_fund_add\x20with\x20a\x20Coin<T>\x20'+'to\x20deposit.\x20Without\x20deposit,\x20arbitration\x20rulings\x20cannot\x20withdraw\x20compensation\x20'+'from\x20this\x20Service.\x20(Note:\x20some\x20industries\x20like\x20freelance\x20do\x20not\x20require\x20this;\x20'+'the\x20evaluation\x20engine\x20will\x20check\x20industry-specific\x20requirements.)');const G=w?.['publish']===!![],H=Array['isArray'](w?.['arbitrations'])&&w['arbitrations']['length']>0x0;if(G&&!H&&F)throw new Error('HARD\x20PRE-CHECK\x20FAILED:\x20Cannot\x20publish\x20Service\x20with\x20compensation_fund\x20>\x200\x20but\x20no\x20Arbitration\x20bound.\x0a'+'Contract\x20(service.move:494):\x20assert!(arbitration_count\x20>\x200,\x20E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND).\x0a'+'The\x20transaction\x20WILL\x20ABORT\x20on-chain\x20if\x20you\x20proceed.\x0a'+'Fix:\x20(1)\x20Create\x20an\x20Arbitration\x20object\x20first\x20(onchain_operations\x20with\x20operation_type=\x27arbitration\x27).\x0a'+'\x20\x20\x20\x20\x20(2)\x20Set\x20data.arbitrations=[<arbitration_name_or_id>]\x20in\x20this\x20same\x20call.\x0a'+'\x20\x20\x20\x20\x20(3)\x20Then\x20call\x20publish=true.\x0a'+'Note:\x20After\x20publish,\x20arbitrations\x20can\x20still\x20be\x20ADDED\x20(but\x20not\x20removed\x20without\x20pause+lock).');G&&!H&&!F&&c['push']('WARNING:\x20Publishing\x20Service\x20without\x20arbitrations.\x20If\x20compensation_fund\x20was\x20'+'deposited\x20in\x20a\x20prior\x20call,\x20the\x20contract\x20(service.move:494)\x20WILL\x20ABORT\x20with\x20'+'E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND.\x20If\x20compensation_fund\x20is\x200,\x20'+'publish\x20will\x20succeed\x20but\x20buyers\x20have\x20no\x20dispute\x20resolution\x20path.\x20'+'Recommended:\x20bind\x20arbitrations\x20before\x20publish.');!G&&F&&!H&&c['push']('WARNING:\x20Depositing\x20compensation_fund\x20on\x20a\x20Service\x20without\x20arbitrations\x20bound.\x20'+'If\x20this\x20Service\x20is\x20already\x20published,\x20arbitration\x20rulings\x20will\x20not\x20be\x20able\x20to\x20'+'withdraw\x20compensation\x20from\x20this\x20Service.\x20Recommended:\x20bind\x20arbitrations\x20first,\x20'+'then\x20deposit\x20compensation_fund.');const I=handleCallResult(C,withHarness(m(w),'service',D));return f(n,b['operation_type'],C)['catch'](()=>{}),I;}case'machine':{if(b['data']['node']&&typeof b['data']['node']==='object'&&'json_or_markdown_file'in b['data']['node']){const a4=b['data']['node']['json_or_markdown_file'];let a5;try{const a7=resolve(a4);a5=readFileSync(a7,'utf-8');}catch(a8){throw new Error('Failed\x20to\x20read\x20file\x20\x27'+a4+'\x27:\x20'+a8['message']);}const a6=parseMachineNodesFromText(a5);if(!a6['success']){const a9=a360a(a6['errors']);throw new Error('Machine\x20node\x20validation\x20failed\x20for\x20file\x20\x27'+a4+'\x27:\x0a\x0a'+a9);}if(!a6['data'])throw new Error('No\x20nodes\x20found\x20in\x20file\x20\x27'+a4+'\x27');b['data']['node']={'op':'set','nodes':a6['data'],'bReplace':!![]};}const Y=b['data'],Z=await checkMachinePermissionBeforePublish(Y,g);Z&&c['push'](Z);const a0=Y?.['node']?.['nodes']??Y?.['node'];if(Array['isArray'](a0)){const aa=/^(dispute|disputed|arbitration|arb_|arb\.|resolve_dispute|start_arbitration|open_dispute)/i;for(const ab of a0){const ac=typeof ab==='object'?ab?.['name']:'';typeof ac==='string'&&aa['test'](ac)&&c['push']('ARBITRATION\x20SEPARATION\x20WARNING:\x20Machine\x20node\x20\x22'+ac+'\x22\x20appears\x20to\x20be\x20an\x20arbitration-related\x20node.\x0a'+'CORE\x20PRINCIPLE:\x20A\x20merchant\x20cannot\x20handle\x20disputes\x20fairly\x20—\x20they\x20would\x20be\x20\x27both\x20player\x20and\x20referee\x27.\x0a'+'The\x20WoWok\x20smart\x20contract\x20design\x20makes\x20Arbitration\x20a\x20completely\x20separate\x20object:\x0a'+'\x20\x20-\x20Arbitration\x20has\x20its\x20own\x20Permission,\x20voting_guard,\x20usage_guard,\x20and\x20balance\x0a'+'\x20\x20-\x20Arb\x20instances\x20have\x20a\x207-state\x20lifecycle\x20managed\x20by\x20Arbitration,\x20not\x20by\x20Machine\x0a'+'\x20\x20-\x20The\x20Order\x20object\x20is\x20the\x20bridge:\x20it\x20has\x20\x27progress\x27\x20(Machine)\x20and\x20\x27dispute\x27\x20(Arb\x20list)\x20fields\x0a'+'\x20\x20-\x20When\x20Arb\x20rules,\x20it\x20calls\x20order::compensate()\x20—\x20the\x20ONLY\x20connection\x20to\x20the\x20business\x20flow\x0a\x0a'+'CORRECT\x20PATTERN:\x0a'+'\x20\x20-\x20Machine:\x20business\x20states\x20only\x20(ordered\x20->\x20shipped\x20->\x20delivered\x20->\x20completed)\x0a'+'\x20\x20-\x20Arbitration:\x20separate\x20object\x20with\x20its\x20own\x20Permission\x20(NOT\x20shared\x20with\x20Service)\x0a'+'\x20\x20-\x20Arb:\x207-state\x20lifecycle\x20(Principal_confirming\x20->\x20Arbitrator_confirming\x20->\x20Voting\x20->\x20Arbitrated\x20->\x20Objectionable\x20->\x20Finished\x20->\x20Withdrawn)\x0a'+'\x20\x20-\x20R-M1-11:\x20NEVER\x20name\x20nodes\x20\x27refunded\x27/\x27disputed\x27/\x27arb\x27/\x27refund\x27\x20—\x20use\x20business\x20states\x20(\x27cancelled\x27/\x27returned\x27)\x20for\x20dispute\x20OUTCOMES;\x20refunds\x20route\x20via\x20Allocator\x20triggered\x20by\x20those\x20states,\x20disputes\x20via\x20the\x20separate\x20Arbitration\x20object\x0a\x0a'+'If\x20this\x20node\x20name\x20is\x20a\x20legitimate\x20business\x20state\x20(not\x20arbitration),\x20ignore\x20this\x20warning.');}}const a1=new CallMachine(b['data']),a2=b['submission']?await a1['call_with_submission'](g,await transformSubmission(b['submission'])):await a1['call'](g),a3=handleCallResult(a2,m(b['data']));return f(n,b['operation_type'],a2)['catch'](()=>{}),a3;}case'progress':{b['data']?.['operate']&&c['push']('Progress\x20routing\x20hint:\x20if\x20this\x20Progress\x20is\x20bound\x20to\x20an\x20Order\x20and\x20the\x20target\x20'+'Forward\x20uses\x20namedOperator=\x22\x22\x20(empty\x20string\x20=\x20OrderHolder),\x20use\x20'+'order.progress\x20(NOT\x20progress.operate).\x20Direct\x20progress::next\x20fails\x20with\x20'+'Permission\x20denied\x20for\x20OrderHolder\x20forwards.\x20Use\x20progress.operate\x20only\x20for\x20'+'non-empty\x20namedOperator\x20or\x20permissionIndex-only\x20forwards.');const ad=new CallProgress(b['data']),ae=b['submission']?await ad['call_with_submission'](g,await transformSubmission(b['submission'])):await ad['call'](g);if(!b['submission']&&ae&&typeof ae==='object'&&'submission'in ae){const ag=ae['submission'];if(Array['isArray'](ag)&&ag['length']>0x0){const ah=ag[0x0]?.['guard'];if(ah){const ai={'operation':'progress_next','network':g?.['network'],'signer':g?.['account'],'progress_address':b['data']?.['object'],'order_address':b['data']?.['task']},aj=await generateGuardSubmissionPrompt(ah,ai);aj&&c['push'](formatSubmissionPrompt(aj));}}}const af=handleCallResult(ae,m(b['data']));if(ae&&typeof ae==='object'&&'digest'in ae&&ae?.['effects']?.['status']?.['status']==='success'&&typeof b['data']?.['object']==='string'){const ak=b['data']?.['operate'],al=ak?.['operation'],am=await enrichWorkflowGuidance({'progressRef':b['data']['object'],'network':g?.['network'],'accountName':g?.['account'],'noCache':!![],'operate':al?.['forward']&&al?.['next_node_name']?{'forward':al['forward'],'next_node_name':al['next_node_name'],'op':ak?.['op']}:undefined});mergeGuidanceIntoOutput(af,am);}return f(n,b['operation_type'],ae)['catch'](()=>{}),af;}case'repository':{const an=new CallRepository(b['data']),ao=b['submission']?await an['call_with_submission'](g,await transformSubmission(b['submission'])):await an['call'](g),ap=handleCallResult(ao,m(b['data']));return f(n,b['operation_type'],ao)['catch'](()=>{}),ap;}case'arbitration':{const aq=await prepareFundOperation(b['data'],'arbitration',g?.['network']);if(aq['blockingErrors']['length']>0x0)return buildFundBlockResult(aq,'arbitration');c['push'](...aq['warnings']);if(aq['confirmation']){c['push'](aq['confirmation']['message']);const au=a360c(aq['confirmation']);if(au)c['push'](au);}const ar=new CallArbitration(b['data']),as=b['submission']?await ar['call_with_submission'](g,await transformSubmission(b['submission'])):await ar['call'](g),at=handleCallResult(as,m(b['data']));return f(n,b['operation_type'],as)['catch'](()=>{}),at;}case'contact':{const av=new CallContact(b['data']),aw=b['submission']?await av['call_with_submission'](g,await transformSubmission(b['submission'])):await av['call'](g),ax=handleCallResult(aw,m(b['data']));return f(n,b['operation_type'],aw)['catch'](()=>{}),ax;}case'treasury':{const ay=await prepareFundOperation(b['data'],'treasury',g?.['network']);if(ay['blockingErrors']['length']>0x0)return buildFundBlockResult(ay,'treasury');c['push'](...ay['warnings']);if(ay['confirmation']){c['push'](ay['confirmation']['message']);const aC=a360c(ay['confirmation']);if(aC)c['push'](aC);}const az=new CallTreasury(b['data']),aA=b['submission']?await az['call_with_submission'](g,await transformSubmission(b['submission'])):await az['call'](g),aB=handleCallResult(aA,m(b['data']));return f(n,b['operation_type'],aA)['catch'](()=>{}),aB;}case'reward':{const aD=await prepareFundOperation(b['data'],'reward',g?.['network']);if(aD['blockingErrors']['length']>0x0)return buildFundBlockResult(aD,'reward');c['push'](...aD['warnings']);if(aD['confirmation']){c['push'](aD['confirmation']['message']);const aI=a360c(aD['confirmation']);if(aI)c['push'](aI);}const aE=transformRewardInput(b['data']),aF=new CallReward(aE),aG=b['submission']?await aF['call_with_submission'](g,await transformSubmission(b['submission'])):await aF['call'](g),aH=handleCallResult(aG,m(b['data']));return f(n,b['operation_type'],aG)['catch'](()=>{}),aH;}case'allocation':{const aJ=await prepareFundOperation(b['data'],'allocation',g?.['network']);if(aJ['blockingErrors']['length']>0x0)return buildFundBlockResult(aJ,'allocation');c['push'](...aJ['warnings']);if(aJ['confirmation']){c['push'](aJ['confirmation']['message']);const aO=a360c(aJ['confirmation']);if(aO)c['push'](aO);}const aK=new CallAllocation(b['data']),aL=b['submission']?await aK['call_with_submission'](g,await transformSubmission(b['submission'])):await aK['call'](g),aM=b['data'];if(aM?.['alloc_by_guard']){const aP=ResponseData(aL)['filter'](aQ=>aQ?.['type']==='Payment'&&aQ?.['change']==='created');if(aP['length']>0x0){const aQ=aP['map'](aR=>aR['object'])['join'](',\x20');try{const aR=await query_objects({'objects':aP['map'](aU=>aU['object']),'no_cache':!![],'network':g?.['network']}),aS=[];let aT=BigInt(0x0);for(const aU of aR?.['objects']||[]){if(aU?.['type']==='Payment'&&aU?.['record']){for(const aV of aU['record']){const aW=formatRecipientLabel(aV['recipient']),aX=typeof aV['amount']==='string'?aV['amount']:String(aV['amount']),aY=BigInt(aX);aT+=aY,aS['push']('\x20\x20•\x20'+aW+':\x20'+formatMistAmount(aY));}aU['object']&&aS['push']('\x20\x20•\x20Payment\x20object:\x20'+aU['object']);}}if(aS['length']>0x0){aS['unshift']('DISTRIBUTION\x20DETAILS\x20(alloc_by_guard):'),aS['push']('\x20\x20─────────────────','\x20\x20•\x20Total\x20distributed:\x20'+formatMistAmount(aT));const aZ=aR?.['objects']?.['some'](b0=>b0?.['type']==='Payment'&&b0?.['info']?.['for_object']);aZ&&aS['push']('','ESCROW\x20MODE:\x20Funds\x20are\x20held\x20in\x20escrow\x20(Payment.for_object\x20points\x20to\x20an\x20Order).\x20'+'The\x20Order\x20owner\x20must\x20call\x20order_claim\x20(or\x20service_order_claim)\x20to\x20actually\x20receive\x20the\x20funds.\x20'+'This\x20happens\x20when\x20the\x20Guard\x27s\x20sharing\x20config\x20uses\x20{\x20GuardIdentifier:\x200\x20}.'),c['push'](aS['join']('\x0a'));}}catch{c['push']('alloc_by_guard\x20created\x20Payment\x20object(s)\x20['+aQ+'].\x20'+'Query\x20these\x20Payment\x20objects\x20to\x20see\x20the\x20distribution\x20details\x20and\x20check\x20for_object\x20for\x20escrow\x20mode.');}}}const aN=handleCallResult(aL,m(b['data']));return f(n,b['operation_type'],aL)['catch'](()=>{}),aN;}case'permission':{const b0=b['operation_type'],b1=handlePermissionOperations(b['data'],g,m);return b1&&typeof b1==='object'&&'then'in b1&&b1['then'](b2=>{b2?.['structuredContent']?.['result']&&f(n,b0,b2['structuredContent']['result'])['catch'](()=>{});})['catch'](()=>{}),b1;}case'guard':{const b2=b['data'],b3=b2['root'];if(b3?.['type']==='file'){const b7=b3,b8=resolve(b7['file_path']);let b9;try{b9=readFileSync(b8,'utf-8');}catch(bc){throw new Error('Failed\x20to\x20read\x20Guard\x20definition\x20file\x20\x27'+b7['file_path']+'\x27:\x20'+bc['message']);}const ba=parseGuardFile(b9,b7['format']);if(!ba['success']){const bd=formatGuardParseErrors(ba['errors']);throw new Error('Guard\x20validation\x20failed\x20for\x20file\x20\x27'+b7['file_path']+'\x27:\x0a\x0a'+bd);}const bb=ba['data'];b2['root']={'type':'node','node':bb['root']},bb['table']!==undefined&&b2['table']===undefined&&(b2['table']=bb['table']),bb['description']!==undefined&&b2['description']===undefined&&(b2['description']=bb['description']),bb['rely']!==undefined&&b2['rely']===undefined&&(b2['rely']=bb['rely']),bb['namedNew']!==undefined&&b2['namedNew']===undefined&&(b2['namedNew']=bb['namedNew']);}if(b2['root']&&typeof b2['root']==='object'){const be=b2['root'];be['type']==='node'&&be['node']&&(b2['root']=be['node']);}if(!b2['table']||b2['table']['length']===0x0)throw new Error('Guard\x20\x27table\x27\x20field\x20is\x20required\x20and\x20cannot\x20be\x20empty');if(!b2['root'])throw new Error('Guard\x20\x27root\x27\x20field\x20is\x20required');const b4=new CallGuard(b2),b5=await b4['call'](g);if(b5&&typeof b5==='object'&&'digest'in b5&&b5?.['effects']?.['status']?.['status']==='success')try{const bf=b2['root']?.['type']??'<unknown>',bg=Array['isArray'](b2['table'])?b2['table']:[],bh=bg['length'],bi=bg['filter'](bn=>bn?.['b_submission']===!![])['length'],bj=b2['rely']?.['guards'],bk=Array['isArray'](bj)?bj['length']:0x0,bl=b2['rely']?.['logic_or']===!![]?'OR':b2['rely']?.['logic_or']===![]?'AND':'none',bm=['GUARD\x20LOGIC\x20SUMMARY:','\x20\x20•\x20root\x20type:\x20'+bf,'\x20\x20•\x20table\x20entries:\x20'+bh+'\x20('+bi+'\x20require\x20runtime\x20submission)'];bk>0x0&&bm['push']('\x20\x20•\x20relies\x20on:\x20'+bk+'\x20guard(s)\x20(mode:\x20'+bl+')');if(b2['description']){const bn=String(b2['description'])['slice'](0x0,0x50);bm['push']('\x20\x20•\x20description:\x20\x22'+bn+'\x22');}c['push'](bm['join']('\x0a'));}catch{}const b6=handleCallResult(b5,m(b['data']));return f(n,b['operation_type'],b5)['catch'](()=>{}),b6;}case'personal':{const bo=transformPersonalInput(b['data']),bp=new CallPersonal(bo),bq=await bp['call'](g),br=handleCallResult(bq,m(b['data']));return f(n,b['operation_type'],bq)['catch'](()=>{}),br;}case'payment':{const bs=await prepareFundOperation(b['data'],'payment',g?.['network']);if(bs['blockingErrors']['length']>0x0)return buildFundBlockResult(bs,'payment');c['push'](...bs['warnings']);if(bs['confirmation']){c['push'](bs['confirmation']['message']);const bx=a360c(bs['confirmation']);if(bx)c['push'](bx);}const bt=b['data'];if(bt?.['receive']===!![])c['push']('RECEIVE\x20MODE\x20(order_claim):\x20You\x20are\x20unwrapping\x20a\x20CoinWrapper\x20to\x20your\x20wallet.\x20'+'This\x20is\x20the\x20final\x20step\x20of\x20the\x20escrow\x20flow:\x0a'+'\x20\x201.\x20Allocation\x27s\x20alloc_by_guard\x20created\x20a\x20Payment\x20object\x20with\x20your\x20address\x20as\x20a\x20recipient\x0a'+'\x20\x202.\x20The\x20Payment\x27s\x20revenue\x20split\x20transferred\x20a\x20CoinWrapper\x20to\x20your\x20wallet\x20(owned\x20but\x20not\x20spendable)\x0a'+'\x20\x203.\x20THIS\x20operation\x20unwraps\x20the\x20CoinWrapper\x20via\x20payment::unwrap_to_myself,\x20deleting\x20the\x20'+'CoinWrapper\x20and\x20transferring\x20the\x20underlying\x20coin\x20to\x20tx_context::sender\x0a'+'Requirements:\x0a'+'\x20\x20-\x20You\x20MUST\x20be\x20the\x20CoinWrapper\x27s\x20owner\x20(the\x20recipient\x20specified\x20in\x20the\x20Allocation)\x0a'+'\x20\x20-\x20type_parameter\x20is\x20OPTIONAL:\x20when\x20omitted\x20it\x20is\x20auto-derived\x20from\x20the\x20CoinWrapper\x27s\x20'+'own\x20on-chain\x20type\x20(the\x20inner\x20T\x20of\x20CoinWrapper<T>)\x0a'+'\x20\x20-\x20object\x20can\x20be\x20a\x20CoinWrapper\x20ID\x20(0x...)\x20or\x20a\x20local\x20mark\x20name\x0a'+'To\x20find\x20received\x20CoinWrappers:\x20call\x20query_toolkit\x20with\x20query_type=\x27onchain_received\x27\x20'+'and\x20type=\x27CoinWrapper\x27\x20for\x20your\x20account.\x0a'+'After\x20success:\x20verify\x20your\x20balance\x20increased\x20via\x20account_balance\x20query.');else bt?.['revenue']&&c['push']('CREATE\x20MODE:\x20Creating\x20a\x20new\x20Payment\x20object.\x20Payments\x20are\x20IMMUTABLE\x20after\x20creation\x20—\x20'+'they\x20cannot\x20be\x20modified.\x20The\x20\x27revenue\x27\x20array\x20defines\x20the\x20recipients\x20and\x20amounts;\x20'+'ensure\x20correctness\x20before\x20submitting.\x20The\x20\x27info.for_guard\x27\x20field\x20(if\x20set)\x20binds\x20this\x20'+'Payment\x20to\x20a\x20Guard\x20for\x20conditional\x20release\x20(common\x20in\x20escrow\x20workflows).');const bu=new CallPayment(b['data']),bv=await bu['call'](g),bw=handleCallResult(bv,m(b['data']));return f(n,b['operation_type'],bv)['catch'](()=>{}),bw;}case'demand':{const by=new CallDemand(b['data']),bz=b['submission']?await by['call_with_submission'](g,await transformSubmission(b['submission'])):await by['call'](g),bA=handleCallResult(bz,m(b['data']));return f(n,b['operation_type'],bz)['catch'](()=>{}),bA;}case'order':{b['data']?.['progress']&&(c['push']('Order\x20routing\x20hint:\x20order.progress\x20works\x20only\x20for\x20Forwards\x20with\x20'+'namedOperator=\x22\x22\x20(OrderHolder).\x20If\x20the\x20target\x20Forward\x20uses\x20a\x20'+'non-empty\x20namedOperator\x20or\x20permissionIndex-only,\x20use\x20progress.operate\x20'+'on\x20the\x20Progress\x20object\x20directly\x20instead.'),c['push']('Allocation\x20hint:\x20if\x20this\x20operation\x20advances\x20the\x20order\x20to\x20a\x20terminal\x20'+'state\x20(e.g.\x20Completed/Cancelled/Refunded),\x20funds\x20remain\x20in\x20the\x20'+'Allocation\x20object\x20and\x20are\x20NOT\x20auto-distributed.\x20To\x20release\x20funds,\x20'+'trigger\x20the\x20corresponding\x20Guard\x20verification\x20via\x20allocation\x20operation\x20'+'(the\x20Guard\x20bound\x20to\x20the\x20matching\x20Allocator\x20will\x20verify\x20and\x20distribute).'));const bB=new CallOrder(b['data']),bC=b['submission']?await bB['call_with_submission'](g,await transformSubmission(b['submission'])):await bB['call'](g),bD=handleCallResult(bC,m(b['data']));if(bC&&typeof bC==='object'&&'digest'in bC&&bC?.['effects']?.['status']?.['status']==='success'&&b['data']?.['progress']&&typeof b['data']?.['object']==='string')try{const bE=b['data']['object'],bF=bE['startsWith']('0x')?bE:await LocalMark['Instance']()['get_address'](bE)??undefined;let bG;if(bF){const bH=await query_objects({'objects':[bF],'no_cache':!![],'network':g?.['network']}),bI=bH?.['objects']?.[0x0];bG=(bI?.['data']??bI)?.['progress'];}if(bG){const bJ=b['data']['progress']?.['operation'],bK=await enrichWorkflowGuidance({'progressRef':bG,'network':g?.['network'],'accountName':g?.['account'],'noCache':!![],'operate':bJ?.['forward']&&bJ?.['next_node_name']?{'forward':bJ['forward'],'next_node_name':bJ['next_node_name'],'op':b['data']['progress']?.['op']}:undefined});mergeGuidanceIntoOutput(bD,bK);}}catch{}return f(n,b['operation_type'],bC)['catch'](()=>{}),bD;}case'gen_passport':{const bL=await gen_passport(g,b['guard'],b['info']),bM=handleCallResult(bL,m(b['data']));return f(n,b['operation_type'],bL)['catch'](()=>{}),bM;}case'proof':{const bN=new CallProof(b['data']),bO=b['submission']?await bN['call_with_submission'](g,await transformSubmission(b['submission'])):await bN['call'](g),bP=handleCallResult(bO,m(b['data']));return f(n,b['operation_type'],bO)['catch'](()=>{}),bP;}case'gen_proof':{const bQ=await gen_proof(g,b['proof'],b['server_pubkey'],b['server_signature'],b['proof_type'],b['description'],b['item_count'],b['about_address']),bR=handleCallResult(bQ,m(b['data']));return f(n,b['operation_type'],bQ)['catch'](()=>{}),bR;}}const q=b;throw new Error('Unknown\x20on-chain\x20operation\x20type:\x20'+String(q['operation_type']));}catch(bS){const bT=bS instanceof Error?bS['message']:String(bS),bU=b?.['operation_type'],bV=b&&'data'in b?b['data']:undefined;return handleCallResult({'error':bT},bU?{'operation_type':bU,'data':bV}:undefined);}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{query_objects,query_transaction,objectTypeFromAddress}from'@wowok/wowok';import{strictParse,PermissionOperationInputSchema}from'../../schema/index.js';import{fetchEntityPermission,fetchObjectLinkerCore,fetchObjectLinkerTx,listLocalAccounts}from'../../knowledge/index.js';async function handleList(a){const b=a['network'],c=a['no_cache'],e=a['limit']??0x64,f=await listLocalAccounts();if(f['length']===0x0){const s={'action':'list','permissions':[],'note':'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':s})}],'structuredContent':{'result':s}};}const g=new Map(),h=await Promise['all'](f['map'](u=>fetchEntityPermission(u['address'],b,c)));f['forEach']((u,v)=>{const w=h[v];if(!w)return;for(const x of w['items']){const y=x['permission'];let z=g['get'](y);!z&&(z=[],g['set'](y,z)),z['push']({'account':u['address'],'name':u['name'],'role':x['role'],'time':x['time']});}});const i=[...g['keys']()];if(i['length']===0x0){const u={'action':'list','permissions':[],'note':'No\x20permissions\x20related\x20to\x20local\x20accounts.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':u})}],'structuredContent':{'result':u}};}const j=await query_objects({'objects':i,'no_cache':c,'network':b}),k=new Map();for(const v of j?.['objects']??[]){const w=v?.['data']??v,x=String(v?.['object']??w?.['object']??w?.['id']??'')['toLowerCase']();k['set'](x,w);}const [l,m]=await Promise['all']([Promise['all'](i['map'](async y=>{const z=k['get'](y['toLowerCase']()),A=z?.['previousTransaction'];if(!A)return[y['toLowerCase'](),undefined];try{const B=await query_transaction({'digest':A,'network':b,'no_cache':c});return[y['toLowerCase'](),B?.['timestamp_ms']];}catch{return[y['toLowerCase'](),undefined];}})),Promise['all'](i['map'](async y=>{try{const [z,A]=await Promise['all']([fetchObjectLinkerCore(y,b,c),fetchObjectLinkerTx(y,b,c)]);return[y['toLowerCase'](),{'core':z,'tx':A}];}catch{return[y['toLowerCase'](),undefined];}}))]),n=new Map(l),p=new Map(m),q=[];for(const y of i){const z=y['toLowerCase'](),A=k['get'](z),B=g['get'](y)??[],C=String(A?.['builder']??'')['toLowerCase'](),D=Array['isArray'](A?.['admin'])?A['admin']:[],E=Number(A?.['entity_count']??0x0),F=p['get'](z),G=(F?.['core']?.['items']??[])['map'](M=>String(M?.['who'])),H=(F?.['tx']?.['items']??[])['map'](M=>String(M?.['who'])),I=[...G,...H],J=new Map();for(const M of I){const N=objectTypeFromAddress(M)??'object';let O=J['get'](N);!O&&(O=[],J['set'](N,O)),O['push'](M);}const K=[...J['entries']()]['map'](([P,Q])=>({'type':P,'count':Q['length'],'objects':Q})),L=B['map'](P=>({'account':P['account'],'name':P['name'],'role':P['role'],'time':P['time'],'is_owner':(P['role']&0x1)!==0x0,'is_admin':(P['role']&0x2)!==0x0,'is_entity':(P['role']&0x4)!==0x0}));q['push']({'permission':y,'description':String(A?.['description']??''),'owner':C,'updated_timestamp_ms':n['get'](z),'accounts':L,'related_accounts':{'owner':C?0x1:0x0,'admin':D['length'],'entity':E},'related_objects':K,'related_object_count':I['length']});if(q['length']>=e)break;}const r={'action':'list','permissions':q};return{'content':[{'type':'text','text':JSON['stringify']({'result':r})}],'structuredContent':{'result':r}};}export async function handlePermissionOperation(a){const b=strictParse(PermissionOperationInputSchema,a,'permission_operation\x20input');return await handleList(b);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{strictParse}from'../../schema/index.js';import{PersonaOperationInputSchema}from'../../schema/persona/index.js';import{GENERIC_PERSONA,analyzePersonaContext,applyAnalysisToCurrent,countPersonaLines,getEffectivePersona,getPersonaStore,listIndustryDefaults,personaToContextText,personaToInjection,syncExperienceToCurrent,validatePersona}from'../../persona/index.js';export async function handlePersonaOperation(a){const b=strictParse(PersonaOperationInputSchema,a,'persona_operation\x20input'),c=getPersonaStore();let d;switch(b['action']){case'get':{const e=await getEffectivePersona(b['account'],b['industry'],b['role']);d={'action':'get','effective':e,'context_text':personaToContextText(e),'injection':personaToInjection(e)};break;}case'list':{d={'action':'list','personas':await c['list'](),'defaults':listIndustryDefaults()};break;}case'set':{const f=b['scope']==='account'&&b['account']?await c['get']('account',b['account']):await c['get']('system'),g={'version':0x1,'scope':b['scope'],'account':b['scope']==='account'?b['account']:undefined,'role':b['role'],'industries':b['industries'],'long_term':b['long_term']??f?.['long_term']??{},'current':b['current']??f?.['current']??{},'updated_at':Date['now']()},h=validatePersona(g);if(h['length']>0x0)throw new Error('persona\x20invalid:\x20'+h['join'](';\x20'));await c['put'](g),d={'action':'set','persona':g,'line_count':countPersonaLines(g)};break;}case'analyze':{d={'action':'analyze','analysis':analyzePersonaContext(b['context'])};break;}case'apply':{const i=analyzePersonaContext(b['context']),j=await applyAnalysisToCurrent(b['scope'],b['account'],i,b['mode']??'merge',b['role'],b['industries']);d={'action':'apply','persona':j,'effective':await getEffectivePersona(b['account'],undefined,j['role']),'applied':i['suggestions']};break;}case'sync':{const k=await syncExperienceToCurrent(b['account']);d={'action':'sync','persona':k['persona'],'applied':k['applied'],'effective':k['effective']};break;}case'remove':{const l=b['scope']==='account'&&b['account']?await c['delete']('account',b['account']):await c['delete']('system');d={'action':'remove','removed':l};break;}default:throw new Error('Unknown\x20persona_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}export{GENERIC_PERSONA};
|
|
1
|
+
import{strictParse}from'../../schema/index.js';import{PersonaOperationInputSchema}from'../../schema/persona/index.js';import{GENERIC_PERSONA,analyzePersonaContext,applyAnalysisToCurrent,countPersonaLines,getEffectivePersona,getPersonaStore,listIndustryDefaults,personaToContextText,personaToInjection,syncExperienceToCurrent,validatePersona,resolveStrategyIntents,suggestLevers,resolveLocalRegion,proposeLocalRegionSave}from'../../persona/index.js';export async function handlePersonaOperation(a){const b=strictParse(PersonaOperationInputSchema,a,'persona_operation\x20input'),c=getPersonaStore();let d;switch(b['action']){case'get':{const e=await getEffectivePersona(b['account'],b['industry'],b['role']);d={'action':'get','effective':e,'context_text':personaToContextText(e),'injection':personaToInjection(e)};break;}case'list':{d={'action':'list','personas':await c['list'](),'defaults':listIndustryDefaults()};break;}case'set':{const f=b['scope']==='account'&&b['account']?await c['get']('account',b['account']):await c['get']('system'),g={'version':0x1,'scope':b['scope'],'account':b['scope']==='account'?b['account']:undefined,'role':b['role'],'industries':b['industries'],'long_term':b['long_term']??f?.['long_term']??{},'current':b['current']??f?.['current']??{},'updated_at':Date['now']()},h=validatePersona(g);if(h['length']>0x0)throw new Error('persona\x20invalid:\x20'+h['join'](';\x20'));await c['put'](g),d={'action':'set','persona':g,'line_count':countPersonaLines(g)};break;}case'analyze':{d={'action':'analyze','analysis':analyzePersonaContext(b['context'])};break;}case'apply':{const i=analyzePersonaContext(b['context']),j=await applyAnalysisToCurrent(b['scope'],b['account'],i,b['mode']??'merge',b['role'],b['industries']);d={'action':'apply','persona':j,'effective':await getEffectivePersona(b['account'],undefined,j['role']),'applied':i['suggestions']};break;}case'sync':{const k=await syncExperienceToCurrent(b['account']);d={'action':'sync','persona':k['persona'],'applied':k['applied'],'effective':k['effective']};break;}case'remove':{const l=b['scope']==='account'&&b['account']?await c['delete']('account',b['account']):await c['delete']('system');d={'action':'remove','removed':l};break;}case'strategy':{const m=await getEffectivePersona(b['account'],undefined,b['role']),n=b['role']??m['role'],o=b['strategy']??m['layer']['strategy']??[],p=resolveStrategyIntents(n,o),q=p['flatMap'](suggestLevers);d={'action':'strategy','role':n,'intents':p,'suggestions':q,'note':n==='merchant'?'':'strategy→lever\x20mapping\x20is\x20a\x20producer-side\x20concept;\x20only\x20merchant\x20personas\x20map\x20to\x20infrastructure\x20levers.'};break;}case'region_hint':{let r;try{r=await resolveLocalRegion();}catch{r=undefined;}const s=b['propose']!==undefined?proposeLocalRegionSave(b['propose']):undefined;d={'action':'region_hint','hint':r,'proposal':s,'note':r===undefined&&s===undefined?'No\x20locally-stored\x20delivery\x20address;\x20pass\x20`propose`\x20to\x20create\x20a\x20consent-gated\x20save\x20proposal.':undefined};break;}default:throw new Error('Unknown\x20persona_operation\x20action');}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}export{GENERIC_PERSONA};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{assembleContext}from'../../project/context-assembly.js';import{generateDeploymentDocFromProject}from'../../project/deployment-bridge.js';import{LocalProject}from'@wowok/wowok';import{validateStageGate}from'../../project/stage-gate.js';import{scanDeployment}from'../../knowledge/deployment-scanner.js';import{handleListProjects,handleCreateProject,handleCreateProjectFromOnchain,handleUpdateProject,handleGetProjectDetail,handleAddObject,handleRemoveObject,handleUpdateObject,handleCreateVersion,handleBuildGraph,handleGetGraph,handleEvaluateProject,handleSaveEvaluation,handleCompareProjects,handleRefreshObjects,handleGetObjectDiff,handleDeleteProject,handleGetMachineGraph,handleGetGuardGraph,handlePreEvaluateCheck,handleVerifyDeployment,handleCloneProjectToNetwork,handleMigrateToMainnet}from'../../project/handlers.js';import{handlePlanObjectEdit,handleApplyObjectEdit,handlePatchMachineNodes,handlePatchGuardTree}from'../../project/edit-planner.js';import{handleRecommendIndustry,handleListModes,handleDeriveUserMode,handleEvolveUserMode,handleRegisterUserMode,handleUnregisterUserMode,handleRegisterCustomMetric,handleRegisterCustomConstraint,handleListMetricsConstraints}from'../../project/mode-actions.js';import{handleAnalyzeIntent,handleAggregateRisks,handleTraceSubsteps}from'../../project/pipeline-actions.js';import{handleMerchantGuide}from'../../project/merchant-guide.js';import{handleParticipationRadar}from'../../project/participation-radar.js';import{strictParse}from'../../schema/index.js';import{ProjectOperationInputSchema}from'../../schema/project/index.js';import{getStageCache}from'../../project/index.js';import{getSkillsHintForProject}from'../../schema/utils/skills-recommendation.js';export async function handleProjectOperation(a){const b=strictParse(ProjectOperationInputSchema,a,'project_operation\x20input'),{action:c}=b;let d;switch(c){case'list_projects':d=await handleListProjects(b);break;case'create_project':d=await handleCreateProject(b);break;case'create_project_from_onchain':d=await handleCreateProjectFromOnchain(b);break;case'update_project':d=await handleUpdateProject(b);break;case'get_project_detail':d=await handleGetProjectDetail(b);break;case'add_object':d=await handleAddObject(b);break;case'remove_object':d=await handleRemoveObject(b);break;case'update_object':d=await handleUpdateObject(b);break;case'create_version':d=await handleCreateVersion(b);break;case'build_graph':d=await handleBuildGraph(b);break;case'get_graph':d=await handleGetGraph(b);break;case'evaluate_project':d=await handleEvaluateProject(b);break;case'save_evaluation':d=await handleSaveEvaluation(b);break;case'compare_projects':d=await handleCompareProjects(b);break;case'refresh_objects':d=await handleRefreshObjects(b);break;case'get_object_diff':d=await handleGetObjectDiff(b);break;case'delete_project':d=await handleDeleteProject(b);break;case'get_machine_graph':d=await handleGetMachineGraph(b);break;case'get_guard_graph':d=await handleGetGuardGraph(b);break;case'assemble_context':d=await assembleContext(b);break;case'generate_deployment_doc':{const {project_id:
|
|
1
|
+
import{assembleContext}from'../../project/context-assembly.js';import{generateDeploymentDocFromProject}from'../../project/deployment-bridge.js';import{generateBusinessReport}from'../../project/reverse-mapping.js';import{LocalProject,query_objects}from'@wowok/wowok';import{validateStageGate}from'../../project/stage-gate.js';import{scanDeployment}from'../../knowledge/deployment-scanner.js';import{handleListProjects,handleCreateProject,handleCreateProjectFromOnchain,handleUpdateProject,handleGetProjectDetail,handleAddObject,handleRemoveObject,handleUpdateObject,handleCreateVersion,handleBuildGraph,handleGetGraph,handleEvaluateProject,handleSaveEvaluation,handleCompareProjects,handleRefreshObjects,handleGetObjectDiff,handleDeleteProject,handleGetMachineGraph,handleGetGuardGraph,handlePreEvaluateCheck,handleVerifyDeployment,handleCloneProjectToNetwork,handleMigrateToMainnet}from'../../project/handlers.js';import{handlePlanObjectEdit,handleApplyObjectEdit,handlePatchMachineNodes,handlePatchGuardTree}from'../../project/edit-planner.js';import{handleRecommendIndustry,handleListModes,handleDeriveUserMode,handleEvolveUserMode,handleRegisterUserMode,handleUnregisterUserMode,handleRegisterCustomMetric,handleRegisterCustomConstraint,handleListMetricsConstraints}from'../../project/mode-actions.js';import{handleAnalyzeIntent,handleAggregateRisks,handleTraceSubsteps}from'../../project/pipeline-actions.js';import{handleMerchantGuide}from'../../project/merchant-guide.js';import{handleParticipationRadar}from'../../project/participation-radar.js';import{strictParse}from'../../schema/index.js';import{ProjectOperationInputSchema}from'../../schema/project/index.js';import{getStageCache}from'../../project/index.js';import{getSkillsHintForProject}from'../../schema/utils/skills-recommendation.js';export async function handleProjectOperation(a){const b=strictParse(ProjectOperationInputSchema,a,'project_operation\x20input'),{action:c}=b;let d;switch(c){case'list_projects':d=await handleListProjects(b);break;case'create_project':d=await handleCreateProject(b);break;case'create_project_from_onchain':d=await handleCreateProjectFromOnchain(b);break;case'update_project':d=await handleUpdateProject(b);break;case'get_project_detail':d=await handleGetProjectDetail(b);break;case'add_object':d=await handleAddObject(b);break;case'remove_object':d=await handleRemoveObject(b);break;case'update_object':d=await handleUpdateObject(b);break;case'create_version':d=await handleCreateVersion(b);break;case'build_graph':d=await handleBuildGraph(b);break;case'get_graph':d=await handleGetGraph(b);break;case'evaluate_project':d=await handleEvaluateProject(b);break;case'save_evaluation':d=await handleSaveEvaluation(b);break;case'compare_projects':d=await handleCompareProjects(b);break;case'refresh_objects':d=await handleRefreshObjects(b);break;case'get_object_diff':d=await handleGetObjectDiff(b);break;case'delete_project':d=await handleDeleteProject(b);break;case'get_machine_graph':d=await handleGetMachineGraph(b);break;case'get_guard_graph':d=await handleGetGuardGraph(b);break;case'assemble_context':d=await assembleContext(b);break;case'reverse_map':{if(!b['context_objects']||b['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const f=b['context_network']??'testnet',g=await query_objects({'objects':b['context_objects'],'no_cache':![],'network':f}),h=g?.['objects']??[];d={'action':'reverse_map','objects_queried':h['length'],'report':generateBusinessReport({'objects':h,'order_amount':b['reverse_order_amount']})};break;}case'generate_deployment_doc':{const {project_id:i,network:j,save:save=!![],detail_level:k}=b;if(!i)throw new Error('\x27project_id\x27\x20is\x20required\x20for\x20generate_deployment_doc');if(!j)throw new Error('\x27network\x27\x20is\x20required\x20for\x20generate_deployment_doc');const l=await generateDeploymentDocFromProject(i,j,k);save&&await LocalProject['Instance']()['saveDocument'](i,j,l['markdown']);const m=await LocalProject['Instance']()['getProject'](i),n=getStageCache(m?.['prefix']??i,m?.['currentVersion']??'v1'),o=validateStageGate({'stage':0x4,'prefix':m?.['prefix']??i,'version':m?.['currentVersion']??'v1','objects':[],'risk_status':n?.['risk_status'],'risk_can_proceed':n?.['risk_can_proceed'],'has_published_object':![],'deployment_doc_generated':!![]}),p=scanDeployment({'project_name':m?.['prefix']??i});d={'action':'generate_deployment_doc','markdown':l['markdown'],'validation':l['validation'],'saved':save,'detail_level':k??'summary','stage_gate':{'stage':o['stage'],'passed':o['passed'],'can_proceed':o['can_proceed'],'blocking_issues':o['blocking_issues'],'warnings':o['warnings'],'checks':o['checks']},'deployment_scan':{'overall_readiness':p['overall_readiness'],'critical_count':p['findings']['filter'](q=>q['severity']==='critical')['length'],'warning_count':p['findings']['filter'](q=>q['severity']==='warning')['length'],'findings':p['findings'],'checks':p['checks']}};break;}case'pre_evaluate_check':d=await handlePreEvaluateCheck(b);break;case'verify_deployment':d=await handleVerifyDeployment(b);break;case'clone_project_to_network':d=await handleCloneProjectToNetwork(b);break;case'migrate_network':d=await handleCloneProjectToNetwork(b);break;case'migrate_to_mainnet':d=await handleMigrateToMainnet(b);break;case'plan_object_edit':d=await handlePlanObjectEdit(b);break;case'apply_object_edit':d=await handleApplyObjectEdit(b);break;case'patch_machine_nodes':d=await handlePatchMachineNodes(b);break;case'patch_guard_tree':d=await handlePatchGuardTree(b);break;case'recommend_industry':d=handleRecommendIndustry(b);break;case'list_modes':d=await handleListModes();break;case'derive_user_mode':d=await handleDeriveUserMode(b);break;case'evolve_user_mode':d=await handleEvolveUserMode(b);break;case'register_user_mode':d=await handleRegisterUserMode(b);break;case'unregister_user_mode':d=await handleUnregisterUserMode(b);break;case'register_custom_metric':d=handleRegisterCustomMetric(b);break;case'register_custom_constraint':d=handleRegisterCustomConstraint(b);break;case'list_metrics_constraints':d=handleListMetricsConstraints(b);break;case'analyze_intent':d=handleAnalyzeIntent(b);break;case'aggregate_risks':d=handleAggregateRisks(b);break;case'trace_substeps':d=handleTraceSubsteps(b);break;case'merchant_guide':d=await handleMerchantGuide(b);break;case'participation_radar':d=await handleParticipationRadar(b);break;default:throw new Error('Unknown\x20project_operation\x20action:\x20'+String(c));}const e=getSkillsHintForProject(c);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':e?{'result':d,'skills_recommended':e}:{'result':d}};}
|