@wowok/agent-mcp 2.7.8 → 2.7.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/config/runtime.d.ts +1 -1
- package/dist/config/runtime.js +1 -1
- package/dist/examples/rental-ziroom-machine-create.json +1 -2
- package/dist/examples/rental-ziroom-permission-create.json +1 -2
- package/dist/examples/rental-ziroom-service-create.json +1 -2
- package/dist/experience/experience-reuse.js +1 -1
- package/dist/experience/index.d.ts +2 -1
- package/dist/experience/index.js +1 -1
- package/dist/experience/persistence-config.d.ts +6 -0
- package/dist/experience/persistence-config.js +1 -0
- package/dist/experience/persistence.d.ts +21 -0
- package/dist/experience/persistence.js +1 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/experience/user-profile.js +1 -1
- package/dist/extensions/business-modules.d.ts +1 -1
- package/dist/extensions/capability-manifest.d.ts +1 -1
- package/dist/extensions/types.d.ts +1 -1
- package/dist/goal/GoalClassifier.d.ts +17 -0
- package/dist/goal/GoalClassifier.js +1 -0
- package/dist/goal/GoalEngine.d.ts +120 -0
- package/dist/goal/GoalEngine.js +1 -0
- package/dist/goal/GoalStore.d.ts +27 -0
- package/dist/goal/GoalStore.js +1 -0
- package/dist/goal/plan-approval.d.ts +5 -0
- package/dist/goal/plan-approval.js +1 -0
- package/dist/goal/types.d.ts +76 -0
- package/dist/goal/types.js +1 -0
- package/dist/harness/index.d.ts +2 -7
- package/dist/harness/index.js +1 -1
- package/dist/harness/plan.d.ts +1 -1
- package/dist/harness/types.d.ts +0 -35
- package/dist/index.js +1 -1
- package/dist/knowledge/account-marks.d.ts +35 -0
- package/dist/knowledge/account-marks.js +1 -0
- package/dist/knowledge/audit-rules.d.ts +3 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/examples-scanner-cli.js +1 -1
- package/dist/knowledge/examples-scanner.js +1 -1
- package/dist/knowledge/goal-completion.d.ts +19 -0
- package/dist/knowledge/goal-completion.js +1 -0
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +3 -2
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
- package/dist/knowledge/mcp-schema-audit.js +1 -1
- package/dist/knowledge/operation-dictionary.js +1 -1
- package/dist/knowledge/passport-confirm.js +1 -1
- package/dist/knowledge/passport-puzzle.js +1 -1
- package/dist/knowledge/passport-translation.js +1 -1
- package/dist/knowledge/proof-risk.js +1 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/service-translation.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +1 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/knowledge/workspace-lists.d.ts +56 -0
- package/dist/knowledge/workspace-lists.js +1 -0
- package/dist/loop-engineering/context-collect.d.ts +1 -1
- package/dist/monitor/EventRouter.d.ts +10 -0
- package/dist/monitor/EventRouter.js +1 -0
- package/dist/monitor/EventStore.d.ts +32 -12
- package/dist/monitor/EventStore.js +1 -1
- package/dist/monitor/MonitorLoop.d.ts +79 -0
- package/dist/monitor/MonitorLoop.js +1 -0
- package/dist/monitor/ProblemBridge.d.ts +32 -0
- package/dist/monitor/ProblemBridge.js +1 -0
- package/dist/monitor/ScopeResolver.d.ts +59 -0
- package/dist/monitor/ScopeResolver.js +1 -0
- package/dist/monitor/SubscriptionStore.d.ts +13 -0
- package/dist/monitor/SubscriptionStore.js +1 -0
- package/dist/monitor/normalize.d.ts +8 -0
- package/dist/monitor/normalize.js +1 -0
- package/dist/monitor/types.d.ts +89 -0
- package/dist/monitor/types.js +1 -0
- package/dist/persona/address-format.d.ts +1 -1
- package/dist/persona/address-format.js +1 -1
- package/dist/persona/distill-goal.d.ts +20 -0
- package/dist/persona/distill-goal.js +1 -0
- package/dist/persona/index.d.ts +2 -0
- package/dist/persona/index.js +1 -1
- package/dist/persona/model.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -0
- package/dist/{project → playbooks/service-build}/context-assembly.d.ts +9 -4
- package/dist/playbooks/service-build/context-assembly.js +1 -0
- package/dist/{project → playbooks/service-build}/game-theory.d.ts +1 -1
- package/dist/playbooks/service-build/index.d.ts +14 -0
- package/dist/playbooks/service-build/index.js +1 -0
- package/dist/{project → playbooks/service-build}/intent-analyzer.d.ts +1 -1
- package/dist/playbooks/service-build/intent-analyzer.js +1 -0
- package/dist/{project → playbooks/service-build}/machine-panorama.d.ts +5 -3
- package/dist/playbooks/service-build/machine-panorama.js +1 -0
- package/dist/{project → playbooks/service-build}/merchant-guide.d.ts +1 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -0
- package/dist/{project → playbooks/service-build}/mode-actions.d.ts +2 -2
- package/dist/playbooks/service-build/mode-actions.js +1 -0
- package/dist/playbooks/service-build/namespace.d.ts +2 -0
- package/dist/playbooks/service-build/namespace.js +1 -0
- package/dist/{project → playbooks/service-build}/object-panorama.d.ts +2 -3
- package/dist/playbooks/service-build/object-panorama.js +1 -0
- package/dist/{project → playbooks/service-build}/participation-radar.d.ts +4 -5
- package/dist/playbooks/service-build/participation-radar.js +1 -0
- package/dist/{project → playbooks/service-build}/pipeline-actions.d.ts +9 -9
- package/dist/playbooks/service-build/pipeline-actions.js +1 -0
- package/dist/playbooks/service-build/process.d.ts +6 -0
- package/dist/playbooks/service-build/process.js +1 -0
- package/dist/playbooks/service-build/risk-aggregator.js +1 -0
- package/dist/{project → playbooks/service-build}/semantic-graph.d.ts +2 -2
- package/dist/{project → playbooks/service-build}/service-panorama.d.ts +3 -19
- package/dist/playbooks/service-build/service-panorama.js +1 -0
- package/dist/review/arb.d.ts +6 -0
- package/dist/review/arb.js +1 -0
- package/dist/review/demand.d.ts +3 -0
- package/dist/review/demand.js +1 -0
- package/dist/review/index.d.ts +3 -0
- package/dist/review/index.js +1 -0
- package/dist/review/machine.d.ts +3 -0
- package/dist/review/machine.js +1 -0
- package/dist/review/order.d.ts +9 -0
- package/dist/review/order.js +1 -0
- package/dist/review/progress.d.ts +3 -0
- package/dist/review/progress.js +1 -0
- package/dist/review/repository.d.ts +3 -0
- package/dist/review/repository.js +1 -0
- package/dist/review/service.d.ts +5 -0
- package/dist/review/service.js +1 -0
- package/dist/review/types.d.ts +156 -0
- package/dist/review/types.js +1 -0
- package/dist/rules.d.ts +2 -2
- package/dist/rules.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/safety/index.d.ts +1 -1
- package/dist/safety/index.js +1 -1
- package/dist/safety/preview.d.ts +1 -0
- package/dist/safety/preview.js +1 -1
- package/dist/schema/call/allocation.d.ts +1 -1
- package/dist/schema/call/arbitration.d.ts +1 -1
- package/dist/schema/call/base.d.ts +1 -1
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +4 -4
- package/dist/schema/call/contact.d.ts +1 -1
- package/dist/schema/call/contact.js +1 -1
- package/dist/schema/call/demand.d.ts +1 -1
- package/dist/schema/call/demand.js +1 -1
- package/dist/schema/call/guard.d.ts +3 -3
- package/dist/schema/call/handler.d.ts +0 -3
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +2 -2
- package/dist/schema/call/order.d.ts +1 -1
- package/dist/schema/call/payment.d.ts +1 -1
- package/dist/schema/call/permission.d.ts +1 -1
- package/dist/schema/call/personal.d.ts +1 -1
- package/dist/schema/call/progress.d.ts +1 -1
- package/dist/schema/call/proof.d.ts +2 -2
- package/dist/schema/call/repository.d.ts +1 -1
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +1 -1
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +317 -0
- package/dist/schema/goal/index.js +1 -0
- package/dist/schema/goal/planning.d.ts +465 -0
- package/dist/schema/goal/planning.js +1 -0
- package/dist/schema/index.d.ts +1 -2
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +265 -1
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/industry-pack/modes.d.ts +268 -0
- package/dist/schema/industry-pack/modes.js +1 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/operations.d.ts +216 -19
- package/dist/schema/operations.js +1 -1
- package/dist/schema/permission/index.d.ts +1 -0
- package/dist/schema/permission/index.js +1 -1
- package/dist/schema/persona/index.d.ts +40 -0
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +783 -0
- package/dist/schema/query/bi.js +1 -0
- package/dist/schema/query/index.d.ts +661 -0
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/skills-recommendation.d.ts +0 -1
- package/dist/schema/utils/skills-recommendation.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +3 -3
- package/dist/schemas/account_operation.schema.json +2 -2
- package/dist/schemas/bridge_operation.output.json +2 -2
- package/dist/schemas/bridge_operation.schema.json +12 -12
- package/dist/schemas/config_operation.output.json +1 -1
- package/dist/schemas/config_operation.schema.json +1 -1
- package/dist/schemas/goal_operation.schema.json +1016 -0
- package/dist/schemas/guard2file.schema.json +3 -3
- package/dist/schemas/index.json +12 -13
- package/dist/schemas/industry_pack_operation.output.json +898 -0
- package/dist/schemas/industry_pack_operation.schema.json +217 -2
- package/dist/schemas/local_info_operation.output.json +2 -2
- package/dist/schemas/local_mark_operation.output.json +2 -2
- package/dist/schemas/machineNode2file.schema.json +3 -3
- package/dist/schemas/messenger_operation.output.json +2 -2
- package/dist/schemas/monitor_events.output.json +78 -3
- package/dist/schemas/monitor_events.schema.json +24 -1
- package/dist/schemas/monitor_subscription.output.json +1462 -0
- package/dist/schemas/monitor_subscription.schema.json +327 -0
- package/dist/schemas/onchain_events.output.json +4 -4
- package/dist/schemas/onchain_operations.output.json +2 -2
- package/dist/schemas/onchain_operations.schema.json +59 -59
- package/dist/schemas/onchain_operations_allocation.schema.json +3 -3
- package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
- package/dist/schemas/onchain_operations_contact.schema.json +4 -4
- package/dist/schemas/onchain_operations_demand.schema.json +4 -4
- package/dist/schemas/onchain_operations_gen_passport.schema.json +3 -3
- package/dist/schemas/onchain_operations_gen_proof.schema.json +3 -3
- package/dist/schemas/onchain_operations_guard.schema.json +3 -3
- package/dist/schemas/onchain_operations_machine.schema.json +3 -3
- package/dist/schemas/onchain_operations_order.schema.json +3 -3
- package/dist/schemas/onchain_operations_payment.schema.json +3 -3
- package/dist/schemas/onchain_operations_permission.schema.json +3 -3
- package/dist/schemas/onchain_operations_personal.schema.json +3 -3
- package/dist/schemas/onchain_operations_progress.schema.json +3 -3
- package/dist/schemas/onchain_operations_proof.schema.json +3 -3
- package/dist/schemas/onchain_operations_repository.schema.json +5 -5
- package/dist/schemas/onchain_operations_reward.schema.json +3 -3
- package/dist/schemas/onchain_operations_service.schema.json +4 -4
- package/dist/schemas/onchain_operations_treasury.schema.json +3 -3
- package/dist/schemas/onchain_table_data.output.json +346 -2
- package/dist/schemas/onchain_table_data.schema.json +22 -22
- package/dist/schemas/permission_operation.schema.json +6 -2
- package/dist/schemas/persona_operation.output.json +145 -0
- package/dist/schemas/persona_operation.schema.json +28 -2
- package/dist/schemas/query_toolkit.output.json +1274 -15
- package/dist/schemas/query_toolkit.schema.json +412 -11
- package/dist/schemas/workflow_operation.schema.json +4 -4
- package/dist/task/ProcessStore.d.ts +81 -0
- package/dist/task/ProcessStore.js +1 -0
- package/dist/task/playbook.d.ts +11 -0
- package/dist/task/playbook.js +1 -0
- package/dist/task/stage-gate.d.ts +22 -0
- package/dist/task/stage-gate.js +1 -0
- package/dist/{project → task}/substep-trace.d.ts +6 -45
- package/dist/task/types.d.ts +120 -0
- package/dist/task/types.js +1 -0
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/goal.d.ts +4 -0
- package/dist/tools/handlers/goal.js +1 -0
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/monitor.d.ts +24 -0
- package/dist/tools/handlers/monitor.js +1 -1
- package/dist/tools/handlers/network.d.ts +1 -0
- package/dist/tools/handlers/network.js +1 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/permission.js +1 -1
- package/dist/tools/handlers/persona.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/watch.js +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +5 -4
- package/dist/harness/checkpoint.d.ts +0 -8
- package/dist/harness/checkpoint.js +0 -1
- package/dist/knowledge/deployment-scanner.d.ts +0 -66
- package/dist/knowledge/deployment-scanner.js +0 -1
- package/dist/project/business-puzzle.js +0 -1
- package/dist/project/context-assembly.js +0 -1
- package/dist/project/deployment-bridge.d.ts +0 -5
- package/dist/project/deployment-bridge.js +0 -1
- package/dist/project/deployment-doc.d.ts +0 -190
- package/dist/project/deployment-doc.js +0 -1
- package/dist/project/edit-planner.d.ts +0 -123
- package/dist/project/edit-planner.js +0 -1
- package/dist/project/evaluation-fix.spec.d.ts +0 -1
- package/dist/project/evaluation-fix.spec.js +0 -1
- package/dist/project/evaluation.d.ts +0 -127
- package/dist/project/evaluation.js +0 -1
- package/dist/project/graph-builder.d.ts +0 -51
- package/dist/project/graph-builder.js +0 -1
- package/dist/project/graph.d.ts +0 -70
- package/dist/project/graph.js +0 -1
- package/dist/project/handlers.d.ts +0 -524
- package/dist/project/handlers.js +0 -1
- package/dist/project/index.d.ts +0 -91
- package/dist/project/index.js +0 -1
- package/dist/project/intent-analyzer.js +0 -1
- package/dist/project/machine-panorama.js +0 -1
- package/dist/project/merchant-guide.js +0 -1
- package/dist/project/mode-actions.js +0 -1
- package/dist/project/namespace.d.ts +0 -72
- package/dist/project/namespace.js +0 -1
- package/dist/project/object-panorama.js +0 -1
- package/dist/project/participation-radar.js +0 -1
- package/dist/project/pipeline-actions.js +0 -1
- package/dist/project/project-store.d.ts +0 -110
- package/dist/project/project-store.js +0 -1
- package/dist/project/query.d.ts +0 -43
- package/dist/project/query.js +0 -1
- package/dist/project/risk-aggregator.js +0 -1
- package/dist/project/semantic-assembler.d.ts +0 -93
- package/dist/project/semantic-assembler.js +0 -1
- package/dist/project/service-panorama.js +0 -1
- package/dist/project/stage-gate.d.ts +0 -52
- package/dist/project/stage-gate.js +0 -1
- package/dist/project/task-tracker.d.ts +0 -30
- package/dist/project/task-tracker.js +0 -1
- package/dist/schema/project/index.d.ts +0 -2021
- package/dist/schema/project/index.js +0 -1
- package/dist/schema/task-status.d.ts +0 -62
- package/dist/schema/task-status.js +0 -1
- package/dist/schemas/project_operation.output.json +0 -7877
- package/dist/schemas/project_operation.schema.json +0 -1139
- package/dist/schemas/query_task_status.output.json +0 -211
- package/dist/schemas/query_task_status.schema.json +0 -18
- package/dist/tools/handlers/project.d.ts +0 -2
- package/dist/tools/handlers/project.js +0 -1
- package/dist/tools/handlers/task-status.d.ts +0 -2
- package/dist/tools/handlers/task-status.js +0 -1
- /package/dist/{project → playbooks/service-build}/business-puzzle.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/game-theory.js +0 -0
- /package/dist/{project → playbooks/service-build}/machine-nodes.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/machine-nodes.js +0 -0
- /package/dist/{project → playbooks/service-build}/object-type.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/object-type.js +0 -0
- /package/dist/{project → playbooks/service-build}/reverse-mapping.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/reverse-mapping.js +0 -0
- /package/dist/{project → playbooks/service-build}/risk-aggregator.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/semantic-graph.js +0 -0
- /package/dist/{project → playbooks/service-build}/workflow-design-assessment.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/workflow-design-assessment.js +0 -0
- /package/dist/{project → task}/substep-trace.js +0 -0
|
@@ -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 a374a,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 a374b}from'../../project/index.js';import{getSkillsHintForOnchain}from'../../schema/utils/skills-recommendation.js';import{prepareFundOperation,generateSkillsHint as a374c}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';async function buildGuardSubmissionPrompt(a,b,c){if(!a||typeof a!=='object'||!('submission'in a))return undefined;const d=a['submission'];if(!Array['isArray'](d)||d['length']===0x0)return undefined;const e=d[0x0]?.['guard'];if(!e)return undefined;const f=await generateGuardSubmissionPrompt(e,{'operation':b,...c});return f?formatSubmissionPrompt(f):undefined;}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;}function extractObjectOnlyRef(a){const b=a;if(b['submission'])return undefined;const c=b['data'];if(!c||typeof c!=='object'||Array['isArray'](c))return undefined;const d=c,e=Object['keys'](d);if(e['length']!==0x1||e[0x0]!=='object')return undefined;const f=d['object'];return typeof f==='string'&&f['trim']()['length']>0x0?f['trim']():undefined;}async function queryObjectOnlyResult(a,b,c){let d=[],f;try{const j=await query_objects({'objects':[b],'network':c?.['network'],'no_cache':!![]});d=j['objects']??[],d['length']===0x0&&(f='Object\x20\x27'+b+'\x27\x20not\x20found\x20on-chain.\x20It\x20may\x20never\x20have\x20been\x20created,\x20'+'its\x20local\x20mark\x20may\x20be\x20missing\x20(register\x20it\x20via\x20local_mark_operation),\x20'+'or\x20it\x20may\x20live\x20on\x20a\x20different\x20network.');}catch(k){const l=k?.['message']??String(k);f='Query\x20failed\x20for\x20\x27'+b+'\x27:\x20'+l;}const g=d['map'](m=>({...m,'change':'queried'})),h=f?'Object-only\x20payload\x20for\x20'+a+'\x20—\x20nothing\x20to\x20mutate,\x20no\x20transaction\x20was\x20sent\x20(no\x20gas\x20used).\x20'+f:'Object-only\x20payload\x20for\x20'+a+'\x20—\x20nothing\x20to\x20mutate,\x20no\x20transaction\x20was\x20sent\x20(no\x20gas\x20used).\x20Current\x20on-chain\x20state\x20of\x20\x27'+b+'\x27:',i={'message':h,'result':f?{'type':'error','error':f,'error_code':'object_not_found','retryable':![],'recovery_hint':'Check\x20the\x20name\x20spelling\x20(local_mark_operation\x20list),\x20the\x20env.network\x20value,\x20or\x20create\x20the\x20object\x20first.'}:{'type':'data','data':g},'semantic':{'intent':a+'_read','status':f?'failed':'success','summary':h,'next_actions':[{'action':'Use\x20query_toolkit\x20(onchain_objects)\x20for\x20richer\x20inspection\x20—\x20content\x20fields,\x20ownership,\x20dynamic\x20tables.','reason':'Object-only\x20onchain_operations\x20payloads\x20are\x20answered\x20by\x20a\x20pure\x20query;\x20they\x20never\x20mutate\x20on-chain\x20state.','tool':'query_toolkit','priority':'recommended'}],'warnings':['Payload\x20contained\x20only\x20data.object\x20—\x20interpreted\x20as\x20a\x20READ\x20request,\x20not\x20a\x20transaction.']}};return{'content':[{'type':'text','text':h}],'structuredContent':i};}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 s=a['description'],t=typeof s==='string'&&(s['includes']('operation_type')||s['includes']('data'));if(t)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']),h=extractObjectOnlyRef(b);if(h!==undefined)return await queryObjectOnlyResult(b['operation_type'],h,g);try{const u=b['data']?.['object'];if(u&&typeof u==='object'&&u['replaceExistName']===!![]&&typeof u['name']==='string'&&u['name']['trim']()['length']>0x0){const v=await LocalMark['Instance']()['get'](u['name']['trim']());v?.['address']&&c['push']('NAME\x20REBIND:\x20local\x20name\x20\x27'+u['name']+'\x27\x20is\x20currently\x20bound\x20to\x20'+v['address']+'.\x20'+'replaceExistName=true\x20will\x20unbind\x20it\x20and\x20rebind\x20the\x20name\x20to\x20the\x20object\x20created/updated\x20by\x20this\x20'+('call\x20—\x20references\x20resolving\x20\x27'+u['name']+'\x27\x20will\x20point\x20to\x20the\x20NEW\x20object.\x20')+'If\x20this\x20is\x20unintentional,\x20drop\x20replaceExistName\x20or\x20choose\x20another\x20name.');}}catch{}if(!g['referrer']){const w=readStoredReferrer();if(w)g['referrer']=w;}const k=g['client_schema_version'],l=g['schema_strict_mode'],m=k?checkClientSchemaCompatibility(k,{'mode':l?'strict':'warn'}):undefined,n=x=>({'operation_type':b['operation_type'],'data':x,'pre_warnings':[...c,...d]['length']?[...c,...d]:undefined,'schema_check':m}),o=g['project'];if(isProjectServiceEnabled()&&'data'in b&&b['data']){const x=a374b({'operation_type':b['operation_type'],'data':b['data'],'projectPrefix':o});b['data']=x['data'],d=x['warnings']??[];}if(!g['account']&&o)try{const y=await LocalProject['Instance']()['getProjectByPrefix'](o);y?.['defaultAccount']&&(g['account']=y['defaultAccount']);}catch{}delete g['confirmed'],delete g['user_intent_phrases'],delete g['project'],delete g['client_schema_version'],delete g['schema_strict_mode'];const p=getSkillsHintForOnchain(b['operation_type'],b['data']);p&&c['push'](p);const q=getProjectSkillsHint();q&&c['push'](q);switch(b['operation_type']){case'service':{const z=b['data'],A=await detectServiceGuardCircularDependency(z);if(A)return A;const B=checkSalesWipNetworkDeployment(z,g,c);if(B)return B;const C=await prepareFundOperation(z,'service',g?.['network']);if(C['blockingErrors']['length']>0x0)return buildFundBlockResult(C,'service');c['push'](...C['warnings']);if(C['confirmation']){c['push'](C['confirmation']['message']);const N=a374c(C['confirmation']);if(N)c['push'](N);}const D=z?.['order_allocators'];if(D&&typeof D==='object'){const O=Array['isArray'](D['allocators'])?D['allocators']:[];for(let P=0x0;P<O['length'];P++){const Q=O[P],R=Array['isArray'](Q?.['sharing'])?Q['sharing']:[];if(R['length']<=0x1)continue;const S=new Map();for(let T=0x0;T<R['length'];T++){const U=R[T]?.['who'];let V='';if(typeof U==='string')V=U;else{if(U&&typeof U==='object'){if(U['Entity']&&typeof U['Entity']==='object')V='Entity:'+(U['Entity']['name_or_address']??'');else{if(U['Signer'])V='Signer';else U['GuardIdentifier']!==undefined?V='Guard:'+U['GuardIdentifier']:V=JSON['stringify'](U);}}}if(!V)continue;const W=S['get'](V)??0x0;S['set'](V,W+0x1);}for(const [X,Y]of S){Y>0x1&&c['push']('DUPLICATE\x20SHARING\x20ENTITY:\x20Allocator['+P+']\x20has\x20entity\x20\x22'+X+'\x22\x20appearing\x20'+Y+'\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'+Y*0x64+'%\x20to\x20the\x20same\x20entity.\x20')+'If\x20intentional,\x20ignore\x20this\x20warning.');}}}const E=new CallService(b['data']);let F;try{F=b['submission']?await E['call_with_submission'](g,await transformSubmission(b['submission'])):await E['call'](g);}catch(Z){const a0=Z['message']??String(Z);if(/not found|GetObjectExisted|resolve|LocalMark|failed to resolve/i['test'](a0)){const a1=typeof z?.['object']==='object'&&z?.['object']!==null?z['object']['permission']:undefined;throw new Error('DEPENDENCY\x20RESOLUTION\x20FAILED:\x20One\x20or\x20more\x20referenced\x20objects\x20could\x20not\x20be\x20resolved.\x0a'+('Original\x20error:\x20'+a0+'\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='+(z?.['machine']??'<none>')+',\x20')+('buy_guard='+(z?.['buy_guard']??'<none>')+',\x20')+('permission='+(a1??'<inline/new>')+',\x20')+('arbitrations='+(Array['isArray'](z?.['arbitrations'])?z['arbitrations']['length']+'\x20item(s)':'<none>')));}throw Z;}const G=z?.['publish']?'publish\x20service':z?.['bPublished']!==undefined?'modify\x20service':'create\x20service',H=z?.['object']!=null&&typeof z['object']==='object',I=z?.['compensation_fund_add']!=null;H&&!I&&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 J=z?.['publish']===!![],K=Array['isArray'](z?.['arbitrations'])&&z['arbitrations']['length']>0x0;if(J&&!K&&I)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).');J&&!K&&!I&&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.');!J&&I&&!K&&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 L=await buildGuardSubmissionPrompt(F,'service',{'network':g?.['network'],'signer':g?.['account'],'service_address':typeof z?.['object']==='string'?z['object']:undefined});if(L)c['push'](L);const M=handleCallResult(F,withHarness(n(z),'service',G));return f(o,b['operation_type'],F)['catch'](()=>{}),M;}case'machine':{if(b['data']['node']&&typeof b['data']['node']==='object'&&'json_or_markdown_file'in b['data']['node']){const a9=b['data']['node']['json_or_markdown_file'];let aa;try{const ac=resolve(a9);aa=readFileSync(ac,'utf-8');}catch(ad){throw new Error('Failed\x20to\x20read\x20file\x20\x27'+a9+'\x27:\x20'+ad['message']);}const ab=parseMachineNodesFromText(aa);if(!ab['success']){const ae=a374a(ab['errors']);throw new Error('Machine\x20node\x20validation\x20failed\x20for\x20file\x20\x27'+a9+'\x27:\x0a\x0a'+ae);}if(!ab['data'])throw new Error('No\x20nodes\x20found\x20in\x20file\x20\x27'+a9+'\x27');b['data']['node']={'op':'set','nodes':ab['data'],'bReplace':!![]};}const a2=b['data'],a3=await checkMachinePermissionBeforePublish(a2,g);a3&&c['push'](a3);const a4=a2?.['node']?.['nodes']??a2?.['node'];if(Array['isArray'](a4)){const af=/^(dispute|disputed|arbitration|arb_|arb\.|resolve_dispute|start_arbitration|open_dispute)/i;for(const ag of a4){const ah=typeof ag==='object'?ag?.['name']:'';typeof ah==='string'&&af['test'](ah)&&c['push']('ARBITRATION\x20SEPARATION\x20WARNING:\x20Machine\x20node\x20\x22'+ah+'\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 a5=new CallMachine(b['data']),a6=b['submission']?await a5['call_with_submission'](g,await transformSubmission(b['submission'])):await a5['call'](g),a7=await buildGuardSubmissionPrompt(a6,'machine',{'network':g?.['network'],'signer':g?.['account'],'machine_address':b['data']?.['object']});if(a7)c['push'](a7);const a8=handleCallResult(a6,n(b['data']));return f(o,b['operation_type'],a6)['catch'](()=>{}),a8;}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 ai=new CallProgress(b['data']),aj=b['submission']?await ai['call_with_submission'](g,await transformSubmission(b['submission'])):await ai['call'](g);if(!b['submission']&&aj&&typeof aj==='object'&&'submission'in aj){const al=aj['submission'];if(Array['isArray'](al)&&al['length']>0x0){const am=al[0x0]?.['guard'];if(am){const an={'operation':'progress_next','network':g?.['network'],'signer':g?.['account'],'progress_address':b['data']?.['object'],'order_address':b['data']?.['task']},ao=await generateGuardSubmissionPrompt(am,an);ao&&c['push'](formatSubmissionPrompt(ao));}}}const ak=handleCallResult(aj,n(b['data']));if(aj&&typeof aj==='object'&&'digest'in aj&&aj?.['effects']?.['status']?.['status']==='success'&&typeof b['data']?.['object']==='string'){const ap=b['data']?.['operate'],aq=ap?.['operation'],ar=await enrichWorkflowGuidance({'progressRef':b['data']['object'],'network':g?.['network'],'accountName':g?.['account'],'noCache':!![],'operate':aq?.['forward']&&aq?.['next_node_name']?{'forward':aq['forward'],'next_node_name':aq['next_node_name'],'op':ap?.['op']}:undefined});mergeGuidanceIntoOutput(ak,ar);}return f(o,b['operation_type'],aj)['catch'](()=>{}),ak;}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=await buildGuardSubmissionPrompt(at,'repository',{'network':g?.['network'],'signer':g?.['account'],'extra':{'repository':b['data']?.['object']}});if(au)c['push'](au);const av=handleCallResult(at,n(b['data']));return f(o,b['operation_type'],at)['catch'](()=>{}),av;}case'arbitration':{const aw=await prepareFundOperation(b['data'],'arbitration',g?.['network']);if(aw['blockingErrors']['length']>0x0)return buildFundBlockResult(aw,'arbitration');c['push'](...aw['warnings']);if(aw['confirmation']){c['push'](aw['confirmation']['message']);const aB=a374c(aw['confirmation']);if(aB)c['push'](aB);}const ax=new CallArbitration(b['data']),ay=b['submission']?await ax['call_with_submission'](g,await transformSubmission(b['submission'])):await ax['call'](g),az=await buildGuardSubmissionPrompt(ay,'arbitration',{'network':g?.['network'],'signer':g?.['account'],'extra':{'arbitration':b['data']?.['object']}});if(az)c['push'](az);const aA=handleCallResult(ay,n(b['data']));return f(o,b['operation_type'],ay)['catch'](()=>{}),aA;}case'contact':{const aC=new CallContact(b['data']),aD=b['submission']?await aC['call_with_submission'](g,await transformSubmission(b['submission'])):await aC['call'](g),aE=await buildGuardSubmissionPrompt(aD,'contact',{'network':g?.['network'],'signer':g?.['account']});if(aE)c['push'](aE);const aF=handleCallResult(aD,n(b['data']));return f(o,b['operation_type'],aD)['catch'](()=>{}),aF;}case'treasury':{const aG=await prepareFundOperation(b['data'],'treasury',g?.['network']);if(aG['blockingErrors']['length']>0x0)return buildFundBlockResult(aG,'treasury');c['push'](...aG['warnings']);if(aG['confirmation']){c['push'](aG['confirmation']['message']);const aL=a374c(aG['confirmation']);if(aL)c['push'](aL);}const aH=new CallTreasury(b['data']),aI=b['submission']?await aH['call_with_submission'](g,await transformSubmission(b['submission'])):await aH['call'](g),aJ=await buildGuardSubmissionPrompt(aI,'treasury',{'network':g?.['network'],'signer':g?.['account'],'extra':{'treasury':b['data']?.['object']}});if(aJ)c['push'](aJ);const aK=handleCallResult(aI,n(b['data']));return f(o,b['operation_type'],aI)['catch'](()=>{}),aK;}case'reward':{const aM=await prepareFundOperation(b['data'],'reward',g?.['network']);if(aM['blockingErrors']['length']>0x0)return buildFundBlockResult(aM,'reward');c['push'](...aM['warnings']);if(aM['confirmation']){c['push'](aM['confirmation']['message']);const aS=a374c(aM['confirmation']);if(aS)c['push'](aS);}const aN=transformRewardInput(b['data']),aO=new CallReward(aN),aP=b['submission']?await aO['call_with_submission'](g,await transformSubmission(b['submission'])):await aO['call'](g),aQ=await buildGuardSubmissionPrompt(aP,'reward',{'network':g?.['network'],'signer':g?.['account'],'extra':{'reward':b['data']?.['object']}});if(aQ)c['push'](aQ);const aR=handleCallResult(aP,n(b['data']));return f(o,b['operation_type'],aP)['catch'](()=>{}),aR;}case'allocation':{const aT=await prepareFundOperation(b['data'],'allocation',g?.['network']);if(aT['blockingErrors']['length']>0x0)return buildFundBlockResult(aT,'allocation');c['push'](...aT['warnings']);if(aT['confirmation']){c['push'](aT['confirmation']['message']);const aZ=a374c(aT['confirmation']);if(aZ)c['push'](aZ);}const aU=new CallAllocation(b['data']),aV=b['submission']?await aU['call_with_submission'](g,await transformSubmission(b['submission'])):await aU['call'](g),aW=await buildGuardSubmissionPrompt(aV,'allocation',{'network':g?.['network'],'signer':g?.['account'],'allocation_address':b['data']?.['object']});if(aW)c['push'](aW);const aX=b['data'];if(aX?.['alloc_by_guard']){const b0=ResponseData(aV)['filter'](b1=>b1?.['type']==='Payment'&&b1?.['change']==='created');if(b0['length']>0x0){const b1=b0['map'](b2=>b2['object'])['join'](',\x20');try{const b2=await query_objects({'objects':b0['map'](b5=>b5['object']),'no_cache':!![],'network':g?.['network']}),b3=[];let b4=BigInt(0x0);for(const b5 of b2?.['objects']||[]){if(b5?.['type']==='Payment'&&b5?.['record']){for(const b6 of b5['record']){const b7=formatRecipientLabel(b6['recipient']),b8=typeof b6['amount']==='string'?b6['amount']:String(b6['amount']),b9=BigInt(b8);b4+=b9,b3['push']('\x20\x20•\x20'+b7+':\x20'+formatMistAmount(b9));}b5['object']&&b3['push']('\x20\x20•\x20Payment\x20object:\x20'+b5['object']);}}if(b3['length']>0x0){b3['unshift']('DISTRIBUTION\x20DETAILS\x20(alloc_by_guard):'),b3['push']('\x20\x20─────────────────','\x20\x20•\x20Total\x20distributed:\x20'+formatMistAmount(b4));const ba=b2?.['objects']?.['some'](bb=>bb?.['type']==='Payment'&&bb?.['info']?.['for_object']);ba&&b3['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'](b3['join']('\x0a'));}}catch{c['push']('alloc_by_guard\x20created\x20Payment\x20object(s)\x20['+b1+'].\x20'+'Query\x20these\x20Payment\x20objects\x20to\x20see\x20the\x20distribution\x20details\x20and\x20check\x20for_object\x20for\x20escrow\x20mode.');}}}const aY=handleCallResult(aV,n(b['data']));return f(o,b['operation_type'],aV)['catch'](()=>{}),aY;}case'permission':{const bb=b['operation_type'],bc=handlePermissionOperations(b['data'],g,n);return bc&&typeof bc==='object'&&'then'in bc&&bc['then'](bd=>{bd?.['structuredContent']?.['result']&&f(o,bb,bd['structuredContent']['result'])['catch'](()=>{});})['catch'](()=>{}),bc;}case'guard':{const bd=b['data'],be=bd['root'];if(be?.['type']==='file'){const bi=be,bj=resolve(bi['file_path']);let bk;try{bk=readFileSync(bj,'utf-8');}catch(bn){throw new Error('Failed\x20to\x20read\x20Guard\x20definition\x20file\x20\x27'+bi['file_path']+'\x27:\x20'+bn['message']);}const bl=parseGuardFile(bk,bi['format']);if(!bl['success']){const bo=formatGuardParseErrors(bl['errors']);throw new Error('Guard\x20validation\x20failed\x20for\x20file\x20\x27'+bi['file_path']+'\x27:\x0a\x0a'+bo);}const bm=bl['data'];bd['root']={'type':'node','node':bm['root']},bm['table']!==undefined&&bd['table']===undefined&&(bd['table']=bm['table']),bm['description']!==undefined&&bd['description']===undefined&&(bd['description']=bm['description']),bm['rely']!==undefined&&bd['rely']===undefined&&(bd['rely']=bm['rely']),bm['namedNew']!==undefined&&bd['namedNew']===undefined&&(bd['namedNew']=bm['namedNew']);}if(bd['root']&&typeof bd['root']==='object'){const bp=bd['root'];bp['type']==='node'&&bp['node']&&(bd['root']=bp['node']);}if(!bd['table']||bd['table']['length']===0x0)throw new Error('Guard\x20\x27table\x27\x20field\x20is\x20required\x20and\x20cannot\x20be\x20empty');if(!bd['root'])throw new Error('Guard\x20\x27root\x27\x20field\x20is\x20required');const bf=new CallGuard(bd),bg=await bf['call'](g);if(bg&&typeof bg==='object'&&'digest'in bg&&bg?.['effects']?.['status']?.['status']==='success')try{const bq=bd['root']?.['type']??'<unknown>',br=Array['isArray'](bd['table'])?bd['table']:[],bs=br['length'],bt=br['filter'](by=>by?.['b_submission']===!![])['length'],bu=bd['rely']?.['guards'],bv=Array['isArray'](bu)?bu['length']:0x0,bw=bd['rely']?.['logic_or']===!![]?'OR':bd['rely']?.['logic_or']===![]?'AND':'none',bx=['GUARD\x20LOGIC\x20SUMMARY:','\x20\x20•\x20root\x20type:\x20'+bq,'\x20\x20•\x20table\x20entries:\x20'+bs+'\x20('+bt+'\x20require\x20runtime\x20submission)'];bv>0x0&&bx['push']('\x20\x20•\x20relies\x20on:\x20'+bv+'\x20guard(s)\x20(mode:\x20'+bw+')');if(bd['description']){const by=String(bd['description'])['slice'](0x0,0x50);bx['push']('\x20\x20•\x20description:\x20\x22'+by+'\x22');}c['push'](bx['join']('\x0a'));}catch{}const bh=handleCallResult(bg,n(b['data']));return f(o,b['operation_type'],bg)['catch'](()=>{}),bh;}case'personal':{const bz=transformPersonalInput(b['data']),bA=new CallPersonal(bz),bB=await bA['call'](g),bC=handleCallResult(bB,n(b['data']));return f(o,b['operation_type'],bB)['catch'](()=>{}),bC;}case'payment':{const bD=await prepareFundOperation(b['data'],'payment',g?.['network']);if(bD['blockingErrors']['length']>0x0)return buildFundBlockResult(bD,'payment');c['push'](...bD['warnings']);if(bD['confirmation']){c['push'](bD['confirmation']['message']);const bI=a374c(bD['confirmation']);if(bI)c['push'](bI);}const bE=b['data'];if(bE?.['receive']===!![]){const bJ=typeof bE?.['object']==='string'&&bE['object']['length']>0x0;c['push']('RECEIVE\x20MODE\x20(order_claim):\x20You\x20are\x20unwrapping\x20CoinWrapper(s)\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\x20CoinWrapper(s)\x20to\x20your\x20wallet\x20(owned\x20but\x20not\x20spendable)\x0a'+'\x20\x203.\x20'+(bJ?'THIS\x20operation\x20unwraps\x20the\x20specified\x20CoinWrapper\x20via\x20payment::unwrap_to_myself':'AUTO-RECEIVE:\x20this\x20operation\x20unwraps\x20EVERY\x20CoinWrapper\x20currently\x20owned\x20by\x20you\x20in\x20a\x20single\x20transaction')+',\x20deleting\x20the\x20CoinWrapper(s)\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'+(bJ?'\x20\x20-\x20object\x20can\x20be\x20a\x20CoinWrapper\x20ID\x20(0x...)\x20or\x20a\x20local\x20mark\x20name\x0a':'\x20\x20-\x20When\x20\x27object\x27\x20is\x20omitted,\x20no\x20wrapper\x20lookup\x20is\x20needed\x20—\x20all\x20your\x20CoinWrappers\x20are\x20unwrapped\x20at\x20once\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 bE?.['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 bF=new CallPayment(b['data']),bG=await bF['call'](g),bH=handleCallResult(bG,n(b['data']));return f(o,b['operation_type'],bG)['catch'](()=>{}),bH;}case'demand':{const bK=new CallDemand(b['data']),bL=b['submission']?await bK['call_with_submission'](g,await transformSubmission(b['submission'])):await bK['call'](g),bM=await buildGuardSubmissionPrompt(bL,'demand',{'network':g?.['network'],'signer':g?.['account'],'extra':{'demand':b['data']?.['object']}});if(bM)c['push'](bM);const bN=handleCallResult(bL,n(b['data']));return f(o,b['operation_type'],bL)['catch'](()=>{}),bN;}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 bO=new CallOrder(b['data']),bP=b['submission']?await bO['call_with_submission'](g,await transformSubmission(b['submission'])):await bO['call'](g),bQ=await buildGuardSubmissionPrompt(bP,'order',{'network':g?.['network'],'signer':g?.['account'],'order_address':b['data']?.['object']});if(bQ)c['push'](bQ);const bR=handleCallResult(bP,n(b['data']));if(bP&&typeof bP==='object'&&'digest'in bP&&bP?.['effects']?.['status']?.['status']==='success'&&b['data']?.['progress']&&typeof b['data']?.['object']==='string')try{const bS=b['data']['object'],bT=bS['startsWith']('0x')?bS:await LocalMark['Instance']()['get_address'](bS)??undefined;let bU;if(bT){const bV=await query_objects({'objects':[bT],'no_cache':!![],'network':g?.['network']}),bW=bV?.['objects']?.[0x0];bU=(bW?.['data']??bW)?.['progress'];}if(bU){const bX=b['data']['progress']?.['operation'],bY=await enrichWorkflowGuidance({'progressRef':bU,'network':g?.['network'],'accountName':g?.['account'],'noCache':!![],'operate':bX?.['forward']&&bX?.['next_node_name']?{'forward':bX['forward'],'next_node_name':bX['next_node_name'],'op':b['data']['progress']?.['op']}:undefined});mergeGuidanceIntoOutput(bR,bY);}}catch{}return f(o,b['operation_type'],bP)['catch'](()=>{}),bR;}case'gen_passport':{const bZ=await gen_passport(g,b['guard'],b['info']),c0=handleCallResult(bZ,n(b['data']));return f(o,b['operation_type'],bZ)['catch'](()=>{}),c0;}case'proof':{const c1=new CallProof(b['data']),c2=b['submission']?await c1['call_with_submission'](g,await transformSubmission(b['submission'])):await c1['call'](g),c3=await buildGuardSubmissionPrompt(c2,'proof',{'network':g?.['network'],'signer':g?.['account']});if(c3)c['push'](c3);const c4=handleCallResult(c2,n(b['data']));return f(o,b['operation_type'],c2)['catch'](()=>{}),c4;}case'gen_proof':{const c5=await gen_proof(g,b['proof'],b['server_pubkey'],b['server_signature'],b['proof_type'],b['description'],b['item_count'],b['about_address']),c6=handleCallResult(c5,n(b['data']));return f(o,b['operation_type'],c5)['catch'](()=>{}),c6;}}const r=b;throw new Error('Unknown\x20on-chain\x20operation\x20type:\x20'+String(r['operation_type']));}catch(c7){const c8=c7 instanceof Error?c7['message']:String(c7),c9=b?.['operation_type'],ca=b&&'data'in b?b['data']:undefined;return handleCallResult({'error':c8},c9?{'operation_type':c9,'data':ca}: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,LocalMark,query_objects,parseGuardFile,formatGuardParseErrors,transformRewardInput,transformPersonalInput}from'@wowok/wowok';import{OnchainOperationsSchema,strictParse,getEnvConfig,handleCallResult,checkClientSchemaCompatibility,parseMachineNodesFromText,formatNodeErrors as a395a,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{getSkillsHintForOnchain}from'../../schema/utils/skills-recommendation.js';import{prepareFundOperation,generateSkillsHint as a395b}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';import{goalEngine}from'../../goal/GoalEngine.js';async function buildGuardSubmissionPrompt(a,b,c){if(!a||typeof a!=='object'||!('submission'in a))return undefined;const d=a['submission'];if(!Array['isArray'](d)||d['length']===0x0)return undefined;const e=d[0x0]?.['guard'];if(!e)return undefined;const f=await generateGuardSubmissionPrompt(e,{'operation':b,...c});return f?formatSubmissionPrompt(f):undefined;}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;}function extractObjectOnlyRef(a){const b=a;if(b['submission'])return undefined;const c=b['data'];if(!c||typeof c!=='object'||Array['isArray'](c))return undefined;const d=c,e=Object['keys'](d);if(e['length']!==0x1||e[0x0]!=='object')return undefined;const f=d['object'];return typeof f==='string'&&f['trim']()['length']>0x0?f['trim']():undefined;}async function queryObjectOnlyResult(a,b,c){let d=[],f;try{const j=await query_objects({'objects':[b],'network':c?.['network'],'no_cache':!![]});d=j['objects']??[],d['length']===0x0&&(f='Object\x20\x27'+b+'\x27\x20not\x20found\x20on-chain.\x20It\x20may\x20never\x20have\x20been\x20created,\x20'+'its\x20local\x20mark\x20may\x20be\x20missing\x20(register\x20it\x20via\x20local_mark_operation),\x20'+'or\x20it\x20may\x20live\x20on\x20a\x20different\x20network.');}catch(k){const l=k?.['message']??String(k);f='Query\x20failed\x20for\x20\x27'+b+'\x27:\x20'+l;}const g=d['map'](m=>({...m,'change':'queried'})),h=f?'Object-only\x20payload\x20for\x20'+a+'\x20—\x20nothing\x20to\x20mutate,\x20no\x20transaction\x20was\x20sent\x20(no\x20gas\x20used).\x20'+f:'Object-only\x20payload\x20for\x20'+a+'\x20—\x20nothing\x20to\x20mutate,\x20no\x20transaction\x20was\x20sent\x20(no\x20gas\x20used).\x20Current\x20on-chain\x20state\x20of\x20\x27'+b+'\x27:',i={'message':h,'result':f?{'type':'error','error':f,'error_code':'object_not_found','retryable':![],'recovery_hint':'Check\x20the\x20name\x20spelling\x20(local_mark_operation\x20list),\x20the\x20env.network\x20value,\x20or\x20create\x20the\x20object\x20first.'}:{'type':'data','data':g},'semantic':{'intent':a+'_read','status':f?'failed':'success','summary':h,'next_actions':[{'action':'Use\x20query_toolkit\x20(onchain_objects)\x20for\x20richer\x20inspection\x20—\x20content\x20fields,\x20ownership,\x20dynamic\x20tables.','reason':'Object-only\x20onchain_operations\x20payloads\x20are\x20answered\x20by\x20a\x20pure\x20query;\x20they\x20never\x20mutate\x20on-chain\x20state.','tool':'query_toolkit','priority':'recommended'}],'warnings':['Payload\x20contained\x20only\x20data.object\x20—\x20interpreted\x20as\x20a\x20READ\x20request,\x20not\x20a\x20transaction.']}};return{'content':[{'type':'text','text':h}],'structuredContent':i};}export async function handleOnchainOperations(a){let b,c=[];async function d(f,g,h,k){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;if(!f)return;try{const m=ResponseData(k),o=m['filter'](p=>p['change']==='created'&&p['object']);if(f&&o['length']>0x0){const p=o['filter'](q=>typeof q['type_raw']==='string'&&q['type_raw']['includes']('::'))['map'](q=>({'type':q['type_raw']['split']('::')['pop'](),'object':q['object']}));if(p['length']>0x0){const q=await goalEngine['registerActObjects'](f,p,g??'default');q>0x0&&console['warn']('[autoRegisterResults]\x20'+q+'\x20created\x20object(s)\x20registered\x20to\x20goal\x20'+f+'\x20(ACT\x20station)');}}}catch{}}try{if(typeof a==='object'&&a!==null&&'description'in a&&!('operation_type'in a)){const s=a['description'],t=typeof s==='string'&&(s['includes']('operation_type')||s['includes']('data'));if(t)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 f=getEnvConfig(b['env']),g=extractObjectOnlyRef(b);if(g!==undefined)return await queryObjectOnlyResult(b['operation_type'],g,f);try{const u=b['data']?.['object'];if(u&&typeof u==='object'&&u['replaceExistName']===!![]&&typeof u['name']==='string'&&u['name']['trim']()['length']>0x0){const v=await LocalMark['Instance']()['get'](u['name']['trim']());v?.['address']&&c['push']('NAME\x20REBIND:\x20local\x20name\x20\x27'+u['name']+'\x27\x20is\x20currently\x20bound\x20to\x20'+v['address']+'.\x20'+'replaceExistName=true\x20will\x20unbind\x20it\x20and\x20rebind\x20the\x20name\x20to\x20the\x20object\x20created/updated\x20by\x20this\x20'+('call\x20—\x20references\x20resolving\x20\x27'+u['name']+'\x27\x20will\x20point\x20to\x20the\x20NEW\x20object.\x20')+'If\x20this\x20is\x20unintentional,\x20drop\x20replaceExistName\x20or\x20choose\x20another\x20name.');}}catch{}if(!f['referrer']){const w=readStoredReferrer();if(w)f['referrer']=w;}const h=f['client_schema_version'],k=f['schema_strict_mode'],l=h?checkClientSchemaCompatibility(h,{'mode':k?'strict':'warn'}):undefined,m=x=>({'operation_type':b['operation_type'],'data':x,'pre_warnings':c['length']?c:undefined,'schema_check':l}),n=f['plan_approval'],o=f['network'];delete f['confirmed'],delete f['user_intent_phrases'],delete f['client_schema_version'],delete f['schema_strict_mode'];const p=getSkillsHintForOnchain(b['operation_type'],b['data']);p&&c['push'](p);const q=getProjectSkillsHint();q&&c['push'](q);switch(b['operation_type']){case'service':{const x=b['data'],y=await detectServiceGuardCircularDependency(x);if(y)return y;const z=checkSalesWipNetworkDeployment(x,f,c);if(z)return z;const A=await prepareFundOperation(x,'service',f?.['network']);if(A['blockingErrors']['length']>0x0)return buildFundBlockResult(A,'service');c['push'](...A['warnings']);if(A['confirmation']){c['push'](A['confirmation']['message']);const L=a395b(A['confirmation']);if(L)c['push'](L);}const B=x?.['order_allocators'];if(B&&typeof B==='object'){const M=Array['isArray'](B['allocators'])?B['allocators']:[];for(let N=0x0;N<M['length'];N++){const O=M[N],P=Array['isArray'](O?.['sharing'])?O['sharing']:[];if(P['length']<=0x1)continue;const Q=new Map();for(let R=0x0;R<P['length'];R++){const S=P[R]?.['who'];let T='';if(typeof S==='string')T=S;else{if(S&&typeof S==='object'){if(S['Entity']&&typeof S['Entity']==='object')T='Entity:'+(S['Entity']['name_or_address']??'');else{if(S['Signer'])T='Signer';else S['GuardIdentifier']!==undefined?T='Guard:'+S['GuardIdentifier']:T=JSON['stringify'](S);}}}if(!T)continue;const U=Q['get'](T)??0x0;Q['set'](T,U+0x1);}for(const [V,W]of Q){W>0x1&&c['push']('DUPLICATE\x20SHARING\x20ENTITY:\x20Allocator['+N+']\x20has\x20entity\x20\x22'+V+'\x22\x20appearing\x20'+W+'\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'+W*0x64+'%\x20to\x20the\x20same\x20entity.\x20')+'If\x20intentional,\x20ignore\x20this\x20warning.');}}}const C=new CallService(b['data']);let D;try{D=b['submission']?await C['call_with_submission'](f,await transformSubmission(b['submission'])):await C['call'](f);}catch(X){const Y=X['message']??String(X);if(/not found|GetObjectExisted|resolve|LocalMark|failed to resolve/i['test'](Y)){const Z=typeof x?.['object']==='object'&&x?.['object']!==null?x['object']['permission']:undefined;throw new Error('DEPENDENCY\x20RESOLUTION\x20FAILED:\x20One\x20or\x20more\x20referenced\x20objects\x20could\x20not\x20be\x20resolved.\x0a'+('Original\x20error:\x20'+Y+'\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='+(x?.['machine']??'<none>')+',\x20')+('buy_guard='+(x?.['buy_guard']??'<none>')+',\x20')+('permission='+(Z??'<inline/new>')+',\x20')+('arbitrations='+(Array['isArray'](x?.['arbitrations'])?x['arbitrations']['length']+'\x20item(s)':'<none>')));}throw X;}const E=x?.['publish']?'publish\x20service':x?.['bPublished']!==undefined?'modify\x20service':'create\x20service',F=x?.['object']!=null&&typeof x['object']==='object',G=x?.['compensation_fund_add']!=null;F&&!G&&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 H=x?.['publish']===!![],I=Array['isArray'](x?.['arbitrations'])&&x['arbitrations']['length']>0x0;if(H&&!I&&G)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).');H&&!I&&!G&&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.');!H&&G&&!I&&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 J=await buildGuardSubmissionPrompt(D,'service',{'network':f?.['network'],'signer':f?.['account'],'service_address':typeof x?.['object']==='string'?x['object']:undefined});if(J)c['push'](J);const K=handleCallResult(D,withHarness(m(x),'service',E));return d(n,o,b['operation_type'],D)['catch'](()=>{}),K;}case'machine':{if(b['data']['node']&&typeof b['data']['node']==='object'&&'json_or_markdown_file'in b['data']['node']){const a7=b['data']['node']['json_or_markdown_file'];let a8;try{const aa=resolve(a7);a8=readFileSync(aa,'utf-8');}catch(ab){throw new Error('Failed\x20to\x20read\x20file\x20\x27'+a7+'\x27:\x20'+ab['message']);}const a9=parseMachineNodesFromText(a8);if(!a9['success']){const ac=a395a(a9['errors']);throw new Error('Machine\x20node\x20validation\x20failed\x20for\x20file\x20\x27'+a7+'\x27:\x0a\x0a'+ac);}if(!a9['data'])throw new Error('No\x20nodes\x20found\x20in\x20file\x20\x27'+a7+'\x27');b['data']['node']={'op':'set','nodes':a9['data'],'bReplace':!![]};}const a0=b['data'],a1=await checkMachinePermissionBeforePublish(a0,f);a1&&c['push'](a1);const a2=a0?.['node']?.['nodes']??a0?.['node'];if(Array['isArray'](a2)){const ad=/^(dispute|disputed|arbitration|arb_|arb\.|resolve_dispute|start_arbitration|open_dispute)/i;for(const ae of a2){const af=typeof ae==='object'?ae?.['name']:'';typeof af==='string'&&ad['test'](af)&&c['push']('ARBITRATION\x20SEPARATION\x20WARNING:\x20Machine\x20node\x20\x22'+af+'\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 a3=new CallMachine(b['data']),a4=b['submission']?await a3['call_with_submission'](f,await transformSubmission(b['submission'])):await a3['call'](f),a5=await buildGuardSubmissionPrompt(a4,'machine',{'network':f?.['network'],'signer':f?.['account'],'machine_address':b['data']?.['object']});if(a5)c['push'](a5);const a6=handleCallResult(a4,m(b['data']));return d(n,o,b['operation_type'],a4)['catch'](()=>{}),a6;}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 ag=new CallProgress(b['data']),ah=b['submission']?await ag['call_with_submission'](f,await transformSubmission(b['submission'])):await ag['call'](f);if(!b['submission']&&ah&&typeof ah==='object'&&'submission'in ah){const aj=ah['submission'];if(Array['isArray'](aj)&&aj['length']>0x0){const ak=aj[0x0]?.['guard'];if(ak){const al={'operation':'progress_next','network':f?.['network'],'signer':f?.['account'],'progress_address':b['data']?.['object'],'order_address':b['data']?.['task']},am=await generateGuardSubmissionPrompt(ak,al);am&&c['push'](formatSubmissionPrompt(am));}}}const ai=handleCallResult(ah,m(b['data']));if(ah&&typeof ah==='object'&&'digest'in ah&&ah?.['effects']?.['status']?.['status']==='success'&&typeof b['data']?.['object']==='string'){const an=b['data']?.['operate'],ao=an?.['operation'],ap=await enrichWorkflowGuidance({'progressRef':b['data']['object'],'network':f?.['network'],'accountName':f?.['account'],'noCache':!![],'operate':ao?.['forward']&&ao?.['next_node_name']?{'forward':ao['forward'],'next_node_name':ao['next_node_name'],'op':an?.['op']}:undefined});mergeGuidanceIntoOutput(ai,ap);}return d(n,o,b['operation_type'],ah)['catch'](()=>{}),ai;}case'repository':{const aq=new CallRepository(b['data']),ar=b['submission']?await aq['call_with_submission'](f,await transformSubmission(b['submission'])):await aq['call'](f),as=await buildGuardSubmissionPrompt(ar,'repository',{'network':f?.['network'],'signer':f?.['account'],'extra':{'repository':b['data']?.['object']}});if(as)c['push'](as);const at=handleCallResult(ar,m(b['data']));return d(n,o,b['operation_type'],ar)['catch'](()=>{}),at;}case'arbitration':{const au=await prepareFundOperation(b['data'],'arbitration',f?.['network']);if(au['blockingErrors']['length']>0x0)return buildFundBlockResult(au,'arbitration');c['push'](...au['warnings']);if(au['confirmation']){c['push'](au['confirmation']['message']);const az=a395b(au['confirmation']);if(az)c['push'](az);}const av=new CallArbitration(b['data']),aw=b['submission']?await av['call_with_submission'](f,await transformSubmission(b['submission'])):await av['call'](f),ax=await buildGuardSubmissionPrompt(aw,'arbitration',{'network':f?.['network'],'signer':f?.['account'],'extra':{'arbitration':b['data']?.['object']}});if(ax)c['push'](ax);const ay=handleCallResult(aw,m(b['data']));return d(n,o,b['operation_type'],aw)['catch'](()=>{}),ay;}case'contact':{const aA=new CallContact(b['data']),aB=b['submission']?await aA['call_with_submission'](f,await transformSubmission(b['submission'])):await aA['call'](f),aC=await buildGuardSubmissionPrompt(aB,'contact',{'network':f?.['network'],'signer':f?.['account']});if(aC)c['push'](aC);const aD=handleCallResult(aB,m(b['data']));return d(n,o,b['operation_type'],aB)['catch'](()=>{}),aD;}case'treasury':{const aE=await prepareFundOperation(b['data'],'treasury',f?.['network']);if(aE['blockingErrors']['length']>0x0)return buildFundBlockResult(aE,'treasury');c['push'](...aE['warnings']);if(aE['confirmation']){c['push'](aE['confirmation']['message']);const aJ=a395b(aE['confirmation']);if(aJ)c['push'](aJ);}const aF=new CallTreasury(b['data']),aG=b['submission']?await aF['call_with_submission'](f,await transformSubmission(b['submission'])):await aF['call'](f),aH=await buildGuardSubmissionPrompt(aG,'treasury',{'network':f?.['network'],'signer':f?.['account'],'extra':{'treasury':b['data']?.['object']}});if(aH)c['push'](aH);const aI=handleCallResult(aG,m(b['data']));return d(n,o,b['operation_type'],aG)['catch'](()=>{}),aI;}case'reward':{const aK=await prepareFundOperation(b['data'],'reward',f?.['network']);if(aK['blockingErrors']['length']>0x0)return buildFundBlockResult(aK,'reward');c['push'](...aK['warnings']);if(aK['confirmation']){c['push'](aK['confirmation']['message']);const aQ=a395b(aK['confirmation']);if(aQ)c['push'](aQ);}const aL=transformRewardInput(b['data']),aM=new CallReward(aL),aN=b['submission']?await aM['call_with_submission'](f,await transformSubmission(b['submission'])):await aM['call'](f),aO=await buildGuardSubmissionPrompt(aN,'reward',{'network':f?.['network'],'signer':f?.['account'],'extra':{'reward':b['data']?.['object']}});if(aO)c['push'](aO);const aP=handleCallResult(aN,m(b['data']));return d(n,o,b['operation_type'],aN)['catch'](()=>{}),aP;}case'allocation':{const aR=await prepareFundOperation(b['data'],'allocation',f?.['network']);if(aR['blockingErrors']['length']>0x0)return buildFundBlockResult(aR,'allocation');c['push'](...aR['warnings']);if(aR['confirmation']){c['push'](aR['confirmation']['message']);const aX=a395b(aR['confirmation']);if(aX)c['push'](aX);}const aS=new CallAllocation(b['data']),aT=b['submission']?await aS['call_with_submission'](f,await transformSubmission(b['submission'])):await aS['call'](f),aU=await buildGuardSubmissionPrompt(aT,'allocation',{'network':f?.['network'],'signer':f?.['account'],'allocation_address':b['data']?.['object']});if(aU)c['push'](aU);const aV=b['data'];if(aV?.['alloc_by_guard']){const aY=ResponseData(aT)['filter'](aZ=>aZ?.['type']==='Payment'&&aZ?.['change']==='created');if(aY['length']>0x0){const aZ=aY['map'](b0=>b0['object'])['join'](',\x20');try{const b0=await query_objects({'objects':aY['map'](b3=>b3['object']),'no_cache':!![],'network':f?.['network']}),b1=[];let b2=BigInt(0x0);for(const b3 of b0?.['objects']||[]){if(b3?.['type']==='Payment'&&b3?.['record']){for(const b4 of b3['record']){const b5=formatRecipientLabel(b4['recipient']),b6=typeof b4['amount']==='string'?b4['amount']:String(b4['amount']),b7=BigInt(b6);b2+=b7,b1['push']('\x20\x20•\x20'+b5+':\x20'+formatMistAmount(b7));}b3['object']&&b1['push']('\x20\x20•\x20Payment\x20object:\x20'+b3['object']);}}if(b1['length']>0x0){b1['unshift']('DISTRIBUTION\x20DETAILS\x20(alloc_by_guard):'),b1['push']('\x20\x20─────────────────','\x20\x20•\x20Total\x20distributed:\x20'+formatMistAmount(b2));const b8=b0?.['objects']?.['some'](b9=>b9?.['type']==='Payment'&&b9?.['info']?.['for_object']);b8&&b1['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'](b1['join']('\x0a'));}}catch{c['push']('alloc_by_guard\x20created\x20Payment\x20object(s)\x20['+aZ+'].\x20'+'Query\x20these\x20Payment\x20objects\x20to\x20see\x20the\x20distribution\x20details\x20and\x20check\x20for_object\x20for\x20escrow\x20mode.');}}}const aW=handleCallResult(aT,m(b['data']));return d(n,o,b['operation_type'],aT)['catch'](()=>{}),aW;}case'permission':{const b9=b['operation_type'],ba=handlePermissionOperations(b['data'],f,m);return ba&&typeof ba==='object'&&'then'in ba&&ba['then'](bb=>{bb?.['structuredContent']?.['result']&&d(n,o,b9,bb['structuredContent']['result'])['catch'](()=>{});})['catch'](()=>{}),ba;}case'guard':{const bb=b['data'],bc=bb['root'];if(bc?.['type']==='file'){const bg=bc,bh=resolve(bg['file_path']);let bi;try{bi=readFileSync(bh,'utf-8');}catch(bl){throw new Error('Failed\x20to\x20read\x20Guard\x20definition\x20file\x20\x27'+bg['file_path']+'\x27:\x20'+bl['message']);}const bj=parseGuardFile(bi,bg['format']);if(!bj['success']){const bm=formatGuardParseErrors(bj['errors']);throw new Error('Guard\x20validation\x20failed\x20for\x20file\x20\x27'+bg['file_path']+'\x27:\x0a\x0a'+bm);}const bk=bj['data'];bb['root']={'type':'node','node':bk['root']},bk['table']!==undefined&&bb['table']===undefined&&(bb['table']=bk['table']),bk['description']!==undefined&&bb['description']===undefined&&(bb['description']=bk['description']),bk['rely']!==undefined&&bb['rely']===undefined&&(bb['rely']=bk['rely']),bk['namedNew']!==undefined&&bb['namedNew']===undefined&&(bb['namedNew']=bk['namedNew']);}if(bb['root']&&typeof bb['root']==='object'){const bn=bb['root'];bn['type']==='node'&&bn['node']&&(bb['root']=bn['node']);}if(!bb['table']||bb['table']['length']===0x0)throw new Error('Guard\x20\x27table\x27\x20field\x20is\x20required\x20and\x20cannot\x20be\x20empty');if(!bb['root'])throw new Error('Guard\x20\x27root\x27\x20field\x20is\x20required');const bd=new CallGuard(bb),be=await bd['call'](f);if(be&&typeof be==='object'&&'digest'in be&&be?.['effects']?.['status']?.['status']==='success')try{const bo=bb['root']?.['type']??'<unknown>',bp=Array['isArray'](bb['table'])?bb['table']:[],bq=bp['length'],br=bp['filter'](bw=>bw?.['b_submission']===!![])['length'],bs=bb['rely']?.['guards'],bt=Array['isArray'](bs)?bs['length']:0x0,bu=bb['rely']?.['logic_or']===!![]?'OR':bb['rely']?.['logic_or']===![]?'AND':'none',bv=['GUARD\x20LOGIC\x20SUMMARY:','\x20\x20•\x20root\x20type:\x20'+bo,'\x20\x20•\x20table\x20entries:\x20'+bq+'\x20('+br+'\x20require\x20runtime\x20submission)'];bt>0x0&&bv['push']('\x20\x20•\x20relies\x20on:\x20'+bt+'\x20guard(s)\x20(mode:\x20'+bu+')');if(bb['description']){const bw=String(bb['description'])['slice'](0x0,0x50);bv['push']('\x20\x20•\x20description:\x20\x22'+bw+'\x22');}c['push'](bv['join']('\x0a'));}catch{}const bf=handleCallResult(be,m(b['data']));return d(n,o,b['operation_type'],be)['catch'](()=>{}),bf;}case'personal':{const bx=transformPersonalInput(b['data']),by=new CallPersonal(bx),bz=await by['call'](f),bA=handleCallResult(bz,m(b['data']));return d(n,o,b['operation_type'],bz)['catch'](()=>{}),bA;}case'payment':{const bB=await prepareFundOperation(b['data'],'payment',f?.['network']);if(bB['blockingErrors']['length']>0x0)return buildFundBlockResult(bB,'payment');c['push'](...bB['warnings']);if(bB['confirmation']){c['push'](bB['confirmation']['message']);const bG=a395b(bB['confirmation']);if(bG)c['push'](bG);}const bC=b['data'];if(bC?.['receive']===!![]){const bH=typeof bC?.['object']==='string'&&bC['object']['length']>0x0;c['push']('RECEIVE\x20MODE\x20(order_claim):\x20You\x20are\x20unwrapping\x20CoinWrapper(s)\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\x20CoinWrapper(s)\x20to\x20your\x20wallet\x20(owned\x20but\x20not\x20spendable)\x0a'+'\x20\x203.\x20'+(bH?'THIS\x20operation\x20unwraps\x20the\x20specified\x20CoinWrapper\x20via\x20payment::unwrap_to_myself':'AUTO-RECEIVE:\x20this\x20operation\x20unwraps\x20EVERY\x20CoinWrapper\x20currently\x20owned\x20by\x20you\x20in\x20a\x20single\x20transaction')+',\x20deleting\x20the\x20CoinWrapper(s)\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'+(bH?'\x20\x20-\x20object\x20can\x20be\x20a\x20CoinWrapper\x20ID\x20(0x...)\x20or\x20a\x20local\x20mark\x20name\x0a':'\x20\x20-\x20When\x20\x27object\x27\x20is\x20omitted,\x20no\x20wrapper\x20lookup\x20is\x20needed\x20—\x20all\x20your\x20CoinWrappers\x20are\x20unwrapped\x20at\x20once\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 bC?.['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 bD=new CallPayment(b['data']),bE=await bD['call'](f),bF=handleCallResult(bE,m(b['data']));return d(n,o,b['operation_type'],bE)['catch'](()=>{}),bF;}case'demand':{const bI=new CallDemand(b['data']),bJ=b['submission']?await bI['call_with_submission'](f,await transformSubmission(b['submission'])):await bI['call'](f),bK=await buildGuardSubmissionPrompt(bJ,'demand',{'network':f?.['network'],'signer':f?.['account'],'extra':{'demand':b['data']?.['object']}});if(bK)c['push'](bK);const bL=handleCallResult(bJ,m(b['data']));return d(n,o,b['operation_type'],bJ)['catch'](()=>{}),bL;}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 bM=new CallOrder(b['data']),bN=b['submission']?await bM['call_with_submission'](f,await transformSubmission(b['submission'])):await bM['call'](f),bO=await buildGuardSubmissionPrompt(bN,'order',{'network':f?.['network'],'signer':f?.['account'],'order_address':b['data']?.['object']});if(bO)c['push'](bO);const bP=handleCallResult(bN,m(b['data']));if(bN&&typeof bN==='object'&&'digest'in bN&&bN?.['effects']?.['status']?.['status']==='success'&&b['data']?.['progress']&&typeof b['data']?.['object']==='string')try{const bQ=b['data']['object'],bR=bQ['startsWith']('0x')?bQ:await LocalMark['Instance']()['get_address'](bQ)??undefined;let bS;if(bR){const bT=await query_objects({'objects':[bR],'no_cache':!![],'network':f?.['network']}),bU=bT?.['objects']?.[0x0];bS=(bU?.['data']??bU)?.['progress'];}if(bS){const bV=b['data']['progress']?.['operation'],bW=await enrichWorkflowGuidance({'progressRef':bS,'network':f?.['network'],'accountName':f?.['account'],'noCache':!![],'operate':bV?.['forward']&&bV?.['next_node_name']?{'forward':bV['forward'],'next_node_name':bV['next_node_name'],'op':b['data']['progress']?.['op']}:undefined});mergeGuidanceIntoOutput(bP,bW);}}catch{}return d(n,o,b['operation_type'],bN)['catch'](()=>{}),bP;}case'gen_passport':{const bX=await gen_passport(f,b['guard'],b['info']),bY=handleCallResult(bX,m(b['data']));return d(n,o,b['operation_type'],bX)['catch'](()=>{}),bY;}case'proof':{const bZ=new CallProof(b['data']),c0=b['submission']?await bZ['call_with_submission'](f,await transformSubmission(b['submission'])):await bZ['call'](f),c1=await buildGuardSubmissionPrompt(c0,'proof',{'network':f?.['network'],'signer':f?.['account']});if(c1)c['push'](c1);const c2=handleCallResult(c0,m(b['data']));return d(n,o,b['operation_type'],c0)['catch'](()=>{}),c2;}case'gen_proof':{const c3=await gen_proof(f,b['proof'],b['server_pubkey'],b['server_signature'],b['proof_type'],b['description'],b['item_count'],b['about_address']),c4=handleCallResult(c3,m(b['data']));return d(n,o,b['operation_type'],c3)['catch'](()=>{}),c4;}}const r=b;throw new Error('Unknown\x20on-chain\x20operation\x20type:\x20'+String(r['operation_type']));}catch(c5){const c6=c5 instanceof Error?c5['message']:String(c5),c7=b?.['operation_type'],c8=b&&'data'in b?b['data']:undefined;return handleCallResult({'error':c6},c7?{'operation_type':c7,'data':c8}:undefined);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{query_objects,query_transaction,objectTypeFromAddress}from'@wowok/wowok';import{LocalMark
|
|
1
|
+
import{query_objects,query_transaction,objectTypeFromAddress}from'@wowok/wowok';import{LocalMark}from'@wowok/wowok/w/local';import{strictParse,PermissionOperationInputSchema}from'../../schema/index.js';import{fetchEntityPermission,fetchObjectLinkerCore,fetchObjectLinkerTx,listLocalAccounts}from'../../knowledge/index.js';async function listOnePermission(a,b,c,d){const e=a['toLowerCase'](),[f,g]=await Promise['all']([query_objects({'objects':[e],'no_cache':d,'network':c}),Promise['all'](b['map'](l=>fetchEntityPermission(l['address'],c,d)))]),h=f?.['objects']?.[0x0],i=h?.['data']??h;if(!i||!i['builder']&&!i['description']&&i['entity_count']==null)return undefined;const j=String(i?.['builder']??'')['toLowerCase'](),k=g['flatMap']((l,m)=>{const n=l?.['byPermission']['get'](e);if(n==null)return[];return[{'account':b[m]['address'],'name':b[m]['name'],'role':n,'time':0x0,'is_owner':(n&0x1)!==0x0,'is_admin':(n&0x2)!==0x0,'is_entity':(n&0x4)!==0x0}];});return{'permission':e,'owner':j,'description':String(i?.['description']??''),'accounts':k,'related_accounts':{'owner':j?0x1:0x0,'admin':Array['isArray'](i?.['admin'])?i['admin']['length']:0x0,'entity':Number(i?.['entity_count']??0x0)}};}async function handleList(b){const c=b['network'],e=b['no_cache'],f=b['limit']??0x64,g=b['permission']?((()=>{const B=String(b['permission'])['trim']()['toLowerCase']();return B['startsWith']('0x')?B:'0x'+B;})()):undefined,h=await listLocalAccounts();if(h['length']===0x0){const B={'action':'list','permissions':[],'note':'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':B})}],'structuredContent':{'result':B}};}if(g){const C=await listOnePermission(g,h,c,e),D=C?{'action':'list','permissions':[C]}:{'action':'list','permissions':[],'note':'Permission\x20'+g+'\x20not\x20found\x20on-chain.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':D})}],'structuredContent':{'result':D}};}const i=new Map(),j=await Promise['all'](h['map'](E=>fetchEntityPermission(E['address'],c,e)));h['forEach']((E,F)=>{const G=j[F];if(!G)return;for(const H of G['items']){const I=H['permission'];let J=i['get'](I);!J&&(J=[],i['set'](I,J)),J['push']({'account':E['address'],'name':E['name'],'role':H['role'],'time':H['time']});}});const k=[...i['keys']()];if(k['length']===0x0){const E={'action':'list','permissions':[],'note':'No\x20permissions\x20related\x20to\x20local\x20accounts.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':E})}],'structuredContent':{'result':E}};}const l=await query_objects({'objects':k,'no_cache':e,'network':c}),p=new Map();for(const F of l?.['objects']??[]){const G=F?.['data']??F,H=String(F?.['object']??G?.['object']??G?.['id']??'')['toLowerCase']();p['set'](H,G);}const [q,r]=await Promise['all']([Promise['all'](k['map'](async I=>{const J=p['get'](I['toLowerCase']()),K=J?.['previousTransaction'];if(!K)return[I['toLowerCase'](),undefined];try{const L=await query_transaction({'digest':K,'network':c,'no_cache':e});return[I['toLowerCase'](),L?.['timestamp_ms']];}catch{return[I['toLowerCase'](),undefined];}})),Promise['all'](k['map'](async I=>{try{const [J,K]=await Promise['all']([fetchObjectLinkerCore(I,c,e),fetchObjectLinkerTx(I,c,e)]);return[I['toLowerCase'](),{'core':J,'tx':K}];}catch{return[I['toLowerCase'](),undefined];}}))]),s=new Map(q),u=new Map(r),v=new Map();for(const I of h){if(I['name'])v['set'](String(I['address'])['toLowerCase'](),I['name']);}const w=new Map(),x=new Map();try{const J=await LocalMark['Instance']()['list']({});for(const K of J){const L=K?.['name'],M=typeof L==='string'?L:L?.['value'];if(M)w['set'](String(K['address'])['toLowerCase'](),M);const N=K?.['tags'];if(Array['isArray'](N)){const O=N['map'](P=>String(P))['filter'](Boolean);if(O['length'])x['set'](String(K['address'])['toLowerCase'](),O);}}}catch{}const y=P=>v['get'](P['toLowerCase']())??w['get'](P['toLowerCase']()),z=[];for(const P of k){const Q=P['toLowerCase'](),R=p['get'](Q),S=i['get'](P)??[],T=String(R?.['builder']??'')['toLowerCase'](),U=Array['isArray'](R?.['admin'])?R['admin']:[],V=Number(R?.['entity_count']??0x0),W=u['get'](Q),X=(W?.['core']?.['items']??[])['map'](a3=>String(a3?.['who'])),Y=(W?.['tx']?.['items']??[])['map'](a3=>String(a3?.['who'])),Z=[...X,...Y],a0=new Map();for(const a3 of Z){const a4=objectTypeFromAddress(a3)??'Personal';let a5=a0['get'](a4);!a5&&(a5=[],a0['set'](a4,a5)),a5['push'](a3);}const a1=[...a0['entries']()]['map'](([a6,a7])=>({'type':a6,'count':a7['length'],'objects':a7})),a2=S['map'](a6=>({'account':a6['account'],'name':a6['name'],'role':a6['role'],'time':a6['time'],'is_owner':(a6['role']&0x1)!==0x0,'is_admin':(a6['role']&0x2)!==0x0,'is_entity':(a6['role']&0x4)!==0x0}));z['push']({'permission':P,'permission_name':y(P),'description':String(R?.['description']??''),'owner':T,'owner_name':y(T),'updated_timestamp_ms':s['get'](Q),'accounts':a2,'related_accounts':{'owner':T?0x1:0x0,'admin':U['length'],'entity':V},'related_objects':a1['map'](a6=>({...a6,'object_names':a6['objects']['map'](a7=>y(a7)??''),'object_tags':a6['objects']['map'](a7=>x['get'](a7['toLowerCase']())??[])})),'related_object_count':Z['length'],'tags':x['get'](P['toLowerCase']())??[]});if(z['length']>=f)break;}const A={'action':'list','permissions':z};return{'content':[{'type':'text','text':JSON['stringify']({'result':A})}],'structuredContent':{'result':A}};}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,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
|
|
1
|
+
import{strictParse}from'../../schema/index.js';import{PersonaOperationInputSchema}from'../../schema/persona/index.js';import{GENERIC_PERSONA,analyzePersonaContext,applyAnalysisToCurrent,countPersonaLines,distillGoalToProposal,gatherGoalEvidence,getEffectivePersona,getPersonaStore,listIndustryDefaults,personaToContextText,personaToInjection,syncExperienceToCurrent,validatePersona,resolveStrategyIntents,suggestLevers,resolveLocalRegion,proposeLocalRegionSave}from'../../persona/index.js';import{goalStore}from'../../goal/GoalStore.js';import{resolveNetwork}from'./network.js';import{Account}from'@wowok/wowok/w/local';async function resolveDefaultAccountAddress(){try{const a=new Account(),b=await a['default'](![]);return b?.['address'];}catch{return undefined;}}async function resolvePersonaReadAccount(a){if(a)return a;return resolveDefaultAccountAddress();}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 resolvePersonaReadAccount(b['account']),f=await getEffectivePersona(e,b['industry'],b['role']);d={'action':'get','target_account':e,'effective':f,'context_text':personaToContextText(f),'injection':personaToInjection(f)};break;}case'list':{d={'action':'list','personas':await c['list'](),'defaults':listIndustryDefaults()};break;}case'set':{const g=b['scope']==='account'&&b['account']?await c['get']('account',b['account']):await c['get']('system'),h={'version':0x1,'scope':b['scope'],'account':b['scope']==='account'?b['account']:undefined,'role':b['role'],'industries':b['industries'],'long_term':b['long_term']??g?.['long_term']??{},'current':b['current']??g?.['current']??{},'updated_at':Date['now']()},i=validatePersona(h);if(i['length']>0x0)throw new Error('persona\x20invalid:\x20'+i['join'](';\x20'));await c['put'](h),d={'action':'set','persona':h,'line_count':countPersonaLines(h)};break;}case'analyze':{d={'action':'analyze','analysis':analyzePersonaContext(b['context'])};break;}case'apply':{const j=analyzePersonaContext(b['context']),k=await applyAnalysisToCurrent(b['scope'],b['account'],j,b['mode']??'merge',b['role'],b['industries']);d={'action':'apply','persona':k,'effective':await getEffectivePersona(b['account'],undefined,k['role']),'applied':j['suggestions']};break;}case'sync':{const l=await syncExperienceToCurrent(b['account']);d={'action':'sync','persona':l['persona'],'applied':l['applied'],'effective':l['effective']};break;}case'remove':{const m=b['scope']==='account'&&b['account']?await c['delete']('account',b['account']):await c['delete']('system');d={'action':'remove','removed':m};break;}case'strategy':{const n=await resolvePersonaReadAccount(b['account']),o=await getEffectivePersona(n,undefined,b['role']),p=b['role']??o['role'],q=b['strategy']??o['layer']['strategy']??[],r=resolveStrategyIntents(p,q),s=r['flatMap'](suggestLevers);d={'action':'strategy','role':p,'intents':r,'suggestions':s,'note':p==='merchant'?'':'strategy→lever\x20mapping\x20is\x20a\x20producer-side\x20concept;\x20only\x20merchant\x20personas\x20map\x20to\x20infrastructure\x20levers.'};break;}case'region_hint':{let t;try{t=await resolveLocalRegion();}catch{t=undefined;}const u=b['propose']!==undefined?proposeLocalRegionSave(b['propose']):undefined;d={'action':'region_hint','hint':t,'proposal':u,'note':t===undefined&&u===undefined?'No\x20locally-stored\x20delivery\x20address;\x20pass\x20`propose`\x20to\x20create\x20a\x20consent-gated\x20save\x20proposal.':undefined};break;}case'distill':{const v=await resolveNetwork(b['network']),w=await goalStore['get'](v,b['goal_id']);if(!w)throw new Error('goal\x20not\x20found:\x20'+b['goal_id']+'\x20(network\x20'+v+')');const x=gatherGoalEvidence(w),y=distillGoalToProposal(w,x);d={'action':'distill','summary':y['summary'],'current_delta':y['current_delta'],'evidence':x,'apply_via':y['apply_via'],'goal':{'id':w['id'],'title':w['title'],...w['outcome']?{'outcome_success':w['outcome']['success']}:{}}};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{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade}from'../upgrade-check.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_objects,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,generateNodeComments,query_object_last_updated}from'@wowok/wowok';import{computeServiceTrustSummary}from'./trust.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(j,k)=>{if(j===null||j===undefined)return undefined;if(typeof j!=='string'&&typeof j!=='number'&&typeof j!=='bigint')return undefined;if(typeof k!=='string'||!k)return undefined;return formatChainValue(j,k,b);},g=a['balance'];if(g&&typeof g==='object'){const j=g['coinType'],k=await f(g['totalBalance'],j);if(k)e['balance.totalBalance']=k;if(g['lockedBalance']!==undefined){const l=await f(g['lockedBalance'],j);if(l)e['balance.lockedBalance']=l;}}const h=a['coin']?.['data'];if(Array['isArray'](h))for(let m=0x0;m<h['length'];m++){const n=h[m],o=await f(n?.['balance'],n?.['coinType']);if(o)e['coin.data['+m+'].balance']=o;}Object['keys'](e)['length']>0x0&&(a['_money_display']=e);}export async function handleWatchQueryOperations(a){const c=strictParse(WatchQueryOperationsSchema,a,'watch_and_query\x20input');let d;switch(c['query_type']){case'local_mark_list':{const e=await query_local_mark_list(c['filter']||{});d={'query_type':'local_mark_list','result':e};break;}case'account_list':{const f=await query_account_list(c['filter']);d={'query_type':'account_list','result':f};break;}case'local_info_list':{const g=await query_local_info_list(c['filter']);d={'query_type':'local_info_list','result':g};break;}case'token_list':{const h=await query_local_token_list(c['filter']||{});d={'query_type':'token_list','result':h};break;}case'account_balance':{const j=await query_account({'name_or_address':c['name_or_address'],'token_type':c['token_type'],'balance':c['balance'],'coin':c['coin'],'network':c['network']});await annotateAccountBalance(j,c['network']),d={'query_type':'account_balance','result':j};break;}case'local_names':{const k=await GetLocalNamesByAddresses(c['addresses']);d={'query_type':'local_names','result':k};break;}case'onchain_personal_profile':{const l=await query_personal({'account':c['account'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_personal_profile','result':l};break;}case'onchain_objects':{const m=await query_objects({'objects':c['objects'],'no_cache':c['no_cache'],'network':c['network']});if(m&&m['objects']&&Array['isArray'](m['objects'])){m['objects']=m['objects']['map'](n=>{if(n&&n['data']&&n['data']['type']==='Guard'&&n['data']['root'])try{const o=generateNodeComments(n['data']['root']);return{...n,'_guard_node_comments':o};}catch(p){return n;}return n;}),m['objects']=m['objects']['map'](n=>{if(n&&n['data']&&n['data']['type']==='Progress'&&n['data']['current']===''){const o=n['data']['machine'],p=n['data']['task'];return{...n,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':o??null,'bound_order_id':p??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](o)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return n;});for(const n of m['objects']){const o=n?.['data']??n;if((n?.['type']??o?.['type'])!=='Progress')continue;const p=n?.['object']??o?.['object'];if(!p)continue;try{const q=await enrichWorkflowGuidance({'progressRef':p,'network':c['network'],'noCache':c['no_cache']});if(q?.['guidance']){n['_workflow_guidance']=q['guidance'];if(q['text'])n['_workflow_guidance_text']=q['text'];}}catch{}}for(const r of m['objects']){try{await annotateObjectMonetaryFields(r,c['network']);}catch{}}}d={'query_type':'onchain_objects','result':m};break;}case'onchain_received':{const s=await query_received({'name_or_address':normalizeAccountOrMark(c['name_or_address']),'type':c['type'],'cursor':c['cursor'],'limit':c['limit'],'no_cache':c['no_cache'],'network':c['network']}),t=s;if(t&&typeof t==='object'&&typeof t['balance']==='bigint'){const u=t['token_type'];t['balance']=t['balance']['toString']();if(Array['isArray'](t['received']))for(const v of t['received']){v&&typeof v['balance']==='bigint'&&(v['balance']=v['balance']['toString']());}if(u)try{const w={'balance':await formatChainValue(t['balance'],u,c['network'])};if(Array['isArray'](t['received']))for(let x=0x0;x<t['received']['length'];x++){const y=t['received'][x]?.['balance'];y!==undefined&&y!==null&&(w['received['+x+'].balance']=await formatChainValue(y,u,c['network']));}t['_money_display']=w;}catch{}}d={'query_type':'onchain_received','result':t};break;}case'onchain_transaction':{const z=await query_transaction({'digest':c['digest'],'no_cache':c['no_cache'],'network':c['network']});try{await annotateBalanceChanges(z?.['balance_changes'],c['network']);}catch{}d={'query_type':'onchain_transaction','result':z};break;}case'onchain_object_history':{const A=await query_object_history({'object':c['object'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_object_history','result':A};break;}case'onchain_last_updated':{const B=c['objects']??[],C=await Promise['allSettled'](B['map'](E=>query_object_last_updated({'object':E,'network':c['network']}))),D=B['map']((E,F)=>{const G=C[F],H=G['status']==='fulfilled'?G['value']:null;return{'object':E,'timestamp_ms':H?.['timestamp_ms']?String(H['timestamp_ms']):null,'digest':H?.['digest']??null,'sender':H?.['sender']??null};});d={'query_type':'onchain_last_updated','result':{'items':D}};break;}case'onchain_address_activity':{const E=typeof c['name_or_address']==='string'?c['name_or_address']:c['name_or_address']['name_or_address'],F=await query_address_activity({'name_or_address':E,'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_address_activity','result':F};break;}case'token_value_convert':{const G=c['raw']!==undefined,H=c['unit']!==undefined;if(G===H)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](c['raw'])+',\x20')+('unit='+JSON['stringify'](c['unit'])+'.'));const I=await convertTokenValue(c['token_type'],G?{'raw':c['raw']}:{'unit':c['unit']},c['network']);d={'query_type':'token_value_convert','result':I};break;}case'address_profile':{const J=await query_address_profile({'address':c['address'],'no_cache':c['no_cache'],'network':c['network']}),K=J,L=K?.['object'],M=K?.['kind']==='Service'||L&&(L['type']==='Service'||(L['type_raw']??'')['includes']('::service::'));if(M&&K){let N=null;try{const a2=await query_object_last_updated({'object':K['address'],'network':c['network']});a2?.['timestamp_ms']&&(N={'timestamp_ms':a2['timestamp_ms'],'digest':a2['digest'],'sender':a2['sender']});}catch{}let O=null;try{O=await computeServiceTrustSummary({'service':K['address'],'depth':'evaluate','network':c['network'],'no_cache':c['no_cache']});}catch{}const P=K?.['reverse_core'],Q=K?.['reverse_tx'],R=Array['isArray'](P?.['items'])?P['items']['length']:0x0,S=Array['isArray'](Q?.['items'])?Q['items']['length']:0x0,T=(S>0x0?Q['items']:[])['filter'](a3=>objectTypeFromAddress(a3?.['who'])===ObjectType['Order']),U=T['length'],V=![],W=Array['isArray'](K?.['reputation']?.['votes'])?K['reputation']['votes']:[],X=L?.['type_raw']??L?.['type']??'',Y=X['match'](/<(.+)>$/),Z=Y?Y[0x1]:null,a0=Z?(Z['split']('::')['pop']()??Z)['toUpperCase']():null,a1=Array['isArray'](L?.['sales'])?L['sales']:[];K['service_analysis']={'description':L?.['description']??null,'sales_count':a1['length'],'live_sales_count':a1['filter'](a3=>a3&&!a3['suspension'])['length'],'paused_sales_count':a1['filter'](a3=>a3&&a3['suspension'])['length'],'orders_count':U,'orders_count_truncated':V,'like_count':W['filter'](a3=>a3&&a3['like'])['length'],'dislike_count':W['filter'](a3=>a3&&a3['dislike'])['length'],'favor_count':W['filter'](a3=>a3&&a3['favor'])['length'],'votes':W['map'](a3=>({'who':a3?.['who']??null,'like':!!a3?.['like'],'dislike':!!a3?.['dislike'],'favor':!!a3?.['favor'],'time':a3?.['time']??null})),'coin_type':Z,'token_symbol':a0,'location':L?.['location']??null,'bPublished':L?.['bPublished']??null,'bPaused':L?.['bPaused']??null,'related_core_count':R,'related_tx_count':S,'related_object_count':R+S,'onchain_last_updated':N,'trust':O};}d={'query_type':'address_profile','result':J};break;}case'service_supply_chain':{const a3=await resolveSupplyChainGraph(typeof c['address']==='string'?c['address']:c['address']?.['name_or_address']??String(c['address']),c['network']);d={'query_type':'service_supply_chain','result':a3};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22service_supply_chain\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d,'semantic':buildDataSemantic(d,{'operation_type':'query_toolkit','data':c})}};}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const h=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':h};break;}case'onchain_table_item_reward_record':{const j=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(j)try{const k=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(j,k,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':j};break;}case'onchain_table_item_demand_presenter':{const l=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':l};break;}case'onchain_table_item_treasury_history':{const m=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(m)try{const n=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(m,n,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':m};break;}case'onchain_table_item_machine_node':{const p=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':p};break;}case'onchain_table_item_progress_history':{const q=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':q};break;}case'onchain_table_item_address_mark':{const s=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':s};break;}case'onchain_table_item_entity_registrar':{const u=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':u};break;}case'onchain_table_item_entity_linker':{const v=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':v};break;}case'onchain_table_item_entity_contact':{const w=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':w};break;}case'onchain_table_item_entity_order':{const x=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':x};break;}case'onchain_orders_of_user':{let y;try{y=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(z){const A=z instanceof Error?z['message']:String(z);if(/dynamicFieldNotFound/i['test'](A))y=[];else throw z;}c={'query_type':'onchain_orders_of_user','result':y};break;}case'onchain_orders_of_users':{const B=b['addresses']??[],C=[],D=await Promise['allSettled'](B['map'](async O=>{try{const P=await queryOrdersByUser({'address':O,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(O?.['name_or_address']??''),'views':Array['isArray'](P)?P:[]};}catch(Q){const R=Q instanceof Error?Q['message']:String(Q);if(/dynamicFieldNotFound/i['test'](R))return{'account':String(O?.['name_or_address']??''),'views':[]};throw Q;}})),E=[];for(let O=0x0;O<B['length'];O++){const P=D[O];if(P['status']==='fulfilled')E['push'](P['value']);else{const Q=P['reason']instanceof Error?P['reason']['message']:String(P['reason']);C['push'](String(B[O]?.['name_or_address']??'?')+':\x20'+Q);}}const F=Array['from'](new Set(E['flatMap'](R=>R['views']['map'](S=>typeof S?.['order']?.['object']==='string'?S['order']['object']:typeof S?.['order']==='string'?S['order']:'')['filter'](Boolean)))),G=new Map();try{if(F['length']>0x0){const R=await query_objects({'objects':F,'network':b['network']});for(const S of R?.['objects']??[]){if(S&&S['type']===ObjectType['Order'])G['set'](S['object'],S);}}}catch{C['push']('order\x20details\x20unavailable\x20(non-blocking)');}const H=new Map(),I=new Map(),J=new Map();try{const T=new Set();for(const U of G['values']()){if(U?.['progress'])T['add'](U['progress']);if(U?.['allocation'])T['add'](U['allocation']);}if(T['size']>0x0){const V=await query_objects({'objects':Array['from'](T),'network':b['network']});for(const W of V?.['objects']??[]){if(!W?.['object'])continue;if(W['type']===ObjectType['Progress']){const X=W?.['current'];H['set'](W['object'],typeof X==='string'&&X!==''?X:null),I['set'](W['object'],Number(W?.['current_time'])||null);}else{if(W['type']===ObjectType['Allocation']){const Y=Number(W?.['balance']??0x0);J['set'](W['object'],Number['isFinite'](Y)&&Y===0x0?'allocated':'pending');}}}}}catch{C['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const K=new Map();try{const Z=await Promise['allSettled'](F['map'](a0=>query_object_last_updated({'object':a0,'network':b['network']})));for(let a0=0x0;a0<F['length'];a0++){const a1=Z[a0];K['set'](F[a0],a1['status']==='fulfilled'&&a1['value']?.['timestamp_ms']?Number(a1['value']['timestamp_ms'])||null:null);}}catch{C['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const L=new Map();try{const a2=Array['from'](new Set(Array['from'](G['values']())['map'](a3=>typeof a3?.['service']==='string'?a3['service']:'')['filter'](Boolean)));if(a2['length']>0x0){const a3=await query_objects({'objects':a2,'network':b['network']});for(const a4 of a3?.['objects']??[]){if(!a4?.['object'])continue;const a5=a4?.['type_raw']??a4?.['type']??'',a6=a5['match'](/<(.+)>$/);L['set'](a4['object'],a6?a6[0x1]:null);}}}catch{C['push']('payment\x20token\x20resolution\x20unavailable\x20(non-blocking)');}const M=async(a7,a8)=>{if(a8===null||a8===undefined||a8==='')return{'display':'','tip':''};if(!a7)return{'display':a8,'tip':''};try{const a9=await formatChainValue(a8,a7,b['network']);if(a9['precision_known'])return{'display':a9['symbol']?a9['display']+'\x20'+a9['symbol']:a9['display'],'tip':a9['text']};return{'display':a8,'tip':''};}catch{return{'display':a8,'tip':''};}},N=[];for(const a7 of F){const a8=G['get'](a7),a9=E['filter'](ad=>ad['views']['some'](ae=>(typeof ae?.['order']?.['object']==='string'?ae['order']['object']:ae?.['order'])===a7))['map'](ad=>{const ae=ad['views']['find'](af=>(typeof af?.['order']?.['object']==='string'?af['order']['object']:af?.['order'])===a7);return{'account':ad['account'],'is_owner':!!ae?.['is_owner'],'is_agent':!!ae?.['is_agent'],'time':ae?.['time']};}),aa=L['get'](String(a8?.['service']??''))??null,ab=a8?.['amount']!==null&&a8?.['amount']!==undefined?String(a8['amount']):'',ac=await M(aa,ab);N['push']({'order':a7,'roles':a9,'time':a8?Number(a8['time'])||0x0:0x0,'updated_ms':K['get'](a7)??null,'amount':ab,'amount_display':ac['display'],'amount_tip':ac['tip'],'service':a8?.['service']??null,'machine':a8?.['machine']??null,'progress':a8?.['progress']??null,'allocation':a8?.['allocation']??null,'owner':ownerAddrOf(a8?.['builder']??a8?.['owner']),'claimed_by':a8?.['claimed_by']??null,'required_info':a8?.['required_info']??null,'progress_next':a8?.['progress']?H['get'](a8['progress'])??null:null,'progress_since':a8?.['progress']?I['get'](a8['progress'])??null:null,'allocation_state':a8?.['allocation']?J['get'](a8['allocation'])??'pending':'none','disputes':Array['isArray'](a8?.['dispute'])?a8['dispute']:[],'agents':Array['isArray'](a8?.['agent'])?a8['agent']:[],'items':await Promise['all']((Array['isArray'](a8?.['items'])?a8['items']:[])['map'](async ad=>{const ae=ad?.['price']!==null&&ad?.['price']!==undefined?String(ad['price']):'0';return{'name':String(ad?.['name']??''),'price':ae,'price_display':(await M(aa,ae))['display'],'quantity':String(ad?.['quantity']??'0'),'wip_hash':String(ad?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':N,...C['length']>0x0?{'account_errors':C}:{}};break;}case'onchain_table_item_object_linker_core':{const ad=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':ad};break;}case'onchain_table_item_object_linker_tx':{const ae=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':ae};break;}case'onchain_affiliations_of_object':{const af=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_affiliations_of_object','result':af};break;}case'onchain_table_item_generic':{const ag=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':ag};break;}default:throw new Error('Unknown\x20table\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22onchain_table\x22,\x20\x22onchain_table_item_repository_data\x22,\x20\x22onchain_table_item_permission_perm\x22,\x20\x22onchain_table_item_reward_record\x22,\x20\x22onchain_table_item_demand_presenter\x22,\x20\x22onchain_table_item_treasury_history\x22,\x20\x22onchain_table_item_machine_node\x22,\x20\x22onchain_table_item_progress_history\x22,\x20\x22onchain_table_item_address_mark\x22,\x20\x22onchain_table_item_entity_registrar\x22,\x20\x22onchain_table_item_entity_linker\x22,\x20\x22onchain_table_item_entity_contact\x22,\x20\x22onchain_table_item_entity_order\x22,\x20\x22onchain_orders_of_user\x22,\x20\x22onchain_orders_of_users\x22,\x20\x22onchain_table_item_object_linker_core\x22,\x20\x22onchain_table_item_object_linker_tx\x22,\x20\x22onchain_table_item_generic\x22.\x20For\x20address\x20profiles,\x20use\x20the\x20\x22query_toolkit\x22\x20tool\x20with\x20query_type=\x22address_profile\x22.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input');if(b['info']==='upgrade_check'){const d=await checkUpgrade(),e={'info':'upgrade_check','result':d};return{'content':[{'type':'text','text':JSON['stringify']({'result':e})}],'structuredContent':{'result':e}};}if(b['info']==='universal_template'){const f={'info':'universal_template','result':getUniversalTemplate()};return{'content':[{'type':'text','text':JSON['stringify']({'result':f})}],'structuredContent':{'result':f}};}const c=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|
|
1
|
+
import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade}from'../upgrade-check.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_objects,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,generateNodeComments,query_object_last_updated}from'@wowok/wowok';import{computeServiceTrustSummary}from'./trust.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await query_objects({'objects':d,'network':b});for(const j of i?.['objects']??[]){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const t=await query_object_last_updated({'object':a['address'],'network':b['network']});t?.['timestamp_ms']&&(e={'timestamp_ms':t['timestamp_ms'],'digest':t['digest'],'sender':t['sender']});}catch{}let f=null;try{f=await computeServiceTrustSummary({'service':a['address'],'depth':'evaluate','network':b['network'],'no_cache':b['no_cache']});}catch{}const g=a?.['reverse_core'],h=a?.['reverse_tx'],i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=Array['isArray'](h?.['items'])?h['items']['length']:0x0,k=(j>0x0?h['items']:[])['filter'](u=>objectTypeFromAddress(u?.['who'])===ObjectType['Order']),l=k['length'],m=![],n=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],o=c?.['type_raw']??c?.['type']??'',p=o['match'](/<(.+)>$/),q=p?p[0x1]:null,r=q?(q['split']('::')['pop']()??q)['toUpperCase']():null,s=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':s['length'],'live_sales_count':s['filter'](u=>u&&!u['suspension'])['length'],'paused_sales_count':s['filter'](u=>u&&u['suspension'])['length'],'orders_count':l,'orders_count_truncated':m,'like_count':n['filter'](u=>u&&u['like'])['length'],'dislike_count':n['filter'](u=>u&&u['dislike'])['length'],'favor_count':n['filter'](u=>u&&u['favor'])['length'],'votes':n['map'](u=>({'who':u?.['who']??null,'like':!!u?.['like'],'dislike':!!u?.['dislike'],'favor':!!u?.['favor'],'time':u?.['time']??null})),'coin_type':q,'token_symbol':r,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':i,'related_tx_count':j,'related_object_count':i+j,'onchain_last_updated':e,'trust':f};}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(j,k)=>{if(j===null||j===undefined)return undefined;if(typeof j!=='string'&&typeof j!=='number'&&typeof j!=='bigint')return undefined;if(typeof k!=='string'||!k)return undefined;return formatChainValue(j,k,b);},g=a['balance'];if(g&&typeof g==='object'){const j=g['coinType'],k=await f(g['totalBalance'],j);if(k)e['balance.totalBalance']=k;if(g['lockedBalance']!==undefined){const l=await f(g['lockedBalance'],j);if(l)e['balance.lockedBalance']=l;}}const h=a['coin']?.['data'];if(Array['isArray'](h))for(let m=0x0;m<h['length'];m++){const n=h[m],o=await f(n?.['balance'],n?.['coinType']);if(o)e['coin.data['+m+'].balance']=o;}Object['keys'](e)['length']>0x0&&(a['_money_display']=e);}export async function handleWatchQueryOperations(a){const c=strictParse(WatchQueryOperationsSchema,a,'watch_and_query\x20input');let d;switch(c['query_type']){case'local_mark_list':{const e=await query_local_mark_list(c['filter']||{});d={'query_type':'local_mark_list','result':e};break;}case'account_list':{const f=await query_account_list(c['filter']);d={'query_type':'account_list','result':f};break;}case'local_info_list':{const g=await query_local_info_list(c['filter']);d={'query_type':'local_info_list','result':g};break;}case'token_list':{const h=await query_local_token_list(c['filter']||{});d={'query_type':'token_list','result':h};break;}case'account_balance':{const j=await query_account({'name_or_address':c['name_or_address'],'token_type':c['token_type'],'balance':c['balance'],'coin':c['coin'],'network':c['network']});await annotateAccountBalance(j,c['network']),d={'query_type':'account_balance','result':j};break;}case'local_names':{const k=await GetLocalNamesByAddresses(c['addresses']);d={'query_type':'local_names','result':k};break;}case'onchain_personal_profile':{const l=await query_personal({'account':c['account'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_personal_profile','result':l};break;}case'onchain_objects':{const m=await query_objects({'objects':c['objects'],'no_cache':c['no_cache'],'network':c['network']});if(m&&m['objects']&&Array['isArray'](m['objects'])){m['objects']=m['objects']['map'](n=>{if(n&&n['data']&&n['data']['type']==='Guard'&&n['data']['root'])try{const o=generateNodeComments(n['data']['root']);return{...n,'_guard_node_comments':o};}catch(p){return n;}return n;}),m['objects']=m['objects']['map'](n=>{if(n&&n['data']&&n['data']['type']==='Progress'&&n['data']['current']===''){const o=n['data']['machine'],p=n['data']['task'];return{...n,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':o??null,'bound_order_id':p??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](o)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return n;});for(const n of m['objects']){const o=n?.['data']??n;if((n?.['type']??o?.['type'])!=='Progress')continue;const p=n?.['object']??o?.['object'];if(!p)continue;try{const q=await enrichWorkflowGuidance({'progressRef':p,'network':c['network'],'noCache':c['no_cache']});if(q?.['guidance']){n['_workflow_guidance']=q['guidance'];if(q['text'])n['_workflow_guidance_text']=q['text'];}}catch{}}for(const r of m['objects']){try{await annotateObjectMonetaryFields(r,c['network']);}catch{}}}d={'query_type':'onchain_objects','result':m};break;}case'onchain_received':{const s=await query_received({'name_or_address':normalizeAccountOrMark(c['name_or_address']),'type':c['type'],'cursor':c['cursor'],'limit':c['limit'],'no_cache':c['no_cache'],'network':c['network']}),t=s;if(t&&typeof t==='object'&&typeof t['balance']==='bigint'){const u=t['token_type'];t['balance']=t['balance']['toString']();if(Array['isArray'](t['received']))for(const v of t['received']){v&&typeof v['balance']==='bigint'&&(v['balance']=v['balance']['toString']());}if(u)try{const w={'balance':await formatChainValue(t['balance'],u,c['network'])};if(Array['isArray'](t['received']))for(let x=0x0;x<t['received']['length'];x++){const y=t['received'][x]?.['balance'];y!==undefined&&y!==null&&(w['received['+x+'].balance']=await formatChainValue(y,u,c['network']));}t['_money_display']=w;}catch{}}d={'query_type':'onchain_received','result':t};break;}case'onchain_transaction':{const z=await query_transaction({'digest':c['digest'],'no_cache':c['no_cache'],'network':c['network']});try{await annotateBalanceChanges(z?.['balance_changes'],c['network']);}catch{}d={'query_type':'onchain_transaction','result':z};break;}case'onchain_object_history':{const A=await query_object_history({'object':c['object'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_object_history','result':A};break;}case'onchain_last_updated':{const B=c['objects']??[],C=await Promise['allSettled'](B['map'](E=>query_object_last_updated({'object':E,'network':c['network']}))),D=B['map']((E,F)=>{const G=C[F],H=G['status']==='fulfilled'?G['value']:null;return{'object':E,'timestamp_ms':H?.['timestamp_ms']?String(H['timestamp_ms']):null,'digest':H?.['digest']??null,'sender':H?.['sender']??null};});d={'query_type':'onchain_last_updated','result':{'items':D}};break;}case'onchain_address_activity':{const E=typeof c['name_or_address']==='string'?c['name_or_address']:c['name_or_address']['name_or_address'],F=await query_address_activity({'name_or_address':E,'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_address_activity','result':F};break;}case'token_value_convert':{const G=c['raw']!==undefined,H=c['unit']!==undefined;if(G===H)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](c['raw'])+',\x20')+('unit='+JSON['stringify'](c['unit'])+'.'));const I=await convertTokenValue(c['token_type'],G?{'raw':c['raw']}:{'unit':c['unit']},c['network']);d={'query_type':'token_value_convert','result':I};break;}case'address_profile':{const J=await query_address_profile({'address':c['address'],'no_cache':c['no_cache'],'network':c['network']});await mergeServiceAnalysis(J,{'no_cache':c['no_cache'],'network':c['network']}),d={'query_type':'address_profile','result':J};break;}case'address_profiles':{const K=await query_address_profiles({'addresses':c['addresses'],'no_cache':c['no_cache'],'network':c['network']});await Promise['all'](K['map'](L=>mergeServiceAnalysis(L,{'no_cache':c['no_cache'],'network':c['network']}))),d={'query_type':'address_profiles','result':K};break;}case'service_supply_chain':{const L=await resolveSupplyChainGraph(typeof c['address']==='string'?c['address']:c['address']?.['name_or_address']??String(c['address']),c['network']);d={'query_type':'service_supply_chain','result':L};break;}case'assemble_context':{d={'query_type':'assemble_context','result':await assembleContext(c)};break;}case'reverse_map':{if(!c['context_objects']||c['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 M=c['context_network']??'testnet',N=await query_objects({'objects':c['context_objects'],'no_cache':![],'network':M}),O=N?.['objects']??[];d={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':O['length'],'report':generateBusinessReport({'objects':O,'order_amount':c['reverse_order_amount']})}};break;}case'service_panorama':d={'query_type':'service_panorama','result':await handleServicePanorama(c)};break;case'machine_panorama':d={'query_type':'machine_panorama','result':await handleMachinePanorama(c)};break;case'object_panorama':d={'query_type':'object_panorama','result':await handleObjectPanorama(c)};break;case'review_pack':d={'query_type':'review_pack','result':await handleReviewPack(c)};break;case'participation_radar':d={'query_type':'participation_radar','result':await handleParticipationRadar(c)};break;case'workspace_lists':d={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account']})};break;case'marks_of_account':d={'query_type':'marks_of_account','result':await buildAccountMarks({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account']})};break;default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d,'semantic':buildDataSemantic(d,{'operation_type':'query_toolkit','data':c})}};}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{let w;try{w=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(x){const y=x instanceof Error?x['message']:String(x);if(/dynamicFieldNotFound/i['test'](y))w=[];else throw x;}c={'query_type':'onchain_orders_of_user','result':w};break;}case'onchain_orders_of_users':{const z=b['addresses']??[],A=[],B=await Promise['allSettled'](z['map'](async M=>{try{const N=await queryOrdersByUser({'address':M,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(M?.['name_or_address']??''),'views':Array['isArray'](N)?N:[]};}catch(O){const P=O instanceof Error?O['message']:String(O);if(/dynamicFieldNotFound/i['test'](P))return{'account':String(M?.['name_or_address']??''),'views':[]};throw O;}})),C=[];for(let M=0x0;M<z['length'];M++){const N=B[M];if(N['status']==='fulfilled')C['push'](N['value']);else{const O=N['reason']instanceof Error?N['reason']['message']:String(N['reason']);A['push'](String(z[M]?.['name_or_address']??'?')+':\x20'+O);}}const D=Array['from'](new Set(C['flatMap'](P=>P['views']['map'](Q=>typeof Q?.['order']?.['object']==='string'?Q['order']['object']:typeof Q?.['order']==='string'?Q['order']:'')['filter'](Boolean)))),E=new Map();try{if(D['length']>0x0){const P=await query_objects({'objects':D,'network':b['network']});for(const Q of P?.['objects']??[]){if(Q&&Q['type']===ObjectType['Order'])E['set'](Q['object'],Q);}}}catch{A['push']('order\x20details\x20unavailable\x20(non-blocking)');}const F=new Map(),G=new Map(),H=new Map();try{const R=new Set();for(const S of E['values']()){if(S?.['progress'])R['add'](S['progress']);if(S?.['allocation'])R['add'](S['allocation']);}if(R['size']>0x0){const T=await query_objects({'objects':Array['from'](R),'network':b['network']});for(const U of T?.['objects']??[]){if(!U?.['object'])continue;if(U['type']===ObjectType['Progress']){const V=U?.['current'];F['set'](U['object'],typeof V==='string'&&V!==''?V:null),G['set'](U['object'],Number(U?.['current_time'])||null);}else{if(U['type']===ObjectType['Allocation']){const W=Number(U?.['balance']??0x0);H['set'](U['object'],Number['isFinite'](W)&&W===0x0?'allocated':'pending');}}}}}catch{A['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const I=new Map();try{const X=await Promise['allSettled'](D['map'](Y=>query_object_last_updated({'object':Y,'network':b['network'],'previous_transaction':E['get'](Y)?.['previousTransaction']??null})));for(let Y=0x0;Y<D['length'];Y++){const Z=X[Y];I['set'](D[Y],Z['status']==='fulfilled'&&Z['value']?.['timestamp_ms']?Number(Z['value']['timestamp_ms'])||null:null);}}catch{A['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const J=await coinTypesOfServices(Array['from'](new Set(Array['from'](E['values']())['map'](a0=>typeof a0?.['service']==='string'?a0['service']:'')['filter'](Boolean))),b['network']),K=async(a0,a1)=>{if(a1===null||a1===undefined||a1==='')return{'display':'','tip':''};if(!a0)return{'display':a1,'tip':''};try{const a2=await formatChainValue(a1,a0,b['network']);if(a2['precision_known'])return{'display':a2['symbol']?a2['display']+'\x20'+a2['symbol']:a2['display'],'tip':a2['text']};return{'display':a1,'tip':''};}catch{return{'display':a1,'tip':''};}},L=[];for(const a0 of D){const a1=E['get'](a0),a2=C['filter'](a6=>a6['views']['some'](a7=>(typeof a7?.['order']?.['object']==='string'?a7['order']['object']:a7?.['order'])===a0))['map'](a6=>{const a7=a6['views']['find'](a8=>(typeof a8?.['order']?.['object']==='string'?a8['order']['object']:a8?.['order'])===a0);return{'account':a6['account'],'is_owner':!!a7?.['is_owner'],'is_agent':!!a7?.['is_agent'],'time':a7?.['time']};}),a3=J['get'](String(a1?.['service']??''))??null,a4=a1?.['amount']!==null&&a1?.['amount']!==undefined?String(a1['amount']):'',a5=await K(a3,a4);L['push']({'order':a0,'roles':a2,'time':a1?Number(a1['time'])||0x0:0x0,'updated_ms':I['get'](a0)??null,'amount':a4,'amount_display':a5['display'],'amount_tip':a5['tip'],'service':a1?.['service']??null,'machine':a1?.['machine']??null,'progress':a1?.['progress']??null,'allocation':a1?.['allocation']??null,'owner':ownerAddrOf(a1?.['builder']??a1?.['owner']),'claimed_by':a1?.['claimed_by']??null,'required_info':a1?.['required_info']??null,'progress_next':a1?.['progress']?F['get'](a1['progress'])??null:null,'progress_since':a1?.['progress']?G['get'](a1['progress'])??null:null,'allocation_state':a1?.['allocation']?H['get'](a1['allocation'])??'pending':'none','disputes':Array['isArray'](a1?.['dispute'])?a1['dispute']:[],'agents':Array['isArray'](a1?.['agent'])?a1['agent']:[],'items':await Promise['all']((Array['isArray'](a1?.['items'])?a1['items']:[])['map'](async a6=>{const a7=a6?.['price']!==null&&a6?.['price']!==undefined?String(a6['price']):'0';return{'name':String(a6?.['name']??''),'price':a7,'price_display':(await K(a3,a7))['display'],'quantity':String(a6?.['quantity']??'0'),'wip_hash':String(a6?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':L,...A['length']>0x0?{'account_errors':A}:{}};break;}case'onchain_table_item_object_linker_core':{const a6=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a6};break;}case'onchain_table_item_object_linker_tx':{const a7=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a7};break;}case'onchain_affiliations_of_object':{const a8=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),a9=a8?.['entries'];Array['isArray'](a9)&&(a8['entries']=a9['filter'](aa=>{const ab=typeof aa?.['who']==='string'?aa['who']:'';return!!ab&&objectTypeFromAddress(ab)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':a8};break;}case'onchain_table_item_generic':{const aa=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':aa};break;}default:throw new Error('Unknown\x20table\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22onchain_table\x22,\x20\x22onchain_table_item_repository_data\x22,\x20\x22onchain_table_item_permission_perm\x22,\x20\x22onchain_table_item_reward_record\x22,\x20\x22onchain_table_item_demand_presenter\x22,\x20\x22onchain_table_item_treasury_history\x22,\x20\x22onchain_table_item_machine_node\x22,\x20\x22onchain_table_item_progress_history\x22,\x20\x22onchain_table_item_address_mark\x22,\x20\x22onchain_table_item_entity_registrar\x22,\x20\x22onchain_table_item_entity_linker\x22,\x20\x22onchain_table_item_entity_contact\x22,\x20\x22onchain_table_item_entity_order\x22,\x20\x22onchain_orders_of_user\x22,\x20\x22onchain_orders_of_users\x22,\x20\x22onchain_table_item_object_linker_core\x22,\x20\x22onchain_table_item_object_linker_tx\x22,\x20\x22onchain_table_item_generic\x22.\x20For\x20address\x20profiles,\x20use\x20the\x20\x22query_toolkit\x22\x20tool\x20with\x20query_type=\x22address_profile\x22.');}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input');if(b['info']==='upgrade_check'){const d=await checkUpgrade(),e={'info':'upgrade_check','result':d};return{'content':[{'type':'text','text':JSON['stringify']({'result':e})}],'structuredContent':{'result':e}};}if(b['info']==='universal_template'){const f={'info':'universal_template','result':getUniversalTemplate()};return{'content':[{'type':'text','text':JSON['stringify']({'result':f})}],'structuredContent':{'result':f}};}const c=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|