@wowok/agent-mcp 3.1.0 โ†’ 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/evaluation/arbitration-game.js +1 -1
  2. package/dist/evaluation/location-match.js +1 -1
  3. package/dist/goal/GoalClassifier.js +1 -1
  4. package/dist/graph/onchain/analyze.d.ts +3 -3
  5. package/dist/graph/onchain/analyze.js +1 -1
  6. package/dist/graph/onchain/analyze.spec.js +1 -1
  7. package/dist/graph/onchain/edge-schema.d.ts +1 -1
  8. package/dist/graph/onchain/edge-schema.js +1 -1
  9. package/dist/graph/onchain/interest.js +1 -1
  10. package/dist/graph/onchain/sdk-dataplane.js +1 -1
  11. package/dist/graph/onchain/types.d.ts +5 -5
  12. package/dist/harness/verify.js +1 -1
  13. package/dist/knowledge/allocation-ledger.d.ts +2 -0
  14. package/dist/knowledge/allocation-ledger.js +1 -1
  15. package/dist/knowledge/allocation-puzzle.js +1 -1
  16. package/dist/knowledge/allocation-risk.d.ts +2 -1
  17. package/dist/knowledge/allocation-risk.js +1 -1
  18. package/dist/knowledge/guard-design-patterns.js +1 -1
  19. package/dist/knowledge/guard-field-cognition.d.ts +48 -0
  20. package/dist/knowledge/guard-field-cognition.js +1 -0
  21. package/dist/knowledge/index.d.ts +1 -0
  22. package/dist/knowledge/index.js +1 -1
  23. package/dist/knowledge/industry-registry.js +1 -1
  24. package/dist/knowledge/industry-strategy.js +1 -1
  25. package/dist/knowledge/jsonrpc-enum.js +1 -1
  26. package/dist/knowledge/recipient-constraint.d.ts +6 -1
  27. package/dist/knowledge/recipient-constraint.js +1 -1
  28. package/dist/knowledge/service-allocator-audit-node.d.ts +3 -0
  29. package/dist/knowledge/service-allocator-audit-node.js +1 -0
  30. package/dist/knowledge/service-risk-node.js +1 -1
  31. package/dist/knowledge/template-registry.js +1 -1
  32. package/dist/knowledge/workflow-guidance.d.ts +2 -0
  33. package/dist/knowledge/workflow-guidance.js +1 -1
  34. package/dist/monitor/MonitorLoop.js +1 -1
  35. package/dist/persona/strategy-intent.js +1 -1
  36. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  37. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  38. package/dist/playbooks/service-build/object-panorama.js +1 -1
  39. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  40. package/dist/playbooks/service-build/topology-query.js +1 -1
  41. package/dist/safety/confirm-gate.js +1 -1
  42. package/dist/safety/preview.js +1 -1
  43. package/dist/schema/call/base.js +1 -1
  44. package/dist/schema/call/handler.js +1 -1
  45. package/dist/schema/call/semantic.js +1 -1
  46. package/dist/schema/common/index.js +1 -1
  47. package/dist/schema/evaluation/index.js +1 -1
  48. package/dist/schema/local/index.js +1 -1
  49. package/dist/schema/operations.d.ts +2 -0
  50. package/dist/schema/query/bi.d.ts +16 -14
  51. package/dist/schema/query/bi.js +1 -1
  52. package/dist/schema/query/index.js +1 -1
  53. package/dist/schema/schema-version.js +1 -1
  54. package/dist/schema-query-impl/index.js +1 -1
  55. package/dist/schemas/account_operation.output.json +9 -9
  56. package/dist/schemas/account_operation.schema.json +3 -3
  57. package/dist/schemas/bridge_operation.output.json +9 -9
  58. package/dist/schemas/evaluation_operation.output.json +6 -6
  59. package/dist/schemas/evaluation_operation.schema.json +5 -5
  60. package/dist/schemas/index.json +1 -1
  61. package/dist/schemas/keeper_operation.output.json +9 -9
  62. package/dist/schemas/local_history_operation.output.json +9 -9
  63. package/dist/schemas/local_info_operation.output.json +9 -9
  64. package/dist/schemas/local_mark_operation.output.json +9 -9
  65. package/dist/schemas/messenger_operation.output.json +9 -9
  66. package/dist/schemas/monitor_events.output.json +9 -9
  67. package/dist/schemas/monitor_subscription.output.json +9 -9
  68. package/dist/schemas/onchain_events.output.json +10 -10
  69. package/dist/schemas/onchain_operations.output.json +9 -9
  70. package/dist/schemas/onchain_operations.schema.json +46 -46
  71. package/dist/schemas/onchain_operations_allocation.schema.json +5 -5
  72. package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
  73. package/dist/schemas/onchain_operations_contact.schema.json +2 -2
  74. package/dist/schemas/onchain_operations_demand.schema.json +2 -2
  75. package/dist/schemas/onchain_operations_machine.schema.json +2 -2
  76. package/dist/schemas/onchain_operations_order.schema.json +2 -2
  77. package/dist/schemas/onchain_operations_payment.schema.json +2 -2
  78. package/dist/schemas/onchain_operations_permission.schema.json +2 -2
  79. package/dist/schemas/onchain_operations_progress.schema.json +2 -2
  80. package/dist/schemas/onchain_operations_repository.schema.json +2 -2
  81. package/dist/schemas/onchain_operations_reward.schema.json +6 -6
  82. package/dist/schemas/onchain_operations_service.schema.json +8 -8
  83. package/dist/schemas/onchain_operations_treasury.schema.json +8 -8
  84. package/dist/schemas/onchain_table_data.output.json +17 -13
  85. package/dist/schemas/query_toolkit.output.json +47 -47
  86. package/dist/schemas/query_toolkit.schema.json +6 -2
  87. package/dist/strategy/collectors.js +1 -1
  88. package/dist/task/playbook.js +1 -1
  89. package/dist/tools/handlers/config.js +1 -1
  90. package/dist/tools/handlers/evaluation.spec.js +1 -1
  91. package/dist/tools/handlers/onchain.js +1 -1
  92. package/dist/tools/registry/monitor.js +1 -1
  93. package/dist/tools/shared.js +1 -1
  94. package/dist/tools/wrap.js +1 -1
  95. package/package.json +2 -2
@@ -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,LocalMark,query_objects,parseGuardFile,formatGuardParseErrors,transformRewardInput,transformPersonalInput}from'@wowok/wowok';import{OnchainOperationsSchema,strictParse,getEnvConfig,handleCallResult,checkClientSchemaCompatibility,parseMachineNodesFromText,formatNodeErrors as a372a,transformSubmission}from'../../schema/index.js';import{handlePermissionOperations}from'../../schema/call/permission-handler.js';import{resolveNetwork}from'./network.js';import{collectPermissionIndexes,checkPermissionAuthorization,formatPermissionWarning}from'../../schema/utils/permission-machine-check.js';import{getSkillsHintForOnchain}from'../../schema/utils/skills-recommendation.js';import{prepareFundOperation,generateSkillsHint as a372b}from'../../knowledge/fund-layer.js';import{generateGuardSubmissionPrompt,formatSubmissionPrompt}from'../../knowledge/guard-submission-prompt.js';import{classifyRecipient}from'../../knowledge/recipient-constraint.js';import{buildSubmissionConfirmation,OPERATION_GUARD_ACTION}from'../../knowledge/guard-submission-brief.js';import{enrichWorkflowGuidance,mergeGuidanceIntoOutput}from'../../knowledge/workflow-guidance.js';import{batchQueryObjectsByIds}from'../../graph/onchain/sdk-batch.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;}async function maybeGuardSubmissionConfirmation(a,b){const d=[],e=a['submission'];if(e&&typeof e==='object'&&Array['isArray'](e['submission']))for(const l of e['submission']){l?.['guard']&&Array['isArray'](l['submission'])&&l['submission']['length']>0x0&&d['push']({'guardRef':String(l['guard']),'items':l['submission']});}const f=a['info'];if(f&&typeof f==='object'&&Array['isArray'](f['submission'])&&f['submission']['length']>0x0){const m=Array['isArray'](f['guard'])?f['guard']['map'](o=>o?.['object'])['filter'](Boolean):[],n=m[0x0]?String(m[0x0]):a['guard'];if(n)d['push']({'guardRef':String(n),'items':f['submission']});}if(d['length']===0x0)return undefined;const g=OPERATION_GUARD_ACTION[a['operation_type']],h=[];for(const o of d){const q=await buildSubmissionConfirmation({'guard_ref':o['guardRef'],'submission':o['items'],...g?{'action':g}:{},'network':b['network']});if(q)h['push'](q);}if(h['length']===0x0)return undefined;const i=h['map'](r=>r['confirmation_text'])['join']('\x0a\x0a'),j=[];for(const r of h){r['missing_identifiers']['length']>0x0&&j['push']('Guard\x20'+(r['guard_name']??r['guard'])+':\x20missing\x20required\x20identifier(s)\x20'+r['missing_identifiers']['join'](',\x20'));for(const s of r['items']){for(const t of s['issues']){j['push']('Guard\x20'+(r['guard_name']??r['guard'])+'\x20['+(s['identifier']??'?')+']:\x20'+t);}}}const k={'message':i,'result':{'type':'pending_confirmation','preview':{'level':'standard','operation':a['operation_type'],'object':h[0x0]['guard_name']??h[0x0]['guard'],'network':b['network'],...j['length']>0x0?{'warnings':j}:{}},'rule_id':'guard_submission_confirm'},'semantic':{'intent':a['operation_type']+'_guard_submission_awaiting_confirmation','status':'pending_input','summary':'Guard\x20submission\x20composed-confirmation\x20(G1):\x20the\x20complete\x20semantics\x20of\x20your\x20submission\x20'+'(guard\x20rules\x20+\x20your\x20values\x20+\x20pass/fail\x20consequences)\x20are\x20shown\x20in\x20the\x20message.\x20'+'The\x20operation\x20was\x20NOT\x20executed.\x20Re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'Guard\x20submission\x20confirmation\x20โ€”\x20'+h['length']+'\x20guard(s),\x20'+d['reduce']((u,v)=>u+v['items']['length'],0x0)+'\x20submitted\x20item(s).','tool':'onchain_operations','priority':'required'}],...j['length']>0x0?{'warnings':j}:{}}};return{'content':[{'type':'text','text':i}],'structuredContent':k};}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','wowok-governance'],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;const b=classifyRecipient(a);if(!b)return JSON['stringify'](a);if(b['kind']==='submission')return'submitted\x20object\x20slot\x20'+b['identifier']+'\x20(object\x20receipt\x20=\x20owner\x20receipt)';if(b['kind']==='signer')return'Signer\x20(caller\x20of\x20the\x20guard-gated\x20alloc)';const c=b['address'];if(c['length']>0x10)return'Entity('+c['slice'](0x0,0x8)+'...'+c['slice'](-0x4)+')';return'Entity('+c+')';}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=await resolveNetwork(b?.['network']);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=a['blockingErrors']['some'](k=>k['includes']('TOKEN\x20CHOICE\x20REQUIRED')),f=c&&d?'FUND\x20OPERATION\x20BLOCKED':c?'TOKEN\x20TYPE\x20MISMATCH\x20โ€”\x20operation\x20blocked':e?'TOKEN\x20CHOICE\x20REQUIRED\x20โ€”\x20operation\x20blocked,\x20awaiting\x20user\x20selection':'FUND\x20INPUT\x20BLOCKED\x20โ€”\x20operation\x20blocked',g=c&&d?'fund_blocked':c?'token_type_mismatch':e?'token_choice_required':'fund_input_error',h=c?'\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']+')':'')+'.':e?'\x0a\x0aMultiple\x20on-chain\x20tokens\x20may\x20legally\x20share\x20the\x20same\x20symbol\x20(several\x20'+'issuers\x20can\x20each\x20publish\x20a\x20\x22USDT\x22),\x20so\x20a\x20bare\x20symbol\x20can\x20never\x20identify\x20'+('the\x20issuer.\x20This\x20'+b+'\x20operation\x20was\x20NOT\x20executed\x20and\x20no\x20')+'on-chain\x20action\x20was\x20taken.\x20Present\x20the\x20numbered\x20candidate\x20list\x20above\x20to\x20'+'the\x20USER,\x20wait\x20for\x20their\x20choice,\x20then\x20re-issue\x20with\x20the\x20chosen\x20token\x27s\x20'+'full\x20type.':'\x0a\x0aMonetary\x20input\x20is\x20never\x20processed\x20with\x20unknown\x20token\x20precision\x20or\x20an\x20'+('unparseable\x20amount.\x20This\x20'+b+'\x20operation\x20was\x20NOT\x20executed\x20and\x20')+'no\x20on-chain\x20action\x20was\x20taken.\x20Follow\x20the\x20recovery\x20steps\x20in\x20the\x20error\x20'+'above\x20and\x20re-issue\x20the\x20operation.',i='โ›”\x20'+f+'\x0a\x0a'+a['blockingErrors']['map'](k=>'\x20\x20โ€ข\x20'+k)['join']('\x0a')+h,j=e?'Present\x20the\x20numbered\x20token\x20candidate\x20list\x20from\x20the\x20error\x20message\x20to\x20the\x20USER\x20'+'(full\x20type,\x20name,\x20decimals,\x20verified\x20tag\x20are\x20all\x20shown)\x20โ€”\x20do\x20NOT\x20pick\x20an\x20'+'issuer\x20yourself.\x20After\x20the\x20user\x20chooses\x20(by\x20number\x20or\x20by\x20pasting\x20the\x20full\x20'+('type),\x20re-issue\x20this\x20'+b+'\x20operation\x20with\x20that\x20token\x27s\x20FULL\x20type\x20')+'string\x20(package::module::Name)\x20in\x20type_parameter\x20(object.type_parameter\x20for\x20'+'service\x20creation;\x20root\x20type_parameter\x20for\x20payment\x20receive).\x20Also\x20verify\x20the\x20'+'WOW\x20network\x20selection\x20is\x20correct.':'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.';return{'content':[{'type':'text','text':i}],'structuredContent':{'result':{'type':'error','error':a['blockingErrors']['join']('\x20|\x20'),'error_code':g,'retryable':!![],'recovery_hint':j},'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'];if(f['confirmed']!==!![]){const x=await maybeGuardSubmissionConfirmation(b,f);if(x)return x;}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 y=b['data'],z=await detectServiceGuardCircularDependency(y);if(z)return z;const A=checkSalesWipNetworkDeployment(y,f,c);if(A)return A;const B=await prepareFundOperation(y,'service',f?.['network']);if(B['blockingErrors']['length']>0x0)return buildFundBlockResult(B,'service');c['push'](...B['warnings']);if(B['confirmation']){c['push'](B['confirmation']['message']);const M=a372b(B['confirmation']);if(M)c['push'](M);}const C=y?.['order_allocators'];if(C&&typeof C==='object'){const N=Array['isArray'](C['allocators'])?C['allocators']:[];for(let O=0x0;O<N['length'];O++){const P=N[O],Q=Array['isArray'](P?.['sharing'])?P['sharing']:[];if(Q['length']<=0x1)continue;const R=new Map();for(let S=0x0;S<Q['length'];S++){const T=Q[S]?.['who'];let U=typeof T==='string'?T:'';if(!U){const W=classifyRecipient(T);if(W?.['kind']==='entity')U='Entity:'+W['address'];else{if(W?.['kind']==='signer')U='Signer';else{if(W?.['kind']==='submission')U='Guard:'+W['identifier'];else{if(T)U=JSON['stringify'](T);}}}}if(!U)continue;const V=R['get'](U)??0x0;R['set'](U,V+0x1);}for(const [X,Y]of R){Y>0x1&&c['push']('DUPLICATE\x20SHARING\x20ENTITY:\x20Allocator['+O+']\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 D=new CallService(b['data']);let E;try{E=b['submission']?await D['call_with_submission'](f,await transformSubmission(b['submission'])):await D['call'](f);}catch(Z){const a0=Z['message']??String(Z);if(/not found|GetObjectExisted|resolve|LocalMark|failed to resolve/i['test'](a0)){const a1=typeof y?.['object']==='object'&&y?.['object']!==null?y['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='+(y?.['machine']??'<none>')+',\x20')+('buy_guard='+(y?.['buy_guard']??'<none>')+',\x20')+('permission='+(a1??'<inline/new>')+',\x20')+('arbitrations='+(Array['isArray'](y?.['arbitrations'])?y['arbitrations']['length']+'\x20item(s)':'<none>')));}throw Z;}const F=y?.['publish']?'publish\x20service':y?.['bPublished']!==undefined?'modify\x20service':'create\x20service',G=y?.['object']!=null&&typeof y['object']==='object',H=y?.['compensation_fund_add']!=null;G&&!H&&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 I=y?.['publish']===!![],J=Array['isArray'](y?.['arbitrations'])&&y['arbitrations']['length']>0x0;if(I&&!J&&H)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).');I&&!J&&!H&&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.');!I&&H&&!J&&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 K=await buildGuardSubmissionPrompt(E,'service',{'network':f?.['network'],'signer':f?.['account'],'service_address':typeof y?.['object']==='string'?y['object']:undefined});if(K)c['push'](K);const L=handleCallResult(E,withHarness(m(y),'service',F));return d(n,o,b['operation_type'],E)['catch'](()=>{}),L;}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=a372a(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,f);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'](f,await transformSubmission(b['submission'])):await a5['call'](f),a7=await buildGuardSubmissionPrompt(a6,'machine',{'network':f?.['network'],'signer':f?.['account'],'machine_address':b['data']?.['object']});if(a7)c['push'](a7);const a8=handleCallResult(a6,m(b['data']));return d(n,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'](f,await transformSubmission(b['submission'])):await ai['call'](f);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':f?.['network'],'signer':f?.['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,m(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':f?.['network'],'accountName':f?.['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 d(n,o,b['operation_type'],aj)['catch'](()=>{}),ak;}case'repository':{const as=new CallRepository(b['data']),at=b['submission']?await as['call_with_submission'](f,await transformSubmission(b['submission'])):await as['call'](f),au=await buildGuardSubmissionPrompt(at,'repository',{'network':f?.['network'],'signer':f?.['account'],'extra':{'repository':b['data']?.['object']}});if(au)c['push'](au);const av=handleCallResult(at,m(b['data']));return d(n,o,b['operation_type'],at)['catch'](()=>{}),av;}case'arbitration':{const aw=await prepareFundOperation(b['data'],'arbitration',f?.['network']);if(aw['blockingErrors']['length']>0x0)return buildFundBlockResult(aw,'arbitration');c['push'](...aw['warnings']);if(aw['confirmation']){c['push'](aw['confirmation']['message']);const aB=a372b(aw['confirmation']);if(aB)c['push'](aB);}const ax=new CallArbitration(b['data']),ay=b['submission']?await ax['call_with_submission'](f,await transformSubmission(b['submission'])):await ax['call'](f),az=await buildGuardSubmissionPrompt(ay,'arbitration',{'network':f?.['network'],'signer':f?.['account'],'extra':{'arbitration':b['data']?.['object']}});if(az)c['push'](az);const aA=handleCallResult(ay,m(b['data']));return d(n,o,b['operation_type'],ay)['catch'](()=>{}),aA;}case'contact':{const aC=new CallContact(b['data']),aD=b['submission']?await aC['call_with_submission'](f,await transformSubmission(b['submission'])):await aC['call'](f),aE=await buildGuardSubmissionPrompt(aD,'contact',{'network':f?.['network'],'signer':f?.['account']});if(aE)c['push'](aE);const aF=handleCallResult(aD,m(b['data']));return d(n,o,b['operation_type'],aD)['catch'](()=>{}),aF;}case'treasury':{const aG=await prepareFundOperation(b['data'],'treasury',f?.['network']);if(aG['blockingErrors']['length']>0x0)return buildFundBlockResult(aG,'treasury');c['push'](...aG['warnings']);if(aG['confirmation']){c['push'](aG['confirmation']['message']);const aL=a372b(aG['confirmation']);if(aL)c['push'](aL);}const aH=new CallTreasury(b['data']),aI=b['submission']?await aH['call_with_submission'](f,await transformSubmission(b['submission'])):await aH['call'](f),aJ=await buildGuardSubmissionPrompt(aI,'treasury',{'network':f?.['network'],'signer':f?.['account'],'extra':{'treasury':b['data']?.['object']}});if(aJ)c['push'](aJ);const aK=handleCallResult(aI,m(b['data']));return d(n,o,b['operation_type'],aI)['catch'](()=>{}),aK;}case'reward':{const aM=await prepareFundOperation(b['data'],'reward',f?.['network']);if(aM['blockingErrors']['length']>0x0)return buildFundBlockResult(aM,'reward');c['push'](...aM['warnings']);if(aM['confirmation']){c['push'](aM['confirmation']['message']);const aS=a372b(aM['confirmation']);if(aS)c['push'](aS);}const aN=transformRewardInput(b['data']),aO=new CallReward(aN),aP=b['submission']?await aO['call_with_submission'](f,await transformSubmission(b['submission'])):await aO['call'](f),aQ=await buildGuardSubmissionPrompt(aP,'reward',{'network':f?.['network'],'signer':f?.['account'],'extra':{'reward':b['data']?.['object']}});if(aQ)c['push'](aQ);const aR=handleCallResult(aP,m(b['data']));return d(n,o,b['operation_type'],aP)['catch'](()=>{}),aR;}case'allocation':{const aT=await prepareFundOperation(b['data'],'allocation',f?.['network']);if(aT['blockingErrors']['length']>0x0)return buildFundBlockResult(aT,'allocation');c['push'](...aT['warnings']);if(aT['confirmation']){c['push'](aT['confirmation']['message']);const aZ=a372b(aT['confirmation']);if(aZ)c['push'](aZ);}const aU=new CallAllocation(b['data']),aV=b['submission']?await aU['call_with_submission'](f,await transformSubmission(b['submission'])):await aU['call'](f),aW=await buildGuardSubmissionPrompt(aV,'allocation',{'network':f?.['network'],'signer':f?.['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 batchQueryObjectsByIds(b0['map'](b5=>b5['object']),f?.['network'],!![]),b3=[];let b4=BigInt(0x0);for(const b5 of b2){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['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\x20is\x20the\x20order\x20submission\x20pattern:\x20Recipient::GuardIdentifier(0)\x20resolves\x20'+'to\x20the\x20submitted\x20order,\x20whose\x20owner\x20receives\x20the\x20funds\x20(object\x20receipt\x20=\x20owner\x20receipt).'),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,m(b['data']));return d(n,o,b['operation_type'],aV)['catch'](()=>{}),aY;}case'permission':{const bb=b['operation_type'],bc=handlePermissionOperations(b['data'],f,m);return bc&&typeof bc==='object'&&'then'in bc&&bc['then'](bd=>{bd?.['structuredContent']?.['result']&&d(n,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'](f);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,m(b['data']));return d(n,o,b['operation_type'],bg)['catch'](()=>{}),bh;}case'personal':{const bz=transformPersonalInput(b['data']),bA=new CallPersonal(bz),bB=await bA['call'](f),bC=handleCallResult(bB,m(b['data']));return d(n,o,b['operation_type'],bB)['catch'](()=>{}),bC;}case'payment':{const bD=await prepareFundOperation(b['data'],'payment',f?.['network']);if(bD['blockingErrors']['length']>0x0)return buildFundBlockResult(bD,'payment');c['push'](...bD['warnings']);if(bD['confirmation']){c['push'](bD['confirmation']['message']);const bI=a372b(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'](f),bH=handleCallResult(bG,m(b['data']));return d(n,o,b['operation_type'],bG)['catch'](()=>{}),bH;}case'demand':{const bK=new CallDemand(b['data']),bL=b['submission']?await bK['call_with_submission'](f,await transformSubmission(b['submission'])):await bK['call'](f),bM=await buildGuardSubmissionPrompt(bL,'demand',{'network':f?.['network'],'signer':f?.['account'],'extra':{'demand':b['data']?.['object']}});if(bM)c['push'](bM);const bN=handleCallResult(bL,m(b['data']));return d(n,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'](f,await transformSubmission(b['submission'])):await bO['call'](f),bQ=await buildGuardSubmissionPrompt(bP,'order',{'network':f?.['network'],'signer':f?.['account'],'order_address':b['data']?.['object']});if(bQ)c['push'](bQ);const bR=handleCallResult(bP,m(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':f?.['network']}),bW=bV?.['objects']?.[0x0];bU=(bW?.['data']??bW)?.['progress'];}if(bU){const bX=b['data']['progress']?.['operation'],bY=await enrichWorkflowGuidance({'progressRef':bU,'network':f?.['network'],'accountName':f?.['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 d(n,o,b['operation_type'],bP)['catch'](()=>{}),bR;}case'gen_passport':{const bZ=await gen_passport(f,b['guard'],b['info']),c0=handleCallResult(bZ,m(b['data']));return d(n,o,b['operation_type'],bZ)['catch'](()=>{}),c0;}case'proof':{const c1=new CallProof(b['data']),c2=b['submission']?await c1['call_with_submission'](f,await transformSubmission(b['submission'])):await c1['call'](f),c3=await buildGuardSubmissionPrompt(c2,'proof',{'network':f?.['network'],'signer':f?.['account']});if(c3)c['push'](c3);const c4=handleCallResult(c2,m(b['data']));return d(n,o,b['operation_type'],c2)['catch'](()=>{}),c4;}case'gen_proof':{const c5=await gen_proof(f,b['proof'],b['server_pubkey'],b['server_signature'],b['proof_type'],b['description'],b['item_count'],b['about_address']),c6=handleCallResult(c5,m(b['data']));return d(n,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 a374a,transformSubmission}from'../../schema/index.js';import{handlePermissionOperations}from'../../schema/call/permission-handler.js';import{resolveNetwork}from'./network.js';import{collectPermissionIndexes,checkPermissionAuthorization,formatPermissionWarning}from'../../schema/utils/permission-machine-check.js';import{getSkillsHintForOnchain}from'../../schema/utils/skills-recommendation.js';import{prepareFundOperation,generateSkillsHint as a374b}from'../../knowledge/fund-layer.js';import{generateGuardSubmissionPrompt,formatSubmissionPrompt}from'../../knowledge/guard-submission-prompt.js';import{classifyRecipient}from'../../knowledge/recipient-constraint.js';import{buildSubmissionConfirmation,OPERATION_GUARD_ACTION}from'../../knowledge/guard-submission-brief.js';import{enrichWorkflowGuidance,mergeGuidanceIntoOutput}from'../../knowledge/workflow-guidance.js';import{batchQueryObjectsByIds}from'../../graph/onchain/sdk-batch.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;}async function maybeGuardSubmissionConfirmation(a,b){const d=[],e=a['submission'];if(e&&typeof e==='object'&&Array['isArray'](e['submission']))for(const l of e['submission']){l?.['guard']&&Array['isArray'](l['submission'])&&l['submission']['length']>0x0&&d['push']({'guardRef':String(l['guard']),'items':l['submission']});}const f=a['info'];if(f&&typeof f==='object'&&Array['isArray'](f['submission'])&&f['submission']['length']>0x0){const m=Array['isArray'](f['guard'])?f['guard']['map'](o=>o?.['object'])['filter'](Boolean):[],n=m[0x0]?String(m[0x0]):a['guard'];if(n)d['push']({'guardRef':String(n),'items':f['submission']});}if(d['length']===0x0)return undefined;const g=OPERATION_GUARD_ACTION[a['operation_type']],h=[];for(const o of d){const q=await buildSubmissionConfirmation({'guard_ref':o['guardRef'],'submission':o['items'],...g?{'action':g}:{},'network':b['network']});if(q)h['push'](q);}if(h['length']===0x0)return undefined;const i=h['map'](r=>r['confirmation_text'])['join']('\x0a\x0a'),j=[];for(const r of h){r['missing_identifiers']['length']>0x0&&j['push']('Guard\x20'+(r['guard_name']??r['guard'])+':\x20missing\x20required\x20identifier(s)\x20'+r['missing_identifiers']['join'](',\x20'));for(const s of r['items']){for(const t of s['issues']){j['push']('Guard\x20'+(r['guard_name']??r['guard'])+'\x20['+(s['identifier']??'?')+']:\x20'+t);}}}const k={'message':i,'result':{'type':'pending_confirmation','preview':{'level':'standard','operation':a['operation_type'],'object':h[0x0]['guard_name']??h[0x0]['guard'],'network':b['network'],...j['length']>0x0?{'warnings':j}:{}},'rule_id':'guard_submission_confirm'},'semantic':{'intent':a['operation_type']+'_guard_submission_awaiting_confirmation','status':'pending_input','summary':'Guard\x20submission\x20composed-confirmation\x20(G1):\x20the\x20complete\x20semantics\x20of\x20your\x20submission\x20'+'(guard\x20rules\x20+\x20your\x20values\x20+\x20pass/fail\x20consequences)\x20are\x20shown\x20in\x20the\x20message.\x20'+'The\x20operation\x20was\x20NOT\x20executed.\x20Re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'Guard\x20submission\x20confirmation\x20โ€”\x20'+h['length']+'\x20guard(s),\x20'+d['reduce']((u,v)=>u+v['items']['length'],0x0)+'\x20submitted\x20item(s).','tool':'onchain_operations','priority':'required'}],...j['length']>0x0?{'warnings':j}:{}}};return{'content':[{'type':'text','text':i}],'structuredContent':k};}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','wowok-governance'],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;const b=classifyRecipient(a);if(!b)return JSON['stringify'](a);if(b['kind']==='submission')return'submitted\x20object\x20slot\x20'+b['identifier']+'\x20(object\x20receipt\x20=\x20owner\x20receipt)';if(b['kind']==='signer')return'Signer\x20(caller\x20of\x20the\x20guard-gated\x20alloc)';const c=b['address'];if(c['length']>0x10)return'Entity('+c['slice'](0x0,0x8)+'...'+c['slice'](-0x4)+')';return'Entity('+c+')';}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=await resolveNetwork(b?.['network']);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=a['blockingErrors']['some'](k=>k['includes']('TOKEN\x20CHOICE\x20REQUIRED')),f=c&&d?'FUND\x20OPERATION\x20BLOCKED':c?'TOKEN\x20TYPE\x20MISMATCH\x20โ€”\x20operation\x20blocked':e?'TOKEN\x20CHOICE\x20REQUIRED\x20โ€”\x20operation\x20blocked,\x20awaiting\x20user\x20selection':'FUND\x20INPUT\x20BLOCKED\x20โ€”\x20operation\x20blocked',g=c&&d?'fund_blocked':c?'token_type_mismatch':e?'token_choice_required':'fund_input_error',h=c?'\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']+')':'')+'.':e?'\x0a\x0aMultiple\x20on-chain\x20tokens\x20may\x20legally\x20share\x20the\x20same\x20symbol\x20(several\x20'+'issuers\x20can\x20each\x20publish\x20a\x20\x22USDT\x22),\x20so\x20a\x20bare\x20symbol\x20can\x20never\x20identify\x20'+('the\x20issuer.\x20This\x20'+b+'\x20operation\x20was\x20NOT\x20executed\x20and\x20no\x20')+'on-chain\x20action\x20was\x20taken.\x20Present\x20the\x20numbered\x20candidate\x20list\x20above\x20to\x20'+'the\x20USER,\x20wait\x20for\x20their\x20choice,\x20then\x20re-issue\x20with\x20the\x20chosen\x20token\x27s\x20'+'full\x20type.':'\x0a\x0aMonetary\x20input\x20is\x20never\x20processed\x20with\x20unknown\x20token\x20precision\x20or\x20an\x20'+('unparseable\x20amount.\x20This\x20'+b+'\x20operation\x20was\x20NOT\x20executed\x20and\x20')+'no\x20on-chain\x20action\x20was\x20taken.\x20Follow\x20the\x20recovery\x20steps\x20in\x20the\x20error\x20'+'above\x20and\x20re-issue\x20the\x20operation.',i='โ›”\x20'+f+'\x0a\x0a'+a['blockingErrors']['map'](k=>'\x20\x20โ€ข\x20'+k)['join']('\x0a')+h,j=e?'Present\x20the\x20numbered\x20token\x20candidate\x20list\x20from\x20the\x20error\x20message\x20to\x20the\x20USER\x20'+'(full\x20type,\x20name,\x20decimals,\x20verified\x20tag\x20are\x20all\x20shown)\x20โ€”\x20do\x20NOT\x20pick\x20an\x20'+'issuer\x20yourself.\x20After\x20the\x20user\x20chooses\x20(by\x20number\x20or\x20by\x20pasting\x20the\x20full\x20'+('type),\x20re-issue\x20this\x20'+b+'\x20operation\x20with\x20that\x20token\x27s\x20FULL\x20type\x20')+'string\x20(package::module::Name)\x20in\x20type_parameter\x20(object.type_parameter\x20for\x20'+'service\x20creation;\x20root\x20type_parameter\x20for\x20payment\x20receive).\x20Also\x20verify\x20the\x20'+'WOW\x20network\x20selection\x20is\x20correct.':'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.';return{'content':[{'type':'text','text':i}],'structuredContent':{'result':{'type':'error','error':a['blockingErrors']['join']('\x20|\x20'),'error_code':g,'retryable':!![],'recovery_hint':j},'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'];if(f['confirmed']!==!![]){const x=await maybeGuardSubmissionConfirmation(b,f);if(x)return x;}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 y=b['data'],z=await detectServiceGuardCircularDependency(y);if(z)return z;const A=checkSalesWipNetworkDeployment(y,f,c);if(A)return A;const B=await prepareFundOperation(y,'service',f?.['network']);if(B['blockingErrors']['length']>0x0)return buildFundBlockResult(B,'service');c['push'](...B['warnings']);if(B['confirmation']){c['push'](B['confirmation']['message']);const M=a374b(B['confirmation']);if(M)c['push'](M);}const C=y?.['order_allocators'];if(C&&typeof C==='object'){const N=Array['isArray'](C['allocators'])?C['allocators']:[];for(let O=0x0;O<N['length'];O++){const P=N[O],Q=Array['isArray'](P?.['sharing'])?P['sharing']:[];if(Q['length']<=0x1)continue;const R=new Map();for(let S=0x0;S<Q['length'];S++){const T=Q[S]?.['who'];let U=typeof T==='string'?T:'';if(!U){const W=classifyRecipient(T);if(W?.['kind']==='entity')U='Entity:'+W['address'];else{if(W?.['kind']==='signer')U='Signer';else{if(W?.['kind']==='submission')U='Guard:'+W['identifier'];else{if(T)U=JSON['stringify'](T);}}}}if(!U)continue;const V=R['get'](U)??0x0;R['set'](U,V+0x1);}for(const [X,Y]of R){Y>0x1&&c['push']('DUPLICATE\x20SHARING\x20ENTITY:\x20Allocator['+O+']\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 D=new CallService(b['data']);let E;try{E=b['submission']?await D['call_with_submission'](f,await transformSubmission(b['submission'])):await D['call'](f);}catch(Z){const a0=Z['message']??String(Z);if(/not found|GetObjectExisted|resolve|LocalMark|failed to resolve/i['test'](a0)){const a1=typeof y?.['object']==='object'&&y?.['object']!==null?y['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='+(y?.['machine']??'<none>')+',\x20')+('buy_guard='+(y?.['buy_guard']??'<none>')+',\x20')+('permission='+(a1??'<inline/new>')+',\x20')+('arbitrations='+(Array['isArray'](y?.['arbitrations'])?y['arbitrations']['length']+'\x20item(s)':'<none>')));}throw Z;}const F=y?.['publish']?'publish\x20service':y?.['bPublished']!==undefined?'modify\x20service':'create\x20service',G=y?.['object']!=null&&typeof y['object']==='object',H=y?.['compensation_fund_add']!=null;G&&!H&&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 I=y?.['publish']===!![],J=Array['isArray'](y?.['arbitrations'])&&y['arbitrations']['length']>0x0;if(I&&!J&&H)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).');I&&!J&&!H&&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.');!I&&H&&!J&&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 K=await buildGuardSubmissionPrompt(E,'service',{'network':f?.['network'],'signer':f?.['account'],'service_address':typeof y?.['object']==='string'?y['object']:undefined});if(K)c['push'](K);const L=handleCallResult(E,withHarness(m(y),'service',F));return d(n,o,b['operation_type'],E)['catch'](()=>{}),L;}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,f);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'](f,await transformSubmission(b['submission'])):await a5['call'](f),a7=await buildGuardSubmissionPrompt(a6,'machine',{'network':f?.['network'],'signer':f?.['account'],'machine_address':b['data']?.['object']});if(a7)c['push'](a7);const a8=handleCallResult(a6,m(b['data']));return d(n,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'](f,await transformSubmission(b['submission'])):await ai['call'](f);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':f?.['network'],'signer':f?.['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,m(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':f?.['network'],'accountName':f?.['account'],'noCache':!![],'txResult':aj,'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 d(n,o,b['operation_type'],aj)['catch'](()=>{}),ak;}case'repository':{const as=new CallRepository(b['data']),at=b['submission']?await as['call_with_submission'](f,await transformSubmission(b['submission'])):await as['call'](f),au=await buildGuardSubmissionPrompt(at,'repository',{'network':f?.['network'],'signer':f?.['account'],'extra':{'repository':b['data']?.['object']}});if(au)c['push'](au);const av=handleCallResult(at,m(b['data']));return d(n,o,b['operation_type'],at)['catch'](()=>{}),av;}case'arbitration':{const aw=await prepareFundOperation(b['data'],'arbitration',f?.['network']);if(aw['blockingErrors']['length']>0x0)return buildFundBlockResult(aw,'arbitration');c['push'](...aw['warnings']);if(aw['confirmation']){c['push'](aw['confirmation']['message']);const aB=a374b(aw['confirmation']);if(aB)c['push'](aB);}const ax=new CallArbitration(b['data']),ay=b['submission']?await ax['call_with_submission'](f,await transformSubmission(b['submission'])):await ax['call'](f),az=await buildGuardSubmissionPrompt(ay,'arbitration',{'network':f?.['network'],'signer':f?.['account'],'extra':{'arbitration':b['data']?.['object']}});if(az)c['push'](az);const aA=handleCallResult(ay,m(b['data']));return d(n,o,b['operation_type'],ay)['catch'](()=>{}),aA;}case'contact':{const aC=new CallContact(b['data']),aD=b['submission']?await aC['call_with_submission'](f,await transformSubmission(b['submission'])):await aC['call'](f),aE=await buildGuardSubmissionPrompt(aD,'contact',{'network':f?.['network'],'signer':f?.['account']});if(aE)c['push'](aE);const aF=handleCallResult(aD,m(b['data']));return d(n,o,b['operation_type'],aD)['catch'](()=>{}),aF;}case'treasury':{const aG=await prepareFundOperation(b['data'],'treasury',f?.['network']);if(aG['blockingErrors']['length']>0x0)return buildFundBlockResult(aG,'treasury');c['push'](...aG['warnings']);if(aG['confirmation']){c['push'](aG['confirmation']['message']);const aL=a374b(aG['confirmation']);if(aL)c['push'](aL);}const aH=new CallTreasury(b['data']),aI=b['submission']?await aH['call_with_submission'](f,await transformSubmission(b['submission'])):await aH['call'](f),aJ=await buildGuardSubmissionPrompt(aI,'treasury',{'network':f?.['network'],'signer':f?.['account'],'extra':{'treasury':b['data']?.['object']}});if(aJ)c['push'](aJ);const aK=handleCallResult(aI,m(b['data']));return d(n,o,b['operation_type'],aI)['catch'](()=>{}),aK;}case'reward':{const aM=await prepareFundOperation(b['data'],'reward',f?.['network']);if(aM['blockingErrors']['length']>0x0)return buildFundBlockResult(aM,'reward');c['push'](...aM['warnings']);if(aM['confirmation']){c['push'](aM['confirmation']['message']);const aS=a374b(aM['confirmation']);if(aS)c['push'](aS);}const aN=transformRewardInput(b['data']),aO=new CallReward(aN),aP=b['submission']?await aO['call_with_submission'](f,await transformSubmission(b['submission'])):await aO['call'](f),aQ=await buildGuardSubmissionPrompt(aP,'reward',{'network':f?.['network'],'signer':f?.['account'],'extra':{'reward':b['data']?.['object']}});if(aQ)c['push'](aQ);const aR=handleCallResult(aP,m(b['data']));return d(n,o,b['operation_type'],aP)['catch'](()=>{}),aR;}case'allocation':{const aT=await prepareFundOperation(b['data'],'allocation',f?.['network']);if(aT['blockingErrors']['length']>0x0)return buildFundBlockResult(aT,'allocation');c['push'](...aT['warnings']);if(aT['confirmation']){c['push'](aT['confirmation']['message']);const aZ=a374b(aT['confirmation']);if(aZ)c['push'](aZ);}const aU=new CallAllocation(b['data']),aV=b['submission']?await aU['call_with_submission'](f,await transformSubmission(b['submission'])):await aU['call'](f),aW=await buildGuardSubmissionPrompt(aV,'allocation',{'network':f?.['network'],'signer':f?.['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 batchQueryObjectsByIds(b0['map'](b5=>b5['object']),f?.['network'],!![]),b3=[];let b4=BigInt(0x0);for(const b5 of b2){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['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\x20is\x20the\x20order\x20submission\x20pattern:\x20Recipient::GuardIdentifier(0)\x20resolves\x20'+'to\x20the\x20submitted\x20order,\x20whose\x20owner\x20receives\x20the\x20funds\x20(object\x20receipt\x20=\x20owner\x20receipt).'),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,m(b['data']));return d(n,o,b['operation_type'],aV)['catch'](()=>{}),aY;}case'permission':{const bb=b['operation_type'],bc=handlePermissionOperations(b['data'],f,m);return bc&&typeof bc==='object'&&'then'in bc&&bc['then'](bd=>{bd?.['structuredContent']?.['result']&&d(n,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'](f);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,m(b['data']));return d(n,o,b['operation_type'],bg)['catch'](()=>{}),bh;}case'personal':{const bz=transformPersonalInput(b['data']),bA=new CallPersonal(bz),bB=await bA['call'](f),bC=handleCallResult(bB,m(b['data']));return d(n,o,b['operation_type'],bB)['catch'](()=>{}),bC;}case'payment':{const bD=await prepareFundOperation(b['data'],'payment',f?.['network']);if(bD['blockingErrors']['length']>0x0)return buildFundBlockResult(bD,'payment');c['push'](...bD['warnings']);if(bD['confirmation']){c['push'](bD['confirmation']['message']);const bI=a374b(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'](f),bH=handleCallResult(bG,m(b['data']));return d(n,o,b['operation_type'],bG)['catch'](()=>{}),bH;}case'demand':{const bK=new CallDemand(b['data']),bL=b['submission']?await bK['call_with_submission'](f,await transformSubmission(b['submission'])):await bK['call'](f),bM=await buildGuardSubmissionPrompt(bL,'demand',{'network':f?.['network'],'signer':f?.['account'],'extra':{'demand':b['data']?.['object']}});if(bM)c['push'](bM);const bN=handleCallResult(bL,m(b['data']));return d(n,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'](f,await transformSubmission(b['submission'])):await bO['call'](f),bQ=await buildGuardSubmissionPrompt(bP,'order',{'network':f?.['network'],'signer':f?.['account'],'order_address':b['data']?.['object']});if(bQ)c['push'](bQ);const bR=handleCallResult(bP,m(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':f?.['network']}),bW=bV?.['objects']?.[0x0];bU=(bW?.['data']??bW)?.['progress'];}if(bU){const bX=b['data']['progress']?.['operation'],bY=await enrichWorkflowGuidance({'progressRef':bU,'network':f?.['network'],'accountName':f?.['account'],'noCache':!![],'txResult':bP,'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 d(n,o,b['operation_type'],bP)['catch'](()=>{}),bR;}case'gen_passport':{const bZ=await gen_passport(f,b['guard'],b['info']),c0=handleCallResult(bZ,m(b['data']));return d(n,o,b['operation_type'],bZ)['catch'](()=>{}),c0;}case'proof':{const c1=new CallProof(b['data']),c2=b['submission']?await c1['call_with_submission'](f,await transformSubmission(b['submission'])):await c1['call'](f),c3=await buildGuardSubmissionPrompt(c2,'proof',{'network':f?.['network'],'signer':f?.['account']});if(c3)c['push'](c3);const c4=handleCallResult(c2,m(b['data']));return d(n,o,b['operation_type'],c2)['catch'](()=>{}),c4;}case'gen_proof':{const c5=await gen_proof(f,b['proof'],b['server_pubkey'],b['server_signature'],b['proof_type'],b['description'],b['item_count'],b['about_address']),c6=handleCallResult(c5,m(b['data']));return d(n,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 +1 @@
1
- import{handleMonitorEvents,handleMonitorSubscription}from'../handlers/monitor.js';import{handleKeeperOperation}from'../handlers/keeper.js';import{createToolMeta,MonitorEventsInputSchema,MonitorEventsResultSchema,MonitorSubscriptionInputSchema,MonitorSubscriptionResultSchema,KeeperOperationInputSchema,KeeperOperationOutputSchema}from'../../schema/index.js';export const MONITOR_TOOLS=[{'name':'monitor_events','handler':handleMonitorEvents,'config':{'title':'๐Ÿ””\x20Monitor\x20Events\x20-\x20Persistent\x20Store\x20&\x20Read\x20State','summary':'Persistent\x20monitor\x20event\x20store:\x20paginated\x20events\x20with\x20read\x20flags;\x20mark\x20read/unread.','description':'Query\x20and\x20manage\x20the\x20PERSISTENT\x20monitor\x20event\x20store\x20โ€”\x20the\x20same\x20store\x20the\x20client\x20UI\x27s\x20'+'Monitor\x20page\x20reads.\x20Events\x20are\x20captured\x20by\x20the\x20resident\x20MonitorLoop\x20(client\x20sidecar,\x20'+'or\x20the\x20stdio\x20MCP\x20server\x20when\x20MONITOR_LOOP=1)\x20across\x209\x20modules\x20(order\x20/\x20arb\x20/\x20demand\x20/\x20'+'progress\x20/\x20treasury\x20/\x20reward\x20/\x20service\x20/\x20entity\x20/\x20payment),\x20stored\x20APPEND-ONLY\x20per\x20'+'event\x20(no\x20ring\x20buffer,\x20survives\x20restarts),\x20and\x20carry\x20a\x20per-event\x20read\x20flag\x20persisted\x20in\x20SQLite.\x0a\x0a'+'Actions\x20(action):\x0a'+'\x20\x20โ€ข\x20query\x20โ€”\x20paginated\x20events,\x20newest\x20first.\x20Returns\x20events[]\x20(id,\x20module,\x20type,\x20time,\x20seen,\x20event),\x20'+'total,\x20module_counts,\x20unread_by_module,\x20total_unread.\x20Filter\x20with\x20module/event_type/since/until;\x20'+'paginate\x20with\x20limit/offset.\x20relevant_only\x20(default\x20TRUE)\x20restricts\x20to\x20events\x20that\x20hit\x20your\x20scope\x20'+'closure/focus/filters\x20(the\x20de-noised\x20agent\x20todo\x20stream);\x20pass\x20false\x20for\x20the\x20full\x20firehose.\x20'+'with_reason\x20attaches\x20each\x20event\x27s\x20relevance\x20annotation\x20(why\x20it\x20concerns\x20you)\x20+\x20a\x20delivered\x20flag.\x0a'+'\x20\x20โ€ข\x20mark_read\x20โ€”\x20mark\x20event_ids\x20(format\x20\x27<eventSeq>:<txDigest>\x27)\x20as\x20read.\x20Idempotent;\x20returns\x20marked\x20count\x20+\x20total_unread.\x0a'+'\x20\x20โ€ข\x20mark_all_read\x20โ€”\x20mark\x20ALL\x20stored\x20events\x20read\x20(optionally\x20scoped\x20to\x20module).\x20Returns\x20marked\x20count\x20+\x20total_unread.\x0a\x0a'+'Cross-process\x20note:\x20read\x20state\x20is\x20SHARED\x20with\x20the\x20client\x20app\x20(same\x20SQLite\x20store)\x20โ€”\x20marking\x20'+'events\x20read\x20here\x20clears\x20the\x20client\x27s\x20Monitor\x20unread\x20badge\x20and\x20vice\x20versa.\x20Configure\x20the\x20'+'scope/filters\x20behind\x20relevant_only\x20via\x20the\x20monitor_subscription\x20tool.\x0a\x0a'+'๐Ÿ’ก\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27monitor_events\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':MonitorEventsInputSchema,'outputSchema':MonitorEventsResultSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('monitor',['monitor','events','unread','read','notification','order','arbitration','demand','progress'])}},{'name':'monitor_subscription','handler':handleMonitorSubscription,'config':{'title':'๐Ÿ””\x20Monitor\x20Subscription\x20-\x20Scope,\x20Filters\x20&\x20Todo-Stream\x20Config','summary':'Monitor\x20subscription\x20config:\x20scope-closure\x20rules,\x20focus\x20objects,\x20per-type\x20switches,\x20conditional\x20filters;\x20scope\x20preview\x20+\x20filter\x20dry-run.','description':'The\x20SINGLE\x20entry\x20point\x20for\x20monitor\x20v4\x20subscription\x20configuration\x20(the\x20client\x20settings\x20'+'panel\x20and\x20agent\x20conversations\x20both\x20use\x20this\x20tool).\x20The\x20config\x20drives\x20three\x20layers:\x20'+'the\x20SCOPE\x20CLOSURE\x20(which\x20objects\x27\x20events\x20are\x20relevant\x20to\x20you:\x20anchor\x20accounts\x20โ†’\x20'+'permissions\x20โ†’\x20managed\x20objects\x20โ†’\x20merchant/buyer\x20orders\x20โ†’\x20order\x20children,\x20plus\x20explicit\x20'+'focus\x20objects),\x20the\x20TODO-STREAM\x20switches\x20(per-event-type\x20delivery\x20on/off),\x20and\x20'+'conditional\x20FILTERS\x20(field-path\x20predicates\x20over\x20event\x20payloads).\x20Event\x20CAPTURE\x20is\x20'+'unaffected\x20by\x20these\x20switches\x20EXCEPT\x20NewPaymentEvent,\x20which\x20is\x20captured\x20only\x20when\x20'+'switched\x20ON\x20here\x20(high-volume\x20fund\x20receipts,\x20opt-in).\x0a\x0a'+'Actions\x20(action):\x0a'+'\x20\x20โ€ข\x20get\x20โ€”\x20effective\x20config\x20(defaults\x20merged)\x20+\x20resolved\x20state:\x20scope_version,\x20per-layer\x20'+'closure\x20counts,\x20capture_types,\x20last_poll_at,\x20and\x20this\x20process\x27s\x20MonitorLoop\x20status.\x0a'+'\x20\x20โ€ข\x20save\x20โ€”\x20merge\x20a\x20partial\x20config\x20(scope.rules/events/loop\x20merge\x20field-wise;\x20'+'focus_objects/filters\x20REPLACE\x20wholesale;\x20loop\x20params\x20clamped\x20to\x20safe\x20bounds),\x20then\x20'+'trigger\x20an\x20IMMEDIATE\x20scope\x20re-resolve;\x20a\x20scope\x20change\x20schedules\x20a\x20non-blocking\x20'+'re-annotation\x20backfill\x20over\x20loop.backfill_days.\x0a'+'\x20\x20โ€ข\x20reset\x20โ€”\x20restore\x20the\x20default\x20config\x20and\x20re-resolve.\x0a'+'\x20\x20โ€ข\x20scope_preview\x20โ€”\x20the\x20current\x20scope\x20closure\x20grouped\x20by\x20layer\x20(accounts\x20/\x20permissions\x20/\x20'+'managed_objects\x20/\x20services\x20/\x20orders\x20/\x20order_children\x20/\x20focus),\x20paginated\x20with\x20limit/offset,\x20'+'optionally\x20restricted\x20to\x20one\x20layer\x20via\x20rule.\x20Inspect\x20this\x20BEFORE\x20tuning\x20the\x20rule\x20switches.\x0a'+'\x20\x20โ€ข\x20test_filter\x20โ€”\x20dry-run\x20a\x20filter\x20draft\x20over\x20the\x20most\x20recent\x20captured\x20events\x20(sample,\x20'+'default\x20200,\x20max\x201000):\x20returns\x20matched\x20count,\x20scanned\x20count,\x20and\x20up\x20to\x205\x20sample\x20events.\x20'+'Preview\x20a\x20filter\x27s\x20noise/hit\x20rate\x20BEFORE\x20saving\x20it\x20into\x20config.filters.\x0a\x0a'+'๐Ÿ’ก\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27monitor_subscription\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':MonitorSubscriptionInputSchema,'outputSchema':MonitorSubscriptionResultSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('monitor',['monitor','subscription','scope','focus','filter','config','todo','relevance'])}},{'name':'keeper_operation','handler':handleKeeperOperation,'config':{'title':'โฐ\x20Keeper\x20โ€”\x20Actionable\x20Reminders\x20&\x20Authorized\x20Auto-Execution','summary':'Who-benefits-who-pushes:\x20scans\x20the\x20monitor\x20scope\x20for\x20actionable\x20state\x20(unclaimed\x20funds,\x20advanceable\x20workflow\x20nodes),\x20routes\x20tasks\x20to\x20beneficiaries;\x20per-task\x20dismiss/execute\x20+\x20standing\x20auto-execute\x20rules.','description':'The\x20chain\x20has\x20NO\x20time-triggered\x20execution:\x20a\x20time-locked\x20Guard\x20becoming\x20satisfiable,\x20'+'CoinWrappers\x20waiting\x20to\x20be\x20unwrapped,\x20or\x20a\x20stalled\x20workflow\x20node\x20produce\x20NO\x20events\x20โ€”\x20'+'someone\x20must\x20send\x20a\x20transaction\x20(gas).\x20The\x20keeper\x20is\x20the\x20MCP-side\x20answer,\x20built\x20on\x20one\x20'+'principle:\x20WHO\x20BENEFITS,\x20WHO\x20PUSHES.\x20It\x20scans\x20the\x20monitor\x20scope\x20(accounts/orders\x20resolved\x20'+'by\x20monitor_subscription)\x20on\x20its\x20own\x20cadence\x20inside\x20the\x20MonitorLoop\x20tick,\x20and\x20routes\x20every\x20'+'actionable\x20item\x20to\x20its\x20beneficiary\x20as\x20a\x20KeeperTask.\x0a\x0a'+'Detectors\x20(v1):\x0a'+'\x20\x20โ€ข\x20payment_unclaimed\x20โ€”\x20you\x20own\x20unclaimed\x20CoinWrapper(s):\x20funds\x20one\x20\x27payment\x20{receive:true}\x27\x20'+'away\x20from\x20your\x20wallet.\x20Keeper-executable\x20and\x20auto-executable\x20(claim-to-self:\x20funds\x20only\x20ever\x20'+'move\x20INTO\x20your\x20own\x20wallet).\x0a'+'\x20\x20โ€ข\x20progress_actionable\x20โ€”\x20an\x20in-scope\x20order\x27s\x20workflow\x20has\x20a\x20forward\x20YOU\x20can\x20execute\x20from\x20the\x20'+'current\x20node\x20(session-aware;\x20guard/permission/named-operator\x20judged\x20on-chain).\x20Reminder-only:\x20'+'advancing\x20may\x20release\x20funds\x20to\x20a\x20counterparty,\x20so\x20execution\x20stays\x20with\x20you\x20via\x20workflow_operation.\x0a\x0a'+'Actions\x20(action):\x0a'+'\x20\x20โ€ข\x20tasks\x20โ€”\x20list\x20reminders\x20(pending\x20first).\x20Filter\x20by\x20status/detector/beneficiary;\x20paginate.\x0a'+'\x20\x20โ€ข\x20dismiss\x20โ€”\x20record\x20\x27I\x20won\x27t\x20act\x20on\x20this\x27.\x20A\x20dismissed\x20task\x20re-opens\x20ONLY\x20when\x20the\x20underlying\x20'+'state\x20materially\x20changes\x20(new\x20funds\x20arrived,\x20a\x20new\x20forward\x20opened)\x20โ€”\x20never\x20for\x20the\x20identical\x20state.\x0a'+'\x20\x20โ€ข\x20execute\x20โ€”\x20act\x20NOW\x20on\x20one\x20keeper-executable\x20task\x20as\x20its\x20beneficiary.\x20This\x20explicit\x20call\x20IS\x20the\x20'+'user\x20decision\x20(no\x20rule\x20needed).\x20Signing\x20stays\x20in\x20the\x20existing\x20on-chain\x20pipeline\x20(env.account\x20=\x20'+'beneficiary);\x20the\x20keeper\x20never\x20touches\x20keys.\x0a'+'\x20\x20โ€ข\x20rules\x20/\x20rule_set\x20/\x20rule_remove\x20โ€”\x20standing\x20AUTO-EXECUTE\x20authorizations\x20(็”จๆˆทๆŽˆๆƒ็š„่‡ชๅŠจๅ†ณ็ญ–).\x20'+'Nothing\x20auto-executes\x20without\x20an\x20enabled\x20rule;\x20v1\x20restricts\x20auto-execution\x20to\x20payment_unclaimed.\x20'+'Every\x20auto-exec\x20stamps\x20the\x20rule\x20id\x20into\x20the\x20task\x27s\x20resolution\x20audit;\x20failed\x20attempts\x20cool\x20down\x20'+'(no\x20gas-burn\x20retry\x20loops);\x20per-scan\x20auto-exec\x20is\x20capped.\x0a'+'\x20\x20โ€ข\x20config\x20/\x20config_set\x20โ€”\x20master\x20switch,\x20per-detector\x20switches,\x20scan\x20cadence\x20(default\x202min),\x20'+'scan\x20bounds,\x20auto-exec\x20gas\x20guard\x20and\x20failure\x20cooldown.\x0a'+'\x20\x20โ€ข\x20scan\x20โ€”\x20force\x20a\x20scan\x20now\x20(cadence\x20gate\x20bypassed).\x20Requires\x20a\x20resolved\x20monitor\x20scope.\x0a'+'\x20\x20โ€ข\x20status\x20โ€”\x20last\x20scan\x20time,\x20next\x20due,\x20pending\x20counts\x20per\x20detector.\x0a\x0a'+'๐Ÿ’ก\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27keeper_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':KeeperOperationInputSchema,'outputSchema':KeeperOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('monitor',['keeper','reminder','todo','auto-execute','rule','unclaimed','payment','workflow','task'])},'timeoutMs':0x1d4c0}];
1
+ import{handleMonitorEvents,handleMonitorSubscription}from'../handlers/monitor.js';import{handleKeeperOperation}from'../handlers/keeper.js';import{createToolMeta,MonitorEventsInputSchema,MonitorEventsResultSchema,MonitorSubscriptionInputSchema,MonitorSubscriptionResultSchema,KeeperOperationInputSchema,KeeperOperationOutputSchema}from'../../schema/index.js';export const MONITOR_TOOLS=[{'name':'monitor_events','handler':handleMonitorEvents,'config':{'title':'๐Ÿ””\x20Monitor\x20Events\x20-\x20Persistent\x20Store\x20&\x20Read\x20State','summary':'Persistent\x20monitor\x20event\x20store:\x20paginated\x20events\x20with\x20read\x20flags;\x20mark\x20read/unread.','description':'Query\x20and\x20manage\x20the\x20PERSISTENT\x20monitor\x20event\x20store\x20โ€”\x20the\x20same\x20store\x20the\x20client\x20UI\x27s\x20'+'Monitor\x20page\x20reads.\x20Events\x20are\x20captured\x20by\x20the\x20resident\x20MonitorLoop\x20(client\x20sidecar,\x20'+'or\x20the\x20stdio\x20MCP\x20server\x20when\x20MONITOR_LOOP=1)\x20across\x209\x20modules\x20(order\x20/\x20arb\x20/\x20demand\x20/\x20'+'progress\x20/\x20treasury\x20/\x20reward\x20/\x20service\x20/\x20entity\x20/\x20payment),\x20stored\x20APPEND-ONLY\x20per\x20'+'event\x20(no\x20ring\x20buffer,\x20survives\x20restarts),\x20and\x20carry\x20a\x20per-event\x20read\x20flag\x20persisted\x20in\x20SQLite.\x0a\x0a'+'Actions\x20(action):\x0a'+'\x20\x20โ€ข\x20query\x20โ€”\x20paginated\x20events,\x20newest\x20first.\x20Returns\x20events[]\x20(id,\x20module,\x20type,\x20time,\x20seen,\x20event),\x20'+'total,\x20module_counts,\x20unread_by_module,\x20total_unread.\x20Filter\x20with\x20module/event_type/since/until;\x20'+'paginate\x20with\x20limit/offset.\x20relevant_only\x20(default\x20TRUE)\x20restricts\x20to\x20events\x20that\x20hit\x20your\x20scope\x20'+'closure/focus/filters\x20(the\x20de-noised\x20agent\x20todo\x20stream);\x20pass\x20false\x20for\x20the\x20full\x20firehose.\x20'+'with_reason\x20attaches\x20each\x20event\x27s\x20relevance\x20annotation\x20(why\x20it\x20concerns\x20you)\x20+\x20a\x20delivered\x20flag.\x0a'+'\x20\x20โ€ข\x20mark_read\x20โ€”\x20mark\x20event_ids\x20(format\x20\x27<eventSeq>:<txDigest>\x27)\x20as\x20read.\x20Idempotent;\x20returns\x20marked\x20count\x20+\x20total_unread.\x0a'+'\x20\x20โ€ข\x20mark_all_read\x20โ€”\x20mark\x20ALL\x20stored\x20events\x20read\x20(optionally\x20scoped\x20to\x20module).\x20Returns\x20marked\x20count\x20+\x20total_unread.\x0a\x0a'+'Cross-process\x20note:\x20read\x20state\x20is\x20SHARED\x20with\x20the\x20client\x20app\x20(same\x20SQLite\x20store)\x20โ€”\x20marking\x20'+'events\x20read\x20here\x20clears\x20the\x20client\x27s\x20Monitor\x20unread\x20badge\x20and\x20vice\x20versa.\x20Configure\x20the\x20'+'scope/filters\x20behind\x20relevant_only\x20via\x20the\x20monitor_subscription\x20tool.\x0a\x0a'+'๐Ÿ’ก\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27monitor_events\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':MonitorEventsInputSchema,'outputSchema':MonitorEventsResultSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('monitor',['monitor','events','unread','read','notification','order','arbitration','demand','progress'])}},{'name':'monitor_subscription','handler':handleMonitorSubscription,'config':{'title':'๐Ÿ””\x20Monitor\x20Subscription\x20-\x20Scope,\x20Filters\x20&\x20Todo-Stream\x20Config','summary':'Monitor\x20subscription\x20config:\x20scope-closure\x20rules,\x20focus\x20objects,\x20per-type\x20switches,\x20conditional\x20filters;\x20scope\x20preview\x20+\x20filter\x20dry-run.','description':'The\x20SINGLE\x20entry\x20point\x20for\x20monitor\x20v4\x20subscription\x20configuration\x20(the\x20client\x20settings\x20'+'panel\x20and\x20agent\x20conversations\x20both\x20use\x20this\x20tool).\x20The\x20config\x20drives\x20three\x20layers:\x20'+'the\x20SCOPE\x20CLOSURE\x20(which\x20objects\x27\x20events\x20are\x20relevant\x20to\x20you:\x20anchor\x20accounts\x20โ†’\x20'+'permissions\x20โ†’\x20managed\x20objects\x20โ†’\x20merchant/buyer\x20orders\x20โ†’\x20order\x20children,\x20plus\x20explicit\x20'+'focus\x20objects),\x20the\x20TODO-STREAM\x20switches\x20(per-event-type\x20delivery\x20on/off),\x20and\x20'+'conditional\x20FILTERS\x20(field-path\x20predicates\x20over\x20event\x20payloads).\x20Event\x20CAPTURE\x20is\x20'+'unaffected\x20by\x20these\x20switches\x20EXCEPT\x20NewPaymentEvent,\x20which\x20is\x20captured\x20only\x20when\x20'+'switched\x20ON\x20here\x20(high-volume\x20fund\x20receipts,\x20opt-in).\x0a\x0a'+'Actions\x20(action):\x0a'+'\x20\x20โ€ข\x20get\x20โ€”\x20effective\x20config\x20(defaults\x20merged)\x20+\x20resolved\x20state:\x20scope_version,\x20per-layer\x20'+'closure\x20counts,\x20capture_types,\x20last_poll_at,\x20and\x20this\x20process\x27s\x20MonitorLoop\x20status.\x0a'+'\x20\x20โ€ข\x20save\x20โ€”\x20merge\x20a\x20partial\x20config\x20(scope.rules/events/loop\x20merge\x20field-wise;\x20'+'focus_objects/filters\x20REPLACE\x20wholesale;\x20loop\x20params\x20clamped\x20to\x20safe\x20bounds),\x20then\x20'+'trigger\x20an\x20IMMEDIATE\x20scope\x20re-resolve;\x20a\x20scope\x20change\x20schedules\x20a\x20non-blocking\x20'+'re-annotation\x20backfill\x20over\x20loop.backfill_days.\x0a'+'\x20\x20โ€ข\x20reset\x20โ€”\x20restore\x20the\x20default\x20config\x20and\x20re-resolve.\x0a'+'\x20\x20โ€ข\x20scope_preview\x20โ€”\x20the\x20current\x20scope\x20closure\x20grouped\x20by\x20layer\x20(accounts\x20/\x20permissions\x20/\x20'+'managed_objects\x20/\x20services\x20/\x20orders\x20/\x20order_children\x20/\x20focus),\x20paginated\x20with\x20limit/offset,\x20'+'optionally\x20restricted\x20to\x20one\x20layer\x20via\x20rule.\x20Inspect\x20this\x20BEFORE\x20tuning\x20the\x20rule\x20switches.\x0a'+'\x20\x20โ€ข\x20test_filter\x20โ€”\x20dry-run\x20a\x20filter\x20draft\x20over\x20the\x20most\x20recent\x20captured\x20events\x20(sample,\x20'+'default\x20200,\x20max\x201000):\x20returns\x20matched\x20count,\x20scanned\x20count,\x20and\x20up\x20to\x205\x20sample\x20events.\x20'+'Preview\x20a\x20filter\x27s\x20noise/hit\x20rate\x20BEFORE\x20saving\x20it\x20into\x20config.filters.\x0a\x0a'+'๐Ÿ’ก\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27monitor_subscription\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':MonitorSubscriptionInputSchema,'outputSchema':MonitorSubscriptionResultSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('monitor',['monitor','subscription','scope','focus','filter','config','todo','relevance'])}},{'name':'keeper_operation','handler':handleKeeperOperation,'config':{'title':'โฐ\x20Keeper\x20โ€”\x20Actionable\x20Reminders\x20&\x20Authorized\x20Auto-Execution','summary':'Who-benefits-who-pushes:\x20scans\x20the\x20monitor\x20scope\x20for\x20actionable\x20state\x20(unclaimed\x20funds,\x20advanceable\x20workflow\x20nodes),\x20routes\x20tasks\x20to\x20beneficiaries;\x20per-task\x20dismiss/execute\x20+\x20standing\x20auto-execute\x20rules.','description':'The\x20chain\x20has\x20NO\x20time-triggered\x20execution:\x20a\x20time-locked\x20Guard\x20becoming\x20satisfiable,\x20'+'CoinWrappers\x20waiting\x20to\x20be\x20unwrapped,\x20or\x20a\x20stalled\x20workflow\x20node\x20produce\x20NO\x20events\x20โ€”\x20'+'someone\x20must\x20send\x20a\x20transaction\x20(gas).\x20The\x20keeper\x20is\x20the\x20MCP-side\x20answer,\x20built\x20on\x20one\x20'+'principle:\x20WHO\x20BENEFITS,\x20WHO\x20PUSHES.\x20It\x20scans\x20the\x20monitor\x20scope\x20(accounts/orders\x20resolved\x20'+'by\x20monitor_subscription)\x20on\x20its\x20own\x20cadence\x20inside\x20the\x20MonitorLoop\x20tick,\x20and\x20routes\x20every\x20'+'actionable\x20item\x20to\x20its\x20beneficiary\x20as\x20a\x20KeeperTask.\x0a\x0a'+'Detectors\x20(v1):\x0a'+'\x20\x20โ€ข\x20payment_unclaimed\x20โ€”\x20you\x20own\x20unclaimed\x20CoinWrapper(s):\x20funds\x20one\x20\x27payment\x20{receive:true}\x27\x20'+'away\x20from\x20your\x20wallet.\x20Keeper-executable\x20and\x20auto-executable\x20(claim-to-self:\x20funds\x20only\x20ever\x20'+'move\x20INTO\x20your\x20own\x20wallet).\x0a'+'\x20\x20โ€ข\x20progress_actionable\x20โ€”\x20an\x20in-scope\x20order\x27s\x20workflow\x20has\x20a\x20forward\x20YOU\x20can\x20execute\x20from\x20the\x20'+'current\x20node\x20(session-aware;\x20guard/permission/named-operator\x20judged\x20on-chain).\x20Reminder-only:\x20'+'advancing\x20may\x20release\x20funds\x20to\x20a\x20counterparty,\x20so\x20execution\x20stays\x20with\x20you\x20via\x20workflow_operation.\x0a\x0a'+'Actions\x20(action):\x0a'+'\x20\x20โ€ข\x20tasks\x20โ€”\x20list\x20reminders\x20(pending\x20first).\x20Filter\x20by\x20status/detector/beneficiary;\x20paginate.\x0a'+'\x20\x20โ€ข\x20dismiss\x20โ€”\x20record\x20\x27I\x20won\x27t\x20act\x20on\x20this\x27.\x20A\x20dismissed\x20task\x20re-opens\x20ONLY\x20when\x20the\x20underlying\x20'+'state\x20materially\x20changes\x20(new\x20funds\x20arrived,\x20a\x20new\x20forward\x20opened)\x20โ€”\x20never\x20for\x20the\x20identical\x20state.\x0a'+'\x20\x20โ€ข\x20execute\x20โ€”\x20act\x20NOW\x20on\x20one\x20keeper-executable\x20task\x20as\x20its\x20beneficiary.\x20This\x20explicit\x20call\x20IS\x20the\x20'+'user\x20decision\x20(no\x20rule\x20needed).\x20Signing\x20stays\x20in\x20the\x20existing\x20on-chain\x20pipeline\x20(env.account\x20=\x20'+'beneficiary);\x20the\x20keeper\x20never\x20touches\x20keys.\x0a'+'\x20\x20โ€ข\x20rules\x20/\x20rule_set\x20/\x20rule_remove\x20โ€”\x20standing\x20AUTO-EXECUTE\x20authorizations\x20(user-authorized\x20automatic\x20decisions).\x20'+'Nothing\x20auto-executes\x20without\x20an\x20enabled\x20rule;\x20v1\x20restricts\x20auto-execution\x20to\x20payment_unclaimed.\x20'+'Every\x20auto-exec\x20stamps\x20the\x20rule\x20id\x20into\x20the\x20task\x27s\x20resolution\x20audit;\x20failed\x20attempts\x20cool\x20down\x20'+'(no\x20gas-burn\x20retry\x20loops);\x20per-scan\x20auto-exec\x20is\x20capped.\x0a'+'\x20\x20โ€ข\x20config\x20/\x20config_set\x20โ€”\x20master\x20switch,\x20per-detector\x20switches,\x20scan\x20cadence\x20(default\x202min),\x20'+'scan\x20bounds,\x20auto-exec\x20gas\x20guard\x20and\x20failure\x20cooldown.\x0a'+'\x20\x20โ€ข\x20scan\x20โ€”\x20force\x20a\x20scan\x20now\x20(cadence\x20gate\x20bypassed).\x20Requires\x20a\x20resolved\x20monitor\x20scope.\x0a'+'\x20\x20โ€ข\x20status\x20โ€”\x20last\x20scan\x20time,\x20next\x20due,\x20pending\x20counts\x20per\x20detector.\x0a\x0a'+'๐Ÿ’ก\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27keeper_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':KeeperOperationInputSchema,'outputSchema':KeeperOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('monitor',['keeper','reminder','todo','auto-execute','rule','unclaimed','payment','workflow','task'])},'timeoutMs':0x1d4c0}];
@@ -1 +1 @@
1
- import{confirmGate}from'../safety/confirm-gate.js';import{renderPreview}from'../safety/preview.js';import{validateOperation,hasBlockingViolations,getWarningViolations}from'../knowledge/index.js';import{getHarness}from'../harness/index.js';import{isEnabled as a399a}from'../config/index.js';import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{strictParse}from'../schema/index.js';export function withHarness(a,b,c){if(!a399a('harness'))return a;try{const d=getHarness(),e=d['expect'](b,c,a['operation_type'],a['data']);return{...a,'harness':d,'expected':e,'operation_id':a['operation_type']+'_'+Date['now']()};}catch{return a;}}export function wrapLocalHandler(a){const {schema:b,operationFn:c,parseLabel:d,buildContext:e}=a;return async f=>{let g;try{g=strictParse(b,f,d);const h=await c(g),i=e(g);return{'content':[{'type':'text','text':JSON['stringify'](h)}],'structuredContent':{'result':{'status':'success','data':h},'semantic':buildDataSemantic(h,i)}};}catch(j){const k=j instanceof Error?j['message']:String(j),l=g?e(g):undefined,m=classifyError(k),n={'status':'error','error':k};if(m['error_code']!==undefined)n['error_code']=m['error_code'];if(m['retryable']!==undefined)n['retryable']=m['retryable'];if(m['recovery_hint']!==undefined)n['recovery_hint']=m['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+k}],'structuredContent':{'result':n,'semantic':buildDataSemantic(undefined,l,!![],k)}};}};}export function buildPendingConfirmation(a,b,c,d,e){const f=confirmGate(a,b,c,c?.['user_intent_phrases'],d,e);if(f['pass'])return{'content':[],'structuredContent':null};const g=f['preview'],h=renderPreview(g),i={'message':h,'result':{'type':'pending_confirmation','preview':g,'rule_id':f['rule_id']},'semantic':{'intent':a+'_awaiting_confirmation','status':'pending_input','summary':'Operation\x20blocked\x20by\x20ConfirmGate\x20('+f['level']+').\x20Review\x20the\x20preview\x20and\x20re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'ConfirmGate\x20rule\x20\x27'+f['rule_id']+'\x27\x20matched.\x20The\x20operation\x20was\x20NOT\x20executed.','tool':'onchain_operations','priority':'required'}],'warnings':g['warnings']??[]}};return{'content':[{'type':'text','text':h}],'structuredContent':i};}export function buildConstraintError(a,b){const c=b['filter'](g=>g['severity']==='error'),d=c['map'](g=>'\x20\x20โ€ข\x20['+g['field']+']\x20'+g['message'])['join']('\x0a'),e='Pre-call\x20constraint\x20violations\x20for\x20\x27'+a+'\x27:\x0a'+d+'\x0a\x0aFix\x20the\x20listed\x20field(s)\x20and\x20retry.',f={'message':e,'result':{'type':'error','error':e,'error_code':'invalid_parameter','retryable':![],'recovery_hint':'Review\x20the\x20constraint\x20violations\x20above\x20and\x20correct\x20the\x20corresponding\x20fields.'}};return{'content':[{'type':'text','text':e}],'structuredContent':f};}export function buildClassifiedErrorResult(a,b,c){const d={...a,'error':b};if(c['error_code']!==undefined)d['error_code']=c['error_code'];if(c['retryable']!==undefined)d['retryable']=c['retryable'];if(c['recovery_hint']!==undefined)d['recovery_hint']=c['recovery_hint'];return d;}export{validateOperation,hasBlockingViolations,getWarningViolations};
1
+ import{confirmGate}from'../safety/confirm-gate.js';import{renderPreview}from'../safety/preview.js';import{validateOperation,hasBlockingViolations,getWarningViolations}from'../knowledge/index.js';import{getHarness}from'../harness/index.js';import{isEnabled as a401a}from'../config/index.js';import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{strictParse}from'../schema/index.js';export function withHarness(a,b,c){if(!a401a('harness'))return a;try{const d=getHarness(),e=d['expect'](b,c,a['operation_type'],a['data']);return{...a,'harness':d,'expected':e,'operation_id':a['operation_type']+'_'+Date['now']()};}catch{return a;}}export function wrapLocalHandler(a){const {schema:b,operationFn:c,parseLabel:d,buildContext:e}=a;return async f=>{let g;try{g=strictParse(b,f,d);const h=await c(g),i=e(g);return{'content':[{'type':'text','text':JSON['stringify'](h)}],'structuredContent':{'result':{'status':'success','data':h},'semantic':buildDataSemantic(h,i)}};}catch(j){const k=j instanceof Error?j['message']:String(j),l=g?e(g):undefined,m=classifyError(k),n={'status':'error','error':k};if(m['error_code']!==undefined)n['error_code']=m['error_code'];if(m['retryable']!==undefined)n['retryable']=m['retryable'];if(m['recovery_hint']!==undefined)n['recovery_hint']=m['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+k}],'structuredContent':{'result':n,'semantic':buildDataSemantic(undefined,l,!![],k)}};}};}export function buildPendingConfirmation(a,b,c,d,e){const f=confirmGate(a,b,c,c?.['user_intent_phrases'],d,e);if(f['pass'])return{'content':[],'structuredContent':null};const g=f['preview'],h=renderPreview(g),i={'message':h,'result':{'type':'pending_confirmation','preview':g,'rule_id':f['rule_id']},'semantic':{'intent':a+'_awaiting_confirmation','status':'pending_input','summary':'Operation\x20blocked\x20by\x20ConfirmGate\x20('+f['level']+').\x20Review\x20the\x20preview\x20and\x20re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'ConfirmGate\x20rule\x20\x27'+f['rule_id']+'\x27\x20matched.\x20The\x20operation\x20was\x20NOT\x20executed.','tool':'onchain_operations','priority':'required'}],'warnings':g['warnings']??[]}};return{'content':[{'type':'text','text':h}],'structuredContent':i};}export function buildConstraintError(a,b){const c=b['filter'](g=>g['severity']==='error'),d=c['map'](g=>'\x20\x20โ€ข\x20['+g['field']+']\x20'+g['message'])['join']('\x0a'),e='Pre-call\x20constraint\x20violations\x20for\x20\x27'+a+'\x27:\x0a'+d+'\x0a\x0aFix\x20the\x20listed\x20field(s)\x20and\x20retry.',f={'message':e,'result':{'type':'error','error':e,'error_code':'invalid_parameter','retryable':![],'recovery_hint':'Review\x20the\x20constraint\x20violations\x20above\x20and\x20correct\x20the\x20corresponding\x20fields.'}};return{'content':[{'type':'text','text':e}],'structuredContent':f};}export function buildClassifiedErrorResult(a,b,c){const d={...a,'error':b};if(c['error_code']!==undefined)d['error_code']=c['error_code'];if(c['retryable']!==undefined)d['retryable']=c['retryable'];if(c['recovery_hint']!==undefined)d['recovery_hint']=c['recovery_hint'];return d;}export{validateOperation,hasBlockingViolations,getWarningViolations};
@@ -1 +1 @@
1
- import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{buildClassifiedErrorResult}from'./shared.js';import{shouldRunLightHooks,shouldRunHeavyHooks,recordOperationFailure,recordCriticalRisk,recordCriticalOperation,recordSubstepFailure}from'../harness/auto-escalation.js';import{getHarnessTier,setHarnessTier,isEnabled}from'../config/runtime.js';import{getHarness}from'../harness/index.js';import{recordOperationOutcome}from'../experience/index.js';import{recordIndustrySignal}from'../knowledge/flywheel-loop.js';import{getStageCache}from'../playbooks/service-build/index.js';import{SERVICE_BUILD_STAGES}from'../playbooks/service-build/process.js';import{extractAmount,getAmountThreshold,formatAmount}from'../knowledge/safety-rules.js';function stageIndexOf(a){const b=SERVICE_BUILD_STAGES['indexOf'](a);return b>=0x0?b:0x0;}export function withTimeout(a,b=0x7530,c='operation'){let d;return Promise['race']([a['finally'](()=>{if(d)clearTimeout(d);}),new Promise((e,f)=>{d=setTimeout(()=>{let g='';if(c['includes']('messenger'))g='\x20This\x20is\x20a\x20messenger\x20network\x20operation.\x20Possible\x20causes:\x20'+'(1)\x20messenger\x20server\x20(https://messenger.wowok.net)\x20unreachable,\x20'+'(2)\x20no\x20messenger-enabled\x20account\x20configured\x20(use\x20account_operation\x20to\x20set\x20messenger\x20name),\x20'+'(3)\x20network\x20connectivity\x20issue.\x20'+'Ensure\x20you\x20have\x20a\x20messenger-enabled\x20account\x20and\x20the\x20server\x20is\x20reachable.';else(c['includes']('onchain')||c['includes']('account_operation')||c['includes']('bridge')||c['includes']('workflow')||c['includes']('keeper')||c['includes']('wowok'))&&(g='\x20This\x20tool\x20may\x20submit\x20an\x20ON-CHAIN\x20transaction.\x20The\x20transaction\x20was\x20NOT\x20cancelled\x20'+'by\x20this\x20timeout\x20โ€”\x20it\x20may\x20already\x20be\x20submitted\x20and\x20still\x20finalize\x20on-chain.\x20'+'DO\x20NOT\x20blindly\x20retry\x20(risk\x20of\x20duplicate\x20operations).\x20First\x20verify:\x20'+'(1)\x20if\x20the\x20error\x20above\x20carries\x20a\x20tx\x20digest,\x20check\x20it\x20via\x20query_toolkit\x20'+'(query_type=\x27onchain_transaction\x27);\x20(2)\x20otherwise\x20re-query\x20the\x20target\x20object\x20state\x20'+'(query_toolkit\x20onchain_objects)\x20and\x20only\x20retry\x20if\x20the\x20operation\x20truly\x20did\x20not\x20land.');f(new Error('Operation\x20\x27'+c+'\x27\x20timed\x20out\x20after\x20'+b+'ms.'+g));},b);})]);}export function wrapHandlerWithErrorShape(a,b,c,d){return async(e,f)=>{try{return await withTimeout(a(e,f),b,c);}catch(g){if(d){const h=g instanceof Error?g['message']:String(g),i=classifyError(h),j={'operation_type':c,'data':e},k=d(h,i,j);return{'content':[{'type':'text','text':'Error:\x20'+h}],'structuredContent':k};}throw g;}};}export const statusErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'status':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const operationErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'operation':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const strictStatusErrorShape=(a,b,c)=>({'result':{'status':'error','error':a}});function checkProjectStage(a,b,c){const d={'analyze_intent':'puzzle','aggregate_risks':'risk','trace_substeps':'substeps'},e=d[a];if(!e)return null;const f=getStageCache(b,c);if(!f){if(a==='analyze_intent')return null;return'project_stage:\x20calling\x20\x27'+a+'\x27\x20before\x20\x27analyze_intent\x27\x20โ€”\x20recommend\x20calling\x20analyze_intent\x20first\x20for\x20project\x20\x27'+b+':'+c+'\x27';}if(stageIndexOf(f['stage'])<stageIndexOf(e)-0x1)return'project_stage:\x20calling\x20\x27'+a+'\x27\x20(stage\x20\x27'+e+'\x27)\x20but\x20project\x20is\x20at\x20stage\x20\x27'+f['stage']+'\x27\x20โ€”\x20recommend\x20completing\x20prior\x20stages\x20first\x20for\x20\x27'+b+':'+c+'\x27';return null;}export function dispatchWithHarness(a,b){return async(d,f)=>{const g=[],h=getHarness(),i=shouldRunLightHooks(),j=shouldRunHeavyHooks(),k=isPublishOperation(b,d),l=isSignOperation(b,d),m=getHarnessTier();let n;if(i)try{const p=extractOperationType(b,d),q=extractIntent(b,d);p&&q&&(n=h['expect'](b,q,p,extractData(d)));}catch(r){g['push']('pre_call\x20hook\x20failed:\x20'+(r instanceof Error?r['message']:String(r)));}if(b==='goal_operation'&&i)try{const s=d,t=s?.['action'],u=s?.['project'],v=s?.['version'];if(t&&u&&v){const x=checkProjectStage(t,u,v);x&&g['push'](x);}}catch{}k&&m==='lightweight'&&(setHarnessTier('full'),g['push']('pre_publish:\x20tier\x20forced\x20to\x20full\x20for\x20publish-class\x20operation\x20(GLM5-21\x20ยง3.3)'));if(k&&m!=='off')try{const y=runPrePublishChecks(b,d);g['push'](...y['warnings']);if(y['critical']['length']>0x0){for(const z of y['critical']){const A=recordCriticalRisk(z);if(A)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+A['reason']);}return buildHarnessBlockResult('pre_publish','Publish\x20BLOCKED\x20by\x20Harness\x20pre-publish\x20gate\x20(GLM5-21\x20V6):\x20'+(y['critical']['length']+'\x20CRITICAL\x20risk(s)\x20must\x20be\x20resolved\x20before\x20publish.'),y['critical'],y['warnings'],'immutable_violation','Fix\x20the\x20CRITICAL\x20risks\x20listed\x20in\x20the\x20message\x20(e.g.\x20rename\x20dispute/refund\x20nodes\x20per\x20R-M1-11,\x20add\x20the\x20entry\x20pair\x20prev_node=\x22\x22),\x20then\x20retry\x20publish.\x20Nodes/pairs/forwards\x20are\x20immutable\x20after\x20publish\x20โ€”\x20verify\x20via\x20machineNode2file\x20first.');}}catch(B){g['push']('pre_publish\x20hook\x20failed:\x20'+(B instanceof Error?B['message']:String(B)));}if(l&&j)try{const C=extractData(d),D=C?extractAmount(C):null;if(D!==null){const E=getAmountThreshold();let F=null;try{F=BigInt(D);}catch{F=null;}if(F!==null&&F>E)return buildHarnessBlockResult('pre_sign','Sign\x20BLOCKED\x20by\x20Harness\x20pre-sign\x20gate\x20(GLM5-21\x20V7):\x20amount\x20'+formatAmount(F)+'\x20WOW\x20exceeds\x20the\x20full-tier\x20threshold\x20'+formatAmount(E)+'\x20WOW.',['amount\x20'+D+'\x20(smallest\x20unit)\x20>\x20threshold\x20'+E['toString']()+'\x20(smallest\x20unit)'],[],'invalid_parameter','Raise\x20WOWOK_AMOUNT_THRESHOLD\x20to\x20match\x20the\x20intended\x20amount,\x20split\x20the\x20transaction,\x20or\x20reset\x20the\x20harness\x20tier\x20to\x20lightweight\x20(config_operation)\x20after\x20explicit\x20user\x20confirmation.');}}catch(G){g['push']('pre_sign\x20hook\x20failed:\x20'+(G instanceof Error?G['message']:String(G)));}let o;try{o=await a(d,f);}catch(H){const I=H instanceof Error?H['message']:String(H),J=recordOperationFailure(b,I);J&&g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+J['reason']);if(b==='onchain_operations')try{const K=classifyError(I,H);if(!K['retryable']&&K['error_code']!=='unknown'){const L=recordCriticalOperation(b,K['error_code']);if(L)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+L['reason']);}}catch{}throw H;}if(i&&n)try{if(o?.['structuredContent']){const M=buildVerifyInput(n,o),N=h['verify'](M);if(N['status']==='fail')g['push']('Harness\x20verify\x20FAIL:\x20'+N['summary']);else N['status']==='warn'&&g['push']('Harness\x20verify\x20WARN:\x20'+N['summary']);}}catch(O){g['push']('post_call\x20hook\x20failed:\x20'+(O instanceof Error?O['message']:String(O)));}if(b==='onchain_operations')try{if(classifyOutcome(o)==='failed'){const P=extractErrorCode(o)??'',Q=classifyError(P);if(!Q['retryable']&&Q['error_code']!=='unknown'){const R=recordCriticalOperation(b,Q['error_code']);if(R)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+R['reason']);}}}catch{}if(i){const S=extractIntent(b,d)??b;try{const T=classifyOutcome(o);if(T==='failed'){const U=extractErrorCode(o)??'',V=classifyError(U),W=h['recover'](V['error_code'],S,{'operation_type':b,'data':extractData(d)});g['push']('Harness\x20recover:\x20strategy='+W['strategy']+('\x20(attempt\x20'+W['current_attempt']+'/'+W['max_attempts']+')')+(W['should_retry']?'\x20โ€”\x20retryable':'\x20โ€”\x20do\x20NOT\x20retry\x20blindly')+(W['user_prompt']?'\x20โ€”\x20'+W['user_prompt']:'\x20โ€”\x20'+W['detail']));}else T==='success'&&h['resetRecovery'](S);}catch(X){g['push']('recover\x20hook\x20failed:\x20'+(X instanceof Error?X['message']:String(X)));}}if(b==='goal_operation')try{const Y=d?.['action'];if(Y==='trace_substeps'){const Z=extractCriticalFindingCount(o);if(Z>0x0){const a0=recordSubstepFailure(String(Y)+':\x20'+Z+'\x20critical\x20finding(s)');if(a0)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+a0['reason']);}}}catch{}if(isWriteClassTool(b)&&!SEMANTIC_RECORDED_TOOLS['has'](b))try{const a1=extractOperationType(b,d)??b,a2=extractIntent(b,d)??b,a3=extractData(d)??d,a4=classifyOutcome(o),a5=extractErrorCode(o),a6=isEnabled('experience_layer');if(a6)recordOperationOutcome(a1,a3,a2,a4,a5);else{const a7=extractIndustry(d);a7&&isEnabled('industry_evolution')&&recordIndustrySignal(a7,{'type':a1},{'success':a4==='success','error_code':a5});}}catch(a8){g['push']('signal\x20collection\x20failed:\x20'+(a8 instanceof Error?a8['message']:String(a8)));}if(g['length']>0x0){if(o?.['structuredContent']){const a9=o['structuredContent'],aa=a9['semantic'];if(aa){const ab=Array['isArray'](aa['warnings'])?aa['warnings']:[];aa['warnings']=[...ab,...g];}else for(const ac of g){console['warn']('[harness]\x20'+ac);}}else for(const ad of g){console['warn']('[harness]\x20'+ad);}}return o;};}function isPublishOperation(a,b){if(a!=='onchain_operations')return![];const c=extractOperationType(a,b);if(c!=='service'&&c!=='machine')return![];const d=extractData(b);return d?.['publish']===!![]||d?.['bPublished']===!![];}function isSignOperation(a,b){if(a==='wip_file'){const c=b?.['operation_type'];return c==='sign';}return a==='onchain_operations';}function extractOperationType(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if(a==='onchain_operations')return typeof c['operation_type']==='string'?c['operation_type']:undefined;if(a==='goal_operation'||a==='industry_pack_operation'||a==='strategy_review_operation')return typeof c['action']==='string'?c['action']:undefined;return typeof c['operation_type']==='string'?c['operation_type']:undefined;}function extractIntent(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if((a==='goal_operation'||a==='industry_pack_operation'||a==='strategy_review_operation')&&typeof c['action']==='string')return a+':'+c['action'];const d=c['operation_type'];if(typeof d==='string')return a+':'+d;return a;}function extractData(a){if(!a||typeof a!=='object')return undefined;const b=a,c=b['data'];return c&&typeof c==='object'?c:undefined;}function buildVerifyInput(a,b){const c=b['structuredContent']??{},d=c['semantic'];return{'expected':a,'actual':{'result_type':typeof c['result_type']==='string'?c['result_type']:undefined,'semantic':d,'error_code':typeof c['error_code']==='string'?c['error_code']:undefined,'error':typeof c['error']==='string'?c['error']:undefined}};}const WRITE_CLASS_TOOLS=new Set(['onchain_operations','goal_operation','industry_pack_operation','strategy_review_operation','wip_file','messenger_operation','bridge_operation']),SEMANTIC_RECORDED_TOOLS=new Set(['onchain_operations','bridge_operation']);function isWriteClassTool(a){return WRITE_CLASS_TOOLS['has'](a);}function classifyOutcome(a){if(!a?.['structuredContent'])return'failed';const b=a['structuredContent'],c=typeof b['status']==='string'?b['status']:typeof b['result_type']==='string'?b['result_type']:'';if(c==='error'||c==='failed')return'failed';if(c==='partial')return'partial';return'success';}function extractErrorCode(a){if(!a?.['structuredContent'])return undefined;const b=a['structuredContent'];if(typeof b['error_code']==='string')return b['error_code'];const c=b['error'];if(typeof c==='string')return c;if(c&&typeof c==='object'){const d=c['code'];if(typeof d==='string')return d;}return undefined;}function extractIndustry(a){if(!a||typeof a!=='object')return undefined;const b=a;if(typeof b['industry']==='string')return b['industry'];const c=b['data'];if(c&&typeof c==='object'){const e=c;if(typeof e['industry']==='string')return e['industry'];}return undefined;}const ANTI_PATTERN_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function runPrePublishChecks(a,b){const c=[],d=[],e=extractOperationType(a,b),g=extractData(b)??{};if(e==='machine'){const h=g['node'],i=Array['isArray'](h)?h:Array['isArray'](h?.['nodes'])?h['nodes']:[];if(i['length']>0x0){for(const l of i){const m=typeof l?.['name']==='string'?l['name']:'';m&&ANTI_PATTERN_NODE_REGEX['test'](m)&&c['push']('R-M1-11:\x20machine\x20node\x20\x22'+m+'\x22\x20models\x20dispute/refund\x20flow\x20โ€”\x20'+'refunds\x20must\x20route\x20via\x20an\x20Allocator\x20triggered\x20by\x20business\x20states,\x20'+'disputes\x20via\x20the\x20separate\x20Arbitration\x20object\x20(off-Machine)');}const j=new Set();for(const o of i){const q=typeof o?.['name']==='string'?o['name']:'';if(!q)continue;j['has'](q)&&c['push']('MC-C-04:\x20duplicate\x20machine\x20node\x20name\x20\x22'+q+'\x22\x20โ€”\x20on-chain\x20will\x20reject\x20the\x20publish\x20transaction'),j['add'](q);}const k=i['some'](r=>Array['isArray'](r?.['pairs'])&&r['pairs']['some'](s=>s?.['prev_node']===''));!k&&c['push']('Machine\x20has\x20no\x20entry\x20pair\x20(prev_node=\x22\x22)\x20โ€”\x20Progress\x20can\x20never\x20advance\x20'+'from\x20the\x20initial\x20state;\x20orders\x20are\x20permanently\x20stuck');for(const r of i){const s=typeof r?.['name']==='string'?r['name']:'?';for(const t of r?.['pairs']??[]){for(const u of t?.['forwards']??[]){const v=u?.['namedOperator']!==undefined&&u?.['namedOperator']!==null,w=u?.['permissionIndex']!==undefined&&u?.['permissionIndex']!==null;!v&&!w&&d['push']('pre_publish:\x20node\x20\x22'+s+'\x22\x20forward\x20\x22'+String(u?.['name']??'?')+'\x22\x20has\x20neither\x20namedOperator\x20nor\x20permissionIndex\x20โ€”\x20no\x20one\x20can\x20advance\x20it');}}}}else d['push']('pre_publish:\x20publishing\x20machine\x20without\x20inline\x20node\x20data\x20โ€”\x20topology\x20not\x20verifiable\x20in\x20this\x20call;\x20'+'verify\x20nodes/pairs/forwards\x20via\x20machineNode2file\x20BEFORE\x20publish\x20(immutable\x20after\x20publish,\x20IMMUT-001)');d['push']('pre_publish:\x20machine\x20nodes/pairs/forwards\x20become\x20immutable\x20after\x20publish\x20(IMMUT-001)');}return e==='service'&&(d['push']('pre_publish:\x20service\x20machine/order_allocators/arbitrations\x20become\x20immutable\x20after\x20publish\x20(IMMUT-002);\x20sales\x20remains\x20modifiable'),g['machine']===undefined&&d['push']('pre_publish:\x20\x27machine\x27\x20not\x20set\x20in\x20this\x20call\x20โ€”\x20if\x20the\x20service\x20was\x20never\x20bound\x20to\x20a\x20published\x20machine,\x20'+'it\x20cannot\x20process\x20orders\x20and\x20CANNOT\x20be\x20fixed\x20after\x20publish'),g['order_allocators']===undefined&&d['push']('pre_publish:\x20\x27order_allocators\x27\x20not\x20set\x20in\x20this\x20call\x20โ€”\x20immutable\x20after\x20publish;\x20'+'orders\x20will\x20have\x20no\x20fund\x20distribution\x20if\x20never\x20configured')),{'critical':c,'warnings':d};}function buildHarnessBlockResult(a,b,c,d,e,f){const g=[...c['map'](i=>'CRITICAL:\x20'+i),...d['map'](i=>'WARN:\x20'+i)]['join']('\x0a'),h='Error:\x20'+b+(g?'\x0a'+g:'')+'\x0aRecovery:\x20'+f;return{'content':[{'type':'text','text':h}],'structuredContent':{'result':{'type':'error','error':b+'\x20[gate='+a+']','error_code':e,'retryable':![],'recovery_hint':f},'message':h}};}function extractCriticalFindingCount(a){const b=a?.['structuredContent'];if(!b)return 0x0;const c=b['semantic'],d=c?.['summary'];if(typeof d?.['critical_count']==='number'&&d['critical_count']>0x0)return d['critical_count'];const e=b['findings']??c?.['findings'];if(Array['isArray'](e))return e['filter'](h=>h?.['severity']==='error')['length'];const f=a?.['content']?.['map'](h=>'text'in h?h['text']:'')['join']('\x0a')??'',g=f['match'](/\[AUDIT ERROR\]/g);return g?g['length']:0x0;}
1
+ import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{buildClassifiedErrorResult}from'./shared.js';import{shouldRunLightHooks,shouldRunHeavyHooks,recordOperationFailure,recordCriticalRisk,recordCriticalOperation,recordSubstepFailure}from'../harness/auto-escalation.js';import{getHarnessTier,setHarnessTier,isEnabled}from'../config/runtime.js';import{getHarness}from'../harness/index.js';import{recordOperationOutcome}from'../experience/index.js';import{recordIndustrySignal}from'../knowledge/flywheel-loop.js';import{getStageCache}from'../playbooks/service-build/index.js';import{SERVICE_BUILD_STAGES}from'../playbooks/service-build/process.js';import{extractAmount,getAmountThreshold,formatAmount}from'../knowledge/safety-rules.js';function stageIndexOf(a){const b=SERVICE_BUILD_STAGES['indexOf'](a);return b>=0x0?b:0x0;}export function withTimeout(a,b=0x7530,c='operation'){let d;return Promise['race']([a['finally'](()=>{if(d)clearTimeout(d);}),new Promise((e,f)=>{d=setTimeout(()=>{let g='';if(c['includes']('messenger'))g='\x20This\x20is\x20a\x20messenger\x20network\x20operation.\x20Possible\x20causes:\x20'+'(1)\x20messenger\x20server\x20(https://messenger.wowok.net)\x20unreachable,\x20'+'(2)\x20no\x20messenger-enabled\x20account\x20configured\x20(use\x20account_operation\x20to\x20set\x20messenger\x20name),\x20'+'(3)\x20network\x20connectivity\x20issue.\x20'+'Ensure\x20you\x20have\x20a\x20messenger-enabled\x20account\x20and\x20the\x20server\x20is\x20reachable.';else(c['includes']('onchain')||c['includes']('account_operation')||c['includes']('bridge')||c['includes']('workflow')||c['includes']('keeper')||c['includes']('wowok'))&&(g='\x20This\x20tool\x20may\x20submit\x20an\x20ON-CHAIN\x20transaction.\x20The\x20transaction\x20was\x20NOT\x20cancelled\x20'+'by\x20this\x20timeout\x20โ€”\x20it\x20may\x20already\x20be\x20submitted\x20and\x20still\x20finalize\x20on-chain.\x20'+'DO\x20NOT\x20blindly\x20retry\x20(risk\x20of\x20duplicate\x20operations).\x20First\x20verify:\x20'+'(1)\x20if\x20the\x20error\x20above\x20carries\x20a\x20tx\x20digest,\x20check\x20it\x20via\x20query_toolkit\x20'+'(query_type=\x27onchain_transaction\x27);\x20(2)\x20otherwise\x20verify\x20via\x20query_toolkit\x20'+'onchain_events\x20(or\x20the\x20account\x27s\x20recent\x20transactions).\x20Do\x20NOT\x20rely\x20on\x20an\x20'+'onchain_objects\x20read\x20alone:\x20it\x20may\x20serve\x20a\x20pre-transaction\x20cached\x20snapshot,\x20'+'so\x20an\x20unchanged\x20object\x20must\x20never\x20on\x20its\x20own\x20justify\x20a\x20retry.');f(new Error('Operation\x20\x27'+c+'\x27\x20timed\x20out\x20after\x20'+b+'ms.'+g));},b);})]);}export function wrapHandlerWithErrorShape(a,b,c,d){return async(e,f)=>{try{return await withTimeout(a(e,f),b,c);}catch(g){if(d){const h=g instanceof Error?g['message']:String(g),i=classifyError(h),j={'operation_type':c,'data':e},k=d(h,i,j);return{'content':[{'type':'text','text':'Error:\x20'+h}],'structuredContent':k};}throw g;}};}export const statusErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'status':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const operationErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'operation':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const strictStatusErrorShape=(a,b,c)=>({'result':{'status':'error','error':a}});function checkProjectStage(a,b,c){const d={'analyze_intent':'puzzle','aggregate_risks':'risk','trace_substeps':'substeps'},e=d[a];if(!e)return null;const f=getStageCache(b,c);if(!f){if(a==='analyze_intent')return null;return'project_stage:\x20calling\x20\x27'+a+'\x27\x20before\x20\x27analyze_intent\x27\x20โ€”\x20recommend\x20calling\x20analyze_intent\x20first\x20for\x20project\x20\x27'+b+':'+c+'\x27';}if(stageIndexOf(f['stage'])<stageIndexOf(e)-0x1)return'project_stage:\x20calling\x20\x27'+a+'\x27\x20(stage\x20\x27'+e+'\x27)\x20but\x20project\x20is\x20at\x20stage\x20\x27'+f['stage']+'\x27\x20โ€”\x20recommend\x20completing\x20prior\x20stages\x20first\x20for\x20\x27'+b+':'+c+'\x27';return null;}export function dispatchWithHarness(a,b){return async(d,f)=>{const g=[],h=getHarness(),i=shouldRunLightHooks(),j=shouldRunHeavyHooks(),k=isPublishOperation(b,d),l=isSignOperation(b,d),m=getHarnessTier();let n;if(i)try{const p=extractOperationType(b,d),q=extractIntent(b,d);p&&q&&(n=h['expect'](b,q,p,extractData(d)));}catch(r){g['push']('pre_call\x20hook\x20failed:\x20'+(r instanceof Error?r['message']:String(r)));}if(b==='goal_operation'&&i)try{const s=d,t=s?.['action'],u=s?.['project'],v=s?.['version'];if(t&&u&&v){const x=checkProjectStage(t,u,v);x&&g['push'](x);}}catch{}k&&m==='lightweight'&&(setHarnessTier('full'),g['push']('pre_publish:\x20tier\x20forced\x20to\x20full\x20for\x20publish-class\x20operation\x20(GLM5-21\x20ยง3.3)'));if(k&&m!=='off')try{const y=runPrePublishChecks(b,d);g['push'](...y['warnings']);if(y['critical']['length']>0x0){for(const z of y['critical']){const A=recordCriticalRisk(z);if(A)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+A['reason']);}return buildHarnessBlockResult('pre_publish','Publish\x20BLOCKED\x20by\x20Harness\x20pre-publish\x20gate\x20(GLM5-21\x20V6):\x20'+(y['critical']['length']+'\x20CRITICAL\x20risk(s)\x20must\x20be\x20resolved\x20before\x20publish.'),y['critical'],y['warnings'],'immutable_violation','Fix\x20the\x20CRITICAL\x20risks\x20listed\x20in\x20the\x20message\x20(e.g.\x20rename\x20dispute/refund\x20nodes\x20per\x20R-M1-11,\x20add\x20the\x20entry\x20pair\x20prev_node=\x22\x22),\x20then\x20retry\x20publish.\x20Nodes/pairs/forwards\x20are\x20immutable\x20after\x20publish\x20โ€”\x20verify\x20via\x20machineNode2file\x20first.');}}catch(B){g['push']('pre_publish\x20hook\x20failed:\x20'+(B instanceof Error?B['message']:String(B)));}if(l&&j)try{const C=extractData(d),D=C?extractAmount(C):null;if(D!==null){const E=getAmountThreshold();let F=null;try{F=BigInt(D);}catch{F=null;}if(F!==null&&F>E)return buildHarnessBlockResult('pre_sign','Sign\x20BLOCKED\x20by\x20Harness\x20pre-sign\x20gate\x20(GLM5-21\x20V7):\x20amount\x20'+formatAmount(F)+'\x20WOW\x20exceeds\x20the\x20full-tier\x20threshold\x20'+formatAmount(E)+'\x20WOW.',['amount\x20'+D+'\x20(smallest\x20unit)\x20>\x20threshold\x20'+E['toString']()+'\x20(smallest\x20unit)'],[],'invalid_parameter','Raise\x20WOWOK_AMOUNT_THRESHOLD\x20to\x20match\x20the\x20intended\x20amount,\x20split\x20the\x20transaction,\x20or\x20reset\x20the\x20harness\x20tier\x20to\x20lightweight\x20(config_operation)\x20after\x20explicit\x20user\x20confirmation.');}}catch(G){g['push']('pre_sign\x20hook\x20failed:\x20'+(G instanceof Error?G['message']:String(G)));}let o;try{o=await a(d,f);}catch(H){const I=H instanceof Error?H['message']:String(H),J=recordOperationFailure(b,I);J&&g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+J['reason']);if(b==='onchain_operations')try{const K=classifyError(I,H);if(!K['retryable']&&K['error_code']!=='unknown'){const L=recordCriticalOperation(b,K['error_code']);if(L)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+L['reason']);}}catch{}throw H;}if(i&&n)try{if(o?.['structuredContent']){const M=buildVerifyInput(n,o),N=h['verify'](M);if(N['status']==='fail')g['push']('Harness\x20verify\x20FAIL:\x20'+N['summary']);else N['status']==='warn'&&g['push']('Harness\x20verify\x20WARN:\x20'+N['summary']);}}catch(O){g['push']('post_call\x20hook\x20failed:\x20'+(O instanceof Error?O['message']:String(O)));}if(b==='onchain_operations')try{if(classifyOutcome(o)==='failed'){const P=extractErrorCode(o)??'',Q=classifyError(P);if(!Q['retryable']&&Q['error_code']!=='unknown'){const R=recordCriticalOperation(b,Q['error_code']);if(R)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+R['reason']);}}}catch{}if(i){const S=extractIntent(b,d)??b;try{const T=classifyOutcome(o);if(T==='failed'){const U=extractErrorCode(o)??'',V=classifyError(U),W=h['recover'](V['error_code'],S,{'operation_type':b,'data':extractData(d)});g['push']('Harness\x20recover:\x20strategy='+W['strategy']+('\x20(attempt\x20'+W['current_attempt']+'/'+W['max_attempts']+')')+(W['should_retry']?'\x20โ€”\x20retryable':'\x20โ€”\x20do\x20NOT\x20retry\x20blindly')+(W['user_prompt']?'\x20โ€”\x20'+W['user_prompt']:'\x20โ€”\x20'+W['detail']));}else T==='success'&&h['resetRecovery'](S);}catch(X){g['push']('recover\x20hook\x20failed:\x20'+(X instanceof Error?X['message']:String(X)));}}if(b==='goal_operation')try{const Y=d?.['action'];if(Y==='trace_substeps'){const Z=extractCriticalFindingCount(o);if(Z>0x0){const a0=recordSubstepFailure(String(Y)+':\x20'+Z+'\x20critical\x20finding(s)');if(a0)g['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+a0['reason']);}}}catch{}if(isWriteClassTool(b)&&!SEMANTIC_RECORDED_TOOLS['has'](b))try{const a1=extractOperationType(b,d)??b,a2=extractIntent(b,d)??b,a3=extractData(d)??d,a4=classifyOutcome(o),a5=extractErrorCode(o),a6=isEnabled('experience_layer');if(a6)recordOperationOutcome(a1,a3,a2,a4,a5);else{const a7=extractIndustry(d);a7&&isEnabled('industry_evolution')&&recordIndustrySignal(a7,{'type':a1},{'success':a4==='success','error_code':a5});}}catch(a8){g['push']('signal\x20collection\x20failed:\x20'+(a8 instanceof Error?a8['message']:String(a8)));}if(g['length']>0x0){if(o?.['structuredContent']){const a9=o['structuredContent'],aa=a9['semantic'];if(aa){const ab=Array['isArray'](aa['warnings'])?aa['warnings']:[];aa['warnings']=[...ab,...g];}else for(const ac of g){console['warn']('[harness]\x20'+ac);}}else for(const ad of g){console['warn']('[harness]\x20'+ad);}}return o;};}function isPublishOperation(a,b){if(a!=='onchain_operations')return![];const c=extractOperationType(a,b);if(c!=='service'&&c!=='machine')return![];const d=extractData(b);return d?.['publish']===!![]||d?.['bPublished']===!![];}function isSignOperation(a,b){if(a==='wip_file'){const c=b?.['operation_type'];return c==='sign';}return a==='onchain_operations';}function extractOperationType(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if(a==='onchain_operations')return typeof c['operation_type']==='string'?c['operation_type']:undefined;if(a==='goal_operation'||a==='industry_pack_operation'||a==='strategy_review_operation')return typeof c['action']==='string'?c['action']:undefined;return typeof c['operation_type']==='string'?c['operation_type']:undefined;}function extractIntent(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if((a==='goal_operation'||a==='industry_pack_operation'||a==='strategy_review_operation')&&typeof c['action']==='string')return a+':'+c['action'];const d=c['operation_type'];if(typeof d==='string')return a+':'+d;return a;}function extractData(a){if(!a||typeof a!=='object')return undefined;const b=a,c=b['data'];return c&&typeof c==='object'?c:undefined;}function buildVerifyInput(a,b){const c=b['structuredContent']??{},d=c['semantic'];return{'expected':a,'actual':{'result_type':typeof c['result_type']==='string'?c['result_type']:undefined,'semantic':d,'error_code':typeof c['error_code']==='string'?c['error_code']:undefined,'error':typeof c['error']==='string'?c['error']:undefined}};}const WRITE_CLASS_TOOLS=new Set(['onchain_operations','goal_operation','industry_pack_operation','strategy_review_operation','wip_file','messenger_operation','bridge_operation']),SEMANTIC_RECORDED_TOOLS=new Set(['onchain_operations','bridge_operation']);function isWriteClassTool(a){return WRITE_CLASS_TOOLS['has'](a);}function classifyOutcome(a){if(!a?.['structuredContent'])return'failed';const b=a['structuredContent'],c=typeof b['status']==='string'?b['status']:typeof b['result_type']==='string'?b['result_type']:'';if(c==='error'||c==='failed')return'failed';if(c==='partial')return'partial';return'success';}function extractErrorCode(a){if(!a?.['structuredContent'])return undefined;const b=a['structuredContent'];if(typeof b['error_code']==='string')return b['error_code'];const c=b['error'];if(typeof c==='string')return c;if(c&&typeof c==='object'){const d=c['code'];if(typeof d==='string')return d;}return undefined;}function extractIndustry(a){if(!a||typeof a!=='object')return undefined;const b=a;if(typeof b['industry']==='string')return b['industry'];const c=b['data'];if(c&&typeof c==='object'){const e=c;if(typeof e['industry']==='string')return e['industry'];}return undefined;}const ANTI_PATTERN_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function runPrePublishChecks(a,b){const c=[],d=[],e=extractOperationType(a,b),g=extractData(b)??{};if(e==='machine'){const h=g['node'],i=Array['isArray'](h)?h:Array['isArray'](h?.['nodes'])?h['nodes']:[];if(i['length']>0x0){for(const l of i){const m=typeof l?.['name']==='string'?l['name']:'';m&&ANTI_PATTERN_NODE_REGEX['test'](m)&&c['push']('R-M1-11:\x20machine\x20node\x20\x22'+m+'\x22\x20models\x20dispute/refund\x20flow\x20โ€”\x20'+'refunds\x20must\x20route\x20via\x20an\x20Allocator\x20triggered\x20by\x20business\x20states,\x20'+'disputes\x20via\x20the\x20separate\x20Arbitration\x20object\x20(off-Machine)');}const j=new Set();for(const o of i){const q=typeof o?.['name']==='string'?o['name']:'';if(!q)continue;j['has'](q)&&c['push']('MC-C-04:\x20duplicate\x20machine\x20node\x20name\x20\x22'+q+'\x22\x20โ€”\x20on-chain\x20will\x20reject\x20the\x20publish\x20transaction'),j['add'](q);}const k=i['some'](r=>Array['isArray'](r?.['pairs'])&&r['pairs']['some'](s=>s?.['prev_node']===''));!k&&c['push']('Machine\x20has\x20no\x20entry\x20pair\x20(prev_node=\x22\x22)\x20โ€”\x20Progress\x20can\x20never\x20advance\x20'+'from\x20the\x20initial\x20state;\x20orders\x20are\x20permanently\x20stuck');for(const r of i){const s=typeof r?.['name']==='string'?r['name']:'?';for(const t of r?.['pairs']??[]){for(const u of t?.['forwards']??[]){const v=u?.['namedOperator']!==undefined&&u?.['namedOperator']!==null,w=u?.['permissionIndex']!==undefined&&u?.['permissionIndex']!==null;!v&&!w&&d['push']('pre_publish:\x20node\x20\x22'+s+'\x22\x20forward\x20\x22'+String(u?.['name']??'?')+'\x22\x20has\x20neither\x20namedOperator\x20nor\x20permissionIndex\x20โ€”\x20no\x20one\x20can\x20advance\x20it');}}}}else d['push']('pre_publish:\x20publishing\x20machine\x20without\x20inline\x20node\x20data\x20โ€”\x20topology\x20not\x20verifiable\x20in\x20this\x20call;\x20'+'verify\x20nodes/pairs/forwards\x20via\x20machineNode2file\x20BEFORE\x20publish\x20(immutable\x20after\x20publish,\x20IMMUT-001)');d['push']('pre_publish:\x20machine\x20nodes/pairs/forwards\x20become\x20immutable\x20after\x20publish\x20(IMMUT-001)');}return e==='service'&&(d['push']('pre_publish:\x20service\x20machine/order_allocators/arbitrations\x20become\x20immutable\x20after\x20publish\x20(IMMUT-002);\x20sales\x20remains\x20modifiable'),g['machine']===undefined&&d['push']('pre_publish:\x20\x27machine\x27\x20not\x20set\x20in\x20this\x20call\x20โ€”\x20if\x20the\x20service\x20was\x20never\x20bound\x20to\x20a\x20published\x20machine,\x20'+'it\x20cannot\x20process\x20orders\x20and\x20CANNOT\x20be\x20fixed\x20after\x20publish'),g['order_allocators']===undefined&&d['push']('pre_publish:\x20\x27order_allocators\x27\x20not\x20set\x20in\x20this\x20call\x20โ€”\x20immutable\x20after\x20publish;\x20'+'orders\x20will\x20have\x20no\x20fund\x20distribution\x20if\x20never\x20configured')),{'critical':c,'warnings':d};}function buildHarnessBlockResult(a,b,c,d,e,f){const g=[...c['map'](i=>'CRITICAL:\x20'+i),...d['map'](i=>'WARN:\x20'+i)]['join']('\x0a'),h='Error:\x20'+b+(g?'\x0a'+g:'')+'\x0aRecovery:\x20'+f;return{'content':[{'type':'text','text':h}],'structuredContent':{'result':{'type':'error','error':b+'\x20[gate='+a+']','error_code':e,'retryable':![],'recovery_hint':f},'message':h}};}function extractCriticalFindingCount(a){const b=a?.['structuredContent'];if(!b)return 0x0;const c=b['semantic'],d=c?.['summary'];if(typeof d?.['critical_count']==='number'&&d['critical_count']>0x0)return d['critical_count'];const e=b['findings']??c?.['findings'];if(Array['isArray'](e))return e['filter'](h=>h?.['severity']==='error')['length'];const f=a?.['content']?.['map'](h=>'text'in h?h['text']:'')['join']('\x0a')??'',g=f['match'](/\[AUDIT ERROR\]/g);return g?g['length']:0x0;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wowok/agent-mcp",
3
- "version": "3.1.0",
3
+ "version": "3.1.2",
4
4
  "description": "Making It Easy for AI Agents to Communicate, Collaborate, Trade, and Trust.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -50,7 +50,7 @@
50
50
  "license": "Apache-2.0",
51
51
  "dependencies": {
52
52
  "@modelcontextprotocol/server": "^2.0.0",
53
- "@wowok/wowok": "3.1.0",
53
+ "@wowok/wowok": "3.1.2",
54
54
  "lodash": "^4.18.1",
55
55
  "zod": "^4.2.0"
56
56
  },