@wowok/agent-mcp 3.2.4 → 3.2.6

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 (90) hide show
  1. package/dist/composition/blueprint-view.d.ts +64 -0
  2. package/dist/composition/blueprint-view.js +1 -0
  3. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  4. package/dist/evaluation/engine.js +1 -1
  5. package/dist/experience/realtime-feedback.js +1 -1
  6. package/dist/extensions/industry-pack.d.ts +1 -0
  7. package/dist/extensions/industry-pack.js +1 -1
  8. package/dist/extensions/modes.js +1 -1
  9. package/dist/extensions/registry.d.ts +1 -2
  10. package/dist/extensions/registry.js +1 -1
  11. package/dist/graph/onchain/expand.js +1 -1
  12. package/dist/graph/onchain/exposure.js +1 -1
  13. package/dist/graph/onchain/facts.js +1 -1
  14. package/dist/harness/recover.js +1 -1
  15. package/dist/knowledge/audit-rules.d.ts +2 -0
  16. package/dist/knowledge/audit-rules.js +1 -1
  17. package/dist/knowledge/baselines/rules/allocation.json +5 -5
  18. package/dist/knowledge/baselines/rules/arb.json +1 -1
  19. package/dist/knowledge/baselines/rules/guard.json +9 -9
  20. package/dist/knowledge/baselines/rules/machine.json +5 -5
  21. package/dist/knowledge/baselines/rules/order.json +1 -1
  22. package/dist/knowledge/builtin-templates.d.ts +2 -1
  23. package/dist/knowledge/builtin-templates.js +1 -1
  24. package/dist/knowledge/entity-recipient-guard.js +1 -1
  25. package/dist/knowledge/getting-started.js +1 -1
  26. package/dist/knowledge/guard-design-patterns.js +1 -1
  27. package/dist/knowledge/guard-risk.js +1 -1
  28. package/dist/knowledge/guard-templates.d.ts +1 -1
  29. package/dist/knowledge/guard-templates.js +1 -1
  30. package/dist/knowledge/index.js +1 -1
  31. package/dist/knowledge/industry-generalizer.js +1 -1
  32. package/dist/knowledge/industry-registry.js +1 -1
  33. package/dist/knowledge/jsonrpc-enum.js +1 -1
  34. package/dist/knowledge/order-ledger.js +1 -1
  35. package/dist/knowledge/scenario-modes.d.ts +2 -4
  36. package/dist/knowledge/scenario-modes.js +1 -1
  37. package/dist/knowledge/service-ledger.js +1 -1
  38. package/dist/knowledge/service-templates.js +1 -1
  39. package/dist/knowledge/template-loader.d.ts +7 -2
  40. package/dist/knowledge/template-loader.js +1 -1
  41. package/dist/knowledge/template-registry.js +1 -1
  42. package/dist/knowledge/template-scanner.js +1 -1
  43. package/dist/knowledge/template-validation.d.ts +2 -0
  44. package/dist/knowledge/template-validation.js +1 -0
  45. package/dist/monitor/MonitorLoop.js +1 -1
  46. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  47. package/dist/playbooks/service-build/game-theory.d.ts +2 -2
  48. package/dist/playbooks/service-build/game-theory.js +1 -1
  49. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  50. package/dist/playbooks/service-build/merchant-guide.d.ts +54 -11
  51. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  52. package/dist/playbooks/service-build/mode-actions.js +1 -1
  53. package/dist/playbooks/service-build/object-panorama.js +1 -1
  54. package/dist/playbooks/service-build/participation-radar.js +1 -1
  55. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  56. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.d.ts +1 -0
  57. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +1 -0
  58. package/dist/playbooks/service-build/reverse-mapping.d.ts +24 -0
  59. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  60. package/dist/playbooks/service-build/service-panorama.js +1 -1
  61. package/dist/playbooks/service-build/service-quote.js +1 -1
  62. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
  63. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  64. package/dist/review/index.js +1 -1
  65. package/dist/safety/confirm-gate.js +1 -1
  66. package/dist/schema/call/handler.js +1 -1
  67. package/dist/schema/call/semantic.js +1 -1
  68. package/dist/schema/call/service.d.ts +14 -0
  69. package/dist/schema/call/service.js +1 -1
  70. package/dist/schema/common/index.js +1 -1
  71. package/dist/schema/goal/planning.js +1 -1
  72. package/dist/schema/local/index.js +1 -1
  73. package/dist/schema/operations.d.ts +7 -0
  74. package/dist/schema/schema-version.js +1 -1
  75. package/dist/schema-query-impl/index.js +1 -1
  76. package/dist/schemas/goal_operation.schema.json +1 -1
  77. package/dist/schemas/index.json +1 -1
  78. package/dist/schemas/onchain_operations.schema.json +37 -2
  79. package/dist/schemas/onchain_operations_service.schema.json +37 -2
  80. package/dist/tools/handlers/benchmark-migration.d.ts +2 -13
  81. package/dist/tools/handlers/benchmark-migration.js +1 -1
  82. package/dist/tools/handlers/config.js +1 -1
  83. package/dist/tools/handlers/industry-pack.js +1 -1
  84. package/dist/tools/handlers/onchain.js +1 -1
  85. package/dist/tools/handlers/query.js +1 -1
  86. package/dist/tools/registry/agent.js +1 -1
  87. package/dist/tools/wip-deploy-assist.js +1 -1
  88. package/package.json +2 -2
  89. package/dist/playbooks/service-build/semantic-graph.d.ts +0 -99
  90. package/dist/playbooks/service-build/semantic-graph.js +0 -1
@@ -1 +1 @@
1
- import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade}from'../upgrade-check.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{getGettingStarted}from'../../knowledge/getting-started.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,query_checkpoint,generateNodeComments,query_object_last_updated,Config,LocalMark}from'@wowok/wowok';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{SCENARIO_CHAINS,SCENARIO_BRIDGE_REGISTRY,SCENARIO_TOPOLOGY_VERSION}from'../../knowledge/scenario-topology.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{fetchMachineNodes}from'../../playbooks/service-build/machine-nodes.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleServiceQuote}from'../../playbooks/service-build/service-quote.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleRelationshipProfile}from'../../playbooks/service-build/relationship-profile.js';import{handleOnchainTopology}from'../../playbooks/service-build/topology-query.js';import{buildUserInjection}from'../../evaluation/injection.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{migrationPreflight}from'../../knowledge/migration-preflight.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{buildOrderFundFacts}from'../../knowledge/arb-fund-facts.js';import{batchQueryObjectsByIds,lastUnresolvedInputs,LINKER_RING_LIMIT}from'../../graph/onchain/sdk-batch.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await batchQueryObjectsByIds(d,b);for(const j of i){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const s=await query_object_last_updated({'object':a['address'],'network':b['network']});s?.['timestamp_ms']&&(e={'timestamp_ms':s['timestamp_ms'],'digest':s['digest'],'sender':s['sender']});}catch{}const f=a?.['reverse_core'],g=a?.['reverse_tx'],h=Array['isArray'](f?.['items'])?f['items']['length']:0x0,i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=(i>0x0?g['items']:[])['filter'](t=>objectTypeFromAddress(t?.['who'])===ObjectType['Order']),k=j['length'],l=k>=LINKER_RING_LIMIT,m=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],n=c?.['type_raw']??c?.['type']??'',o=n['match'](/<(.+)>$/),p=o?o[0x1]:null,q=p?(p['split']('::')['pop']()??p)['toUpperCase']():null,r=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':r['length'],'live_sales_count':r['filter'](t=>t&&!t['suspension'])['length'],'paused_sales_count':r['filter'](t=>t&&t['suspension'])['length'],'orders_count':k,'orders_count_truncated':l,'like_count':m['filter'](t=>t&&t['like'])['length'],'dislike_count':m['filter'](t=>t&&t['dislike'])['length'],'favor_count':m['filter'](t=>t&&t['favor'])['length'],'votes':m['map'](t=>({'who':t?.['who']??null,'like':!!t?.['like'],'dislike':!!t?.['dislike'],'favor':!!t?.['favor'],'time':t?.['time']??null})),'coin_type':p,'token_symbol':q,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':h,'related_tx_count':i,'related_object_count':h+i,'onchain_last_updated':e};}export function buildProfileFollowUps(a){if(!a||typeof a!=='object')return[];const b=typeof a['address']==='string'?a['address']:undefined;if(!b)return[];const c=a['kind']==='user'||!a['is_system_singleton']&&!a['object'],d=[];if(c){const e=Array['isArray'](a['permission_membership']?.['items'])?a['permission_membership']['items']:[],f=Array['isArray'](a['order_membership']?.['items'])?a['order_membership']['items']:[];e['length']>0x0&&d['push']({'label':'Permission\x20organizations\x20('+e['length']+')','detail':'Expand\x20each\x20Permission\x20the\x20address\x20belongs\x20to\x20—\x20owner/admin/entity\x20standing\x20and\x20what\x20the\x20org\x20governs.','call':{'query_type':'onchain_objects','objects':e['map'](g=>g['who'])['filter'](Boolean)}}),f['length']>0x0&&d['push']({'label':'Order\x20footprint\x20('+f['length']+')','detail':'The\x20orders\x20this\x20address\x20participates\x20in\x20(buyer\x20vs\x20operator\x20roles).','call':{'query_type':'onchain_table_item_entity_order','address':b}}),d['push']({'label':'Public\x20personal\x20profile','detail':'Social/IM\x20links,\x20public\x20info\x20records,\x20voting\x20history,\x20referrer.','call':{'query_type':'onchain_personal_profile','address':b}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report\x20for\x20this\x20address.','call':{'query_type':'reverse_map','context_objects':[b]}});}else a['object']&&d['push']({'label':'Full\x20object\x20body','detail':'The\x20complete\x20on-chain\x20object\x20fields\x20(one\x20targeted\x20read).','call':{'query_type':'onchain_objects','objects':[b]}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report.','call':{'query_type':'reverse_map','context_objects':[b]}});return d['push']({'label':'Recent\x20on-chain\x20activity','detail':'Newest\x20transactions\x20touching\x20this\x20address.','call':{'query_type':'onchain_address_activity','address':b}}),d['slice'](0x0,0x3);}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(j,k)=>{if(j===null||j===undefined)return undefined;if(typeof j!=='string'&&typeof j!=='number'&&typeof j!=='bigint')return undefined;if(typeof k!=='string'||!k)return undefined;return formatChainValue(j,k,b);},g=a['balance'];if(g&&typeof g==='object'){const j=g['coinType'],k=await f(g['totalBalance'],j);if(k)e['balance.totalBalance']=k;if(g['lockedBalance']!==undefined){const l=await f(g['lockedBalance'],j);if(l)e['balance.lockedBalance']=l;}}const h=a['coin']?.['data'];if(Array['isArray'](h))for(let m=0x0;m<h['length'];m++){const n=h[m],o=await f(n?.['balance'],n?.['coinType']);if(o)e['coin.data['+m+'].balance']=o;}if(Object['keys'](e)['length']>0x0){if(b)for(const p of Object['keys'](e)){const q=e[p];e[p]={...q,'text':q['text']+'\x20—\x20network:\x20'+b};}a['_money_display']=e;}}const NETWORK_FIELD_BY_QUERY={'account_balance':'network','onchain_personal_profile':'network','onchain_objects':'network','onchain_received':'network','onchain_transaction':'network','onchain_block':'network','onchain_object_history':'network','onchain_last_updated':'network','onchain_address_activity':'network','token_value_convert':'network','address_profile':'network','address_profiles':'network','service_supply_chain':'network','assemble_context':'context_network','reverse_map':'context_network','service_panorama':'context_network','service_quote':'context_network','machine_panorama':'context_network','object_panorama':'context_network','review_pack':'context_network','participation_radar':'context_network','relationship_profile':'context_network','onchain_topology':'context_network','workspace_lists':'context_network','marks_of_account':'context_network'};function requestedNetworkForQuery(a,b){const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return undefined;const d=a[c];return typeof d==='string'&&d['length']>0x0?d:undefined;}export async function handleWatchQueryOperations(a){const c=strictParse(WatchQueryOperationsSchema,a,'watch_and_query\x20input');let d;switch(c['query_type']){case'local_mark_list':{const g=await query_local_mark_list(c['filter']||{});d={'query_type':'local_mark_list','result':g};break;}case'account_list':{const h=await query_account_list(c['filter']);d={'query_type':'account_list','result':h};break;}case'local_info_list':{const j=await query_local_info_list(c['filter']);d={'query_type':'local_info_list','result':j};break;}case'token_list':{const k=await query_local_token_list(c['filter']||{});d={'query_type':'token_list','result':k};break;}case'account_balance':{const l=await query_account({'name_or_address':c['name_or_address'],'token_type':c['token_type'],'balance':c['balance'],'coin':c['coin'],'network':c['network']}),m=c['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(l,m),d={'query_type':'account_balance','result':l};break;}case'local_names':{const n=await GetLocalNamesByAddresses(c['addresses']);d={'query_type':'local_names','result':n};break;}case'onchain_personal_profile':{const o=await query_personal({'account':c['account'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_personal_profile','result':o};break;}case'onchain_objects':{const p=c['no_cache']??!![],q=await batchQueryObjectsByIds(c['objects'],c['network'],p),r=lastUnresolvedInputs(),s={'objects':q,'_read_freshness':{'source':p?'live':'session_cache','no_cache':p,'fetched_at':new Date()['toISOString'](),'note':p?'Forced-fresh\x20read.\x20This\x20is\x20the\x20DEFAULT\x20because\x20a\x20stale\x20value\x20here\x20can\x20invert\x20a\x20fund-movement\x20conclusion.':'Session\x20cache\x20was\x20used\x20(no_cache:false).\x20Pass\x20no_cache:true\x20before\x20concluding\x20that\x20money\x20did\x20or\x20did\x20not\x20move.'},...q['length']===0x0&&r['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':r,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(c['network']??'current')+'\x27.\x20LocalMark\x20names\x20are\x20NETWORK-SCOPED\x20—\x20an\x20object\x20created\x20on\x20testnet\x20is\x20invisible\x20on\x20localnet/mainnet.\x20Either\x20register\x20the\x20mark\x20here\x20(local_mark_operation)\x20or\x20pass\x20the\x20full\x200x\x20address.\x20This\x20is\x20NOT\x20evidence\x20that\x20the\x20objects\x20are\x20absent\x20on\x20chain.'}}:{}};if(s&&s['objects']&&Array['isArray'](s['objects'])){s['objects']=s['objects']['map'](t=>{if(t&&t['data']&&t['data']['type']==='Guard'&&t['data']['root'])try{const u=generateNodeComments(t['data']['root']);return{...t,'_guard_node_comments':u};}catch(v){return t;}return t;}),s['objects']=s['objects']['map'](t=>{if(t&&t['data']&&t['data']['type']==='Progress'&&t['data']['current']===''){const u=t['data']['machine'],v=t['data']['task'];return{...t,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':u??null,'bound_order_id':v??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](u)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return t;});for(const t of s['objects']){const u=t?.['data']??t;if((t?.['type']??u?.['type'])!=='Progress')continue;const v=t?.['object']??u?.['object'];if(!v)continue;try{const w=await enrichWorkflowGuidance({'progressRef':v,'network':c['network'],'noCache':c['no_cache']});if(w?.['guidance']){t['_workflow_guidance']=w['guidance'];if(w['text'])t['_workflow_guidance_text']=w['text'];}}catch{}}for(const x of s['objects']){const y=x?.['data']??x;if((x?.['type']??y?.['type'])!=='Arb')continue;const z=x?.['object']??y?.['object'];if(!z)continue;try{const A=await buildOrderFundFacts({'arbRef':z,'network':c['network'],'noCache':p});A&&(x['_order_fund_facts']=A['structured'],x['_order_fund_facts_text']=A['text']);}catch{}}for(const B of s['objects']){try{await annotateObjectMonetaryFields(B,c['network']);}catch{}}}d={'query_type':'onchain_objects','result':s};break;}case'onchain_received':{const C=await query_received({'name_or_address':normalizeAccountOrMark(c['name_or_address']),'type':c['type'],'cursor':c['cursor'],'limit':c['limit'],'no_cache':c['no_cache'],'network':c['network']}),D=C;if(D&&typeof D==='object'&&typeof D['balance']==='bigint'){const E=D['token_type'];D['balance']=D['balance']['toString']();if(Array['isArray'](D['received']))for(const F of D['received']){F&&typeof F['balance']==='bigint'&&(F['balance']=F['balance']['toString']());}if(E)try{const G={'balance':await formatChainValue(D['balance'],E,c['network'])};if(Array['isArray'](D['received']))for(let H=0x0;H<D['received']['length'];H++){const I=D['received'][H]?.['balance'];I!==undefined&&I!==null&&(G['received['+H+'].balance']=await formatChainValue(I,E,c['network']));}D['_money_display']=G;}catch{}}d={'query_type':'onchain_received','result':D};break;}case'onchain_transaction':{const J=await query_transaction({'digest':c['digest'],'no_cache':c['no_cache'],'network':c['network']});try{await annotateBalanceChanges(J?.['balance_changes'],c['network']);}catch{}d={'query_type':'onchain_transaction','result':J};break;}case'onchain_block':{const K=await query_checkpoint({'block':c['block'],'network':c['network']});d={'query_type':'onchain_block','result':K};break;}case'onchain_object_history':{const L=await query_object_history({'object':c['object'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_object_history','result':L};break;}case'onchain_last_updated':{const M=c['objects']??[],N=await Promise['allSettled'](M['map'](P=>query_object_last_updated({'object':P,'network':c['network']}))),O=M['map']((P,Q)=>{const R=N[Q],S=R['status']==='fulfilled'?R['value']:null;return{'object':P,'timestamp_ms':S?.['timestamp_ms']?String(S['timestamp_ms']):null,'digest':S?.['digest']??null,'sender':S?.['sender']??null};});d={'query_type':'onchain_last_updated','result':{'items':O}};break;}case'onchain_address_activity':{const P=typeof c['name_or_address']==='string'?c['name_or_address']:c['name_or_address']['name_or_address'],Q=await query_address_activity({'name_or_address':P,'direction':c['direction'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_address_activity','result':Q};break;}case'token_value_convert':{const R=c['raw']!==undefined,S=c['unit']!==undefined;if(R===S)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](c['raw'])+',\x20')+('unit='+JSON['stringify'](c['unit'])+'.'));const T=await convertTokenValue(c['token_type'],R?{'raw':c['raw']}:{'unit':c['unit']},c['network']);d={'query_type':'token_value_convert','result':T};break;}case'address_profile':{const U=await query_address_profile({'address':c['address'],'no_cache':c['no_cache'],'network':c['network']});await mergeServiceAnalysis(U,{'no_cache':c['no_cache'],'network':c['network']});U&&typeof U==='object'&&(U['follow_ups']=buildProfileFollowUps(U));d={'query_type':'address_profile','result':U};break;}case'address_profiles':{const V=await query_address_profiles({'addresses':c['addresses'],'no_cache':c['no_cache'],'network':c['network']});await Promise['all'](V['map'](W=>mergeServiceAnalysis(W,{'no_cache':c['no_cache'],'network':c['network']})));for(const W of V??[]){W&&typeof W==='object'&&(W['follow_ups']=buildProfileFollowUps(W));}d={'query_type':'address_profiles','result':V};break;}case'service_supply_chain':{const X=await resolveSupplyChainGraph(typeof c['address']==='string'?c['address']:c['address']?.['name_or_address']??String(c['address']),c['network']);d={'query_type':'service_supply_chain','result':X};break;}case'assemble_context':{d={'query_type':'assemble_context','result':await assembleContext(c)};break;}case'reverse_map':{if(!c['context_objects']||c['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const Y=c['context_network']??await Config['Instance']()['network_get'](),Z=await batchQueryObjectsByIds(c['context_objects'],Y,!![]);let a0;{const a1=Z['find'](a3=>{const a4=a3?.['machine']??a3?.['data']?.['machine'];return typeof a4==='string'&&/^0x[0-9a-fA-F]/['test'](a4);});if(a1)try{const a3=String(a1['object']??a1['id']??''),a4=await LocalMark['Instance']()['list']({'address':a3});if(a4[0x0]?.['name'])a1['name']=a4[0x0]['name'];}catch{}const a2=a1?String(a1['machine']??a1['data']?.['machine']):null;if(a2)try{const a5=Z['some'](a7=>String(a7?.['object']??a7?.['id']??'')['toLowerCase']()===a2['toLowerCase']());!a5&&Z['push'](...await batchQueryObjectsByIds([a2],Y,!![]));const a6=await fetchMachineNodes(a2,Y);a0=a6['map'](a7=>({'name':String(a7?.['name']??'')}))['filter'](a7=>a7['name']['length']>0x0);}catch{}}d={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':Z['length'],'report':generateBusinessReport({'objects':Z,'machine_nodes':a0,'order_amount':c['reverse_order_amount']})}};break;}case'service_panorama':d={'query_type':'service_panorama','result':await handleServicePanorama(c)};break;case'service_quote':d={'query_type':'service_quote','result':await handleServiceQuote(c)};break;case'machine_panorama':d={'query_type':'machine_panorama','result':await handleMachinePanorama(c)};break;case'object_panorama':d={'query_type':'object_panorama','result':await handleObjectPanorama(c)};break;case'review_pack':d={'query_type':'review_pack','result':await handleReviewPack(c)};break;case'participation_radar':d={'query_type':'participation_radar','result':await handleParticipationRadar(c)};break;case'relationship_profile':d={'query_type':'relationship_profile','result':await handleRelationshipProfile(c)};break;case'onchain_topology':d={'query_type':'onchain_topology','result':await handleOnchainTopology(c,undefined,await buildUserInjection(c['context_account']?.['toLowerCase']()))};break;case'workspace_lists':d={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'marks_of_account':d={'query_type':'marks_of_account','result':await buildAccountMarks({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'migration_preflight':d={'query_type':'migration_preflight','result':await migrationPreflight({'account':c['account'],'source_network':c['source_network'],'target_network':c['target_network'],'no_cache':c['no_cache']})};break;case'scenario_topology':{const a7=c['chain_id'];d={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':a7?SCENARIO_CHAINS['filter'](a8=>a8['id']===a7):SCENARIO_CHAINS,'bridges':SCENARIO_BRIDGE_REGISTRY}};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22relationship_profile\x22,\x20\x22onchain_topology\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22,\x20\x22migration_preflight\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}const e=requestedNetworkForQuery(c,d['query_type']);let f;if(NETWORK_FIELD_BY_QUERY[d['query_type']]){const a8=e??await Config['Instance']()['network_get']();f={'network':a8,'network_source':e?'explicit':'default'};}return{'content':[{'type':'text','text':JSON['stringify']({...f,'result':d})}],'structuredContent':{'result':d,...queryPayloadAliases(d),...f??{},'semantic':buildDataSemantic(d,{'operation_type':'query_toolkit','data':c})}};}export function queryPayloadAliases(a){const b=a?.['result'];if(!b||typeof b!=='object')return{};const c={};if(Array['isArray'](b['objects']))c['objects']=b['objects'];if(Array['isArray'](b['received']))c['received']=b['received'];if(b['balance']&&typeof b['balance']==='object')c['balance']=b['balance'];if(Object['keys'](c)['length']===0x0)return{};const d=Object['keys'](c)['filter'](e=>!e['startsWith']('_'));return c['_read_hint']='The\x20\x27result\x27\x20key\x20appears\x20twice\x20by\x20design:\x20structuredContent.result\x20is\x20the\x20per-query_type\x20envelope,\x20'+'so\x20the\x20authoritative\x20path\x20for\x20each\x20field\x20is\x20'+(d['map'](e=>'structuredContent.result.result.'+e)['join']('\x20and\x20')+'.\x20')+('The\x20top-level\x20'+d['join'](',\x20')+'\x20above\x20are\x20additive\x20copies\x20of\x20the\x20same\x20data.'),c;}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{let w;try{w=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(x){const y=x instanceof Error?x['message']:String(x);if(/dynamicFieldNotFound/i['test'](y))w=[];else throw x;}c={'query_type':'onchain_orders_of_user','result':w};break;}case'onchain_orders_of_users':{const z=b['addresses']??[],A=[],B=await Promise['allSettled'](z['map'](async M=>{try{const N=await queryOrdersByUser({'address':M,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(M?.['name_or_address']??''),'views':Array['isArray'](N)?N:[]};}catch(O){const P=O instanceof Error?O['message']:String(O);if(/dynamicFieldNotFound/i['test'](P))return{'account':String(M?.['name_or_address']??''),'views':[]};throw O;}})),C=[];for(let M=0x0;M<z['length'];M++){const N=B[M];if(N['status']==='fulfilled')C['push'](N['value']);else{const O=N['reason']instanceof Error?N['reason']['message']:String(N['reason']);A['push'](String(z[M]?.['name_or_address']??'?')+':\x20'+O);}}const D=Array['from'](new Set(C['flatMap'](P=>P['views']['map'](Q=>typeof Q?.['order']?.['object']==='string'?Q['order']['object']:typeof Q?.['order']==='string'?Q['order']:'')['filter'](Boolean)))),E=new Map();try{if(D['length']>0x0){const P=await batchQueryObjectsByIds(D,b['network']);for(const Q of P){if(Q&&Q['type']===ObjectType['Order'])E['set'](Q['object'],Q);}}}catch{A['push']('order\x20details\x20unavailable\x20(non-blocking)');}const F=new Map(),G=new Map(),H=new Map();try{const R=new Set();for(const S of E['values']()){if(S?.['progress'])R['add'](S['progress']);if(S?.['allocation'])R['add'](S['allocation']);}if(R['size']>0x0){const T=await batchQueryObjectsByIds(Array['from'](R),b['network']);for(const U of T){if(!U?.['object'])continue;if(U['type']===ObjectType['Progress']){const V=U?.['current'];F['set'](U['object'],typeof V==='string'&&V!==''?V:null),G['set'](U['object'],Number(U?.['current_time'])||null);}else{if(U['type']===ObjectType['Allocation']){const W=Number(U?.['balance']??0x0);H['set'](U['object'],Number['isFinite'](W)&&W===0x0?'allocated':'pending');}}}}}catch{A['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const I=new Map();try{const X=await Promise['allSettled'](D['map'](Y=>query_object_last_updated({'object':Y,'network':b['network'],'previous_transaction':E['get'](Y)?.['previousTransaction']??null})));for(let Y=0x0;Y<D['length'];Y++){const Z=X[Y];I['set'](D[Y],Z['status']==='fulfilled'&&Z['value']?.['timestamp_ms']?Number(Z['value']['timestamp_ms'])||null:null);}}catch{A['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const J=await coinTypesOfServices(Array['from'](new Set(Array['from'](E['values']())['map'](a0=>typeof a0?.['service']==='string'?a0['service']:'')['filter'](Boolean))),b['network']),K=async(a0,a1)=>{if(a1===null||a1===undefined||a1==='')return{'display':'','tip':''};if(!a0)return{'display':a1,'tip':''};try{const a2=await formatChainValue(a1,a0,b['network']);if(a2['precision_known'])return{'display':a2['symbol']?a2['display']+'\x20'+a2['symbol']:a2['display'],'tip':a2['text']};return{'display':a1,'tip':''};}catch{return{'display':a1,'tip':''};}},L=[];for(const a0 of D){const a1=E['get'](a0),a2=C['filter'](a6=>a6['views']['some'](a7=>(typeof a7?.['order']?.['object']==='string'?a7['order']['object']:a7?.['order'])===a0))['map'](a6=>{const a7=a6['views']['find'](a8=>(typeof a8?.['order']?.['object']==='string'?a8['order']['object']:a8?.['order'])===a0);return{'account':a6['account'],'is_owner':!!a7?.['is_owner'],'is_agent':!!a7?.['is_agent'],'time':a7?.['time']};}),a3=J['get'](String(a1?.['service']??''))??null,a4=a1?.['amount']!==null&&a1?.['amount']!==undefined?String(a1['amount']):'',a5=await K(a3,a4);L['push']({'order':a0,'roles':a2,'time':a1?Number(a1['time'])||0x0:0x0,'updated_ms':I['get'](a0)??null,'amount':a4,'amount_display':a5['display'],'amount_tip':a5['tip'],'service':a1?.['service']??null,'machine':a1?.['machine']??null,'progress':a1?.['progress']??null,'allocation':a1?.['allocation']??null,'owner':ownerAddrOf(a1?.['builder']??a1?.['owner']),'claimed_by':a1?.['claimed_by']??null,'required_info':a1?.['required_info']??null,'progress_next':a1?.['progress']?F['get'](a1['progress'])??null:null,'progress_since':a1?.['progress']?G['get'](a1['progress'])??null:null,'allocation_state':a1?.['allocation']?H['get'](a1['allocation'])??'pending':'none','disputes':Array['isArray'](a1?.['dispute'])?a1['dispute']:[],'agents':Array['isArray'](a1?.['agent'])?a1['agent']:[],'items':await Promise['all']((Array['isArray'](a1?.['items'])?a1['items']:[])['map'](async a6=>{const a7=a6?.['price']!==null&&a6?.['price']!==undefined?String(a6['price']):'0';return{'name':String(a6?.['name']??''),'price':a7,'price_display':(await K(a3,a7))['display'],'quantity':String(a6?.['quantity']??'0'),'wip_hash':String(a6?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':L,...A['length']>0x0?{'account_errors':A}:{}};break;}case'onchain_table_item_object_linker_core':{const a6=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a6};break;}case'onchain_table_item_object_linker_tx':{const a7=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a7};break;}case'onchain_affiliations_of_object':{const a8=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),a9=a8?.['entries'];Array['isArray'](a9)&&(a8['entries']=a9['filter'](aa=>{const ab=typeof aa?.['who']==='string'?aa['who']:'';return!!ab&&objectTypeFromAddress(ab)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':a8};break;}case'address_profile':{const aa=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(aa,{'no_cache':b['no_cache'],'network':b['network']});aa&&typeof aa==='object'&&(aa['follow_ups']=buildProfileFollowUps(aa));c={'query_type':'address_profile','result':aa};break;}case'service_supply_chain':{const ab=await resolveSupplyChainGraph(typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),b['network']);c={'query_type':'service_supply_chain','result':ab};break;}case'onchain_table_item_generic':{const ac=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':ac};break;}default:{const ad=['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_generic','onchain_affiliations_of_object','address_profile','service_supply_chain'];throw new Error('Unknown\x20table\x20query_type\x20\x22'+b['query_type']+'\x22.\x20Valid\x20query_types\x20are:\x20'+ad['map'](ae=>'\x22'+ae+'\x22')['join'](',\x20')+'.');}}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}function mcpLayerInfoResponse(a){return{'content':[{'type':'text','text':JSON['stringify']({'result':a})}],'structuredContent':{'result':a}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input'),c=b['info'];if(c==='upgrade_check')return mcpLayerInfoResponse({'info':'upgrade_check','result':await checkUpgrade()});if(c==='universal_template')return mcpLayerInfoResponse({'info':'universal_template','result':getUniversalTemplate()});if(c==='getting\x20started')return mcpLayerInfoResponse({'info':'getting\x20started','result':getGettingStarted()});const d=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
1
+ import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade}from'../upgrade-check.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{getGettingStarted}from'../../knowledge/getting-started.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,query_checkpoint,generateNodeComments,query_object_last_updated,Config,LocalMark}from'@wowok/wowok';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{SCENARIO_CHAINS,SCENARIO_BRIDGE_REGISTRY,SCENARIO_TOPOLOGY_VERSION}from'../../knowledge/scenario-topology.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{buildMachineGraph,fetchMachineNodes}from'../../playbooks/service-build/machine-nodes.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleServiceQuote}from'../../playbooks/service-build/service-quote.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleRelationshipProfile}from'../../playbooks/service-build/relationship-profile.js';import{handleOnchainTopology}from'../../playbooks/service-build/topology-query.js';import{buildUserInjection}from'../../evaluation/injection.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{migrationPreflight}from'../../knowledge/migration-preflight.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{buildOrderFundFacts}from'../../knowledge/arb-fund-facts.js';import{batchQueryObjectsByIds,fetchServiceOrders,lastUnresolvedInputs,LINKER_RING_LIMIT}from'../../graph/onchain/sdk-batch.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await batchQueryObjectsByIds(d,b);for(const j of i){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const s=await query_object_last_updated({'object':a['address'],'network':b['network']});s?.['timestamp_ms']&&(e={'timestamp_ms':s['timestamp_ms'],'digest':s['digest'],'sender':s['sender']});}catch{}const f=a?.['reverse_core'],g=a?.['reverse_tx'],h=Array['isArray'](f?.['items'])?f['items']['length']:0x0,i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=(i>0x0?g['items']:[])['filter'](t=>objectTypeFromAddress(t?.['who'])===ObjectType['Order']),k=j['length'],l=k>=LINKER_RING_LIMIT,m=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],n=c?.['type_raw']??c?.['type']??'',o=n['match'](/<(.+)>$/),p=o?o[0x1]:null,q=p?(p['split']('::')['pop']()??p)['toUpperCase']():null,r=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':r['length'],'live_sales_count':r['filter'](t=>t&&!t['suspension'])['length'],'paused_sales_count':r['filter'](t=>t&&t['suspension'])['length'],'orders_count':k,'orders_count_truncated':l,'like_count':m['filter'](t=>t&&t['like'])['length'],'dislike_count':m['filter'](t=>t&&t['dislike'])['length'],'favor_count':m['filter'](t=>t&&t['favor'])['length'],'votes':m['map'](t=>({'who':t?.['who']??null,'like':!!t?.['like'],'dislike':!!t?.['dislike'],'favor':!!t?.['favor'],'time':t?.['time']??null})),'coin_type':p,'token_symbol':q,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':h,'related_tx_count':i,'related_object_count':h+i,'onchain_last_updated':e};}export function buildProfileFollowUps(a){if(!a||typeof a!=='object')return[];const b=typeof a['address']==='string'?a['address']:undefined;if(!b)return[];const c=a['kind']==='user'||!a['is_system_singleton']&&!a['object'],d=[];if(c){const e=Array['isArray'](a['permission_membership']?.['items'])?a['permission_membership']['items']:[],f=Array['isArray'](a['order_membership']?.['items'])?a['order_membership']['items']:[];e['length']>0x0&&d['push']({'label':'Permission\x20organizations\x20('+e['length']+')','detail':'Expand\x20each\x20Permission\x20the\x20address\x20belongs\x20to\x20—\x20owner/admin/entity\x20standing\x20and\x20what\x20the\x20org\x20governs.','call':{'query_type':'onchain_objects','objects':e['map'](g=>g['who'])['filter'](Boolean)}}),f['length']>0x0&&d['push']({'label':'Order\x20footprint\x20('+f['length']+')','detail':'The\x20orders\x20this\x20address\x20participates\x20in\x20(buyer\x20vs\x20operator\x20roles).','call':{'query_type':'onchain_table_item_entity_order','address':b}}),d['push']({'label':'Public\x20personal\x20profile','detail':'Social/IM\x20links,\x20public\x20info\x20records,\x20voting\x20history,\x20referrer.','call':{'query_type':'onchain_personal_profile','address':b}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report\x20for\x20this\x20address.','call':{'query_type':'reverse_map','context_objects':[b]}});}else a['object']&&d['push']({'label':'Full\x20object\x20body','detail':'The\x20complete\x20on-chain\x20object\x20fields\x20(one\x20targeted\x20read).','call':{'query_type':'onchain_objects','objects':[b]}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report.','call':{'query_type':'reverse_map','context_objects':[b]}});return d['push']({'label':'Recent\x20on-chain\x20activity','detail':'Newest\x20transactions\x20touching\x20this\x20address.','call':{'query_type':'onchain_address_activity','address':b}}),d['slice'](0x0,0x3);}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(j,k)=>{if(j===null||j===undefined)return undefined;if(typeof j!=='string'&&typeof j!=='number'&&typeof j!=='bigint')return undefined;if(typeof k!=='string'||!k)return undefined;return formatChainValue(j,k,b);},g=a['balance'];if(g&&typeof g==='object'){const j=g['coinType'],k=await f(g['totalBalance'],j);if(k)e['balance.totalBalance']=k;if(g['lockedBalance']!==undefined){const l=await f(g['lockedBalance'],j);if(l)e['balance.lockedBalance']=l;}}const h=a['coin']?.['data'];if(Array['isArray'](h))for(let m=0x0;m<h['length'];m++){const n=h[m],o=await f(n?.['balance'],n?.['coinType']);if(o)e['coin.data['+m+'].balance']=o;}if(Object['keys'](e)['length']>0x0){if(b)for(const p of Object['keys'](e)){const q=e[p];e[p]={...q,'text':q['text']+'\x20—\x20network:\x20'+b};}a['_money_display']=e;}}const NETWORK_FIELD_BY_QUERY={'account_balance':'network','onchain_personal_profile':'network','onchain_objects':'network','onchain_received':'network','onchain_transaction':'network','onchain_block':'network','onchain_object_history':'network','onchain_last_updated':'network','onchain_address_activity':'network','token_value_convert':'network','address_profile':'network','address_profiles':'network','service_supply_chain':'network','assemble_context':'context_network','reverse_map':'context_network','service_panorama':'context_network','service_quote':'context_network','machine_panorama':'context_network','object_panorama':'context_network','review_pack':'context_network','participation_radar':'context_network','relationship_profile':'context_network','onchain_topology':'context_network','workspace_lists':'context_network','marks_of_account':'context_network'};function requestedNetworkForQuery(a,b){const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return undefined;const d=a[c];return typeof d==='string'&&d['length']>0x0?d:undefined;}export async function handleWatchQueryOperations(a){const c=strictParse(WatchQueryOperationsSchema,a,'watch_and_query\x20input');let d;switch(c['query_type']){case'local_mark_list':{const g=await query_local_mark_list(c['filter']||{});d={'query_type':'local_mark_list','result':g};break;}case'account_list':{const h=await query_account_list(c['filter']);d={'query_type':'account_list','result':h};break;}case'local_info_list':{const j=await query_local_info_list(c['filter']);d={'query_type':'local_info_list','result':j};break;}case'token_list':{const k=await query_local_token_list(c['filter']||{});d={'query_type':'token_list','result':k};break;}case'account_balance':{const l=await query_account({'name_or_address':c['name_or_address'],'token_type':c['token_type'],'balance':c['balance'],'coin':c['coin'],'network':c['network']}),m=c['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(l,m),d={'query_type':'account_balance','result':l};break;}case'local_names':{const n=await GetLocalNamesByAddresses(c['addresses']);d={'query_type':'local_names','result':n};break;}case'onchain_personal_profile':{const o=await query_personal({'account':c['account'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_personal_profile','result':o};break;}case'onchain_objects':{const p=c['no_cache']??!![],q=await batchQueryObjectsByIds(c['objects'],c['network'],p),r=lastUnresolvedInputs(),s={'objects':q,'_read_freshness':{'source':p?'live':'session_cache','no_cache':p,'fetched_at':new Date()['toISOString'](),'note':p?'Forced-fresh\x20read.\x20This\x20is\x20the\x20DEFAULT\x20because\x20a\x20stale\x20value\x20here\x20can\x20invert\x20a\x20fund-movement\x20conclusion.':'Session\x20cache\x20was\x20used\x20(no_cache:false).\x20Pass\x20no_cache:true\x20before\x20concluding\x20that\x20money\x20did\x20or\x20did\x20not\x20move.'},...q['length']===0x0&&r['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':r,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(c['network']??'current')+'\x27.\x20LocalMark\x20names\x20are\x20NETWORK-SCOPED\x20—\x20an\x20object\x20created\x20on\x20testnet\x20is\x20invisible\x20on\x20localnet/mainnet.\x20Either\x20register\x20the\x20mark\x20here\x20(local_mark_operation)\x20or\x20pass\x20the\x20full\x200x\x20address.\x20This\x20is\x20NOT\x20evidence\x20that\x20the\x20objects\x20are\x20absent\x20on\x20chain.'}}:{}};if(s&&s['objects']&&Array['isArray'](s['objects'])){s['objects']=s['objects']['map'](t=>{if(t&&t['data']&&t['data']['type']==='Guard'&&t['data']['root'])try{const u=generateNodeComments(t['data']['root']);return{...t,'_guard_node_comments':u};}catch(v){return t;}return t;}),s['objects']=s['objects']['map'](t=>{if(t&&t['data']&&t['data']['type']==='Progress'&&t['data']['current']===''){const u=t['data']['machine'],v=t['data']['task'];return{...t,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':u??null,'bound_order_id':v??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](u)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return t;});for(const t of s['objects']){const u=t?.['data']??t;if((t?.['type']??u?.['type'])!=='Progress')continue;const v=t?.['object']??u?.['object'];if(!v)continue;try{const w=await enrichWorkflowGuidance({'progressRef':v,'network':c['network'],'noCache':c['no_cache']});if(w?.['guidance']){t['_workflow_guidance']=w['guidance'];if(w['text'])t['_workflow_guidance_text']=w['text'];}}catch{}}for(const x of s['objects']){const y=x?.['data']??x;if((x?.['type']??y?.['type'])!=='Arb')continue;const z=x?.['object']??y?.['object'];if(!z)continue;try{const A=await buildOrderFundFacts({'arbRef':z,'network':c['network'],'noCache':p});A&&(x['_order_fund_facts']=A['structured'],x['_order_fund_facts_text']=A['text']);}catch{}}for(const B of s['objects']){try{await annotateObjectMonetaryFields(B,c['network']);}catch{}}}d={'query_type':'onchain_objects','result':s};break;}case'onchain_received':{const C=await query_received({'name_or_address':normalizeAccountOrMark(c['name_or_address']),'type':c['type'],'cursor':c['cursor'],'limit':c['limit'],'no_cache':c['no_cache'],'network':c['network']}),D=C;if(D&&typeof D==='object'&&typeof D['balance']==='bigint'){const E=D['token_type'];D['balance']=D['balance']['toString']();if(Array['isArray'](D['received']))for(const F of D['received']){F&&typeof F['balance']==='bigint'&&(F['balance']=F['balance']['toString']());}if(E)try{const G={'balance':await formatChainValue(D['balance'],E,c['network'])};if(Array['isArray'](D['received']))for(let H=0x0;H<D['received']['length'];H++){const I=D['received'][H]?.['balance'];I!==undefined&&I!==null&&(G['received['+H+'].balance']=await formatChainValue(I,E,c['network']));}D['_money_display']=G;}catch{}}d={'query_type':'onchain_received','result':D};break;}case'onchain_transaction':{const J=await query_transaction({'digest':c['digest'],'no_cache':c['no_cache'],'network':c['network']});try{await annotateBalanceChanges(J?.['balance_changes'],c['network']);}catch{}d={'query_type':'onchain_transaction','result':J};break;}case'onchain_block':{const K=await query_checkpoint({'block':c['block'],'network':c['network']});d={'query_type':'onchain_block','result':K};break;}case'onchain_object_history':{const L=await query_object_history({'object':c['object'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_object_history','result':L};break;}case'onchain_last_updated':{const M=c['objects']??[],N=await Promise['allSettled'](M['map'](P=>query_object_last_updated({'object':P,'network':c['network']}))),O=M['map']((P,Q)=>{const R=N[Q],S=R['status']==='fulfilled'?R['value']:null;return{'object':P,'timestamp_ms':S?.['timestamp_ms']?String(S['timestamp_ms']):null,'digest':S?.['digest']??null,'sender':S?.['sender']??null};});d={'query_type':'onchain_last_updated','result':{'items':O}};break;}case'onchain_address_activity':{const P=typeof c['name_or_address']==='string'?c['name_or_address']:c['name_or_address']['name_or_address'],Q=await query_address_activity({'name_or_address':P,'direction':c['direction'],'cursor':c['cursor'],'limit':c['limit'],'order':c['order'],'no_cache':c['no_cache'],'network':c['network']});d={'query_type':'onchain_address_activity','result':Q};break;}case'token_value_convert':{const R=c['raw']!==undefined,S=c['unit']!==undefined;if(R===S)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](c['raw'])+',\x20')+('unit='+JSON['stringify'](c['unit'])+'.'));const T=await convertTokenValue(c['token_type'],R?{'raw':c['raw']}:{'unit':c['unit']},c['network']);d={'query_type':'token_value_convert','result':T};break;}case'address_profile':{const U=await query_address_profile({'address':c['address'],'no_cache':c['no_cache'],'network':c['network']});await mergeServiceAnalysis(U,{'no_cache':c['no_cache'],'network':c['network']});U&&typeof U==='object'&&(U['follow_ups']=buildProfileFollowUps(U));d={'query_type':'address_profile','result':U};break;}case'address_profiles':{const V=await query_address_profiles({'addresses':c['addresses'],'no_cache':c['no_cache'],'network':c['network']});await Promise['all'](V['map'](W=>mergeServiceAnalysis(W,{'no_cache':c['no_cache'],'network':c['network']})));for(const W of V??[]){W&&typeof W==='object'&&(W['follow_ups']=buildProfileFollowUps(W));}d={'query_type':'address_profiles','result':V};break;}case'service_supply_chain':{const X=await resolveSupplyChainGraph(typeof c['address']==='string'?c['address']:c['address']?.['name_or_address']??String(c['address']),c['network']);d={'query_type':'service_supply_chain','result':X};break;}case'assemble_context':{d={'query_type':'assemble_context','result':await assembleContext(c)};break;}case'reverse_map':{if(!c['context_objects']||c['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const Y=c['context_network']??await Config['Instance']()['network_get'](),Z=await batchQueryObjectsByIds(c['context_objects'],Y,!![]);let a0,a1,a2=null;{const a4=Z['find'](a6=>{const a7=a6?.['machine']??a6?.['data']?.['machine'];return typeof a7==='string'&&/^0x[0-9a-fA-F]/['test'](a7);});if(a4)try{a2=String(a4['object']??a4['id']??'');const a6=await LocalMark['Instance']()['list']({'address':a2});if(a6[0x0]?.['name'])a4['name']=a6[0x0]['name'];}catch{}const a5=a4?String(a4['machine']??a4['data']?.['machine']):null;if(a5)try{const a7=Z['some'](a9=>String(a9?.['object']??a9?.['id']??'')['toLowerCase']()===a5['toLowerCase']());!a7&&Z['push'](...await batchQueryObjectsByIds([a5],Y,!![]));const a8=await fetchMachineNodes(a5,Y);a0=a8['map'](a9=>({'name':String(a9?.['name']??'')}))['filter'](a9=>a9['name']['length']>0x0),a1=buildMachineGraph(a8)['edges']['map'](a9=>({'from':a9['from'],'to':a9['to']}));}catch{}}let a3;if(a2)try{const a9=await fetchServiceOrders(a2,Y),aa=(a9?.['items']??[])['slice'](0x0,0xa)['map'](ab=>typeof ab?.['who']==='string'?ab['who']:'')['filter'](ab=>ab!=='');if(aa['length']>0x0){const ab=await batchQueryObjectsByIds(aa,Y,!![]);a3=ab['filter'](ac=>ac?.['type']===ObjectType['Order'])['map'](ac=>({'id':ac['object'],'created_at_ms':Number(ac?.['time'])||undefined,'claimed_by':ac?.['claimed_by']??null}));}}catch{}d={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':Z['length'],'report':generateBusinessReport({'objects':Z,'machine_nodes':a0,'machine_edges':a1,'orders':a3,'now_ms':Date['now'](),'order_amount':c['reverse_order_amount']})}};break;}case'service_panorama':d={'query_type':'service_panorama','result':await handleServicePanorama(c)};break;case'service_quote':d={'query_type':'service_quote','result':await handleServiceQuote(c)};break;case'machine_panorama':d={'query_type':'machine_panorama','result':await handleMachinePanorama(c)};break;case'object_panorama':d={'query_type':'object_panorama','result':await handleObjectPanorama(c)};break;case'review_pack':d={'query_type':'review_pack','result':await handleReviewPack(c)};break;case'participation_radar':d={'query_type':'participation_radar','result':await handleParticipationRadar(c)};break;case'relationship_profile':d={'query_type':'relationship_profile','result':await handleRelationshipProfile(c)};break;case'onchain_topology':d={'query_type':'onchain_topology','result':await handleOnchainTopology(c,undefined,await buildUserInjection(c['context_account']?.['toLowerCase']()))};break;case'workspace_lists':d={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'marks_of_account':d={'query_type':'marks_of_account','result':await buildAccountMarks({'network':c['context_network'],'no_cache':c['no_cache'],'account':c['account'],'light':c['light']})};break;case'migration_preflight':d={'query_type':'migration_preflight','result':await migrationPreflight({'account':c['account'],'source_network':c['source_network'],'target_network':c['target_network'],'no_cache':c['no_cache']})};break;case'scenario_topology':{const ac=c['chain_id'];d={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':ac?SCENARIO_CHAINS['filter'](ad=>ad['id']===ac):SCENARIO_CHAINS,'bridges':SCENARIO_BRIDGE_REGISTRY}};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22relationship_profile\x22,\x20\x22onchain_topology\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22,\x20\x22migration_preflight\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}const e=requestedNetworkForQuery(c,d['query_type']);let f;if(NETWORK_FIELD_BY_QUERY[d['query_type']]){const ad=e??await Config['Instance']()['network_get']();f={'network':ad,'network_source':e?'explicit':'default'};}return{'content':[{'type':'text','text':JSON['stringify']({...f,'result':d})}],'structuredContent':{'result':d,...queryPayloadAliases(d),...f??{},'semantic':buildDataSemantic(d,{'operation_type':'query_toolkit','data':c})}};}export function queryPayloadAliases(a){const b=a?.['result'];if(!b||typeof b!=='object')return{};const c={};if(Array['isArray'](b['objects']))c['objects']=b['objects'];if(Array['isArray'](b['received']))c['received']=b['received'];if(b['balance']&&typeof b['balance']==='object')c['balance']=b['balance'];if(Object['keys'](c)['length']===0x0)return{};const d=Object['keys'](c)['filter'](e=>!e['startsWith']('_'));return c['_read_hint']='The\x20\x27result\x27\x20key\x20appears\x20twice\x20by\x20design:\x20structuredContent.result\x20is\x20the\x20per-query_type\x20envelope,\x20'+'so\x20the\x20authoritative\x20path\x20for\x20each\x20field\x20is\x20'+(d['map'](e=>'structuredContent.result.result.'+e)['join']('\x20and\x20')+'.\x20')+('The\x20top-level\x20'+d['join'](',\x20')+'\x20above\x20are\x20additive\x20copies\x20of\x20the\x20same\x20data.'),c;}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{let w;try{w=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(x){const y=x instanceof Error?x['message']:String(x);if(/dynamicFieldNotFound/i['test'](y))w=[];else throw x;}c={'query_type':'onchain_orders_of_user','result':w};break;}case'onchain_orders_of_users':{const z=b['addresses']??[],A=[],B=await Promise['allSettled'](z['map'](async M=>{try{const N=await queryOrdersByUser({'address':M,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(M?.['name_or_address']??''),'views':Array['isArray'](N)?N:[]};}catch(O){const P=O instanceof Error?O['message']:String(O);if(/dynamicFieldNotFound/i['test'](P))return{'account':String(M?.['name_or_address']??''),'views':[]};throw O;}})),C=[];for(let M=0x0;M<z['length'];M++){const N=B[M];if(N['status']==='fulfilled')C['push'](N['value']);else{const O=N['reason']instanceof Error?N['reason']['message']:String(N['reason']);A['push'](String(z[M]?.['name_or_address']??'?')+':\x20'+O);}}const D=Array['from'](new Set(C['flatMap'](P=>P['views']['map'](Q=>typeof Q?.['order']?.['object']==='string'?Q['order']['object']:typeof Q?.['order']==='string'?Q['order']:'')['filter'](Boolean)))),E=new Map();try{if(D['length']>0x0){const P=await batchQueryObjectsByIds(D,b['network']);for(const Q of P){if(Q&&Q['type']===ObjectType['Order'])E['set'](Q['object'],Q);}}}catch{A['push']('order\x20details\x20unavailable\x20(non-blocking)');}const F=new Map(),G=new Map(),H=new Map();try{const R=new Set();for(const S of E['values']()){if(S?.['progress'])R['add'](S['progress']);if(S?.['allocation'])R['add'](S['allocation']);}if(R['size']>0x0){const T=await batchQueryObjectsByIds(Array['from'](R),b['network']);for(const U of T){if(!U?.['object'])continue;if(U['type']===ObjectType['Progress']){const V=U?.['current'];F['set'](U['object'],typeof V==='string'&&V!==''?V:null),G['set'](U['object'],Number(U?.['current_time'])||null);}else{if(U['type']===ObjectType['Allocation']){const W=Number(U?.['balance']??0x0);H['set'](U['object'],Number['isFinite'](W)&&W===0x0?'allocated':'pending');}}}}}catch{A['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const I=new Map();try{const X=await Promise['allSettled'](D['map'](Y=>query_object_last_updated({'object':Y,'network':b['network'],'previous_transaction':E['get'](Y)?.['previousTransaction']??null})));for(let Y=0x0;Y<D['length'];Y++){const Z=X[Y];I['set'](D[Y],Z['status']==='fulfilled'&&Z['value']?.['timestamp_ms']?Number(Z['value']['timestamp_ms'])||null:null);}}catch{A['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const J=await coinTypesOfServices(Array['from'](new Set(Array['from'](E['values']())['map'](a0=>typeof a0?.['service']==='string'?a0['service']:'')['filter'](Boolean))),b['network']),K=async(a0,a1)=>{if(a1===null||a1===undefined||a1==='')return{'display':'','tip':''};if(!a0)return{'display':a1,'tip':''};try{const a2=await formatChainValue(a1,a0,b['network']);if(a2['precision_known'])return{'display':a2['symbol']?a2['display']+'\x20'+a2['symbol']:a2['display'],'tip':a2['text']};return{'display':a1,'tip':''};}catch{return{'display':a1,'tip':''};}},L=[];for(const a0 of D){const a1=E['get'](a0),a2=C['filter'](a6=>a6['views']['some'](a7=>(typeof a7?.['order']?.['object']==='string'?a7['order']['object']:a7?.['order'])===a0))['map'](a6=>{const a7=a6['views']['find'](a8=>(typeof a8?.['order']?.['object']==='string'?a8['order']['object']:a8?.['order'])===a0);return{'account':a6['account'],'is_owner':!!a7?.['is_owner'],'is_agent':!!a7?.['is_agent'],'time':a7?.['time']};}),a3=J['get'](String(a1?.['service']??''))??null,a4=a1?.['amount']!==null&&a1?.['amount']!==undefined?String(a1['amount']):'',a5=await K(a3,a4);L['push']({'order':a0,'roles':a2,'time':a1?Number(a1['time'])||0x0:0x0,'updated_ms':I['get'](a0)??null,'amount':a4,'amount_display':a5['display'],'amount_tip':a5['tip'],'service':a1?.['service']??null,'machine':a1?.['machine']??null,'progress':a1?.['progress']??null,'allocation':a1?.['allocation']??null,'owner':ownerAddrOf(a1?.['builder']??a1?.['owner']),'claimed_by':a1?.['claimed_by']??null,'required_info':a1?.['required_info']??null,'progress_next':a1?.['progress']?F['get'](a1['progress'])??null:null,'progress_since':a1?.['progress']?G['get'](a1['progress'])??null:null,'allocation_state':a1?.['allocation']?H['get'](a1['allocation'])??'pending':'none','disputes':Array['isArray'](a1?.['dispute'])?a1['dispute']:[],'agents':Array['isArray'](a1?.['agent'])?a1['agent']:[],'items':await Promise['all']((Array['isArray'](a1?.['items'])?a1['items']:[])['map'](async a6=>{const a7=a6?.['price']!==null&&a6?.['price']!==undefined?String(a6['price']):'0';return{'name':String(a6?.['name']??''),'price':a7,'price_display':(await K(a3,a7))['display'],'quantity':String(a6?.['quantity']??'0'),'wip_hash':String(a6?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':L,...A['length']>0x0?{'account_errors':A}:{}};break;}case'onchain_table_item_object_linker_core':{const a6=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a6};break;}case'onchain_table_item_object_linker_tx':{const a7=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a7};break;}case'onchain_affiliations_of_object':{const a8=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),a9=a8?.['entries'];Array['isArray'](a9)&&(a8['entries']=a9['filter'](aa=>{const ab=typeof aa?.['who']==='string'?aa['who']:'';return!!ab&&objectTypeFromAddress(ab)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':a8};break;}case'address_profile':{const aa=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(aa,{'no_cache':b['no_cache'],'network':b['network']});aa&&typeof aa==='object'&&(aa['follow_ups']=buildProfileFollowUps(aa));c={'query_type':'address_profile','result':aa};break;}case'service_supply_chain':{const ab=await resolveSupplyChainGraph(typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),b['network']);c={'query_type':'service_supply_chain','result':ab};break;}case'onchain_table_item_generic':{const ac=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':ac};break;}default:{const ad=['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_generic','onchain_affiliations_of_object','address_profile','service_supply_chain'];throw new Error('Unknown\x20table\x20query_type\x20\x22'+b['query_type']+'\x22.\x20Valid\x20query_types\x20are:\x20'+ad['map'](ae=>'\x22'+ae+'\x22')['join'](',\x20')+'.');}}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}function mcpLayerInfoResponse(a){return{'content':[{'type':'text','text':JSON['stringify']({'result':a})}],'structuredContent':{'result':a}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input'),c=b['info'];if(c==='upgrade_check')return mcpLayerInfoResponse({'info':'upgrade_check','result':await checkUpgrade()});if(c==='universal_template')return mcpLayerInfoResponse({'info':'universal_template','result':getUniversalTemplate()});if(c==='getting\x20started')return mcpLayerInfoResponse({'info':'getting\x20started','result':getGettingStarted()});const d=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
@@ -1 +1 @@
1
- import{handleIntentRadar}from'../handlers/intent-radar.js';import{handleGoalOperation}from'../handlers/goal.js';import{handleEmployeeOperation}from'../handlers/employee.js';import{createToolMeta,IntentRadarInputSchema,IntentRadarOutputSchema,GoalOperationInputSchema,EmployeeOperationInputSchema,EmployeeOperationOutputSchema}from'../../schema/index.js';export const AGENT_TOOLS=[{'name':'intent_radar','handler':handleIntentRadar,'config':{'title':'📡\x20Intent\x20Radar\x20-\x20User\x20Intent\x20×\x20Chain\x20Event\x20Matching','summary':'Persist\x20user\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events.','description':'Persist\x20the\x20user\x27s\x20standing\x20business\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events/data.\x20'+'This\x20closes\x20the\x20loop:\x20user\x20records\x20an\x20intent\x20(e.g.\x20\x27find\x20subscription\x20services\x27),\x20'+'the\x20system\x20pulls\x20recent\x20chain\x20events\x20and\x20returns\x20ranked\x20hits.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20save\x20—\x20record\x20an\x20intent\x20(industry/keywords\x20resolved\x20once;\x20optionally\x20bound\x20to\x20an\x20account).\x0a'+'\x20\x20•\x20list\x20—\x20list\x20persisted\x20intents\x20(optionally\x20filtered\x20by\x20account).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20intent.\x0a'+'\x20\x20•\x20match\x20—\x20score\x20events\x20against\x20intents\x20(pass\x20`events`\x20from\x20onchain_events,\x20or\x20auto-pull\x20recent\x20events).\x0a\x0a'+'Watchable\x20event\x20families\x20(target_types):\x20market\x20opportunity\x20(ServiceEvent,\x20DemandChangedEvent,\x20'+'DemandPresentEvent\x20—\x20the\x20supply/demand\x20discovery\x20signals),\x20order/workflow\x20(NewOrderEvent,\x20'+'ProgressEvent),\x20dispute\x20(ArbEvent,\x20VoteEvent,\x20FeedbackEvent),\x20reputation\x20(DemandFeedbackEvent,\x20'+'NewEntityEvent),\x20fund\x20flow\x20(AllocationEvent,\x20TreasuryEvent,\x20RewardClaimEvent,\x20RewardFundEvent,\x20'+'NewPaymentEvent).\x20Each\x20hit\x27s\x20business_meaning\x20comes\x20from\x20the\x20Event\x20Semantics\x20Registry.\x0a\x0a'+'Read-only\x20w.r.t.\x20chain\x20state\x20(reads\x20events\x20+\x20local\x20intent\x20store\x20only).\x0a\x0a'+'💡\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27intent_radar\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':IntentRadarInputSchema,'outputSchema':IntentRadarOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('intent',['intent','radar','match','event','watch','business','intelligence'])}},{'name':'goal_operation','handler':handleGoalOperation,'config':{'title':'🎯\x20Goal\x20-\x20Goal-Driven\x20Lifecycle\x20(GoalEngine)','summary':'Goal-driven\x20lifecycle:\x20create/list/get/approve/advance/pause/complete/abandon/delete\x20goals\x20+\x20event-bridged\x20advancement\x20suggestions\x20+\x20G5\x20boundaries/pursue/next-steps\x20(self-driving\x20within\x20user-granted\x20autonomy).','description':'GoalEngine\x20Agent\x20portal\x20(K3\x2024)\x20—\x20the\x20business-layer\x20storyline\x20ABOVE\x20projects/tasks:\x20'+'record\x20a\x20user\x20goal\x20once,\x20then\x20track\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20'+'RECOGNIZE\x20→\x20CONFIRM\x20→\x20BIND\x20→\x20PLAN\x20→\x20APPROVE\x20→\x20ACT\x20→\x20MONITOR\x20→\x20COMPLETE\x20(→\x20REFLECT).\x20'+'Near-duplicate\x20create\x20calls\x20ADOPT\x20the\x20existing\x20active\x20goal\x20(same\x20type\x20+\x20account\x20+\x20similar\x20intent)\x20'+'instead\x20of\x20forking\x20a\x20second\x20storyline.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20create\x20—\x20record\x20a\x20goal\x20from\x20intent_text\x20(goal_type\x20auto-classified;\x20override\x20with\x20goal_type).\x20'+'Pass\x20account\x20to\x20BIND\x20immediately\x20(local-account\x20preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).\x20'+'Goal\x20types\x20with\x20a\x20dedicated\x20playbook\x20(publish_service,\x20fulfill_order,\x20capture_demand,\x20publish_demand,\x20'+'purchase_service)\x20AUTOMATICALLY\x20attach\x20a\x20TaskProcess\x20(K3\x2024\x20§3.5):\x20the\x20long-task\x20carrier\x20with\x20a\x20named\x20'+'stage\x20sequence\x20+\x20events/problems/feedback/decisions\x20memory\x20streams;\x20create_process=true\x20forces\x20one\x20for\x20'+'the\x20other\x20(generic)\x20goal\x20types.\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20goals\x20(stage/account\x20filters;\x20include_finished\x20for\x20completed/abandoned)\x20+\x20per-stage\x20counts.\x0a'+'\x20\x20•\x20get\x20—\x20one\x20goal\x27s\x20full\x20record\x20(stage,\x20objects,\x20monitor\x20bindings,\x20approvals,\x20outcome).\x20Goals\x20with\x20a\x20'+'TaskProcess\x20also\x20return\x20process_summary\x20(current\x20stage,\x20per-stage\x20progress,\x20open\x20problems,\x20pending\x20'+'suggestions,\x20last\x20events,\x20feedback\x20count)\x20—\x20the\x20interrupted-task\x20resume\x20surface:\x20read\x20it,\x20then\x20continue\x20'+'with\x20advance\x20(there\x20is\x20no\x20separate\x20resume\x20action).\x0a'+'\x20\x20•\x20approve\x20—\x20APPROVE\x20station:\x20records\x20a\x20plan\x20approval;\x20while\x20active,\x20fail-open\x20ConfirmGate\x20rules\x20'+'(standard/none\x20levels)\x20auto-pass\x20for\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>,\x20and\x20successful\x20'+'creation\x20operations\x20carrying\x20that\x20stamp\x20auto-register\x20their\x20created\x20objects\x20into\x20the\x20goal\x20'+'(ACT\x20station\x20\x27execution\x20registers\x27).\x20'+'Fail-closed\x20levels\x20(irreversible/publish/amount)\x20ALWAYS\x20still\x20ask.\x0a'+'\x20\x20•\x20advance\x20—\x20forward\x20stage\x20move\x20(BIND/PLAN/ACT/MONITOR)\x20and/or\x20ACT\x20object\x20registration\x20'+'(objects:\x20[{type,\x20object}];\x20also\x20written\x20back\x20into\x20the\x20goal\x27s\x20TaskProcess\x20manifest).\x20'+'Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20for\x20the\x20goal\x27s\x20objects\x20'+'(and\x20a\x20radar\x20intent\x20for\x20demand\x20goals),\x20so\x20progress\x20surfaces\x20in\x20the\x20monitor\x20todo\x20stream.\x0a'+'\x20\x20•\x20pause\x20—\x20off-axis\x20hold\x20from\x20any\x20non-terminal\x20stage;\x20resume\x20via\x20advance.\x0a'+'\x20\x20•\x20complete\x20—\x20COMPLETE\x20station:\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20'+'(e.g.\x20publish_service\x20needs\x20a\x20live\x20Service;\x20purchase_service\x20needs\x20a\x20completed\x20Order).\x20'+'force=true\x20skips\x20verification\x20(audited\x20as\x20outcome.forced).\x20Tears\x20down\x20the\x20goal\x27s\x20monitor\x20bindings.\x20'+'Pass\x20feedback\x20{sentiment,\x20comment}\x20to\x20record\x20user\x20feedback\x20on\x20the\x20process;\x20the\x20outcome\x20is\x20distilled\x20'+'into\x20the\x20experience\x20layer\x20(REFLECT).\x0a'+'\x20\x20•\x20abandon\x20—\x20terminal\x20give-up\x20(reason\x20required);\x20same\x20monitor\x20teardown,\x20outcome.success=false.\x0a'+'\x20\x20•\x20delete\x20—\x20housekeeping:\x20remove\x20a\x20TERMINAL\x20goal\x20record\x20entirely\x20(record\x20+\x20stage-index\x20entries\x20+\x20'+'TaskProcess\x20dir).\x20force=true\x20also\x20allows\x20non-terminal\x20goals\x20(monitor\x20teardown\x20runs\x20first).\x0a'+'\x20\x20•\x20suggestions\x20—\x20T5-C:\x20the\x20goal\x27s\x20PENDING\x20advancement\x20suggestions\x20(monitor-bridged\x20POSITIVE\x20events:\x20'+'first\x20order\x20received\x20→\x20enter\x20monitoring;\x20arbitration\x20finished\x20→\x20verify\x20completion;\x20service\x20live\x20→\x20'+'verify\x20completion)\x20joined\x20with\x20its\x20OPEN\x20problems\x20—\x20the\x20single\x20consumption\x20face\x20for\x20\x27what\x20wants\x20my\x20'+'decision\x20on\x20this\x20goal\x27.\x20include_resolved=true\x20also\x20returns\x20confirmed/dismissed\x20ones.\x0a'+'\x20\x20•\x20suggestion_resolve\x20—\x20one-shot\x20decision\x20on\x20one\x20suggestion:\x20confirm\x20(apply=true\x20runs\x20the\x20suggested\x20'+'move\x20through\x20the\x20NORMAL\x20engine\x20stations\x20—\x20advance/complete\x20with\x20chain\x20verification\x20still\x20gating;\x20'+'apply=false\x20just\x20acknowledges)\x20or\x20dismiss\x20(note\x20optional,\x20audited).\x20A\x20suggestion\x20NEVER\x20auto-applies;\x20'+'when\x20applying\x20fails\x20the\x20suggestion\x20stays\x20pending\x20and\x20apply_error\x20explains\x20why.\x0a'+'\x20\x20•\x20boundaries\x20—\x20G5\x20CONFIRM\x20station:\x20the\x20boundary\x20questions\x20to\x20ask\x20the\x20user\x20BEFORE\x20the\x20goal\x20pursues\x20'+'autonomously\x20(budget\x20/\x20deadline\x20/\x20acceptance\x20requirements\x20/\x20autonomy)\x20+\x20the\x20current\x20boundaries\x20and\x20'+'what\x20is\x20still\x20missing.\x0a'+'\x20\x20•\x20boundaries_set\x20—\x20G5\x20CONFIRM\x20station:\x20set/merge-patch\x20the\x20boundaries.\x20budget\x20=\x20total\x20spend\x20ceiling\x20'+'(smallest\x20unit,\x20decimal\x20string;\x20over-budget\x20candidates\x20are\x20rejected,\x20never\x20asked),\x20deadline\x20=\x20ms\x20epoch\x20'+'(past\x20it\x20everything\x20stalls),\x20requirements\x20=\x20hard\x20acceptance\x20red\x20lines\x20(commitment\x20moves\x20wait\x20for\x20'+'verification),\x20autonomy\x20=\x20confirm_all\x20|\x20execute_low_risk\x20|\x20execute_all\x20(irreversible/publish/amount\x20'+'operations\x20ALWAYS\x20ask\x20regardless).\x20Setting\x20any\x20field\x20marks\x20CONFIRM\x20done.\x0a'+'\x20\x20•\x20pursue\x20—\x20G5\x20self-driving\x20tick:\x20gathers\x20the\x20goal\x27s\x20pending\x20suggestions\x20+\x20the\x20engine\x20completion\x20'+'check\x20(monitoring\x20station),\x20runs\x20them\x20through\x20the\x20boundary\x20filter\x20and\x20the\x20autonomy\x20mapping,\x20then\x20'+'APPLIES\x20the\x20allowed\x20moves\x20through\x20the\x20normal\x20engine\x20stations\x20(execute)\x20or\x20surfaces\x20them\x20as\x20pending\x20'+'suggestions\x20(ask_user).\x20Boundary\x20violations\x20stall\x20and\x20are\x20reported.\x20A\x20paused\x20goal\x20does\x20not\x20pursue.\x20'+'Call\x20it\x20after\x20monitor\x20events\x20/\x20periodically\x20—\x20the\x20monitor\x20loop\x20bridges\x20events\x20into\x20suggestions\x20in\x20'+'the\x20background\x20either\x20way.\x0a'+'\x20\x20•\x20next_steps\x20—\x20G5\x20user-driven\x20follow-ups:\x20recommended\x20next\x20steps\x20for\x20this\x20goal\x20—\x20station\x20steps\x20'+'(confirm\x20boundaries,\x20bind,\x20resolve\x20pending\x20suggestions,\x20advance),\x20the\x20G2\x20role-interest\x20view\x20pointer\x20'+'(when\x20the\x20goal\x20has\x20objects\x20+\x20a\x20binding:\x20operable\x20forwards,\x20blocked\x20moves,\x20risks\x20via\x20topology_bi\x20'+'interest_role),\x20and\x20business-loop\x20follow-ups\x20(what\x20goals\x20naturally\x20follow\x20this\x20one).\x20Works\x20for\x20'+'completed\x20goals\x20too\x20(follow-ups\x20lead).\x0a'+'\x20\x20•\x20analyze_intent\x20(C1)\x20—\x20natural-language\x20business\x20intent\x20→\x20parsed\x20intent\x20(primary/secondary\x20objects,\x20'+'detected\x20scenes,\x20industry)\x20+\x20per-object\x20puzzle\x20snapshots\x20+\x20recommended\x20creation\x20order.\x0a'+'\x20\x20•\x20aggregate_risks\x20(C2)\x20—\x20puzzle\x20snapshots\x20→\x20cross-object\x20risk\x20calibration\x20(CRITICAL/HIGH/MEDIUM/LOW/INFO)\x20'+'with\x20blocking\x20status\x20(RISK_PASSED/RISK_BLOCKED/RISK_PENDING_CONFIRM).\x20Omit\x20\x27puzzles\x27\x20but\x20pass\x20\x27intent\x27\x20'+'to\x20run\x20C1→C2\x20in\x20one\x20call.\x0a'+'\x20\x20•\x20trace_substeps\x20(C3)\x20—\x20substep\x20execution\x20records\x20→\x20DAG\x20coherence\x20analysis\x20(dangling\x20inputs,\x20circular\x20'+'refs,\x20missing\x20outputs,\x20cross-step\x20breaks,\x20topological\x20order,\x20D-10\x20verdict).\x0a'+'\x20\x20•\x20merchant_guide\x20—\x2010-step\x20merchant\x20onboarding\x20wizard:\x20intent\x20→\x20industry\x20confirmation\x20→\x20module\x20adoption\x20→\x20'+'SemanticObjectGraph\x20blueprint\x20→\x20evaluation\x20preview\x20→\x20harness\x20check\x20→\x20creation\x20plan.\x20Stateless\x20(pass\x20'+'guide_state/guide_confirm\x20to\x20advance);\x20NEVER\x20executes\x20on-chain\x20operations.\x0a\x0a'+'Local\x20goal\x20state\x20only;\x20the\x20only\x20chain\x20access\x20is\x20READ-ONLY\x20completion\x20verification\x20(complete\x20/\x20the\x20pursue\x20tick\x27s\x20completion\x20check).\x0a\x0a'+'💡\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27goal_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':GoalOperationInputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':![]},'_meta':createToolMeta('goal',['goal','lifecycle','plan','approve','monitor','complete','abandon','objective'])}},{'name':'employee_operation','handler':handleEmployeeOperation,'config':{'title':'👥\x20Employee\x20-\x20Merchant\x20Staff\x20Profile','summary':'Merchant\x20employee\x20profile,\x20KPI\x20assessment,\x20liability\x20resolution.','description':'Read/write\x20a\x20merchant\x20employee\x27s\x20LOCAL\x20organizational\x20profile:\x20department\x20'+'(customer_service/logistics/finance/operations),\x20liability\x20(merchant_bears/self_bears/hybrid),\x20'+'and\x20response-time\x20budget.\x20LOCAL\x20ONLY\x20—\x20never\x20mutates\x20chain\x20state;\x20the\x20employee\x27s\x20on-chain\x20'+'authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20set\x20—\x20persist\x20an\x20employee\x20profile\x20(validated:\x20department+liability\x20required,\x20budget\x20must\x20be\x20positive).\x0a'+'\x20\x20•\x20get\x20—\x20read\x20an\x20employee\x20profile\x20(null\x20when\x20absent).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20employee\x20profile.\x0a'+'\x20\x20•\x20assess_kpi\x20—\x20measure\x20an\x20employee\x27s\x20node\x20reaction\x20speed\x20(assigned_at\x20→\x20advanced_at\x20vs\x20budget:\x20pass/warn/fail).\x20Timestamps:\x20pass\x20them\x20explicitly,\x20OR\x20pass\x20`progress`\x20(progress\x20object\x20address)\x20to\x20auto-derive\x20them\x20from\x20monitored\x20ProgressEvents\x20—\x20explicit\x20values\x20override\x20derived\x20ones.\x20Budget\x20precedence:\x20explicit\x20budget_ms\x20>\x20stored\x20profile\x20>\x2048h\x20default.\x0a'+'\x20\x20•\x20resolve_liability\x20—\x20resolve\x20who\x20internally\x20bears\x20an\x20employee-error\x20loss\x20(merchant/employee,\x20hybrid\x20threshold\x20split)\x20and\x20whether\x20the\x20order\x20user\x20must\x20be\x20compensated\x20BEFORE\x20the\x20workflow\x20resumes.\x20Outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s.\x0a'+'\x20\x20•\x20suggest_incentive\x20—\x20the\x20employment\x20relationship\x27s\x20action\x20layer:\x20node\x20KPIs\x20(from\x20assess_kpi)\x20+\x20WIP\x20acceptance\x20evidence\x20+\x20liability\x20resolution\x20→\x20a\x20Reward\x20suggestion\x20(reward_grant\x20/\x20compensation_offset\x20/\x20correction_notice\x20/\x20none)\x20with\x20rationale\x20and\x20execution\x20hints.\x20Suggestion\x20ONLY\x20—\x20never\x20auto-executes;\x20the\x20merchant\x20confirms\x20and\x20runs\x20the\x20on-chain\x20reward/payment\x20ops\x20separately.\x0a\x0a'+'💡\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27employee_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':EmployeeOperationInputSchema,'outputSchema':EmployeeOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('employee',['employee','staff','merchant','department','kpi','liability','local'])}}];
1
+ import{handleIntentRadar}from'../handlers/intent-radar.js';import{handleGoalOperation}from'../handlers/goal.js';import{handleEmployeeOperation}from'../handlers/employee.js';import{createToolMeta,IntentRadarInputSchema,IntentRadarOutputSchema,GoalOperationInputSchema,EmployeeOperationInputSchema,EmployeeOperationOutputSchema}from'../../schema/index.js';export const AGENT_TOOLS=[{'name':'intent_radar','handler':handleIntentRadar,'config':{'title':'📡\x20Intent\x20Radar\x20-\x20User\x20Intent\x20×\x20Chain\x20Event\x20Matching','summary':'Persist\x20user\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events.','description':'Persist\x20the\x20user\x27s\x20standing\x20business\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events/data.\x20'+'This\x20closes\x20the\x20loop:\x20user\x20records\x20an\x20intent\x20(e.g.\x20\x27find\x20subscription\x20services\x27),\x20'+'the\x20system\x20pulls\x20recent\x20chain\x20events\x20and\x20returns\x20ranked\x20hits.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20save\x20—\x20record\x20an\x20intent\x20(industry/keywords\x20resolved\x20once;\x20optionally\x20bound\x20to\x20an\x20account).\x0a'+'\x20\x20•\x20list\x20—\x20list\x20persisted\x20intents\x20(optionally\x20filtered\x20by\x20account).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20intent.\x0a'+'\x20\x20•\x20match\x20—\x20score\x20events\x20against\x20intents\x20(pass\x20`events`\x20from\x20onchain_events,\x20or\x20auto-pull\x20recent\x20events).\x0a\x0a'+'Watchable\x20event\x20families\x20(target_types):\x20market\x20opportunity\x20(ServiceEvent,\x20DemandChangedEvent,\x20'+'DemandPresentEvent\x20—\x20the\x20supply/demand\x20discovery\x20signals),\x20order/workflow\x20(NewOrderEvent,\x20'+'ProgressEvent),\x20dispute\x20(ArbEvent,\x20VoteEvent,\x20FeedbackEvent),\x20reputation\x20(DemandFeedbackEvent,\x20'+'NewEntityEvent),\x20fund\x20flow\x20(AllocationEvent,\x20TreasuryEvent,\x20RewardClaimEvent,\x20RewardFundEvent,\x20'+'NewPaymentEvent).\x20Each\x20hit\x27s\x20business_meaning\x20comes\x20from\x20the\x20Event\x20Semantics\x20Registry.\x0a\x0a'+'Read-only\x20w.r.t.\x20chain\x20state\x20(reads\x20events\x20+\x20local\x20intent\x20store\x20only).\x0a\x0a'+'💡\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27intent_radar\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':IntentRadarInputSchema,'outputSchema':IntentRadarOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('intent',['intent','radar','match','event','watch','business','intelligence'])}},{'name':'goal_operation','handler':handleGoalOperation,'config':{'title':'🎯\x20Goal\x20-\x20Goal-Driven\x20Lifecycle\x20(GoalEngine)','summary':'Goal-driven\x20lifecycle:\x20create/list/get/approve/advance/pause/complete/abandon/delete\x20goals\x20+\x20event-bridged\x20advancement\x20suggestions\x20+\x20G5\x20boundaries/pursue/next-steps\x20(self-driving\x20within\x20user-granted\x20autonomy).','description':'GoalEngine\x20Agent\x20portal\x20(K3\x2024)\x20—\x20the\x20business-layer\x20storyline\x20ABOVE\x20projects/tasks:\x20'+'record\x20a\x20user\x20goal\x20once,\x20then\x20track\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20'+'RECOGNIZE\x20→\x20CONFIRM\x20→\x20BIND\x20→\x20PLAN\x20→\x20APPROVE\x20→\x20ACT\x20→\x20MONITOR\x20→\x20COMPLETE\x20(→\x20REFLECT).\x20'+'Near-duplicate\x20create\x20calls\x20ADOPT\x20the\x20existing\x20active\x20goal\x20(same\x20type\x20+\x20account\x20+\x20similar\x20intent)\x20'+'instead\x20of\x20forking\x20a\x20second\x20storyline.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20create\x20—\x20record\x20a\x20goal\x20from\x20intent_text\x20(goal_type\x20auto-classified;\x20override\x20with\x20goal_type).\x20'+'Pass\x20account\x20to\x20BIND\x20immediately\x20(local-account\x20preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).\x20'+'Goal\x20types\x20with\x20a\x20dedicated\x20playbook\x20(publish_service,\x20fulfill_order,\x20capture_demand,\x20publish_demand,\x20'+'purchase_service)\x20AUTOMATICALLY\x20attach\x20a\x20TaskProcess\x20(K3\x2024\x20§3.5):\x20the\x20long-task\x20carrier\x20with\x20a\x20named\x20'+'stage\x20sequence\x20+\x20events/problems/feedback/decisions\x20memory\x20streams;\x20create_process=true\x20forces\x20one\x20for\x20'+'the\x20other\x20(generic)\x20goal\x20types.\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20goals\x20(stage/account\x20filters;\x20include_finished\x20for\x20completed/abandoned)\x20+\x20per-stage\x20counts.\x0a'+'\x20\x20•\x20get\x20—\x20one\x20goal\x27s\x20full\x20record\x20(stage,\x20objects,\x20monitor\x20bindings,\x20approvals,\x20outcome).\x20Goals\x20with\x20a\x20'+'TaskProcess\x20also\x20return\x20process_summary\x20(current\x20stage,\x20per-stage\x20progress,\x20open\x20problems,\x20pending\x20'+'suggestions,\x20last\x20events,\x20feedback\x20count)\x20—\x20the\x20interrupted-task\x20resume\x20surface:\x20read\x20it,\x20then\x20continue\x20'+'with\x20advance\x20(there\x20is\x20no\x20separate\x20resume\x20action).\x0a'+'\x20\x20•\x20approve\x20—\x20APPROVE\x20station:\x20records\x20a\x20plan\x20approval;\x20while\x20active,\x20fail-open\x20ConfirmGate\x20rules\x20'+'(standard/none\x20levels)\x20auto-pass\x20for\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>,\x20and\x20successful\x20'+'creation\x20operations\x20carrying\x20that\x20stamp\x20auto-register\x20their\x20created\x20objects\x20into\x20the\x20goal\x20'+'(ACT\x20station\x20\x27execution\x20registers\x27).\x20'+'Fail-closed\x20levels\x20(irreversible/publish/amount)\x20ALWAYS\x20still\x20ask.\x0a'+'\x20\x20•\x20advance\x20—\x20forward\x20stage\x20move\x20(BIND/PLAN/ACT/MONITOR)\x20and/or\x20ACT\x20object\x20registration\x20'+'(objects:\x20[{type,\x20object}];\x20also\x20written\x20back\x20into\x20the\x20goal\x27s\x20TaskProcess\x20manifest).\x20'+'Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20for\x20the\x20goal\x27s\x20objects\x20'+'(and\x20a\x20radar\x20intent\x20for\x20demand\x20goals),\x20so\x20progress\x20surfaces\x20in\x20the\x20monitor\x20todo\x20stream.\x0a'+'\x20\x20•\x20pause\x20—\x20off-axis\x20hold\x20from\x20any\x20non-terminal\x20stage;\x20resume\x20via\x20advance.\x0a'+'\x20\x20•\x20complete\x20—\x20COMPLETE\x20station:\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20'+'(e.g.\x20publish_service\x20needs\x20a\x20live\x20Service;\x20purchase_service\x20needs\x20a\x20completed\x20Order).\x20'+'force=true\x20skips\x20verification\x20(audited\x20as\x20outcome.forced).\x20Tears\x20down\x20the\x20goal\x27s\x20monitor\x20bindings.\x20'+'Pass\x20feedback\x20{sentiment,\x20comment}\x20to\x20record\x20user\x20feedback\x20on\x20the\x20process;\x20the\x20outcome\x20is\x20distilled\x20'+'into\x20the\x20experience\x20layer\x20(REFLECT).\x0a'+'\x20\x20•\x20abandon\x20—\x20terminal\x20give-up\x20(reason\x20required);\x20same\x20monitor\x20teardown,\x20outcome.success=false.\x0a'+'\x20\x20•\x20delete\x20—\x20housekeeping:\x20remove\x20a\x20TERMINAL\x20goal\x20record\x20entirely\x20(record\x20+\x20stage-index\x20entries\x20+\x20'+'TaskProcess\x20dir).\x20force=true\x20also\x20allows\x20non-terminal\x20goals\x20(monitor\x20teardown\x20runs\x20first).\x0a'+'\x20\x20•\x20suggestions\x20—\x20T5-C:\x20the\x20goal\x27s\x20PENDING\x20advancement\x20suggestions\x20(monitor-bridged\x20POSITIVE\x20events:\x20'+'first\x20order\x20received\x20→\x20enter\x20monitoring;\x20arbitration\x20finished\x20→\x20verify\x20completion;\x20service\x20live\x20→\x20'+'verify\x20completion)\x20joined\x20with\x20its\x20OPEN\x20problems\x20—\x20the\x20single\x20consumption\x20face\x20for\x20\x27what\x20wants\x20my\x20'+'decision\x20on\x20this\x20goal\x27.\x20include_resolved=true\x20also\x20returns\x20confirmed/dismissed\x20ones.\x0a'+'\x20\x20•\x20suggestion_resolve\x20—\x20one-shot\x20decision\x20on\x20one\x20suggestion:\x20confirm\x20(apply=true\x20runs\x20the\x20suggested\x20'+'move\x20through\x20the\x20NORMAL\x20engine\x20stations\x20—\x20advance/complete\x20with\x20chain\x20verification\x20still\x20gating;\x20'+'apply=false\x20just\x20acknowledges)\x20or\x20dismiss\x20(note\x20optional,\x20audited).\x20A\x20suggestion\x20NEVER\x20auto-applies;\x20'+'when\x20applying\x20fails\x20the\x20suggestion\x20stays\x20pending\x20and\x20apply_error\x20explains\x20why.\x0a'+'\x20\x20•\x20boundaries\x20—\x20G5\x20CONFIRM\x20station:\x20the\x20boundary\x20questions\x20to\x20ask\x20the\x20user\x20BEFORE\x20the\x20goal\x20pursues\x20'+'autonomously\x20(budget\x20/\x20deadline\x20/\x20acceptance\x20requirements\x20/\x20autonomy)\x20+\x20the\x20current\x20boundaries\x20and\x20'+'what\x20is\x20still\x20missing.\x0a'+'\x20\x20•\x20boundaries_set\x20—\x20G5\x20CONFIRM\x20station:\x20set/merge-patch\x20the\x20boundaries.\x20budget\x20=\x20total\x20spend\x20ceiling\x20'+'(smallest\x20unit,\x20decimal\x20string;\x20over-budget\x20candidates\x20are\x20rejected,\x20never\x20asked),\x20deadline\x20=\x20ms\x20epoch\x20'+'(past\x20it\x20everything\x20stalls),\x20requirements\x20=\x20hard\x20acceptance\x20red\x20lines\x20(commitment\x20moves\x20wait\x20for\x20'+'verification),\x20autonomy\x20=\x20confirm_all\x20|\x20execute_low_risk\x20|\x20execute_all\x20(irreversible/publish/amount\x20'+'operations\x20ALWAYS\x20ask\x20regardless).\x20Setting\x20any\x20field\x20marks\x20CONFIRM\x20done.\x0a'+'\x20\x20•\x20pursue\x20—\x20G5\x20self-driving\x20tick:\x20gathers\x20the\x20goal\x27s\x20pending\x20suggestions\x20+\x20the\x20engine\x20completion\x20'+'check\x20(monitoring\x20station),\x20runs\x20them\x20through\x20the\x20boundary\x20filter\x20and\x20the\x20autonomy\x20mapping,\x20then\x20'+'APPLIES\x20the\x20allowed\x20moves\x20through\x20the\x20normal\x20engine\x20stations\x20(execute)\x20or\x20surfaces\x20them\x20as\x20pending\x20'+'suggestions\x20(ask_user).\x20Boundary\x20violations\x20stall\x20and\x20are\x20reported.\x20A\x20paused\x20goal\x20does\x20not\x20pursue.\x20'+'Call\x20it\x20after\x20monitor\x20events\x20/\x20periodically\x20—\x20the\x20monitor\x20loop\x20bridges\x20events\x20into\x20suggestions\x20in\x20'+'the\x20background\x20either\x20way.\x0a'+'\x20\x20•\x20next_steps\x20—\x20G5\x20user-driven\x20follow-ups:\x20recommended\x20next\x20steps\x20for\x20this\x20goal\x20—\x20station\x20steps\x20'+'(confirm\x20boundaries,\x20bind,\x20resolve\x20pending\x20suggestions,\x20advance),\x20the\x20G2\x20role-interest\x20view\x20pointer\x20'+'(when\x20the\x20goal\x20has\x20objects\x20+\x20a\x20binding:\x20operable\x20forwards,\x20blocked\x20moves,\x20risks\x20via\x20topology_bi\x20'+'interest_role),\x20and\x20business-loop\x20follow-ups\x20(what\x20goals\x20naturally\x20follow\x20this\x20one).\x20Works\x20for\x20'+'completed\x20goals\x20too\x20(follow-ups\x20lead).\x0a'+'\x20\x20•\x20analyze_intent\x20(C1)\x20—\x20natural-language\x20business\x20intent\x20→\x20parsed\x20intent\x20(primary/secondary\x20objects,\x20'+'detected\x20scenes,\x20industry)\x20+\x20per-object\x20puzzle\x20snapshots\x20+\x20recommended\x20creation\x20order.\x0a'+'\x20\x20•\x20aggregate_risks\x20(C2)\x20—\x20puzzle\x20snapshots\x20→\x20cross-object\x20risk\x20calibration\x20(CRITICAL/HIGH/MEDIUM/LOW/INFO)\x20'+'with\x20blocking\x20status\x20(RISK_PASSED/RISK_BLOCKED/RISK_PENDING_CONFIRM).\x20Omit\x20\x27puzzles\x27\x20but\x20pass\x20\x27intent\x27\x20'+'to\x20run\x20C1→C2\x20in\x20one\x20call.\x0a'+'\x20\x20•\x20trace_substeps\x20(C3)\x20—\x20substep\x20execution\x20records\x20→\x20DAG\x20coherence\x20analysis\x20(dangling\x20inputs,\x20circular\x20'+'refs,\x20missing\x20outputs,\x20cross-step\x20breaks,\x20topological\x20order,\x20D-10\x20verdict).\x0a'+'\x20\x20•\x20merchant_guide\x20—\x2010-step\x20merchant\x20onboarding\x20wizard:\x20intent\x20→\x20industry\x20confirmation\x20→\x20module\x20adoption\x20→\x20'+'Blueprint\x20(L1\x20plan\x20projection)\x20→\x20evaluation\x20preview\x20→\x20harness\x20check\x20→\x20creation\x20plan.\x20Stateless\x20(pass\x20'+'guide_state/guide_confirm\x20to\x20advance);\x20NEVER\x20executes\x20on-chain\x20operations.\x0a\x0a'+'Local\x20goal\x20state\x20only;\x20the\x20only\x20chain\x20access\x20is\x20READ-ONLY\x20completion\x20verification\x20(complete\x20/\x20the\x20pursue\x20tick\x27s\x20completion\x20check).\x0a\x0a'+'💡\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27goal_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':GoalOperationInputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':![]},'_meta':createToolMeta('goal',['goal','lifecycle','plan','approve','monitor','complete','abandon','objective'])}},{'name':'employee_operation','handler':handleEmployeeOperation,'config':{'title':'👥\x20Employee\x20-\x20Merchant\x20Staff\x20Profile','summary':'Merchant\x20employee\x20profile,\x20KPI\x20assessment,\x20liability\x20resolution.','description':'Read/write\x20a\x20merchant\x20employee\x27s\x20LOCAL\x20organizational\x20profile:\x20department\x20'+'(customer_service/logistics/finance/operations),\x20liability\x20(merchant_bears/self_bears/hybrid),\x20'+'and\x20response-time\x20budget.\x20LOCAL\x20ONLY\x20—\x20never\x20mutates\x20chain\x20state;\x20the\x20employee\x27s\x20on-chain\x20'+'authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20set\x20—\x20persist\x20an\x20employee\x20profile\x20(validated:\x20department+liability\x20required,\x20budget\x20must\x20be\x20positive).\x0a'+'\x20\x20•\x20get\x20—\x20read\x20an\x20employee\x20profile\x20(null\x20when\x20absent).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20employee\x20profile.\x0a'+'\x20\x20•\x20assess_kpi\x20—\x20measure\x20an\x20employee\x27s\x20node\x20reaction\x20speed\x20(assigned_at\x20→\x20advanced_at\x20vs\x20budget:\x20pass/warn/fail).\x20Timestamps:\x20pass\x20them\x20explicitly,\x20OR\x20pass\x20`progress`\x20(progress\x20object\x20address)\x20to\x20auto-derive\x20them\x20from\x20monitored\x20ProgressEvents\x20—\x20explicit\x20values\x20override\x20derived\x20ones.\x20Budget\x20precedence:\x20explicit\x20budget_ms\x20>\x20stored\x20profile\x20>\x2048h\x20default.\x0a'+'\x20\x20•\x20resolve_liability\x20—\x20resolve\x20who\x20internally\x20bears\x20an\x20employee-error\x20loss\x20(merchant/employee,\x20hybrid\x20threshold\x20split)\x20and\x20whether\x20the\x20order\x20user\x20must\x20be\x20compensated\x20BEFORE\x20the\x20workflow\x20resumes.\x20Outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s.\x0a'+'\x20\x20•\x20suggest_incentive\x20—\x20the\x20employment\x20relationship\x27s\x20action\x20layer:\x20node\x20KPIs\x20(from\x20assess_kpi)\x20+\x20WIP\x20acceptance\x20evidence\x20+\x20liability\x20resolution\x20→\x20a\x20Reward\x20suggestion\x20(reward_grant\x20/\x20compensation_offset\x20/\x20correction_notice\x20/\x20none)\x20with\x20rationale\x20and\x20execution\x20hints.\x20Suggestion\x20ONLY\x20—\x20never\x20auto-executes;\x20the\x20merchant\x20confirms\x20and\x20runs\x20the\x20on-chain\x20reward/payment\x20ops\x20separately.\x0a\x0a'+'💡\x20Schema\x20hint:\x20Use\x20schema_query\x20with\x20action=\x27get\x27\x20and\x20name=\x27employee_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':EmployeeOperationInputSchema,'outputSchema':EmployeeOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('employee',['employee','staff','merchant','department','kpi','liability','local'])}}];
@@ -1 +1 @@
1
- export function classifyWipPath(a){if(!a||typeof a!=='string')return{'type':'unknown','is_local':![],'is_network':![],'description':'Empty\x20or\x20invalid\x20path'};if(a['startsWith']('data:'))return{'type':'data_url','is_local':![],'is_network':!![],'description':'Data\x20URL\x20—\x20embedded\x20content,\x20globally\x20reachable'};if(a['startsWith']('ipfs://'))return{'type':'ipfs','is_local':![],'is_network':!![],'description':'IPFS\x20URI\x20—\x20resolve\x20via\x20any\x20public\x20gateway'};const b=[/^https?:\/\/ipfs\.io\//i,/^https?:\/\/cloudflare-ipfs\.com\//i,/^https?:\/\/gateway\.pinata\.cloud\//i,/^https?:\/\/dweb\.link\//i,/^https?:\/\/[^/]*pinata\.cloud\//i];if(b['some'](d=>d['test'](a)))return{'type':'ipfs','is_local':![],'is_network':!![],'description':'IPFS\x20HTTP\x20gateway\x20URL\x20—\x20globally\x20reachable'};if(/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\]|0\.0\.0\.0)([:/]|$)/i['test'](a))return{'type':'local_http','is_local':!![],'is_network':![],'description':'Local\x20HTTP\x20URL\x20(localhost/loopback)\x20—\x20reachable\x20only\x20on\x20this\x20machine,\x20NOT\x20by\x20customers'};const c=/^https?:\/\/(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3})([:/]|$)/i;if(c['test'](a))return{'type':'local_http','is_local':!![],'is_network':![],'description':'LAN\x20HTTP\x20URL\x20(private\x20IP)\x20—\x20reachable\x20only\x20on\x20the\x20local\x20network,\x20NOT\x20by\x20customers'};if(/^https?:\/\//i['test'](a))return{'type':'http_url','is_local':![],'is_network':!![],'description':'HTTP(S)\x20URL\x20—\x20globally\x20reachable\x20if\x20server\x20returns\x20200'};if(/^[A-Za-z]:[\\/]/['test'](a))return{'type':'local_windows','is_local':!![],'is_network':![],'description':'Windows\x20local\x20path\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};if(a['startsWith']('/'))return{'type':'local_unix','is_local':!![],'is_network':![],'description':'Unix\x20local\x20path\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};if(a['startsWith']('./')||a['startsWith']('../')||a==='.'||a==='..')return{'type':'local_relative','is_local':!![],'is_network':![],'description':'Relative\x20local\x20path\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};if(!a['includes']('://')&&!a['startsWith']('data:'))return{'type':'local_relative','is_local':!![],'is_network':![],'description':'Local\x20file\x20path\x20(no\x20scheme)\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};return{'type':'unknown','is_local':![],'is_network':![],'description':'Unrecognized\x20path\x20format'};}export function getDeployOptions(a){const b=a['replace'](/'/g,'\x27\x5c\x27\x27'),c=a['split'](/[\\/]/)['pop']()||'file.wip';return[{'name':'Wowok\x20WIP\x20storage\x20service\x20(Recommended)','description':'Upload\x20the\x20.wip\x20file\x20directly\x20from\x20the\x20MCP\x20with\x20wip_file\x20type=\x27upload\x27.\x20'+'Default\x20is\x20the\x20official\x20FREE\x20store\x20wip.store.wowok.net\x20(limited\x20to\x2010\x20files\x20per\x20account);\x20'+'with\x20storage=\x27custom\x27\x20any\x20self-hosted\x20or\x20third-party\x20wip\x20storage\x20service\x20works\x20(no\x20store\x20quota,\x20full\x20control).','difficulty':'easy','free':!![],'result_url_pattern':'https://wip.store.wowok.net/f/{hash}\x20\x20\x20(or\x20your\x20custom\x20service\x20base\x20URL\x20+\x20/f/{hash})','steps':['//\x201.\x20Generate\x20the\x20WIP\x20file:\x20wip_file\x20{\x20type:\x20\x27generate\x27,\x20options:\x20{\x20markdown_text:\x20\x27...\x27\x20}\x20}','//\x202.\x20Sign\x20it\x20with\x20your\x20account:\x20wip_file\x20{\x20type:\x20\x27sign\x27,\x20wipFilePath:\x20\x27<file>\x27,\x20account:\x20\x27<account>\x27\x20}','//\x203.\x20Upload\x20to\x20the\x20official\x20free\x20store:\x20wip_file\x20{\x20type:\x20\x27upload\x27,\x20wipFilePath:\x20\x27<file>\x27,\x20account:\x20\x27<account>\x27\x20}','//\x20\x20\x20\x20Or\x20use\x20your\x20own\x20/\x20a\x20third-party\x20service:\x20wip_file\x20{\x20type:\x20\x27upload\x27,\x20wipFilePath:\x20\x27<file>\x27,\x20storage:\x20\x27custom\x27,\x20customBaseUrl:\x20\x27https://your-wip-service.example.com\x27\x20}','//\x204.\x20Use\x20the\x20returned\x20URL\x20(base_url\x20+\x20/f/{hash})\x20as\x20the\x20Service\x27s\x20wip_url:','//\x20\x20\x20\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip_url:\x20\x27<public-url>\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}','//\x205.\x20Confirm\x20reachability:\x20wip_file\x20{\x20type:\x20\x27verify\x27,\x20wipFilePath:\x20\x27<public-url>\x27\x20}'],'notes':['Official\x20free\x20store\x20is\x20limited\x20to\x2010\x20files\x20per\x20account\x20—\x20free\x20up\x20space\x20with\x20wip_file\x20type=\x27storage_delete\x27\x20when\x20the\x20quota\x20is\x20hit.','Official\x20free\x20store\x20declaration:\x20files\x20are\x20retained\x20for\x206\x20months\x20(180\x20days);\x20free\x20best-effort\x20service\x20—\x20force\x20majeure\x20excepted;\x20expired\x20files\x20are\x20NEVER\x20deleted\x20automatically\x20(manual\x20admin\x20purge\x20only).\x20For\x20permanent\x20hosting\x20use\x20storage=\x27custom\x27.','The\x20public\x20WIP\x20URL\x20is\x20network-independent:\x20the\x20same\x20file\x20serves\x20buyers\x20on\x20both\x20testnet\x20and\x20mainnet.','Large\x20WIP\x20files\x20(multi-MB,\x20image-heavy)\x20are\x20network-sensitive:\x20compress\x20images\x20before\x20generate\x20and\x20retry\x20transient\x20upload\x20failures.']},{'name':'GitHub\x20Pages','description':'Upload\x20the\x20.wip\x20file\x20to\x20a\x20GitHub\x20repository\x20and\x20serve\x20it\x20via\x20GitHub\x20Pages.\x20'+'Free,\x20stable,\x20HTTPS-enabled,\x20no\x20expiration.','difficulty':'easy','free':!![],'result_url_pattern':'https://<your-username>.github.io/<repo>/<file>.wip','steps':['//\x201.\x20Create\x20a\x20new\x20GitHub\x20repository\x20(e.g.,\x20\x27wowok-wip\x27)\x20via\x20https://github.com/new','//\x202.\x20Make\x20it\x20PUBLIC\x20so\x20the\x20file\x20is\x20world-readable.','//\x203.\x20Copy\x20your\x20local\x20WIP\x20file\x20into\x20the\x20repo:','git\x20clone\x20https://github.com/<your-username>/wowok-wip.git','cp\x20\x27'+b+'\x27\x20wowok-wip/'+c,'cd\x20wowok-wip','git\x20add\x20'+c,'git\x20commit\x20-m\x20\x22Add\x20WIP\x20file\x22','git\x20push\x20origin\x20main','//\x204.\x20Enable\x20GitHub\x20Pages:\x20repo\x20→\x20Settings\x20→\x20Pages\x20→\x20Source\x20→\x20\x27main\x27\x20branch\x20→\x20/(root)\x20→\x20Save','//\x205.\x20Wait\x2030-60\x20seconds\x20for\x20deployment,\x20then\x20verify\x20the\x20URL\x20is\x20reachable:','curl\x20-I\x20https://<your-username>.github.io/wowok-wip/'+c,'//\x206.\x20Update\x20your\x20Service\x20on-chain\x20with\x20the\x20new\x20public\x20URL:','//\x20\x20\x20\x20Call\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip_url:\x20\x27https://...\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'],'notes':['If\x20the\x20repo\x20already\x20has\x20Pages\x20enabled\x20on\x20the\x20main\x20branch,\x20step\x204\x20can\x20be\x20skipped.','GitHub\x20Pages\x20serves\x20files\x20up\x20to\x2025\x20MB\x20—\x20well\x20above\x20typical\x20WIP\x20sizes\x20(<\x201\x20MB).','URL\x20is\x20case-sensitive;\x20ensure\x20the\x20filename\x20in\x20the\x20URL\x20matches\x20exactly.']},{'name':'IPFS\x20via\x20Pinata\x20(Free\x20gateway)','description':'Upload\x20the\x20.wip\x20file\x20to\x20IPFS\x20through\x20Pinata\x27s\x20free\x20gateway.\x20'+'Content-addressed\x20—\x20the\x20CID\x20hash\x20also\x20serves\x20as\x20an\x20integrity\x20check.','difficulty':'medium','free':!![],'result_url_pattern':'https://gateway.pinata.cloud/ipfs/<CID>\x20\x20(or\x20\x20https://ipfs.io/ipfs/<CID>)','steps':['//\x201.\x20Sign\x20up\x20for\x20a\x20free\x20Pinata\x20account\x20at\x20https://app.pinata.cloud/\x20(1\x20GB\x20free\x20storage).','//\x202.\x20Get\x20your\x20API\x20key\x20from\x20https://app.pinata.cloud/keys\x20(generate\x20a\x20new\x20key\x20with\x20\x27pinFileToIPFS\x27\x20scope).','//\x203.\x20Upload\x20your\x20local\x20WIP\x20file\x20via\x20curl:','curl\x20-X\x20POST\x20https://api.pinata.cloud/pinning/pinFileToIPFS\x20\x5c','\x20\x20-H\x20\x22Authorization:\x20Bearer\x20<YOUR_PINATA_API_KEY>\x22\x20\x5c','\x20\x20-F\x20\x22file=@\x27'+b+'\x27\x22','//\x204.\x20Pinata\x20returns\x20JSON\x20with\x20\x27IpfsHash\x27\x20(the\x20CID).\x20Extract\x20it:','//\x20\x20\x20\x20Example\x20response:\x20{\x20\x22IpfsHash\x22:\x20\x22QmXYZ...\x22,\x20\x22PinSize\x22:\x2012345,\x20\x22Timestamp\x22:\x20\x22...\x22\x20}','//\x205.\x20Verify\x20the\x20file\x20is\x20reachable\x20via\x20the\x20public\x20gateway:','curl\x20-I\x20https://gateway.pinata.cloud/ipfs/<CID>','//\x206.\x20(Optional)\x20Use\x20ipfs://<CID>\x20as\x20the\x20wip_url\x20—\x20the\x20SDK\x20resolves\x20it.','//\x207.\x20Update\x20your\x20Service\x20on-chain\x20with\x20the\x20IPFS\x20URL\x20or\x20CID:','//\x20\x20\x20\x20Call\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip_url:\x20\x27https://gateway.pinata.cloud/ipfs/<CID>\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'],'notes':['Pinata\x20free\x20tier:\x201\x20GB\x20storage,\x20100\x20uploads/day\x20—\x20sufficient\x20for\x20WIP\x20files.','For\x20long-term\x20durability,\x20also\x20pin\x20via\x20another\x20gateway\x20(e.g.,\x20nft.storage).','IPFS\x20CIDs\x20are\x20content-addressed\x20—\x20if\x20the\x20file\x20changes,\x20the\x20CID\x20changes.\x20This\x20is\x20a\x20feature,\x20not\x20a\x20bug.']},{'name':'User\x27s\x20own\x20website\x20/\x20static\x20host','description':'If\x20you\x20already\x20operate\x20a\x20website\x20or\x20static\x20host\x20(e.g.,\x20nginx,\x20Vercel,\x20Netlify,\x20Cloudflare\x20Pages),\x20'+'upload\x20the\x20.wip\x20file\x20there\x20and\x20use\x20its\x20public\x20URL.','difficulty':'medium','free':!![],'result_url_pattern':'https://<your-domain>/<path>/<file>.wip','steps':['//\x201.\x20Copy\x20your\x20local\x20WIP\x20file\x20to\x20your\x20web\x20server\x27s\x20static\x20directory:','scp\x20\x27'+b+'\x27\x20user@your-server:/var/www/html/wowok/'+c,'//\x202.\x20Ensure\x20the\x20server\x20sets\x20Content-Type:\x20application/json\x20(or\x20application/octet-stream)\x20for\x20.wip\x20files.','//\x20\x20\x20\x20For\x20nginx,\x20add\x20to\x20your\x20server\x20block:','//\x20\x20\x20\x20\x20\x20\x20\x20location\x20~\x20\x5c.wip$\x20{\x20default_type\x20application/json;\x20}','//\x203.\x20Verify\x20the\x20file\x20is\x20reachable:','curl\x20-I\x20https://<your-domain>/wowok/'+c,'//\x204.\x20Update\x20your\x20Service\x20on-chain\x20with\x20the\x20new\x20public\x20URL:','//\x20\x20\x20\x20Call\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip_url:\x20\x27https://<your-domain>/wowok/<file>.wip\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'],'notes':['Make\x20sure\x20CORS\x20is\x20permissive\x20if\x20the\x20verifier\x20fetches\x20via\x20browser\x20(Access-Control-Allow-Origin:\x20*).','Ensure\x20HTTPS\x20is\x20enabled\x20—\x20most\x20verifiers\x20reject\x20plain\x20HTTP.']},{'name':'Data\x20URL\x20embedding\x20(small\x20files\x20only)','description':'Embed\x20the\x20entire\x20WIP\x20file\x20as\x20a\x20base64\x20data\x20URL\x20directly\x20in\x20the\x20wip_url\x20field.\x20'+'No\x20external\x20hosting\x20required,\x20but\x20on-chain\x20storage\x20cost\x20grows\x20with\x20file\x20size.','difficulty':'easy','free':!![],'result_url_pattern':'data:application/json;base64,<base64-encoded-content>','steps':['//\x201.\x20Encode\x20your\x20local\x20WIP\x20file\x20as\x20a\x20base64\x20data\x20URL:','//\x20\x20\x20\x20On\x20Linux/macOS:','echo\x20\x22data:application/json;base64,$(base64\x20-w0\x20\x27'+b+'\x27)\x22','//\x20\x20\x20\x20On\x20Windows\x20(PowerShell):','$bytes\x20=\x20[System.IO.File]::ReadAllBytes(\x27'+a+'\x27);\x20$b64\x20=\x20[System.Convert]::ToBase64String($bytes);\x20Write-Output\x20\x22data:application/json;base64,$b64\x22','//\x202.\x20Use\x20the\x20resulting\x20data\x20URL\x20as\x20the\x20wip_url\x20field\x20when\x20updating\x20the\x20Service.','//\x203.\x20Note:\x20data\x20URLs\x20are\x20NOT\x20recommended\x20for\x20files\x20>\x2050\x20KB\x20due\x20to\x20on-chain\x20storage\x20cost.'],'notes':['Only\x20suitable\x20for\x20very\x20small\x20WIP\x20files\x20(typically\x20<\x2010\x20KB).','Data\x20URLs\x20cannot\x20be\x20updated\x20without\x20an\x20on-chain\x20transaction\x20—\x20content\x20is\x20literally\x20embedded.','Prefer\x20GitHub\x20Pages\x20or\x20IPFS\x20for\x20files\x20>\x2010\x20KB.']}];}export function analyzeWipDeployment(a){const b=classifyWipPath(a),c=b['is_local'];let d,e=[];if(c)b['type']==='local_http'?d='The\x20WIP\x20URL\x20\x27'+a+'\x27\x20is\x20a\x20'+b['description']+'.\x20'+'It\x20is\x20reachable\x20only\x20from\x20the\x20merchant\x27s\x20own\x20machine/LAN\x20—\x20customers\x20and\x20'+'on-chain\x20verifiers\x20on\x20other\x20machines\x20CANNOT\x20fetch\x20it.\x20Storing\x20it\x20on-chain\x20'+'makes\x20every\x20customer\x20order\x20fail.\x20'+'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20host\x20(GitHub\x20Pages,\x20IPFS,\x20or\x20your\x20own\x20website)\x20'+'and\x20update\x20the\x20Service\x27s\x20wip_url\x20with\x20the\x20public\x20URL.':d='The\x20WIP\x20path\x20\x27'+a+'\x27\x20is\x20a\x20LOCAL\x20'+b['type']+'\x20path.\x20'+'Local\x20paths\x20stored\x20on-chain\x20are\x20unreachable\x20by\x20customers\x20and\x20verifiers.\x20'+'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20host\x20(GitHub\x20Pages,\x20IPFS,\x20or\x20your\x20own\x20website)\x20'+'and\x20update\x20the\x20Service\x27s\x20wip_url\x20with\x20the\x20public\x20URL.',e=getDeployOptions(a);else{if(b['type']==='http_url')d='The\x20WIP\x20path\x20is\x20an\x20HTTP(S)\x20URL\x20—\x20verify\x20the\x20server\x20returns\x20200.\x20'+'If\x20the\x20URL\x20returns\x20404/403,\x20the\x20file\x20may\x20have\x20been\x20moved\x20or\x20deleted.',e=[];else{if(b['type']==='ipfs')d='The\x20WIP\x20path\x20is\x20an\x20IPFS\x20URL\x20—\x20verify\x20the\x20gateway\x20is\x20responsive.\x20'+'If\x20the\x20CID\x20is\x20unreachable,\x20the\x20file\x20may\x20have\x20been\x20unpinned.',e=[];else b['type']==='data_url'?(d='The\x20WIP\x20path\x20is\x20a\x20data\x20URL\x20—\x20content\x20is\x20embedded,\x20no\x20deployment\x20needed.',e=[]):(d='Unrecognized\x20WIP\x20path\x20format:\x20\x27'+a+'\x27',e=[]);}}return{'path':a,'classification':b,'needs_deployment':c,'reason':d,'options':e,'remind_update_hash':c};}export function formatDeployHints(a){if(!a['needs_deployment']&&a['options']['length']===0x0)return'';const b=[];b['push']('===\x20WIP\x20Deployment\x20Assistance\x20==='),b['push'](''),b['push']('Path:\x20'+a['path']),b['push']('Type:\x20'+a['classification']['description']),b['push']('Reason:\x20'+a['reason']),b['push']('');if(a['options']['length']>0x0){b['push']('Recommended\x20deployment\x20options:'),b['push']('');for(const c of a['options']){b['push']('▶\x20'+c['name']+'\x20(difficulty:\x20'+c['difficulty']+',\x20free:\x20'+c['free']+')'),b['push']('\x20\x20'+c['description']),b['push']('\x20\x20Resulting\x20URL\x20pattern:\x20'+c['result_url_pattern']),b['push']('\x20\x20Steps:');for(const d of c['steps']){b['push']('\x20\x20\x20\x20'+d);}if(c['notes']&&c['notes']['length']>0x0){b['push']('\x20\x20Notes:');for(const e of c['notes']){b['push']('\x20\x20\x20\x20-\x20'+e);}}b['push']('');}}return a['remind_update_hash']&&(b['push']('⚠️\x20After\x20deploying,\x20compute\x20the\x20new\x20WIP\x20hash\x20and\x20update\x20the\x20Service:'),b['push']('\x20\x201.\x20Re-run\x20wip_file\x20{\x20type:\x20\x27verify\x27,\x20wipFilePath:\x20\x27<new-public-url>\x27\x20}\x20to\x20confirm\x20the\x20file\x20is\x20reachable.'),b['push']('\x20\x202.\x20Extract\x20the\x20meta.hash\x20from\x20the\x20WIP\x20file\x20(or\x20use\x20wip_file\x20{\x20type:\x20\x27verify\x27\x20}\x20result).'),b['push']('\x20\x203.\x20Update\x20the\x20Service\x20on-chain:\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip_url:\x20\x27<new-public-url>\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'),b['push']('')),b['push']('==============================='),b['join']('\x0a');}
1
+ export function classifyWipPath(a){if(!a||typeof a!=='string')return{'type':'unknown','is_local':![],'is_network':![],'description':'Empty\x20or\x20invalid\x20path'};if(a['startsWith']('data:'))return{'type':'data_url','is_local':![],'is_network':!![],'description':'Data\x20URL\x20—\x20embedded\x20content,\x20globally\x20reachable'};if(a['startsWith']('ipfs://'))return{'type':'ipfs','is_local':![],'is_network':!![],'description':'IPFS\x20URI\x20—\x20resolve\x20via\x20any\x20public\x20gateway'};const b=[/^https?:\/\/ipfs\.io\//i,/^https?:\/\/cloudflare-ipfs\.com\//i,/^https?:\/\/gateway\.pinata\.cloud\//i,/^https?:\/\/dweb\.link\//i,/^https?:\/\/[^/]*pinata\.cloud\//i];if(b['some'](d=>d['test'](a)))return{'type':'ipfs','is_local':![],'is_network':!![],'description':'IPFS\x20HTTP\x20gateway\x20URL\x20—\x20globally\x20reachable'};if(/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\]|0\.0\.0\.0)([:/]|$)/i['test'](a))return{'type':'local_http','is_local':!![],'is_network':![],'description':'Local\x20HTTP\x20URL\x20(localhost/loopback)\x20—\x20reachable\x20only\x20on\x20this\x20machine,\x20NOT\x20by\x20customers'};const c=/^https?:\/\/(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3})([:/]|$)/i;if(c['test'](a))return{'type':'local_http','is_local':!![],'is_network':![],'description':'LAN\x20HTTP\x20URL\x20(private\x20IP)\x20—\x20reachable\x20only\x20on\x20the\x20local\x20network,\x20NOT\x20by\x20customers'};if(/^https?:\/\//i['test'](a))return{'type':'http_url','is_local':![],'is_network':!![],'description':'HTTP(S)\x20URL\x20—\x20globally\x20reachable\x20if\x20server\x20returns\x20200'};if(/^[A-Za-z]:[\\/]/['test'](a))return{'type':'local_windows','is_local':!![],'is_network':![],'description':'Windows\x20local\x20path\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};if(a['startsWith']('/'))return{'type':'local_unix','is_local':!![],'is_network':![],'description':'Unix\x20local\x20path\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};if(a['startsWith']('./')||a['startsWith']('../')||a==='.'||a==='..')return{'type':'local_relative','is_local':!![],'is_network':![],'description':'Relative\x20local\x20path\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};if(!a['includes']('://')&&!a['startsWith']('data:'))return{'type':'local_relative','is_local':!![],'is_network':![],'description':'Local\x20file\x20path\x20(no\x20scheme)\x20—\x20NOT\x20reachable\x20by\x20customers/AI'};return{'type':'unknown','is_local':![],'is_network':![],'description':'Unrecognized\x20path\x20format'};}export function getDeployOptions(a){const b=a['replace'](/'/g,'\x27\x5c\x27\x27'),c=a['split'](/[\\/]/)['pop']()||'file.wip';return[{'name':'Wowok\x20WIP\x20storage\x20service\x20(Recommended)','description':'Upload\x20the\x20.wip\x20file\x20directly\x20from\x20the\x20MCP\x20with\x20wip_file\x20type=\x27upload\x27.\x20'+'Default\x20is\x20the\x20official\x20FREE\x20store\x20wip.store.wowok.net\x20(limited\x20to\x2010\x20files\x20per\x20account);\x20'+'with\x20storage=\x27custom\x27\x20any\x20self-hosted\x20or\x20third-party\x20wip\x20storage\x20service\x20works\x20(no\x20store\x20quota,\x20full\x20control).','difficulty':'easy','free':!![],'result_url_pattern':'https://wip.store.wowok.net/f/{hash}\x20\x20\x20(or\x20your\x20custom\x20service\x20base\x20URL\x20+\x20/f/{hash})','steps':['//\x201.\x20Generate\x20the\x20WIP\x20file:\x20wip_file\x20{\x20type:\x20\x27generate\x27,\x20options:\x20{\x20markdown_text:\x20\x27...\x27\x20}\x20}','//\x202.\x20Sign\x20it\x20with\x20your\x20account:\x20wip_file\x20{\x20type:\x20\x27sign\x27,\x20wipFilePath:\x20\x27<file>\x27,\x20account:\x20\x27<account>\x27\x20}','//\x203.\x20Upload\x20to\x20the\x20official\x20free\x20store:\x20wip_file\x20{\x20type:\x20\x27upload\x27,\x20wipFilePath:\x20\x27<file>\x27,\x20account:\x20\x27<account>\x27\x20}','//\x20\x20\x20\x20Or\x20use\x20your\x20own\x20/\x20a\x20third-party\x20service:\x20wip_file\x20{\x20type:\x20\x27upload\x27,\x20wipFilePath:\x20\x27<file>\x27,\x20storage:\x20\x27custom\x27,\x20customBaseUrl:\x20\x27https://your-wip-service.example.com\x27\x20}','//\x204.\x20Use\x20the\x20returned\x20URL\x20(base_url\x20+\x20/f/{hash})\x20as\x20the\x20Service\x27s\x20sale\x20wip:','//\x20\x20\x20\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip:\x20\x27<public-url>\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}','//\x205.\x20Confirm\x20reachability:\x20wip_file\x20{\x20type:\x20\x27verify\x27,\x20wipFilePath:\x20\x27<public-url>\x27\x20}'],'notes':['Official\x20free\x20store\x20is\x20limited\x20to\x2010\x20files\x20per\x20account\x20—\x20free\x20up\x20space\x20with\x20wip_file\x20type=\x27storage_delete\x27\x20when\x20the\x20quota\x20is\x20hit.','Official\x20free\x20store\x20declaration:\x20files\x20are\x20retained\x20for\x206\x20months\x20(180\x20days);\x20free\x20best-effort\x20service\x20—\x20force\x20majeure\x20excepted;\x20expired\x20files\x20are\x20NEVER\x20deleted\x20automatically\x20(manual\x20admin\x20purge\x20only).\x20For\x20permanent\x20hosting\x20use\x20storage=\x27custom\x27.','The\x20public\x20WIP\x20URL\x20is\x20network-independent:\x20the\x20same\x20file\x20serves\x20buyers\x20on\x20both\x20testnet\x20and\x20mainnet.','Large\x20WIP\x20files\x20(multi-MB,\x20image-heavy)\x20are\x20network-sensitive:\x20compress\x20images\x20before\x20generate\x20and\x20retry\x20transient\x20upload\x20failures.']},{'name':'GitHub\x20Pages','description':'Upload\x20the\x20.wip\x20file\x20to\x20a\x20GitHub\x20repository\x20and\x20serve\x20it\x20via\x20GitHub\x20Pages.\x20'+'Free,\x20stable,\x20HTTPS-enabled,\x20no\x20expiration.','difficulty':'easy','free':!![],'result_url_pattern':'https://<your-username>.github.io/<repo>/<file>.wip','steps':['//\x201.\x20Create\x20a\x20new\x20GitHub\x20repository\x20(e.g.,\x20\x27wowok-wip\x27)\x20via\x20https://github.com/new','//\x202.\x20Make\x20it\x20PUBLIC\x20so\x20the\x20file\x20is\x20world-readable.','//\x203.\x20Copy\x20your\x20local\x20WIP\x20file\x20into\x20the\x20repo:','git\x20clone\x20https://github.com/<your-username>/wowok-wip.git','cp\x20\x27'+b+'\x27\x20wowok-wip/'+c,'cd\x20wowok-wip','git\x20add\x20'+c,'git\x20commit\x20-m\x20\x22Add\x20WIP\x20file\x22','git\x20push\x20origin\x20main','//\x204.\x20Enable\x20GitHub\x20Pages:\x20repo\x20→\x20Settings\x20→\x20Pages\x20→\x20Source\x20→\x20\x27main\x27\x20branch\x20→\x20/(root)\x20→\x20Save','//\x205.\x20Wait\x2030-60\x20seconds\x20for\x20deployment,\x20then\x20verify\x20the\x20URL\x20is\x20reachable:','curl\x20-I\x20https://<your-username>.github.io/wowok-wip/'+c,'//\x206.\x20Update\x20your\x20Service\x20on-chain\x20with\x20the\x20new\x20public\x20URL:','//\x20\x20\x20\x20Call\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip:\x20\x27https://...\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'],'notes':['If\x20the\x20repo\x20already\x20has\x20Pages\x20enabled\x20on\x20the\x20main\x20branch,\x20step\x204\x20can\x20be\x20skipped.','GitHub\x20Pages\x20serves\x20files\x20up\x20to\x2025\x20MB\x20—\x20well\x20above\x20typical\x20WIP\x20sizes\x20(<\x201\x20MB).','URL\x20is\x20case-sensitive;\x20ensure\x20the\x20filename\x20in\x20the\x20URL\x20matches\x20exactly.']},{'name':'IPFS\x20via\x20Pinata\x20(Free\x20gateway)','description':'Upload\x20the\x20.wip\x20file\x20to\x20IPFS\x20through\x20Pinata\x27s\x20free\x20gateway.\x20'+'Content-addressed\x20—\x20the\x20CID\x20hash\x20also\x20serves\x20as\x20an\x20integrity\x20check.','difficulty':'medium','free':!![],'result_url_pattern':'https://gateway.pinata.cloud/ipfs/<CID>\x20\x20(or\x20\x20https://ipfs.io/ipfs/<CID>)','steps':['//\x201.\x20Sign\x20up\x20for\x20a\x20free\x20Pinata\x20account\x20at\x20https://app.pinata.cloud/\x20(1\x20GB\x20free\x20storage).','//\x202.\x20Get\x20your\x20API\x20key\x20from\x20https://app.pinata.cloud/keys\x20(generate\x20a\x20new\x20key\x20with\x20\x27pinFileToIPFS\x27\x20scope).','//\x203.\x20Upload\x20your\x20local\x20WIP\x20file\x20via\x20curl:','curl\x20-X\x20POST\x20https://api.pinata.cloud/pinning/pinFileToIPFS\x20\x5c','\x20\x20-H\x20\x22Authorization:\x20Bearer\x20<YOUR_PINATA_API_KEY>\x22\x20\x5c','\x20\x20-F\x20\x22file=@\x27'+b+'\x27\x22','//\x204.\x20Pinata\x20returns\x20JSON\x20with\x20\x27IpfsHash\x27\x20(the\x20CID).\x20Extract\x20it:','//\x20\x20\x20\x20Example\x20response:\x20{\x20\x22IpfsHash\x22:\x20\x22QmXYZ...\x22,\x20\x22PinSize\x22:\x2012345,\x20\x22Timestamp\x22:\x20\x22...\x22\x20}','//\x205.\x20Verify\x20the\x20file\x20is\x20reachable\x20via\x20the\x20public\x20gateway:','curl\x20-I\x20https://gateway.pinata.cloud/ipfs/<CID>','//\x206.\x20(Optional)\x20Use\x20ipfs://<CID>\x20as\x20the\x20sale\x20wip\x20—\x20the\x20SDK\x20resolves\x20it.','//\x207.\x20Update\x20your\x20Service\x20on-chain\x20with\x20the\x20IPFS\x20URL\x20or\x20CID:','//\x20\x20\x20\x20Call\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip:\x20\x27https://gateway.pinata.cloud/ipfs/<CID>\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'],'notes':['Pinata\x20free\x20tier:\x201\x20GB\x20storage,\x20100\x20uploads/day\x20—\x20sufficient\x20for\x20WIP\x20files.','For\x20long-term\x20durability,\x20also\x20pin\x20via\x20another\x20gateway\x20(e.g.,\x20nft.storage).','IPFS\x20CIDs\x20are\x20content-addressed\x20—\x20if\x20the\x20file\x20changes,\x20the\x20CID\x20changes.\x20This\x20is\x20a\x20feature,\x20not\x20a\x20bug.']},{'name':'User\x27s\x20own\x20website\x20/\x20static\x20host','description':'If\x20you\x20already\x20operate\x20a\x20website\x20or\x20static\x20host\x20(e.g.,\x20nginx,\x20Vercel,\x20Netlify,\x20Cloudflare\x20Pages),\x20'+'upload\x20the\x20.wip\x20file\x20there\x20and\x20use\x20its\x20public\x20URL.','difficulty':'medium','free':!![],'result_url_pattern':'https://<your-domain>/<path>/<file>.wip','steps':['//\x201.\x20Copy\x20your\x20local\x20WIP\x20file\x20to\x20your\x20web\x20server\x27s\x20static\x20directory:','scp\x20\x27'+b+'\x27\x20user@your-server:/var/www/html/wowok/'+c,'//\x202.\x20Ensure\x20the\x20server\x20sets\x20Content-Type:\x20application/json\x20(or\x20application/octet-stream)\x20for\x20.wip\x20files.','//\x20\x20\x20\x20For\x20nginx,\x20add\x20to\x20your\x20server\x20block:','//\x20\x20\x20\x20\x20\x20\x20\x20location\x20~\x20\x5c.wip$\x20{\x20default_type\x20application/json;\x20}','//\x203.\x20Verify\x20the\x20file\x20is\x20reachable:','curl\x20-I\x20https://<your-domain>/wowok/'+c,'//\x204.\x20Update\x20your\x20Service\x20on-chain\x20with\x20the\x20new\x20public\x20URL:','//\x20\x20\x20\x20Call\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip:\x20\x27https://<your-domain>/wowok/<file>.wip\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'],'notes':['Make\x20sure\x20CORS\x20is\x20permissive\x20if\x20the\x20verifier\x20fetches\x20via\x20browser\x20(Access-Control-Allow-Origin:\x20*).','Ensure\x20HTTPS\x20is\x20enabled\x20—\x20most\x20verifiers\x20reject\x20plain\x20HTTP.']},{'name':'Data\x20URL\x20embedding\x20(small\x20files\x20only)','description':'Embed\x20the\x20entire\x20WIP\x20file\x20as\x20a\x20base64\x20data\x20URL\x20directly\x20in\x20the\x20sale\x27s\x20wip\x20field.\x20'+'No\x20external\x20hosting\x20required,\x20but\x20on-chain\x20storage\x20cost\x20grows\x20with\x20file\x20size.','difficulty':'easy','free':!![],'result_url_pattern':'data:application/json;base64,<base64-encoded-content>','steps':['//\x201.\x20Encode\x20your\x20local\x20WIP\x20file\x20as\x20a\x20base64\x20data\x20URL:','//\x20\x20\x20\x20On\x20Linux/macOS:','echo\x20\x22data:application/json;base64,$(base64\x20-w0\x20\x27'+b+'\x27)\x22','//\x20\x20\x20\x20On\x20Windows\x20(PowerShell):','$bytes\x20=\x20[System.IO.File]::ReadAllBytes(\x27'+a+'\x27);\x20$b64\x20=\x20[System.Convert]::ToBase64String($bytes);\x20Write-Output\x20\x22data:application/json;base64,$b64\x22','//\x202.\x20Use\x20the\x20resulting\x20data\x20URL\x20as\x20the\x20sale\x27s\x20wip\x20field\x20when\x20updating\x20the\x20Service.','//\x203.\x20Note:\x20data\x20URLs\x20are\x20NOT\x20recommended\x20for\x20files\x20>\x2050\x20KB\x20due\x20to\x20on-chain\x20storage\x20cost.'],'notes':['Only\x20suitable\x20for\x20very\x20small\x20WIP\x20files\x20(typically\x20<\x2010\x20KB).','Data\x20URLs\x20cannot\x20be\x20updated\x20without\x20an\x20on-chain\x20transaction\x20—\x20content\x20is\x20literally\x20embedded.','Prefer\x20GitHub\x20Pages\x20or\x20IPFS\x20for\x20files\x20>\x2010\x20KB.']}];}export function analyzeWipDeployment(a){const b=classifyWipPath(a),c=b['is_local'];let d,e=[];if(c)b['type']==='local_http'?d='The\x20WIP\x20URL\x20\x27'+a+'\x27\x20is\x20a\x20'+b['description']+'.\x20'+'It\x20is\x20reachable\x20only\x20from\x20the\x20merchant\x27s\x20own\x20machine/LAN\x20—\x20customers\x20and\x20'+'on-chain\x20verifiers\x20on\x20other\x20machines\x20CANNOT\x20fetch\x20it.\x20Storing\x20it\x20on-chain\x20'+'makes\x20every\x20customer\x20order\x20fail.\x20'+'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20host\x20(GitHub\x20Pages,\x20IPFS,\x20or\x20your\x20own\x20website)\x20'+'and\x20update\x20the\x20Service\x27s\x20sale\x20wip\x20with\x20the\x20public\x20URL.':d='The\x20WIP\x20path\x20\x27'+a+'\x27\x20is\x20a\x20LOCAL\x20'+b['type']+'\x20path.\x20'+'Local\x20paths\x20stored\x20on-chain\x20are\x20unreachable\x20by\x20customers\x20and\x20verifiers.\x20'+'Deploy\x20the\x20.wip\x20file\x20to\x20a\x20public\x20host\x20(GitHub\x20Pages,\x20IPFS,\x20or\x20your\x20own\x20website)\x20'+'and\x20update\x20the\x20Service\x27s\x20sale\x20wip\x20with\x20the\x20public\x20URL.',e=getDeployOptions(a);else{if(b['type']==='http_url')d='The\x20WIP\x20path\x20is\x20an\x20HTTP(S)\x20URL\x20—\x20verify\x20the\x20server\x20returns\x20200.\x20'+'If\x20the\x20URL\x20returns\x20404/403,\x20the\x20file\x20may\x20have\x20been\x20moved\x20or\x20deleted.',e=[];else{if(b['type']==='ipfs')d='The\x20WIP\x20path\x20is\x20an\x20IPFS\x20URL\x20—\x20verify\x20the\x20gateway\x20is\x20responsive.\x20'+'If\x20the\x20CID\x20is\x20unreachable,\x20the\x20file\x20may\x20have\x20been\x20unpinned.',e=[];else b['type']==='data_url'?(d='The\x20WIP\x20path\x20is\x20a\x20data\x20URL\x20—\x20content\x20is\x20embedded,\x20no\x20deployment\x20needed.',e=[]):(d='Unrecognized\x20WIP\x20path\x20format:\x20\x27'+a+'\x27',e=[]);}}return{'path':a,'classification':b,'needs_deployment':c,'reason':d,'options':e,'remind_update_hash':c};}export function formatDeployHints(a){if(!a['needs_deployment']&&a['options']['length']===0x0)return'';const b=[];b['push']('===\x20WIP\x20Deployment\x20Assistance\x20==='),b['push'](''),b['push']('Path:\x20'+a['path']),b['push']('Type:\x20'+a['classification']['description']),b['push']('Reason:\x20'+a['reason']),b['push']('');if(a['options']['length']>0x0){b['push']('Recommended\x20deployment\x20options:'),b['push']('');for(const c of a['options']){b['push']('▶\x20'+c['name']+'\x20(difficulty:\x20'+c['difficulty']+',\x20free:\x20'+c['free']+')'),b['push']('\x20\x20'+c['description']),b['push']('\x20\x20Resulting\x20URL\x20pattern:\x20'+c['result_url_pattern']),b['push']('\x20\x20Steps:');for(const d of c['steps']){b['push']('\x20\x20\x20\x20'+d);}if(c['notes']&&c['notes']['length']>0x0){b['push']('\x20\x20Notes:');for(const e of c['notes']){b['push']('\x20\x20\x20\x20-\x20'+e);}}b['push']('');}}return a['remind_update_hash']&&(b['push']('⚠️\x20After\x20deploying,\x20compute\x20the\x20new\x20WIP\x20hash\x20and\x20update\x20the\x20Service:'),b['push']('\x20\x201.\x20Re-run\x20wip_file\x20{\x20type:\x20\x27verify\x27,\x20wipFilePath:\x20\x27<new-public-url>\x27\x20}\x20to\x20confirm\x20the\x20file\x20is\x20reachable.'),b['push']('\x20\x202.\x20Extract\x20the\x20meta.hash\x20from\x20the\x20WIP\x20file\x20(or\x20use\x20wip_file\x20{\x20type:\x20\x27verify\x27\x20}\x20result).'),b['push']('\x20\x203.\x20Update\x20the\x20Service\x20on-chain:\x20onchain_operations\x20{\x20operation_type:\x20\x27service\x27,\x20data:\x20{\x20object:\x20\x27<service-id>\x27,\x20sales:\x20{\x20op:\x20\x27set\x27,\x20sales:\x20[{\x20...,\x20wip:\x20\x27<new-public-url>\x27,\x20wip_hash:\x20\x27<hash>\x27\x20}]\x20}\x20}\x20}'),b['push']('')),b['push']('==============================='),b['join']('\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wowok/agent-mcp",
3
- "version": "3.2.4",
3
+ "version": "3.2.6",
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",
@@ -54,7 +54,7 @@
54
54
  "license": "Apache-2.0",
55
55
  "dependencies": {
56
56
  "@modelcontextprotocol/server": "^2.0.0",
57
- "@wowok/wowok": "3.2.4",
57
+ "@wowok/wowok": "3.2.6",
58
58
  "lodash": "^4.18.1",
59
59
  "zod": "^4.2.0"
60
60
  },
@@ -1,99 +0,0 @@
1
- export declare function guardObjectName(nameBase: string, templateId: string, occurrence?: number): string;
2
- import type { ProjectObjectType } from "./namespace.js";
3
- import type { BusinessIntent } from "./intent-analyzer.js";
4
- import type { BusinessModule, BusinessModuleId } from "../../extensions/business-modules.js";
5
- import type { GraphEdgeBase, GraphNodeBase } from "../../graph/base.js";
6
- import type { IndustryMode } from "../../extensions/types.js";
7
- export type ConfigValueType = "string" | "number" | "boolean" | "address_ref" | "guard_logic" | "enum";
8
- export interface ConfigValueBase {
9
- type: ConfigValueType;
10
- mapsTo: string;
11
- }
12
- export interface StringConfigValue extends ConfigValueBase {
13
- type: "string";
14
- value: string;
15
- }
16
- export interface NumberConfigValue extends ConfigValueBase {
17
- type: "number";
18
- value: number;
19
- unit?: string;
20
- }
21
- export interface BooleanConfigValue extends ConfigValueBase {
22
- type: "boolean";
23
- value: boolean;
24
- }
25
- export interface AddressRefConfigValue extends ConfigValueBase {
26
- type: "address_ref";
27
- targetId: string;
28
- }
29
- export interface GuardLogicConfigValue extends ConfigValueBase {
30
- type: "guard_logic";
31
- description: string;
32
- }
33
- export interface EnumConfigValue extends ConfigValueBase {
34
- type: "enum";
35
- value: string;
36
- allowed: string[];
37
- }
38
- export type ConfigValue = StringConfigValue | NumberConfigValue | BooleanConfigValue | AddressRefConfigValue | GuardLogicConfigValue | EnumConfigValue;
39
- export interface ExpectedState {
40
- published: boolean;
41
- paused: boolean;
42
- additional?: Record<string, unknown>;
43
- }
44
- export interface SemanticNode extends GraphNodeBase {
45
- type: ProjectObjectType;
46
- purpose: string;
47
- derivedFrom: {
48
- intentField: string;
49
- rationale: string;
50
- };
51
- config: Record<string, ConfigValue>;
52
- expectedState: ExpectedState;
53
- }
54
- export interface SemanticEdge extends GraphEdgeBase {
55
- relation: string;
56
- required: boolean;
57
- derivedFrom: {
58
- intentField: string;
59
- rationale: string;
60
- };
61
- }
62
- export interface SemanticConstraint {
63
- id: string;
64
- level: "hard" | "soft" | "info";
65
- description: string;
66
- source: {
67
- layer: "contract" | "harness" | "industry_mode" | "business_rule";
68
- reference: string;
69
- };
70
- fixSuggestion: string;
71
- }
72
- export interface EvaluationPreview {
73
- estimatedRiskScore: number;
74
- estimatedTrustScore: number;
75
- estimatedCompletenessScore: number;
76
- keyRisks: string[];
77
- strengths: string[];
78
- moduleBoosts: Record<string, number>;
79
- }
80
- export interface SemanticObjectGraph {
81
- nodes: SemanticNode[];
82
- edges: SemanticEdge[];
83
- constraints: SemanticConstraint[];
84
- evaluationPreview?: EvaluationPreview;
85
- adoptedModules: BusinessModuleId[];
86
- businessIntent: BusinessIntent;
87
- }
88
- export interface GraphValidationResult {
89
- valid: boolean;
90
- hardViolations: SemanticConstraint[];
91
- softViolations: SemanticConstraint[];
92
- infoNotes: SemanticConstraint[];
93
- }
94
- export interface ModePriorOptions {
95
- paymentExplicit?: boolean;
96
- nameBase?: string;
97
- }
98
- export declare function buildSemanticGraph(intent: BusinessIntent, adoptedModules: BusinessModule[], mode?: IndustryMode, options?: ModePriorOptions): SemanticObjectGraph;
99
- export declare function validateGraph(graph: SemanticObjectGraph): GraphValidationResult;