@wowok/agent-mcp 3.3.7 → 3.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/guard-verbs.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/communication/message-cursors.d.ts +35 -0
- package/dist/communication/message-cursors.js +1 -0
- package/dist/communication/wts-attestation.d.ts +5 -0
- package/dist/communication/wts-attestation.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.d.ts +2 -2
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +7 -0
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/materialize.d.ts +4 -1
- package/dist/composition/materialize.js +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +1 -1
- package/dist/config/store-policy.d.ts +14 -0
- package/dist/config/store-policy.js +1 -0
- package/dist/config/store-policy.spec.d.ts +1 -0
- package/dist/config/store-policy.spec.js +1 -0
- package/dist/customer/industry-risks.js +1 -1
- package/dist/customer/user-preferences.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.d.ts +1 -1
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/facts.d.ts +1 -0
- package/dist/graph/onchain/facts.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/knowledge/acquisition-flywheel.js +1 -1
- package/dist/knowledge/allocation-ledger.d.ts +1 -0
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +6 -2
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +37 -0
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/plan.json +32 -2
- package/dist/knowledge/builtin-templates.d.ts +13 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/commission-landing.d.ts +26 -0
- package/dist/knowledge/commission-landing.js +1 -0
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +7 -0
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.d.ts +7 -0
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.d.ts +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/machine-fork-watch.d.ts +9 -0
- package/dist/knowledge/machine-fork-watch.js +1 -0
- package/dist/knowledge/migration-preflight.js +1 -1
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/scenario-modes.d.ts +8 -2
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/semantic-ir.d.ts +24 -5
- package/dist/knowledge/semantic-ir.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-index.js +1 -1
- package/dist/knowledge/template-loader.d.ts +11 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +4 -2
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-validation.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +12 -6
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +10 -2
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.d.ts +1 -0
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +72 -1
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +3 -0
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/base.d.ts +24 -0
- package/dist/schema/call/bridge.d.ts +6 -0
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/config/index.d.ts +24 -0
- package/dist/schema/config/index.js +1 -1
- package/dist/schema/goal/index.d.ts +14 -0
- package/dist/schema/goal/planning.d.ts +26 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +9 -1
- package/dist/schema/industry-pack/modes.d.ts +9 -1
- package/dist/schema/industry-pack/modes.js +1 -1
- package/dist/schema/local/index.d.ts +60 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +278 -1
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +1 -0
- package/dist/schema/query/bi.d.ts +38 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +3 -0
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/service-clone/index.d.ts +17 -0
- package/dist/schema/service-clone/index.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +6 -0
- package/dist/schemas/benchmark_migration_operation.output.json +254 -2
- package/dist/schemas/benchmark_migration_operation.schema.json +87 -5
- package/dist/schemas/bridge_operation.output.json +6 -0
- package/dist/schemas/config_operation.output.json +95 -0
- package/dist/schemas/config_operation.schema.json +16 -1
- package/dist/schemas/goal_operation.schema.json +22 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +4 -0
- package/dist/schemas/industry_pack_operation.schema.json +40 -3
- package/dist/schemas/local_cache_operation.output.json +6 -0
- package/dist/schemas/local_history_operation.output.json +6 -0
- package/dist/schemas/local_info_operation.output.json +6 -0
- package/dist/schemas/local_mark_operation.output.json +6 -0
- package/dist/schemas/messenger_operation.output.json +609 -1
- package/dist/schemas/messenger_operation.schema.json +96 -1
- package/dist/schemas/onchain_operations.output.json +6 -0
- package/dist/schemas/onchain_operations.schema.json +334 -7
- package/dist/schemas/onchain_operations_allocation.schema.json +10 -1
- package/dist/schemas/onchain_operations_guard.schema.json +318 -0
- package/dist/schemas/onchain_operations_order.schema.json +1 -1
- package/dist/schemas/onchain_operations_service.schema.json +5 -5
- package/dist/schemas/query_toolkit.output.json +271 -8
- package/dist/schemas/service_clone_operation.output.json +79 -0
- package/dist/tools/handlers/benchmark-migration.d.ts +14 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +19 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.d.ts +1 -0
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/service-clone.d.ts +18 -0
- package/dist/tools/handlers/service-clone.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +2 -2
|
@@ -8,6 +8,7 @@ export declare function buildProfileFollowUps(prof: any): ProfileFollowUp[];
|
|
|
8
8
|
export declare function balanceScopeNote(coinPageAttached: boolean): string;
|
|
9
9
|
export declare function handleWatchQueryOperations(args: unknown): Promise<ToolDispatchResult>;
|
|
10
10
|
export declare function queryPayloadAliases(result: any): Record<string, unknown>;
|
|
11
|
+
export declare function fundExitAuditNote(result: any): string | undefined;
|
|
11
12
|
export declare function handleOnchainTableData(args: unknown): Promise<ToolDispatchResult>;
|
|
12
13
|
export declare function handleOnchainEvents(args: unknown): Promise<ToolDispatchResult>;
|
|
13
14
|
export declare function handleWowokInfo(args: unknown): Promise<ToolDispatchResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade,readChainStamp}from'../upgrade-check.js';import{currentBuildFingerprint,compareReportFingerprint,setComparisonChainEpoch}from'../build-fingerprint.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,ENTRYPOINT}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{recoverObjectHeldReceipts}from'../../graph/onchain/object-held-receipts.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';import{resolveAddress}from'./name-resolution.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;}}export function balanceScopeNote(a){return a?'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20the\x20coin\x20list\x20below\x20is\x20just\x20the\x20FIRST\x20PAGE\x20(top\x205)\x20'+'of\x20independently\x20owned\x20Coin\x20objects\x20—\x20a\x20refund\x20can\x20land\x20as\x20its\x20own\x20Coin\x20object\x20beyond\x20this\x20page.\x20'+'Verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20or\x20the\x20full\x20coin-object\x20listing\x20'+'(coin={cursor,limit})\x20before\x20drawing\x20conclusions.':'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20independently\x20owned\x20Coin\x20objects\x20are\x20not\x20'+'enumerated\x20here\x20—\x20verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20or\x20a\x20coin-objects\x20query\x20before\x20'+'drawing\x20conclusions.';}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;}const LOCAL_FAMILY_QUERIES=new Set(['local_mark_list','account_list','local_info_list','token_list','local_names']);function normalizeNetworkFieldAlias(a){const b=a['query_type'];if(typeof b!=='string')return;if(LOCAL_FAMILY_QUERIES['has'](b)){delete a['network'],delete a['context_network'];return;}const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return;const d=c==='network'?'context_network':'network';a[c]===undefined&&a[d]!==undefined&&(a[c]=a[d],delete a[d]);}export async function handleWatchQueryOperations(a){let c=a;if(a!==null&&typeof a==='object'&&!Array['isArray'](a)){const l={...a};normalizeNetworkFieldAlias(l),c=l;}const d=strictParse(WatchQueryOperationsSchema,c,'watch_and_query\x20input');let f,g,h;switch(d['query_type']){case'local_mark_list':{const m=await query_local_mark_list(d['filter']||{});f={'query_type':'local_mark_list','result':m};break;}case'account_list':{const n=await query_account_list(d['filter']);f={'query_type':'account_list','result':n};break;}case'local_info_list':{const o=await query_local_info_list(d['filter'],d['account']);f={'query_type':'local_info_list','result':o};break;}case'token_list':{const p=await query_local_token_list(d['filter']||{});f={'query_type':'token_list','result':p};break;}case'account_balance':{const q=await query_account({'name_or_address':d['name_or_address'],'token_type':d['token_type'],'balance':d['balance'],'coin':d['coin'],'network':d['network']}),r=d['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(q,r);let s=![];if(q['balance']&&!d['coin']&&!q['object']&&!q['hint'])try{const t=await query_account({'name_or_address':d['name_or_address'],'coin':{'cursor':null,'limit':0x5},'token_type':d['token_type'],'network':d['network']});t['coin']&&(q['coin']=t['coin'],s=!![]);}catch{}q['_balance_scope_note']=balanceScopeNote(s),f={'query_type':'account_balance','result':q};break;}case'local_names':{const u=await GetLocalNamesByAddresses(d['addresses']);f={'query_type':'local_names','result':u};break;}case'onchain_personal_profile':{const v=await query_personal({'account':d['account'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_personal_profile','result':v};break;}case'onchain_objects':{const w=d['no_cache']??!![],x=await batchQueryObjectsByIds(d['objects'],d['network'],w),y=lastUnresolvedInputs(),z={'objects':x,'_read_freshness':{'source':w?'live':'session_cache','no_cache':w,'fetched_at':new Date()['toISOString'](),'note':w?'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.'},...x['length']===0x0&&y['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':y,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(d['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.'}}:{},...x['length']<d['objects']['length']?{'_unreturned':{'requested':d['objects']['length'],'returned':x['length'],'missing':d['objects']['map'](A=>typeof A==='string'?A:A?.['name_or_address']??A?.['object']??A?.['address'])['filter'](A=>typeof A==='string'&&A!=='')['filter'](A=>!x['some'](B=>typeof B?.['object']==='string'&&B['object']['toLowerCase']()===A['toLowerCase']())),'note':'These\x20requested\x20ids\x20were\x20NOT\x20returned\x20—\x20either\x20absent\x20on\x20chain,\x20filtered\x20by\x20the\x20reader\x27s\x20type\x20support,\x20or\x20unparseable.\x20This\x20is\x20NOT\x20proof\x20of\x20nonexistence:\x20verify\x20via\x20an\x20alternative\x20read\x20(object_panorama\x20/\x20a\x20direct\x20address\x20query)\x20before\x20concluding\x20an\x20object\x20is\x20gone.'}}:{}};if(z&&z['objects']&&Array['isArray'](z['objects'])){z['objects']=z['objects']['map'](A=>{if(A&&A['data']&&A['data']['type']==='Guard'&&A['data']['root'])try{const B=generateNodeComments(A['data']['root']);return{...A,'_guard_node_comments':B};}catch(C){return A;}return A;}),z['objects']=z['objects']['map'](A=>{if(A&&A['data']&&A['data']['type']==='Progress'&&A['data']['current']===''){const B=A['data']['machine'],C=A['data']['task'];return{...A,'_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':B??null,'bound_order_id':C??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](B)+']).','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 A;});for(const A of z['objects']){const B=A?.['data']??A;if((A?.['type']??B?.['type'])!=='Progress')continue;const C=A?.['object']??B?.['object'];if(!C)continue;try{const D=await enrichWorkflowGuidance({'progressRef':C,'network':d['network'],'noCache':d['no_cache']});if(D?.['guidance']){A['_workflow_guidance']=D['guidance'];if(D['text'])A['_workflow_guidance_text']=D['text'];}}catch{}}for(const E of z['objects']){const F=E?.['data']??E;if((E?.['type']??F?.['type'])!=='Arb')continue;const G=E?.['object']??F?.['object'];if(!G)continue;try{const H=await buildOrderFundFacts({'arbRef':G,'network':d['network'],'noCache':w});H&&(E['_order_fund_facts']=H['structured'],E['_order_fund_facts_text']=H['text']);}catch{}}for(const I of z['objects']){try{await annotateObjectMonetaryFields(I,d['network']);}catch{}}}f={'query_type':'onchain_objects','result':z};break;}case'onchain_received':{const J=d['name_or_address'],K=typeof J==='string'?J:J?.['name_or_address'],L=await query_received({'name_or_address':normalizeAccountOrMark(d['name_or_address']),'type':d['type'],'cursor':d['cursor'],'limit':d['limit'],'no_cache':d['no_cache'],'network':d['network']}),M=L;if(d['type']==='CoinWrapper'&&M&&!Array['isArray'](M)&&Array['isArray'](M['received'])&&M['received']['length']===0x0&&typeof K==='string'&&K!==''&&!K['toLowerCase']()['startsWith']('0x00')){const N=await recoverObjectHeldReceipts(K,{'network':d['network'],'no_cache':d['no_cache']});N&&N['receipts']['length']>0x0&&(M['received']=N['receipts']['map'](O=>({'id':O['id'],'balance':O['amount'],'payment':O['payment'],'type':O['type'],'version':O['version'],'digest':O['digest']})),M['token_type']=N['token_type'],M['balance']=N['receipts']['reduce']((O,P)=>O+BigInt(P['amount']||'0'),0x0n),h='allocation-transaction-effects');}if(M&&typeof M==='object'&&typeof M['balance']==='bigint'){const O=M['token_type'];M['balance']=M['balance']['toString']();if(Array['isArray'](M['received']))for(const P of M['received']){P&&typeof P['balance']==='bigint'&&(P['balance']=P['balance']['toString']());}if(O)try{const Q={'balance':await formatChainValue(M['balance'],O,d['network'])};if(Array['isArray'](M['received']))for(let R=0x0;R<M['received']['length'];R++){const S=M['received'][R]?.['balance'];S!==undefined&&S!==null&&(Q['received['+R+'].balance']=await formatChainValue(S,O,d['network']));}M['_money_display']=Q;}catch{}}f={'query_type':'onchain_received','result':M};break;}case'onchain_transaction':{const T=X=>query_transaction({'digest':d['digest'],'no_cache':d['no_cache'],'network':X}),U=X=>/could not find the referenced transaction|not found/i['test'](X instanceof Error?X['message']:String(X));let V;if(d['network'])V=await T(d['network']);else{const X=await Config['Instance']()['network_get']();try{V=await T(undefined);}catch(Y){if(!U(Y))throw Y;}if(!V){const Z=[];for(const a0 of Object['values'](ENTRYPOINT)){if(a0===X)continue;Z['push'](a0);try{const a1=await T(a0);if(a1){V=a1,g=a0;break;}}catch{}}if(!V)throw new Error('Transaction\x20digest\x20not\x20found\x20on\x20the\x20session\x20default\x20network\x20('+X+')\x20'+('or\x20any\x20other\x20probed\x20network\x20('+[X,...Z]['join'](',\x20')+').\x20')+'This\x20is\x20an\x20all-network\x20miss\x20—\x20record\x20it\x20as\x20\x22did\x20not\x20commit\x22\x20(never\x20as\x20\x22unverified\x22).\x20'+'If\x20you\x20know\x20the\x20digest\x27s\x20network,\x20pass\x20network\x20explicitly.');}}const W=d['network']??g;try{await annotateBalanceChanges(V?.['balance_changes'],W);}catch{}g&&(V['_network_probe']='NOT\x20found\x20on\x20the\x20session\x20default\x20network;\x20FOUND\x20on\x20\x27'+g+'\x27\x20—\x20every\x20field\x20'+('below\x20(status,\x20gas,\x20balance\x20changes)\x20was\x20READ\x20FROM\x20'+g+'.\x20Never\x20cite\x20this\x20')+'result\x20as\x20session-default-network\x20data.');f={'query_type':'onchain_transaction','result':V};break;}case'onchain_block':{const a2=await query_checkpoint({'block':d['block'],'network':d['network']});f={'query_type':'onchain_block','result':a2};break;}case'onchain_object_history':{const a3=await query_object_history({'object':d['object'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_object_history','result':a3};break;}case'onchain_last_updated':{const a4=d['objects']??[],a5=await Promise['allSettled'](a4['map'](a7=>query_object_last_updated({'object':a7,'network':d['network']}))),a6=a4['map']((a7,a8)=>{const a9=a5[a8],aa=a9['status']==='fulfilled'?a9['value']:null;return{'object':a7,'timestamp_ms':aa?.['timestamp_ms']?String(aa['timestamp_ms']):null,'digest':aa?.['digest']??null,'sender':aa?.['sender']??null};});f={'query_type':'onchain_last_updated','result':{'items':a6}};break;}case'onchain_address_activity':{const a7=typeof d['name_or_address']==='string'?d['name_or_address']:d['name_or_address']['name_or_address'],a8=await query_address_activity({'name_or_address':a7,'direction':d['direction'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_address_activity','result':a8};break;}case'token_value_convert':{const a9=d['raw']!==undefined,aa=d['unit']!==undefined;if(a9===aa)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'](d['raw'])+',\x20')+('unit='+JSON['stringify'](d['unit'])+'.'));const ab=await convertTokenValue(d['token_type'],a9?{'raw':d['raw']}:{'unit':d['unit']},d['network']);f={'query_type':'token_value_convert','result':ab};break;}case'address_profile':{const ac=await query_address_profile({'address':d['address'],'no_cache':d['no_cache'],'network':d['network']});await mergeServiceAnalysis(ac,{'no_cache':d['no_cache'],'network':d['network']});ac&&typeof ac==='object'&&(ac['follow_ups']=buildProfileFollowUps(ac));f={'query_type':'address_profile','result':ac};break;}case'address_profiles':{const ad=await query_address_profiles({'addresses':d['addresses'],'no_cache':d['no_cache'],'network':d['network']});await Promise['all'](ad['map'](ae=>mergeServiceAnalysis(ae,{'no_cache':d['no_cache'],'network':d['network']})));for(const ae of ad??[]){ae&&typeof ae==='object'&&(ae['follow_ups']=buildProfileFollowUps(ae));}f={'query_type':'address_profiles','result':ad};break;}case'service_supply_chain':{const af=await resolveSupplyChainGraph(typeof d['address']==='string'?d['address']:d['address']?.['name_or_address']??String(d['address']),d['network']);f={'query_type':'service_supply_chain','result':af};break;}case'assemble_context':{f={'query_type':'assemble_context','result':await assembleContext(d)};break;}case'reverse_map':{if(!d['context_objects']||d['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 ag=d['context_network']??await Config['Instance']()['network_get'](),ah=await batchQueryObjectsByIds(d['context_objects'],ag,!![]);let ai,aj,ak=null;{const am=ah['find'](ao=>{const ap=ao?.['machine']??ao?.['data']?.['machine'];return typeof ap==='string'&&/^0x[0-9a-fA-F]/['test'](ap);});if(am)try{ak=String(am['object']??am['id']??'');const ao=await LocalMark['Instance']()['list']({'address':ak});if(ao[0x0]?.['name'])am['name']=ao[0x0]['name'];}catch{}const an=am?String(am['machine']??am['data']?.['machine']):null;if(an)try{const ap=ah['some'](ar=>String(ar?.['object']??ar?.['id']??'')['toLowerCase']()===an['toLowerCase']());!ap&&ah['push'](...await batchQueryObjectsByIds([an],ag,!![]));const aq=await fetchMachineNodes(an,ag);ai=aq['map'](ar=>({'name':String(ar?.['name']??'')}))['filter'](ar=>ar['name']['length']>0x0),aj=buildMachineGraph(aq)['edges']['map'](ar=>({'from':ar['from'],'to':ar['to']}));}catch{}}let al;if(ak)try{const ar=await fetchServiceOrders(ak,ag),as=(ar?.['items']??[])['slice'](0x0,0xa)['map'](at=>typeof at?.['who']==='string'?at['who']:'')['filter'](at=>at!=='');if(as['length']>0x0){const at=await batchQueryObjectsByIds(as,ag,!![]);al=at['filter'](au=>au?.['type']===ObjectType['Order'])['map'](au=>({'id':au['object'],'created_at_ms':Number(au?.['time'])||undefined,'claimed_by':au?.['claimed_by']??null}));}}catch{}f={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':ah['length'],'report':generateBusinessReport({'objects':ah,'machine_nodes':ai,'machine_edges':aj,'orders':al,'now_ms':Date['now'](),'order_amount':d['reverse_order_amount']})}};break;}case'service_panorama':f={'query_type':'service_panorama','result':await handleServicePanorama(d)};break;case'service_quote':f={'query_type':'service_quote','result':await handleServiceQuote(d)};break;case'machine_panorama':f={'query_type':'machine_panorama','result':await handleMachinePanorama(d)};break;case'object_panorama':f={'query_type':'object_panorama','result':await handleObjectPanorama(d)};break;case'review_pack':f={'query_type':'review_pack','result':await handleReviewPack(d)};break;case'participation_radar':f={'query_type':'participation_radar','result':await handleParticipationRadar(d)};break;case'relationship_profile':f={'query_type':'relationship_profile','result':await handleRelationshipProfile(d)};break;case'onchain_topology':f={'query_type':'onchain_topology','result':await handleOnchainTopology(d,undefined,await buildUserInjection(d['context_account']?.['toLowerCase']()))};break;case'workspace_lists':f={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'marks_of_account':f={'query_type':'marks_of_account','result':await buildAccountMarks({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'migration_preflight':f={'query_type':'migration_preflight','result':await migrationPreflight({'account':d['account'],'source_network':d['source_network'],'target_network':d['target_network'],'no_cache':d['no_cache']})};break;case'scenario_topology':{const au=d['chain_id'];f={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':au?SCENARIO_CHAINS['filter'](av=>av['id']===au):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 j=requestedNetworkForQuery(d,f['query_type']);let k;if(NETWORK_FIELD_BY_QUERY[f['query_type']]){const av=j??g??await Config['Instance']()['network_get']();k={'network':av,'network_source':j?'explicit':g?'probed':'default'};}return{'content':[{'type':'text','text':JSON['stringify']({...k,...h?{'read_path':h}:{},'result':f})}],'structuredContent':{'result':f,...queryPayloadAliases(f),...k??{},...h?{'read_path':h}:{},'semantic':buildDataSemantic(f,{'operation_type':'query_toolkit','data':d})}};}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':{const w=typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),x=await resolveAddress(w,'address');let y;try{y=await queryOrdersByUser({'address':x,'no_cache':b['no_cache'],'network':b['network']});}catch(z){const A=z instanceof Error?z['message']:String(z);if(/dynamicFieldNotFound/i['test'](A))y=[];else throw z;}c={'query_type':'onchain_orders_of_user','result':y};break;}case'onchain_orders_of_users':{const B=b['addresses']??[],C=[],D=await Promise['allSettled'](B['map'](async O=>{const P=String(O?.['name_or_address']??''),Q=await resolveAddress(P,'address');try{const R=await queryOrdersByUser({'address':Q,'no_cache':b['no_cache'],'network':b['network']});return{'account':P,'views':Array['isArray'](R)?R:[]};}catch(S){const T=S instanceof Error?S['message']:String(S);if(/dynamicFieldNotFound/i['test'](T))return{'account':P,'views':[]};throw S;}})),E=[];for(let O=0x0;O<B['length'];O++){const P=D[O];if(P['status']==='fulfilled')E['push'](P['value']);else{const Q=P['reason']instanceof Error?P['reason']['message']:String(P['reason']);C['push'](String(B[O]?.['name_or_address']??'?')+':\x20'+Q);}}const F=Array['from'](new Set(E['flatMap'](R=>R['views']['map'](S=>typeof S?.['order']?.['object']==='string'?S['order']['object']:typeof S?.['order']==='string'?S['order']:'')['filter'](Boolean)))),G=new Map();try{if(F['length']>0x0){const R=await batchQueryObjectsByIds(F,b['network']);for(const S of R){if(S&&S['type']===ObjectType['Order'])G['set'](S['object'],S);}}}catch{C['push']('order\x20details\x20unavailable\x20(non-blocking)');}const H=new Map(),I=new Map(),J=new Map();try{const T=new Set();for(const U of G['values']()){if(U?.['progress'])T['add'](U['progress']);if(U?.['allocation'])T['add'](U['allocation']);}if(T['size']>0x0){const V=await batchQueryObjectsByIds(Array['from'](T),b['network']);for(const W of V){if(!W?.['object'])continue;if(W['type']===ObjectType['Progress']){const X=W?.['current'];H['set'](W['object'],typeof X==='string'&&X!==''?X:null),I['set'](W['object'],Number(W?.['current_time'])||null);}else{if(W['type']===ObjectType['Allocation']){const Y=Number(W?.['balance']??0x0);J['set'](W['object'],Number['isFinite'](Y)&&Y===0x0?'allocated':'pending');}}}}}catch{C['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const K=new Map();try{const Z=await Promise['allSettled'](F['map'](a0=>query_object_last_updated({'object':a0,'network':b['network'],'previous_transaction':G['get'](a0)?.['previousTransaction']??null})));for(let a0=0x0;a0<F['length'];a0++){const a1=Z[a0];K['set'](F[a0],a1['status']==='fulfilled'&&a1['value']?.['timestamp_ms']?Number(a1['value']['timestamp_ms'])||null:null);}}catch{C['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const L=await coinTypesOfServices(Array['from'](new Set(Array['from'](G['values']())['map'](a2=>typeof a2?.['service']==='string'?a2['service']:'')['filter'](Boolean))),b['network']),M=async(a2,a3)=>{if(a3===null||a3===undefined||a3==='')return{'display':'','tip':''};if(!a2)return{'display':a3,'tip':''};try{const a4=await formatChainValue(a3,a2,b['network']);if(a4['precision_known'])return{'display':a4['symbol']?a4['display']+'\x20'+a4['symbol']:a4['display'],'tip':a4['text']};return{'display':a3,'tip':''};}catch{return{'display':a3,'tip':''};}},N=[];for(const a2 of F){const a3=G['get'](a2),a4=E['filter'](a8=>a8['views']['some'](a9=>(typeof a9?.['order']?.['object']==='string'?a9['order']['object']:a9?.['order'])===a2))['map'](a8=>{const a9=a8['views']['find'](aa=>(typeof aa?.['order']?.['object']==='string'?aa['order']['object']:aa?.['order'])===a2);return{'account':a8['account'],'is_owner':!!a9?.['is_owner'],'is_agent':!!a9?.['is_agent'],'time':a9?.['time']};}),a5=L['get'](String(a3?.['service']??''))??null,a6=a3?.['amount']!==null&&a3?.['amount']!==undefined?String(a3['amount']):'',a7=await M(a5,a6);N['push']({'order':a2,'roles':a4,'time':a3?Number(a3['time'])||0x0:0x0,'updated_ms':K['get'](a2)??null,'amount':a6,'amount_display':a7['display'],'amount_tip':a7['tip'],'service':a3?.['service']??null,'machine':a3?.['machine']??null,'progress':a3?.['progress']??null,'allocation':a3?.['allocation']??null,'owner':ownerAddrOf(a3?.['builder']??a3?.['owner']),'claimed_by':a3?.['claimed_by']??null,'required_info':a3?.['required_info']??null,'progress_next':a3?.['progress']?H['get'](a3['progress'])??null:null,'progress_since':a3?.['progress']?I['get'](a3['progress'])??null:null,'allocation_state':a3?.['allocation']?J['get'](a3['allocation'])??'pending':'none','disputes':Array['isArray'](a3?.['dispute'])?a3['dispute']:[],'agents':Array['isArray'](a3?.['agent'])?a3['agent']:[],'items':await Promise['all']((Array['isArray'](a3?.['items'])?a3['items']:[])['map'](async a8=>{const a9=a8?.['price']!==null&&a8?.['price']!==undefined?String(a8['price']):'0';return{'name':String(a8?.['name']??''),'price':a9,'price_display':(await M(a5,a9))['display'],'quantity':String(a8?.['quantity']??'0'),'wip_hash':String(a8?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':N,...C['length']>0x0?{'account_errors':C}:{}};break;}case'onchain_table_item_object_linker_core':{const a8=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a8};break;}case'onchain_table_item_object_linker_tx':{const a9=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a9};break;}case'onchain_affiliations_of_object':{const aa=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),ab=aa?.['entries'];Array['isArray'](ab)&&(aa['entries']=ab['filter'](ac=>{const ad=typeof ac?.['who']==='string'?ac['who']:'';return!!ad&&objectTypeFromAddress(ad)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':aa};break;}case'address_profile':{const ac=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(ac,{'no_cache':b['no_cache'],'network':b['network']});ac&&typeof ac==='object'&&(ac['follow_ups']=buildProfileFollowUps(ac));c={'query_type':'address_profile','result':ac};break;}case'service_supply_chain':{const ad=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':ad};break;}case'onchain_table_item_generic':{const ae=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':ae};break;}default:{const af=['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'+af['map'](ag=>'\x22'+ag+'\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()});if(c==='build_fingerprint'){const e=b['compare'];if(e!=null){const h=await readChainStamp();return setComparisonChainEpoch(h['fetched']?h['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'comparison':compareReportFingerprint(e)}});}const f=currentBuildFingerprint(),g=await readChainStamp();return setComparisonChainEpoch(g['fetched']?g['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'fingerprint':f,'chain_stamp':g}});}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,readChainStamp}from'../upgrade-check.js';import{currentBuildFingerprint,compareReportFingerprint,setComparisonChainEpoch}from'../build-fingerprint.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,ENTRYPOINT}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{recoverObjectHeldReceipts}from'../../graph/onchain/object-held-receipts.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';import{resolveAddress}from'./name-resolution.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;}}export function balanceScopeNote(a){return a?'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20the\x20coin\x20list\x20below\x20is\x20just\x20the\x20FIRST\x20PAGE\x20(top\x205)\x20'+'of\x20independently\x20owned\x20Coin\x20objects\x20—\x20a\x20refund\x20can\x20land\x20as\x20its\x20own\x20Coin\x20object\x20beyond\x20this\x20page.\x20'+'Verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20or\x20the\x20full\x20coin-object\x20listing\x20'+'(coin={cursor,limit})\x20before\x20drawing\x20conclusions.':'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20independently\x20owned\x20Coin\x20objects\x20are\x20not\x20'+'enumerated\x20here\x20—\x20verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20or\x20a\x20coin-objects\x20query\x20before\x20'+'drawing\x20conclusions.';}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;}const LOCAL_FAMILY_QUERIES=new Set(['local_mark_list','account_list','local_info_list','token_list','local_names']);function normalizeNetworkFieldAlias(a){const b=a['query_type'];if(typeof b!=='string')return;if(LOCAL_FAMILY_QUERIES['has'](b)){delete a['network'],delete a['context_network'];return;}const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return;const d=c==='network'?'context_network':'network';a[c]===undefined&&a[d]!==undefined&&(a[c]=a[d],delete a[d]);}export async function handleWatchQueryOperations(a){let c=a;if(a!==null&&typeof a==='object'&&!Array['isArray'](a)){const l={...a};normalizeNetworkFieldAlias(l),c=l;}const d=strictParse(WatchQueryOperationsSchema,c,'watch_and_query\x20input');let f,g,h;switch(d['query_type']){case'local_mark_list':{const m=await query_local_mark_list(d['filter']||{});f={'query_type':'local_mark_list','result':m};break;}case'account_list':{const n=await query_account_list(d['filter']);f={'query_type':'account_list','result':n};break;}case'local_info_list':{const o=await query_local_info_list(d['filter'],d['account']);f={'query_type':'local_info_list','result':o};break;}case'token_list':{const p=await query_local_token_list(d['filter']||{});f={'query_type':'token_list','result':p};break;}case'account_balance':{const q=await query_account({'name_or_address':d['name_or_address'],'token_type':d['token_type'],'balance':d['balance'],'coin':d['coin'],'network':d['network']}),r=d['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(q,r);let s=![];if(q['balance']&&!d['coin']&&!q['object']&&!q['hint'])try{const t=await query_account({'name_or_address':d['name_or_address'],'coin':{'cursor':null,'limit':0x5},'token_type':d['token_type'],'network':d['network']});t['coin']&&(q['coin']=t['coin'],s=!![]);}catch{}q['_balance_scope_note']=balanceScopeNote(s),f={'query_type':'account_balance','result':q};break;}case'local_names':{const u=await GetLocalNamesByAddresses(d['addresses']);f={'query_type':'local_names','result':u};break;}case'onchain_personal_profile':{const v=await query_personal({'account':d['account'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_personal_profile','result':v};break;}case'onchain_objects':{const w=d['no_cache']??!![],x=await batchQueryObjectsByIds(d['objects'],d['network'],w),y=lastUnresolvedInputs(),z={'objects':x,'_read_freshness':{'source':w?'live':'session_cache','no_cache':w,'fetched_at':new Date()['toISOString'](),'note':w?'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.'},...x['length']===0x0&&y['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':y,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(d['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.'}}:{},...x['length']<d['objects']['length']?{'_unreturned':{'requested':d['objects']['length'],'returned':x['length'],'missing':d['objects']['map'](A=>typeof A==='string'?A:A?.['name_or_address']??A?.['object']??A?.['address'])['filter'](A=>typeof A==='string'&&A!=='')['filter'](A=>!x['some'](B=>typeof B?.['object']==='string'&&B['object']['toLowerCase']()===A['toLowerCase']())),'note':'These\x20requested\x20ids\x20were\x20NOT\x20returned\x20—\x20either\x20absent\x20on\x20chain,\x20filtered\x20by\x20the\x20reader\x27s\x20type\x20support,\x20or\x20unparseable.\x20This\x20is\x20NOT\x20proof\x20of\x20nonexistence:\x20verify\x20via\x20an\x20alternative\x20read\x20(object_panorama\x20/\x20a\x20direct\x20address\x20query)\x20before\x20concluding\x20an\x20object\x20is\x20gone.'}}:{}};if(z&&z['objects']&&Array['isArray'](z['objects'])){z['objects']=z['objects']['map'](A=>{if(A&&A['data']&&A['data']['type']==='Guard'&&A['data']['root'])try{const B=generateNodeComments(A['data']['root']);return{...A,'_guard_node_comments':B};}catch(C){return A;}return A;}),z['objects']=z['objects']['map'](A=>{if(A&&A['data']&&A['data']['type']==='Progress'&&A['data']['current']===''){const B=A['data']['machine'],C=A['data']['task'];return{...A,'_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':B??null,'bound_order_id':C??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](B)+']).','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 A;});for(const A of z['objects']){const B=A?.['data']??A;if((A?.['type']??B?.['type'])!=='Progress')continue;const C=A?.['object']??B?.['object'];if(!C)continue;try{const D=await enrichWorkflowGuidance({'progressRef':C,'network':d['network'],'noCache':d['no_cache']});if(D?.['guidance']){A['_workflow_guidance']=D['guidance'];if(D['text'])A['_workflow_guidance_text']=D['text'];}}catch{}}for(const E of z['objects']){const F=E?.['data']??E;if((E?.['type']??F?.['type'])!=='Arb')continue;const G=E?.['object']??F?.['object'];if(!G)continue;try{const H=await buildOrderFundFacts({'arbRef':G,'network':d['network'],'noCache':w});H&&(E['_order_fund_facts']=H['structured'],E['_order_fund_facts_text']=H['text']);}catch{}}for(const I of z['objects']){try{await annotateObjectMonetaryFields(I,d['network']);}catch{}}}f={'query_type':'onchain_objects','result':z};break;}case'onchain_received':{const J=d['name_or_address'],K=typeof J==='string'?J:J?.['name_or_address'],L=await query_received({'name_or_address':normalizeAccountOrMark(d['name_or_address']),'type':d['type'],'cursor':d['cursor'],'limit':d['limit'],'no_cache':d['no_cache'],'network':d['network']}),M=L;if(d['type']==='CoinWrapper'&&M&&!Array['isArray'](M)&&Array['isArray'](M['received'])&&M['received']['length']===0x0&&typeof K==='string'&&K!==''&&!K['toLowerCase']()['startsWith']('0x00')){const N=await recoverObjectHeldReceipts(K,{'network':d['network'],'no_cache':d['no_cache']});N&&N['receipts']['length']>0x0&&(M['received']=N['receipts']['map'](O=>({'id':O['id'],'balance':O['amount'],'payment':O['payment'],'type':O['type'],'version':O['version'],'digest':O['digest']})),M['token_type']=N['token_type'],M['balance']=N['receipts']['reduce']((O,P)=>O+BigInt(P['amount']||'0'),0x0n),h='allocation-transaction-effects');}if(M&&typeof M==='object'&&typeof M['balance']==='bigint'){const O=M['token_type'];M['balance']=M['balance']['toString']();if(Array['isArray'](M['received']))for(const P of M['received']){P&&typeof P['balance']==='bigint'&&(P['balance']=P['balance']['toString']());}if(O)try{const Q={'balance':await formatChainValue(M['balance'],O,d['network'])};if(Array['isArray'](M['received']))for(let R=0x0;R<M['received']['length'];R++){const S=M['received'][R]?.['balance'];S!==undefined&&S!==null&&(Q['received['+R+'].balance']=await formatChainValue(S,O,d['network']));}M['_money_display']=Q;}catch{}}f={'query_type':'onchain_received','result':M};break;}case'onchain_transaction':{const T=Y=>query_transaction({'digest':d['digest'],'no_cache':d['no_cache'],'network':Y}),U=Y=>/could not find the referenced transaction|not found/i['test'](Y instanceof Error?Y['message']:String(Y));let V;if(d['network'])V=await T(d['network']);else{const Y=await Config['Instance']()['network_get']();try{V=await T(undefined);}catch(Z){if(!U(Z))throw Z;}if(!V){const a0=[];for(const a1 of Object['values'](ENTRYPOINT)){if(a1===Y)continue;a0['push'](a1);try{const a2=await T(a1);if(a2){V=a2,g=a1;break;}}catch{}}if(!V)throw new Error('Transaction\x20digest\x20not\x20found\x20on\x20the\x20session\x20default\x20network\x20('+Y+')\x20'+('or\x20any\x20other\x20probed\x20network\x20('+[Y,...a0]['join'](',\x20')+').\x20')+'This\x20is\x20an\x20all-network\x20miss\x20—\x20record\x20it\x20as\x20\x22did\x20not\x20commit\x22\x20(never\x20as\x20\x22unverified\x22).\x20'+'If\x20you\x20know\x20the\x20digest\x27s\x20network,\x20pass\x20network\x20explicitly.');}}const W=d['network']??g;try{await annotateBalanceChanges(V?.['balance_changes'],W);}catch{}g&&(V['_network_probe']='NOT\x20found\x20on\x20the\x20session\x20default\x20network;\x20FOUND\x20on\x20\x27'+g+'\x27\x20—\x20every\x20field\x20'+('below\x20(status,\x20gas,\x20balance\x20changes)\x20was\x20READ\x20FROM\x20'+g+'.\x20Never\x20cite\x20this\x20')+'result\x20as\x20session-default-network\x20data.');const X=fundExitAuditNote(V);X&&(V['_fund_exit_audit']=X);f={'query_type':'onchain_transaction','result':V};break;}case'onchain_block':{const a3=await query_checkpoint({'block':d['block'],'network':d['network']});f={'query_type':'onchain_block','result':a3};break;}case'onchain_object_history':{const a4=await query_object_history({'object':d['object'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_object_history','result':a4};break;}case'onchain_last_updated':{const a5=d['objects']??[],a6=await Promise['allSettled'](a5['map'](a8=>query_object_last_updated({'object':a8,'network':d['network']}))),a7=a5['map']((a8,a9)=>{const aa=a6[a9],ab=aa['status']==='fulfilled'?aa['value']:null;return{'object':a8,'timestamp_ms':ab?.['timestamp_ms']?String(ab['timestamp_ms']):null,'digest':ab?.['digest']??null,'sender':ab?.['sender']??null};});f={'query_type':'onchain_last_updated','result':{'items':a7}};break;}case'onchain_address_activity':{const a8=typeof d['name_or_address']==='string'?d['name_or_address']:d['name_or_address']['name_or_address'],a9=await query_address_activity({'name_or_address':a8,'direction':d['direction'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_address_activity','result':a9};break;}case'token_value_convert':{const aa=d['raw']!==undefined,ab=d['unit']!==undefined;if(aa===ab)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'](d['raw'])+',\x20')+('unit='+JSON['stringify'](d['unit'])+'.'));const ac=await convertTokenValue(d['token_type'],aa?{'raw':d['raw']}:{'unit':d['unit']},d['network']);f={'query_type':'token_value_convert','result':ac};break;}case'address_profile':{const ad=await query_address_profile({'address':d['address'],'no_cache':d['no_cache'],'network':d['network']});await mergeServiceAnalysis(ad,{'no_cache':d['no_cache'],'network':d['network']});ad&&typeof ad==='object'&&(ad['follow_ups']=buildProfileFollowUps(ad));f={'query_type':'address_profile','result':ad};break;}case'address_profiles':{const ae=await query_address_profiles({'addresses':d['addresses'],'no_cache':d['no_cache'],'network':d['network']});await Promise['all'](ae['map'](af=>mergeServiceAnalysis(af,{'no_cache':d['no_cache'],'network':d['network']})));for(const af of ae??[]){af&&typeof af==='object'&&(af['follow_ups']=buildProfileFollowUps(af));}f={'query_type':'address_profiles','result':ae};break;}case'service_supply_chain':{const ag=await resolveSupplyChainGraph(typeof d['address']==='string'?d['address']:d['address']?.['name_or_address']??String(d['address']),d['network']);f={'query_type':'service_supply_chain','result':ag};break;}case'assemble_context':{f={'query_type':'assemble_context','result':await assembleContext(d)};break;}case'reverse_map':{if(!d['context_objects']||d['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 ah=d['context_network']??await Config['Instance']()['network_get'](),ai=await batchQueryObjectsByIds(d['context_objects'],ah,!![]);let aj,ak,al=null;{const an=ai['find'](ap=>{const aq=ap?.['machine']??ap?.['data']?.['machine'];return typeof aq==='string'&&/^0x[0-9a-fA-F]/['test'](aq);});if(an)try{al=String(an['object']??an['id']??'');const ap=await LocalMark['Instance']()['list']({'address':al});if(ap[0x0]?.['name'])an['name']=ap[0x0]['name'];}catch{}const ao=an?String(an['machine']??an['data']?.['machine']):null;if(ao)try{const aq=ai['some'](as=>String(as?.['object']??as?.['id']??'')['toLowerCase']()===ao['toLowerCase']());!aq&&ai['push'](...await batchQueryObjectsByIds([ao],ah,!![]));const ar=await fetchMachineNodes(ao,ah);aj=ar['map'](as=>({'name':String(as?.['name']??'')}))['filter'](as=>as['name']['length']>0x0),ak=buildMachineGraph(ar)['edges']['map'](as=>({'from':as['from'],'to':as['to']}));}catch{}}let am;if(al)try{const as=await fetchServiceOrders(al,ah),at=(as?.['items']??[])['slice'](0x0,0xa)['map'](au=>typeof au?.['who']==='string'?au['who']:'')['filter'](au=>au!=='');if(at['length']>0x0){const au=await batchQueryObjectsByIds(at,ah,!![]);am=au['filter'](av=>av?.['type']===ObjectType['Order'])['map'](av=>({'id':av['object'],'created_at_ms':Number(av?.['time'])||undefined,'claimed_by':av?.['claimed_by']??null}));}}catch{}f={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':ai['length'],'report':generateBusinessReport({'objects':ai,'machine_nodes':aj,'machine_edges':ak,'orders':am,'now_ms':Date['now'](),'order_amount':d['reverse_order_amount']})}};break;}case'service_panorama':f={'query_type':'service_panorama','result':await handleServicePanorama(d)};break;case'service_quote':f={'query_type':'service_quote','result':await handleServiceQuote(d)};break;case'machine_panorama':f={'query_type':'machine_panorama','result':await handleMachinePanorama(d)};break;case'object_panorama':f={'query_type':'object_panorama','result':await handleObjectPanorama(d)};break;case'review_pack':f={'query_type':'review_pack','result':await handleReviewPack(d)};break;case'participation_radar':f={'query_type':'participation_radar','result':await handleParticipationRadar(d)};break;case'relationship_profile':f={'query_type':'relationship_profile','result':await handleRelationshipProfile(d)};break;case'onchain_topology':f={'query_type':'onchain_topology','result':await handleOnchainTopology(d,undefined,await buildUserInjection(d['context_account']?.['toLowerCase']()))};break;case'workspace_lists':f={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'marks_of_account':f={'query_type':'marks_of_account','result':await buildAccountMarks({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'migration_preflight':f={'query_type':'migration_preflight','result':await migrationPreflight({'account':d['account'],'source_network':d['source_network'],'target_network':d['target_network'],'no_cache':d['no_cache']})};break;case'scenario_topology':{const av=d['chain_id'];f={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':av?SCENARIO_CHAINS['filter'](aw=>aw['id']===av):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 j=requestedNetworkForQuery(d,f['query_type']);let k;if(NETWORK_FIELD_BY_QUERY[f['query_type']]){const aw=j??g??await Config['Instance']()['network_get']();k={'network':aw,'network_source':j?'explicit':g?'probed':'default'};}return{'content':[{'type':'text','text':JSON['stringify']({...k,...h?{'read_path':h}:{},'result':f})}],'structuredContent':{'result':f,...queryPayloadAliases(f),...k??{},...h?{'read_path':h}:{},'semantic':buildDataSemantic(f,{'operation_type':'query_toolkit','data':d})}};}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 function fundExitAuditNote(a){const b=Array['isArray'](a?.['object_changes'])?a['object_changes']:[],c=b['filter'](f=>f?.['type']==='deleted'||f?.['type']==='wrapped'||f?.['type']==='unwrapped');if(c['length']===0x0)return undefined;const d=c['filter'](f=>f?.['synthesized']===!![]),e=['FUND-EXIT\x20AUDIT:\x20this\x20transaction\x20consumed\x20'+c['length']+'\x20object(s)\x20'+('('+c['map'](f=>f['type']+'\x20'+f['id'])['join'](',\x20')+').\x20A\x20consumed\x20object\x20is\x20a\x20money/object\x20')+'exit\x20door\x20—\x20trace\x20where\x20its\x20contents\x20went\x20via\x20balance_changes\x20(per-owner\x20deltas)\x20before\x20concluding.'];return d['length']>0x0&&e['push'](d['length']+'\x20removal(s)\x20reconstructed\x20from\x20the\x20tx\x20effects\x20(synthesized=true,\x20no\x20'+'object_type):\x20the\x20node\x27s\x20objectChanges\x20omitted\x20the\x20consumed\x20object\x27s\x20live\x20state.\x20Resolve\x20its\x20'+'type\x20via\x20onchain_object_history\x20on\x20the\x20id\x20if\x20needed.'),e['push']('Fallback\x20when\x20an\x20exit\x20still\x20lacks\x20object-level\x20evidence:\x20diff\x20two\x20query_toolkit\x20onchain_received\x20'+'snapshots\x20taken\x20before\x20and\x20after\x20this\x20digest\x20(full-set\x20difference)\x20—\x20object-level\x20records\x20are\x20'+'eventually\x20the\x20ground\x20truth\x20even\x20when\x20events\x20are\x20empty.'),e['join']('\x20');}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':{const w=typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),x=await resolveAddress(w,'address');let y;try{y=await queryOrdersByUser({'address':x,'no_cache':b['no_cache'],'network':b['network']});}catch(z){const A=z instanceof Error?z['message']:String(z);if(/dynamicFieldNotFound/i['test'](A))y=[];else throw z;}c={'query_type':'onchain_orders_of_user','result':y};break;}case'onchain_orders_of_users':{const B=b['addresses']??[],C=[],D=await Promise['allSettled'](B['map'](async O=>{const P=String(O?.['name_or_address']??''),Q=await resolveAddress(P,'address');try{const R=await queryOrdersByUser({'address':Q,'no_cache':b['no_cache'],'network':b['network']});return{'account':P,'views':Array['isArray'](R)?R:[]};}catch(S){const T=S instanceof Error?S['message']:String(S);if(/dynamicFieldNotFound/i['test'](T))return{'account':P,'views':[]};throw S;}})),E=[];for(let O=0x0;O<B['length'];O++){const P=D[O];if(P['status']==='fulfilled')E['push'](P['value']);else{const Q=P['reason']instanceof Error?P['reason']['message']:String(P['reason']);C['push'](String(B[O]?.['name_or_address']??'?')+':\x20'+Q);}}const F=Array['from'](new Set(E['flatMap'](R=>R['views']['map'](S=>typeof S?.['order']?.['object']==='string'?S['order']['object']:typeof S?.['order']==='string'?S['order']:'')['filter'](Boolean)))),G=new Map();try{if(F['length']>0x0){const R=await batchQueryObjectsByIds(F,b['network']);for(const S of R){if(S&&S['type']===ObjectType['Order'])G['set'](S['object'],S);}}}catch{C['push']('order\x20details\x20unavailable\x20(non-blocking)');}const H=new Map(),I=new Map(),J=new Map();try{const T=new Set();for(const U of G['values']()){if(U?.['progress'])T['add'](U['progress']);if(U?.['allocation'])T['add'](U['allocation']);}if(T['size']>0x0){const V=await batchQueryObjectsByIds(Array['from'](T),b['network']);for(const W of V){if(!W?.['object'])continue;if(W['type']===ObjectType['Progress']){const X=W?.['current'];H['set'](W['object'],typeof X==='string'&&X!==''?X:null),I['set'](W['object'],Number(W?.['current_time'])||null);}else{if(W['type']===ObjectType['Allocation']){const Y=Number(W?.['balance']??0x0);J['set'](W['object'],Number['isFinite'](Y)&&Y===0x0?'allocated':'pending');}}}}}catch{C['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const K=new Map();try{const Z=await Promise['allSettled'](F['map'](a0=>query_object_last_updated({'object':a0,'network':b['network'],'previous_transaction':G['get'](a0)?.['previousTransaction']??null})));for(let a0=0x0;a0<F['length'];a0++){const a1=Z[a0];K['set'](F[a0],a1['status']==='fulfilled'&&a1['value']?.['timestamp_ms']?Number(a1['value']['timestamp_ms'])||null:null);}}catch{C['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const L=await coinTypesOfServices(Array['from'](new Set(Array['from'](G['values']())['map'](a2=>typeof a2?.['service']==='string'?a2['service']:'')['filter'](Boolean))),b['network']),M=async(a2,a3)=>{if(a3===null||a3===undefined||a3==='')return{'display':'','tip':''};if(!a2)return{'display':a3,'tip':''};try{const a4=await formatChainValue(a3,a2,b['network']);if(a4['precision_known'])return{'display':a4['symbol']?a4['display']+'\x20'+a4['symbol']:a4['display'],'tip':a4['text']};return{'display':a3,'tip':''};}catch{return{'display':a3,'tip':''};}},N=[];for(const a2 of F){const a3=G['get'](a2),a4=E['filter'](a8=>a8['views']['some'](a9=>(typeof a9?.['order']?.['object']==='string'?a9['order']['object']:a9?.['order'])===a2))['map'](a8=>{const a9=a8['views']['find'](aa=>(typeof aa?.['order']?.['object']==='string'?aa['order']['object']:aa?.['order'])===a2);return{'account':a8['account'],'is_owner':!!a9?.['is_owner'],'is_agent':!!a9?.['is_agent'],'time':a9?.['time']};}),a5=L['get'](String(a3?.['service']??''))??null,a6=a3?.['amount']!==null&&a3?.['amount']!==undefined?String(a3['amount']):'',a7=await M(a5,a6);N['push']({'order':a2,'roles':a4,'time':a3?Number(a3['time'])||0x0:0x0,'updated_ms':K['get'](a2)??null,'amount':a6,'amount_display':a7['display'],'amount_tip':a7['tip'],'service':a3?.['service']??null,'machine':a3?.['machine']??null,'progress':a3?.['progress']??null,'allocation':a3?.['allocation']??null,'owner':ownerAddrOf(a3?.['builder']??a3?.['owner']),'claimed_by':a3?.['claimed_by']??null,'required_info':a3?.['required_info']??null,'progress_next':a3?.['progress']?H['get'](a3['progress'])??null:null,'progress_since':a3?.['progress']?I['get'](a3['progress'])??null:null,'allocation_state':a3?.['allocation']?J['get'](a3['allocation'])??'pending':'none','disputes':Array['isArray'](a3?.['dispute'])?a3['dispute']:[],'agents':Array['isArray'](a3?.['agent'])?a3['agent']:[],'items':await Promise['all']((Array['isArray'](a3?.['items'])?a3['items']:[])['map'](async a8=>{const a9=a8?.['price']!==null&&a8?.['price']!==undefined?String(a8['price']):'0';return{'name':String(a8?.['name']??''),'price':a9,'price_display':(await M(a5,a9))['display'],'quantity':String(a8?.['quantity']??'0'),'wip_hash':String(a8?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':N,...C['length']>0x0?{'account_errors':C}:{}};break;}case'onchain_table_item_object_linker_core':{const a8=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a8};break;}case'onchain_table_item_object_linker_tx':{const a9=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a9};break;}case'onchain_affiliations_of_object':{const aa=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),ab=aa?.['entries'];Array['isArray'](ab)&&(aa['entries']=ab['filter'](ac=>{const ad=typeof ac?.['who']==='string'?ac['who']:'';return!!ad&&!!objectTypeFromAddress(ad);}));c={'query_type':'onchain_affiliations_of_object','result':aa};break;}case'address_profile':{const ac=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(ac,{'no_cache':b['no_cache'],'network':b['network']});ac&&typeof ac==='object'&&(ac['follow_ups']=buildProfileFollowUps(ac));c={'query_type':'address_profile','result':ac};break;}case'service_supply_chain':{const ad=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':ad};break;}case'onchain_table_item_generic':{const ae=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':ae};break;}default:{const af=['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'+af['map'](ag=>'\x22'+ag+'\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()});if(c==='build_fingerprint'){const e=b['compare'];if(e!=null){const h=await readChainStamp();return setComparisonChainEpoch(h['fetched']?h['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'comparison':compareReportFingerprint(e)}});}const f=currentBuildFingerprint(),g=await readChainStamp();return setComparisonChainEpoch(g['fetched']?g['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'fingerprint':f,'chain_stamp':g}});}const d=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
|
|
@@ -1,2 +1,20 @@
|
|
|
1
1
|
import type { ToolDispatchResult } from "../types.js";
|
|
2
|
+
interface OperationStep {
|
|
3
|
+
step: number;
|
|
4
|
+
op_type: string;
|
|
5
|
+
description: string;
|
|
6
|
+
payload: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface SupersededConsumerFinding {
|
|
9
|
+
level: "warning";
|
|
10
|
+
consumer_kind: "allocation" | "service_binding" | "repository_binding";
|
|
11
|
+
op_step: number;
|
|
12
|
+
op_type: string;
|
|
13
|
+
field: string;
|
|
14
|
+
superseded_address: string;
|
|
15
|
+
replacement: string | null;
|
|
16
|
+
remediation: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function findSupersededConsumers(ops: OperationStep[], superseded: Map<string, string | null>): SupersededConsumerFinding[];
|
|
2
19
|
export declare function handleServiceCloneOperation(args: unknown): Promise<ToolDispatchResult>;
|
|
20
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{strictParse}from'../../schema/index.js';import{ServiceCloneSchema}from'../../schema/service-clone/index.js';import{query_serviceContext,Config}from'@wowok/wowok';import{runPrePublishChecks}from'../wrap.js';import{lintGuard}from'../../knowledge/guard-lint.js';function normAddr(b){const c=b['toLowerCase']();return c['startsWith']('0x')?c:'0x'+c;}function isAddressType(a){const b=a['toLowerCase']();return b==='address'||b==='1';}function isVecAddressType(a){const b=a['toLowerCase']();return b==='vecaddress'||b==='vec_address'||b==='10';}function rewriteTableAddresses(a,b){let c=0x0;for(const d of a){if(d['value']===undefined)continue;if(isAddressType(d['value_type'])&&typeof d['value']==='string'){const e=b['get'](normAddr(d['value']));e!==undefined&&(d['value']=e,c++);}else isVecAddressType(d['value_type'])&&Array['isArray'](d['value'])&&(d['value']=d['value']['map'](f=>{if(typeof f==='string'){const g=b['get'](normAddr(f));if(g!==undefined)return c++,g;}return f;}));}return c;}function tableReferences(a,b){const c=normAddr(b);for(const d of a){if(d['value']===undefined)continue;if(isAddressType(d['value_type'])&&typeof d['value']==='string'){if(normAddr(d['value'])===c)return!![];}else{if(isVecAddressType(d['value_type'])&&Array['isArray'](d['value'])){if(d['value']['some'](e=>typeof e==='string'&&normAddr(e)===c))return!![];}}}return![];}async function buildClonePlan(a,b){const c=await query_serviceContext({'service':a,'include_machine_nodes':!![],'network':b}),d=c['service'];if(!d)throw new Error('Service\x20not\x20found:\x20'+a);const e=d['object'],f=d['type_raw'],h=f?.['match'](/<(.+)>$/)?.[0x1]??null;let i=null;c['machine']&&c['machine_nodes']&&(i={'description':c['machine']['description']??'','permission':c['machine']['permission'],'nodes':c['machine_nodes']['map'](m=>({'name':m['name'],'pairs':(m['value']??[])['map'](n=>({'prev_node':n['prev_node'],'threshold':n['threshold'],'forwards':(n['forwards']??[])['map'](o=>({'name':o['name'],'weight':o['weight'],...o['guard']?{'guard':{'guard':o['guard']['guard'],...o['guard']['retained_submission']?{'retained_submission':o['guard']['retained_submission']}:{}}}:{},...o['namedOperator']?{'namedOperator':o['namedOperator']}:{},...o['permissionIndex']!==undefined?{'permissionIndex':o['permissionIndex']}:{}}))}))}))});const j={},k=m=>{if(!m||!m['object']||j[m['object']])return;const n=(m['table']??[])['map'](o=>({'identifier':o['identifier'],'b_submission':o['b_submission'],'value_type':String(o['value_type']),'value':o['value'],'name':o['name']??''}));j[m['object']]={'source_address':m['object'],'description':m['description']??'','table':n,'root':m['root'],'relies':m['relies']??[],'relies_logic_and':m['relies_logic_and']??!![],'references_source_service':tableReferences(n,e)};};k(c['buy_guard']);for(const m of c['allocator_guards']??[])k(m);for(const n of Object['values'](c['referenced']??{})){n['type']==='Guard'&&k(n);}let l=null;if(c['permission']){const o=c['permission'];l={'address':o['object'],'description':o['description']??'','admin_count':(o['admin']??[])['length'],'entity_count':o['entity_count']??0x0};}return{'source':{'service':e,'network':b,'name':d['query_name']??null,'token_type':h},'service':{'description':d['description'],'location':d['location'],'sales':d['sales']??[],'customer_required':d['customer_required']??[],'buy_guard':d['buy_guard'],'machine':d['machine'],'permission':d['permission'],'um':d['um'],'arbitrations':d['arbitrations']??[],'rewards':d['rewards']??[],'repositories':d['repositories']??[],'order_allocators':d['order_allocators']??null,'compensation_fund':d['compensation_fund']??'0','setting_lock_duration':d['setting_lock_duration']??0x0},'machine':i,'guards':j,'permission':l};}function applyOverrides(a,b){const c=JSON['parse'](JSON['stringify'](a));if(b['token_type'])c['source']['token_type']=b['token_type'];if(b['network'])c['source']['network']=b['network'];if(b['name'])c['source']['name']=b['name'];if(b['description']!==undefined)c['service']['description']=b['description'];if(b['location']!==undefined)c['service']['location']=b['location'];if(b['sales']){const d=new Map(c['service']['sales']['map'](e=>[e['name'],e]));for(const e of b['sales']){const f=d['get'](e['name']);d['set'](e['name'],f?{...f,...e}:{...e});}c['service']['sales']=[...d['values']()];}if(b['compensation_fund']!==undefined)c['service']['compensation_fund']=b['compensation_fund'];if(b['order_allocators'])c['service']['order_allocators']=b['order_allocators'];return c;}function buildOperations(a,b,c,d){const e=[],f=[];let h=0x0;const i=(a['source']['name']??'cloned_service')['replace'](/[^a-zA-Z0-9_]/g,'_'),j=i+'_clone',k=j+'_machine',l=a['source']['token_type']??'0x2::wow::WOW',m=a['source']['network'],n=d!==undefined&&d!==a['source']['network'],o=n?'rebuild_all':b['guard_mode']??'auto';n&&c['push']('cross-network\x20clone\x20('+d+'\x20→\x20'+a['source']['network']+'):\x20no\x20on-chain\x20address\x20can\x20be\x20reused\x20—\x20every\x20guard\x20is\x20rebuilt,\x20a\x20new\x20Permission\x20is\x20created,\x20and\x20arbitration/reward/repository/contact\x20references\x20are\x20dropped\x20(rebind\x20them\x20on\x20the\x20target\x20network\x20after\x20creation).');const p=new Map(),q=[];for(const [y,z]of Object['entries'](a['guards'])){const A=o==='rebuild_all'||o==='auto'&&z['references_source_service'];if(A){const B=j+'_guard_'+(p['size']+0x1);p['set'](y,B),q['push']({'name':B,'guard':z});}}const r=new Map([[normAddr(a['source']['service']),j],...a['service']['machine']?[[normAddr(a['service']['machine']),k]]:[]]),s=C=>p['get'](C)??C,t=j+'_permission';(n||!a['permission'])&&(h++,e['push']({'step':h,'op_type':'permission','description':n?'Create\x20a\x20fresh\x20Permission\x20on\x20the\x20target\x20network\x20(the\x20source\x20Permission\x20does\x20not\x20exist\x20there)':'Create\x20Permission\x20for\x20the\x20cloned\x20service\x20(source\x20service\x20carried\x20no\x20readable\x20Permission)','payload':{'object':{'name':t,'description':a['permission']?.['description']??'cloned\x20service\x20permission'}}}));const u=!n&&a['permission']?a['permission']['address']:t;for(const {name:C,guard:D}of q){const E=JSON['parse'](JSON['stringify'](D['table'])),F=rewriteTableAddresses(E,r);F>0x0&&c['push']('guard\x20'+C+':\x20rewrote\x20'+F+'\x20table\x20address\x20value(s)\x20from\x20the\x20source\x20service/machine\x20to\x20the\x20new\x20LocalMark\x20names.');const G=D['relies']['length']>0x0?{'guards':D['relies']['map'](s),'logic_or':!D['relies_logic_and']}:undefined;h++,e['push']({'step':h,'op_type':'guard','description':'Rebuild\x20guard\x20(from\x20'+D['source_address']+')'+(D['references_source_service']?'\x20—\x20table\x20referenced\x20the\x20source\x20service':''),'payload':{'namedNew':{'name':C},'description':D['description'],'table':E,'root':D['root'],...G?{'rely':G}:{}}}),f['push']({'name':C,'source_address':D['source_address'],'input':{'description':D['description'],'table':E['map'](H=>({'identifier':H['identifier'],'b_submission':H['b_submission'],'value_type':H['value_type'],'value':H['value'],'name':H['name']})),'root':D['root'],'rely':G}});}a['machine']&&(h++,e['push']({'step':h,'op_type':'machine','description':'Create\x20+\x20publish\x20Machine\x20('+a['machine']['nodes']['length']+'\x20nodes)','payload':{'object':{'name':k,'description':a['machine']['description'],'permission':u},'node':{'op':'add','bReplace':!![],'nodes':a['machine']['nodes']['map'](H=>({'name':H['name'],'pairs':H['pairs']['map'](I=>({'prev_node':I['prev_node'],'threshold':I['threshold'],'forwards':I['forwards']['map'](J=>({'name':J['name'],'weight':J['weight'],...J['guard']?{'guard':{'guard':s(J['guard']['guard']),...J['guard']['retained_submission']?{'retained_submission':J['guard']['retained_submission']}:{}}}:{},...J['namedOperator']?{'namedOperator':J['namedOperator']}:{},...J['permissionIndex']!==undefined?{'permissionIndex':J['permissionIndex']}:{}}))}))}))},'publish':!![]}}));const v=a['service']['order_allocators']?{...a['service']['order_allocators'],'allocators':a['service']['order_allocators']['allocators']['map'](H=>({...H,'guard':s(H['guard'])}))}:null;h++,e['push']({'step':h,'op_type':'service','description':'Create\x20Service\x20(unpublished)\x20—\x20payment\x20token:\x20'+l,'payload':{'object':{'name':j,'description':a['service']['description'],'type_parameter':l,'permission':u},'location':a['service']['location'],...a['service']['sales']['length']>0x0?{'sales':{'op':'add','sales':a['service']['sales']}}:{},...a['service']['customer_required']['length']>0x0?{'customer_required':a['service']['customer_required']}:{},...a['machine']?{'machine':k}:{},...v?{'order_allocators':v}:{},...a['service']['buy_guard']?{'buy_guard':s(a['service']['buy_guard'])}:{},...!n&&a['service']['arbitrations']['length']>0x0?{'arbitrations':a['service']['arbitrations']}:{},...!n&&a['service']['rewards']['length']>0x0?{'rewards':a['service']['rewards']}:{},...!n&&a['service']['repositories']['length']>0x0?{'repositories':a['service']['repositories']}:{},...!n&&a['service']['um']?{'um':a['service']['um']}:{}}});const w=a['service']['compensation_fund'],x=b['include_fund_step']===!![]&&w!=='0'&&w!==0x0&&w!==0x0n;h++,e['push']({'step':h,'op_type':'service','description':x?'Publish\x20Service\x20+\x20top\x20up\x20the\x20compensation\x20fund\x20to\x20the\x20source\x20balance':'Publish\x20Service','payload':{'object':j,'publish':!![],...x?{'compensation_fund_add':{'balance':String(w)}}:{}}});for(const H of e){H['payload']['env']={'network':m};}return{'ops':e,'rebuilt':f};}async function runCloneGate(a,b,c,f){const h=[],i=[];for(const k of a){const {env:l,...m}=k['payload'],n=k['op_type']==='machine'&&m['publish']===!![],o=k['op_type']==='service'&&(m['order_allocators']!==undefined||m['machine']!==undefined);if(!n&&!o)continue;const p=await runPrePublishChecks('onchain_operations',{'operation_type':k['op_type'],'data':m,'env':{'network':f}});h['push'](...p['critical']),i['push'](...p['warnings']);}const j=new Set((c['service']['order_allocators']?.['allocators']??[])['map'](q=>q['guard']));for(const q of b){if(!j['has'](q['source_address']))continue;const r={...q['input'],'binding_hint':{'host_object':'Service','binding_field':'order_allocators'}};try{const s=await lintGuard(r,{'auto_fix':![]});for(const t of s['diagnostics']){const u='pre_publish:\x20rebuilt\x20allocator\x20guard\x20\x22'+q['name']+'\x22\x20'+t['code']+'\x20('+t['source']+'):\x20'+t['message']+'\x20at\x20'+t['location']['path'];if(t['severity']==='error')h['push'](u);else{if(t['severity']==='warning')i['push'](u);}}}catch(v){i['push']('pre_publish:\x20rebuilt\x20allocator\x20guard\x20\x22'+q['name']+'\x22\x20lint\x20failed\x20('+(v instanceof Error?v['message']:String(v))+')\x20—\x20non-blocking');}}return{'critical':h,'warnings':i};}export async function handleServiceCloneOperation(a){const b=strictParse(ServiceCloneSchema,a,'service_clone_operation\x20input');let c;switch(b['action']){case'clone_plan':{if(!b['source_service'])throw new Error('\x27source_service\x27\x20is\x20required\x20for\x20action=\x27clone_plan\x27');const d=b['network']??await Config['Instance']()['network_get'](),e=await buildClonePlan(b['source_service'],d),f=b['overrides']??{},g=Object['keys'](f)['length']>0x0?applyOverrides(e,f):e,h=Object['values'](g['guards']);c={'action':'clone_plan','source':{'service':e['source']['service'],'network':e['source']['network'],'name':e['source']['name']},'plan':g,'overrides_applied':f,'summary':{'guard_count':h['length'],'guards_referencing_source_service':h['filter'](i=>i['references_source_service'])['length'],'machine_node_count':g['machine']?.['nodes']['length']??0x0,'sale_count':g['service']['sales']['length'],'has_order_allocators':g['service']['order_allocators']!==null,'payment_token':g['source']['token_type']}};break;}case'clone_apply':{if(!b['plan'])throw new Error('\x27plan\x27\x20is\x20required\x20for\x20action=\x27clone_apply\x27');const i=b['plan'],j=b['overrides']??{},k=[],l=i['source']['network'],m=Object['keys'](j)['length']>0x0?applyOverrides(i,j):i,n=m['source']['network'],{ops:o,rebuilt:p}=buildOperations(m,j,k,l),q=await runCloneGate(o,p,m,n);c={'action':'clone_apply','source':{'service':m['source']['service'],'network':n},'gate':{'critical':q['critical'],'warnings':q['warnings'],'passed':q['critical']['length']===0x0},'operations':o,'notes':k,'next_step':q['critical']['length']>0x0?'Fix\x20the\x20CRITICAL\x20findings\x20above,\x20then\x20re-run\x20clone_apply.':'Gate\x20passed.\x20Execute\x20the\x20operations\x20in\x20order\x20via\x20onchain_operations.'};break;}default:throw new Error('Unknown\x20service_clone_operation\x20action:\x20'+String(b['action']));}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|
|
1
|
+
import{strictParse}from'../../schema/index.js';import{ServiceCloneSchema}from'../../schema/service-clone/index.js';import{query_serviceContext,query_objects,ObjectType,Config}from'@wowok/wowok';import{runPrePublishChecks}from'../wrap.js';import{lintGuard}from'../../knowledge/guard-lint.js';function normAddr(b){const c=b['toLowerCase']();return c['startsWith']('0x')?c:'0x'+c;}function isAddressType(a){const b=a['toLowerCase']();return b==='address'||b==='1';}function isVecAddressType(a){const b=a['toLowerCase']();return b==='vecaddress'||b==='vec_address'||b==='10';}function rewriteTableAddresses(a,b){let c=0x0;for(const d of a){if(d['value']===undefined)continue;if(isAddressType(d['value_type'])&&typeof d['value']==='string'){const e=b['get'](normAddr(d['value']));e!==undefined&&(d['value']=e,c++);}else isVecAddressType(d['value_type'])&&Array['isArray'](d['value'])&&(d['value']=d['value']['map'](f=>{if(typeof f==='string'){const g=b['get'](normAddr(f));if(g!==undefined)return c++,g;}return f;}));}return c;}function tableReferences(a,b){const c=normAddr(b);for(const d of a){if(d['value']===undefined)continue;if(isAddressType(d['value_type'])&&typeof d['value']==='string'){if(normAddr(d['value'])===c)return!![];}else{if(isVecAddressType(d['value_type'])&&Array['isArray'](d['value'])){if(d['value']['some'](e=>typeof e==='string'&&normAddr(e)===c))return!![];}}}return![];}function safeStringify(a){try{return JSON['stringify'](a,(b,c)=>typeof c==='bigint'?c['toString']():c)??'';}catch{return'';}}function guardBindsAddress(a,b){const c=normAddr(b),d=c['slice'](0x2),e=safeStringify(a['root'])['toLowerCase']();return tableReferences(a['table'],c)||d['length']>=0x20&&(e['includes'](c)||e['includes'](d));}function rewriteTreeAddresses(a,b){let c=0x0;const d=e=>{if(Array['isArray'](e)){for(let f=0x0;f<e['length'];f++){const g=e[f];if(typeof g==='string'){const h=b['get'](normAddr(g));h!==undefined&&(e[f]=h,c++);}else g&&typeof g==='object'&&d(g);}return;}if(e&&typeof e==='object')for(const [j,l]of Object['entries'](e)){if(typeof l==='string'){const m=b['get'](normAddr(l));m!==undefined&&(e[j]=m,c++);}else l&&typeof l==='object'&&d(l);}};return d(a),c;}async function buildClonePlan(a,b){const c=await query_serviceContext({'service':a,'include_machine_nodes':!![],'network':b}),d=c['service'];if(!d)throw new Error('Service\x20not\x20found:\x20'+a);const f=d['object'],h=d['machine']??null,i=d['type_raw'],j=i?.['match'](/<(.+)>$/)?.[0x1]??null;let k=null;c['machine']&&c['machine_nodes']&&(k={'description':c['machine']['description']??'','permission':c['machine']['permission'],'nodes':c['machine_nodes']['map'](u=>({'name':u['name'],'pairs':(u['value']??[])['map'](v=>({'prev_node':v['prev_node'],'threshold':v['threshold'],'forwards':(v['forwards']??[])['map'](w=>({'name':w['name'],'weight':w['weight'],...w['guard']?{'guard':{'guard':w['guard']['guard'],...w['guard']['retained_submission']?{'retained_submission':w['guard']['retained_submission']}:{}}}:{},...w['namedOperator']?{'namedOperator':w['namedOperator']}:{},...w['permissionIndex']!==undefined?{'permissionIndex':w['permissionIndex']}:{}}))}))}))});const l={},m=u=>{if(!u||!u['object']||l[u['object']])return;const v=(u['table']??[])['map'](w=>({'identifier':w['identifier'],'b_submission':w['b_submission'],'value_type':String(w['value_type']),'value':w['value'],'name':w['name']??''}));l[u['object']]={'source_address':u['object'],'description':u['description']??'','table':v,'root':u['root'],'relies':u['relies']??[],'relies_logic_and':u['relies_logic_and']??!![],'references_source_service':tableReferences(v,f),'references_source_machine':h?tableReferences(v,h):![]};};m(c['buy_guard']);for(const u of c['allocator_guards']??[])m(u);for(const v of Object['values'](c['referenced']??{})){v['type']===ObjectType['Guard']&&m(v);}const n=[],o=[],q=new Set();for(const w of d['repositories']??[]){const x=(c['referenced']??{})[w],y=x?.['policies']??[];o['push']({'source_address':w,'policies':y});for(const z of y){for(const A of z['write_guard']??[]){typeof A?.['guard']==='string'&&A['guard']['length']>0x2&&q['add'](A['guard']);}}}const r=new Set(Object['keys'](l)),s=[...q]['filter'](B=>!r['has'](normAddr(B)));if(s['length']>0x0)try{const B=await query_objects({'objects':s,'network':b});for(const C of B?.['objects']??[]){C?.['type']===ObjectType['Guard']&&m(C);}}catch(D){n['push']('F-ND3:\x20could\x20not\x20fetch\x20repository\x20write-guard\x20definitions\x20('+(D instanceof Error?D['message']:String(D))+')\x20—\x20clone_apply\x20cannot\x20detect\x20or\x20rebind\x20a\x20source-bound\x20repository\x20write\x20guard.\x20Verify\x20each\x20reused\x20repository\x27s\x20policy\x20write\x20guards\x20manually.');}let t=null;if(c['permission']){const E=c['permission'];t={'address':E['object'],'description':E['description']??'','admin_count':(E['admin']??[])['length'],'entity_count':E['entity_count']??0x0};}return{'source':{'service':f,'network':b,'name':d['query_name']??null,'token_type':j},'service':{'description':d['description'],'location':d['location'],'sales':d['sales']??[],'customer_required':d['customer_required']??[],'buy_guard':d['buy_guard'],'machine':d['machine'],'permission':d['permission'],'um':d['um'],'arbitrations':d['arbitrations']??[],'rewards':d['rewards']??[],'repositories':d['repositories']??[],'order_allocators':d['order_allocators']??null,'compensation_fund':d['compensation_fund']??'0','setting_lock_duration':d['setting_lock_duration']??0x0},'machine':k,'guards':l,'repositories':o,...n['length']>0x0?{'advisories':n}:{},'permission':t};}function applyOverrides(a,b){const c=JSON['parse'](JSON['stringify'](a));if(b['token_type'])c['source']['token_type']=b['token_type'];if(b['network'])c['source']['network']=b['network'];if(b['name'])c['source']['name']=b['name'];if(b['description']!==undefined)c['service']['description']=b['description'];if(b['location']!==undefined)c['service']['location']=b['location'];if(b['sales']){const d=new Map(c['service']['sales']['map'](e=>[e['name'],e]));for(const e of b['sales']){const f=d['get'](e['name']);d['set'](e['name'],f?{...f,...e}:{...e});}c['service']['sales']=[...d['values']()];}if(b['compensation_fund']!==undefined)c['service']['compensation_fund']=b['compensation_fund'];if(b['order_allocators'])c['service']['order_allocators']=b['order_allocators'];return c;}function buildOperations(a,b,c,d){const e=[],f=[],h=[];let i=0x0;const j=(a['source']['name']??'cloned_service')['replace'](/[^a-zA-Z0-9_]/g,'_'),k=j+'_clone',l=k+'_machine',m=a['source']['token_type']??'0x2::wow::WOW',n=a['source']['network'],o=d!==undefined&&d!==a['source']['network'],q=o?'rebuild_all':b['guard_mode']??'auto';o&&c['push']('cross-network\x20clone\x20('+d+'\x20→\x20'+a['source']['network']+'):\x20no\x20on-chain\x20address\x20can\x20be\x20reused\x20—\x20every\x20guard\x20is\x20rebuilt,\x20a\x20new\x20Permission\x20is\x20created,\x20and\x20arbitration/reward/repository/contact\x20references\x20are\x20dropped\x20(rebind\x20them\x20on\x20the\x20target\x20network\x20after\x20creation).');const r=new Map(),s=[],t=a['service']['machine']??null,u=F=>{if(F['references_source_service']===!![])return!![];if(F['references_source_machine']===!![])return!![];if(guardBindsAddress(F,a['source']['service']))return!![];return t!==null&&guardBindsAddress(F,t);},v=new Map();for(const [F,G]of Object['entries'](a['guards'])){v['set'](normAddr(F),G);}const w=H=>{const I=v['get'](normAddr(H));return I!==undefined&&u(I);};for(const [H,I]of Object['entries'](a['guards'])){const J=u(I),K=q==='rebuild_all'||q==='auto'&&J;if(K){const L=k+'_guard_'+(r['size']+0x1);r['set'](H,L),s['push']({'name':L,'guard':I});}else J&&h['push']('F-ND3\x20CRITICAL:\x20guard\x20'+H+'\x20embeds\x20the\x20source\x20service/machine\x20address,\x20and\x20guard_mode=\x27reuse_all\x27\x20keeps\x20it\x20by\x20address.\x20Guards\x20are\x20immutable\x20—\x20orders\x20placed\x20on\x20the\x20clone\x20can\x20never\x20satisfy\x20a\x20binding\x20leg\x20that\x20still\x20points\x20at\x20the\x20source\x20service\x20(this\x20is\x20the\x20failure\x20behind\x20finding\x20F-ND3:\x20silently\x20blocked\x20flows).\x20Re-run\x20with\x20guard_mode=\x27auto\x27\x20(default)\x20or\x20\x27rebuild_all\x27\x20so\x20this\x20guard\x20is\x20rebuilt\x20with\x20rewritten\x20bindings.');}const x=new Map([[normAddr(a['source']['service']),k],...a['service']['machine']?[[normAddr(a['service']['machine']),l]]:[]]),y=M=>r['get'](M)??M,z=k+'_permission';(o||!a['permission'])&&(i++,e['push']({'step':i,'op_type':'permission','description':o?'Create\x20a\x20fresh\x20Permission\x20on\x20the\x20target\x20network\x20(the\x20source\x20Permission\x20does\x20not\x20exist\x20there)':'Create\x20Permission\x20for\x20the\x20cloned\x20service\x20(source\x20service\x20carried\x20no\x20readable\x20Permission)','payload':{'object':{'name':z,'description':a['permission']?.['description']??'cloned\x20service\x20permission'}}}));const A=!o&&a['permission']?a['permission']['address']:z;for(const {name:M,guard:N}of s){const O=JSON['parse'](JSON['stringify'](N['table'])),P=N['root']===undefined||N['root']===null?N['root']:JSON['parse'](JSON['stringify'](N['root'],(T,U)=>typeof U==='bigint'?U['toString']():U)),Q=rewriteTableAddresses(O,x),R=P===undefined||P===null?0x0:rewriteTreeAddresses(P,x);Q+R>0x0&&c['push']('guard\x20'+M+':\x20rewrote\x20'+(Q+R)+'\x20address\x20value(s)\x20('+Q+'\x20table,\x20'+R+'\x20root\x20tree)\x20from\x20the\x20source\x20service/machine\x20to\x20the\x20new\x20LocalMark\x20names.');const S=N['relies']['length']>0x0?{'guards':N['relies']['map'](y),'logic_or':!N['relies_logic_and']}:undefined;i++,e['push']({'step':i,'op_type':'guard','description':'Rebuild\x20guard\x20(from\x20'+N['source_address']+')'+(u(N)?'\x20—\x20bound\x20to\x20the\x20source\x20service/machine':''),'payload':{'namedNew':{'name':M},'description':N['description'],'table':O,'root':P,...S?{'rely':S}:{}}}),f['push']({'name':M,'source_address':N['source_address'],'input':{'description':N['description'],'table':O['map'](T=>({'identifier':T['identifier'],'b_submission':T['b_submission'],'value_type':T['value_type'],'value':T['value'],'name':T['name']})),'root':P,'rely':S}});}a['machine']&&(i++,e['push']({'step':i,'op_type':'machine','description':'Create\x20+\x20publish\x20Machine\x20('+a['machine']['nodes']['length']+'\x20nodes)','payload':{'object':{'name':l,'description':a['machine']['description'],'permission':A},'node':{'op':'add','bReplace':!![],'nodes':a['machine']['nodes']['map'](T=>({'name':T['name'],'pairs':T['pairs']['map'](U=>({'prev_node':U['prev_node'],'threshold':U['threshold'],'forwards':U['forwards']['map'](V=>({'name':V['name'],'weight':V['weight'],...V['guard']?{'guard':{'guard':y(V['guard']['guard']),...V['guard']['retained_submission']?{'retained_submission':V['guard']['retained_submission']}:{}}}:{},...V['namedOperator']?{'namedOperator':V['namedOperator']}:{},...V['permissionIndex']!==undefined?{'permissionIndex':V['permissionIndex']}:{}}))}))}))},'publish':!![]}}));const B=a['service']['order_allocators']?{...a['service']['order_allocators'],'allocators':a['service']['order_allocators']['allocators']['map'](T=>({...T,'guard':y(T['guard'])}))}:null;i++,e['push']({'step':i,'op_type':'service','description':'Create\x20Service\x20(unpublished)\x20—\x20payment\x20token:\x20'+m,'payload':{'object':{'name':k,'description':a['service']['description'],'type_parameter':m,'permission':A},'location':a['service']['location'],...a['service']['sales']['length']>0x0?{'sales':{'op':'add','sales':a['service']['sales']}}:{},...a['service']['customer_required']['length']>0x0?{'customer_required':a['service']['customer_required']}:{},...a['machine']?{'machine':l}:{},...B?{'order_allocators':B}:{},...a['service']['buy_guard']?{'buy_guard':y(a['service']['buy_guard'])}:{},...!o&&a['service']['arbitrations']['length']>0x0?{'arbitrations':a['service']['arbitrations']}:{},...!o&&a['service']['rewards']['length']>0x0?{'rewards':a['service']['rewards']}:{},...!o&&a['service']['repositories']['length']>0x0?{'repositories':a['service']['repositories']}:{},...!o&&a['service']['um']?{'um':a['service']['um']}:{}}});const C=a['service']['compensation_fund'],D=b['include_fund_step']===!![]&&C!=='0'&&C!==0x0&&C!==0x0n;i++,e['push']({'step':i,'op_type':'service','description':D?'Publish\x20Service\x20+\x20top\x20up\x20the\x20compensation\x20fund\x20to\x20the\x20source\x20balance':'Publish\x20Service','payload':{'object':k,'publish':!![],...D?{'compensation_fund_add':{'balance':String(C)}}:{}}});if(!o&&q!=='reuse_all')for(const T of a['repositories']??[]){const U=[];for(const V of T['policies']??[]){const W=V['write_guard']??[],X=W['some'](a0=>typeof a0?.['guard']==='string'&&r['has'](normAddr(a0['guard']))&&w(a0['guard']));if(!X)continue;const Y=JSON['parse'](JSON['stringify'](V,(a0,a1)=>typeof a1==='bigint'?a1['toString']():a1));Y['write_guard']=(Y['write_guard']??[])['map'](a0=>{const a1=typeof a0?.['guard']==='string'?r['get'](normAddr(a0['guard'])):undefined;return a1?{...a0,'guard':a1}:a0;});if(typeof Y['quote_guard']==='string'){const a0=r['get'](normAddr(Y['quote_guard']));if(a0)Y['quote_guard']=a0;}const Z=typeof V['name']==='string'&&V['name']['length']>0x0?V['name']:'policy';Y['name']=Z+'_clone',U['push']({'origName':Z,'policy':Y});}if(U['length']===0x0)continue;i++,e['push']({'step':i,'op_type':'repository','description':'Rebind\x20repository\x20'+T['source_address']+':\x20'+U['length']+'\x20policy(ies)\x20bind\x20the\x20source\x20service/machine\x20via\x20their\x20write\x20guard(s)\x20—\x20add\x20clone\x20policies\x20bound\x20to\x20the\x20rebuilt\x20guards\x20(source\x20policies\x20stay\x20intact)','payload':{'object':T['source_address'],'policies':{'op':'add','policy':U['map'](a1=>a1['policy'])}}}),c['push']('repository\x20'+T['source_address']+':\x20emitted\x20non-destructive\x20clone\x20policies\x20('+U['map'](a1=>'\x27'+String(a1['policy']['name'])+'\x27\x20from\x20\x27'+a1['origName']+'\x27')['join'](',\x20')+')\x20bound\x20to\x20the\x20rebuilt\x20guards\x20—\x20the\x20source\x20policies\x20stay\x20intact\x20for\x20the\x20source\x20service.\x20Writers\x20on\x20the\x20clone\x20must\x20use\x20the\x20clone\x20policy\x20names.\x20Requires\x20authority\x20over\x20the\x20repository\x27s\x20Permission.');}for(const a1 of e){a1['payload']['env']={'network':n};}const E=new Map();E['set'](normAddr(a['source']['service']),k);a['service']['machine']&&E['set'](normAddr(a['service']['machine']),a['machine']?l:null);for(const [a2,a3]of Object['entries'](a['guards'])){if(!u(a3))continue;E['set'](normAddr(a2),r['get'](a2)??null);}return{'ops':e,'rebuilt':f,'criticals':h,'superseded':E};}export function findSupersededConsumers(a,b){const c=[];if(b['size']===0x0)return c;const d=new Map();for(const [g,h]of b)d['set'](normAddr(g),h);const e=(i,j)=>{if(j['includes']('order_allocators'))return'allocation';if(i==='repository')return'repository_binding';return'service_binding';},f=(i,j)=>{const k=j!==null?'\x27'+j+'\x27':'the\x20rebuilt\x20object\x27s\x20LocalMark\x20name';if(i==='allocation')return'Repoint\x20the\x20allocator\x20to\x20'+k+':\x20re-run\x20clone_apply\x20with\x20guard_mode=\x27auto\x27\x20(default)\x20so\x20the\x20'+'source-bound\x20guard\x20is\x20rebuilt\x20and\x20remapped,\x20or\x20update\x20the\x20live\x20Allocation\x20via\x20'+'op_type=\x27allocation\x27\x20(order_allocators.allocators[].guard).';if(i==='repository_binding')return'Rebind\x20the\x20policy\x20to\x20'+k+':\x20emit\x20it\x20via\x20op_type=\x27repository\x27\x20with\x20policies.op=\x27add\x27\x20'+'(clone_apply\x20guard_mode=\x27auto\x27\x20emits\x20this\x20non-destructively),\x20then\x20write\x20through\x20the\x20clone\x20policy.';return'Rebind\x20the\x20service/machine\x20binding\x20to\x20'+k+':\x20re-run\x20clone_apply\x20with\x20guard_mode=\x27auto\x27,\x20or\x20'+'republish\x20the\x20live\x20Service\x20via\x20op_type=\x27service\x27\x20with\x20the\x20new\x20machine/guard\x20reference.';};for(const i of a){const j=(l,m)=>{if(typeof l==='string'){const n=normAddr(l);if(!d['has'](n))return;const o=d['get'](n)??null,p=e(i['op_type'],m);c['push']({'level':'warning','consumer_kind':p,'op_step':i['step'],'op_type':i['op_type'],'field':m,'superseded_address':l,'replacement':o,'remediation':f(p,o)});return;}if(!l||typeof l!=='object')return;if(Array['isArray'](l)){l['forEach']((q,r)=>j(q,m+'['+r+']'));return;}for(const [q,r]of Object['entries'](l)){if(q==='description'||q==='env')continue;j(r,m===''?q:m+'.'+q);}};j(i['payload'],'');}return c;}async function runCloneGate(a,b,c,f){const h=[],i=[];for(const k of a){const {env:l,...m}=k['payload'],n=k['op_type']==='machine'&&m['publish']===!![],o=k['op_type']==='service'&&(m['order_allocators']!==undefined||m['machine']!==undefined);if(!n&&!o)continue;const p=await runPrePublishChecks('onchain_operations',{'operation_type':k['op_type'],'data':m,'env':{'network':f}});h['push'](...p['critical']),i['push'](...p['warnings']);}const j=new Set((c['service']['order_allocators']?.['allocators']??[])['map'](q=>q['guard']));for(const q of b){if(!j['has'](q['source_address']))continue;const r={...q['input'],'binding_hint':{'host_object':'Service','binding_field':'order_allocators'}};try{const s=await lintGuard(r,{'auto_fix':![]});for(const t of s['diagnostics']){const u='pre_publish:\x20rebuilt\x20allocator\x20guard\x20\x22'+q['name']+'\x22\x20'+t['code']+'\x20('+t['source']+'):\x20'+t['message']+'\x20at\x20'+t['location']['path'];if(t['severity']==='error')h['push'](u);else{if(t['severity']==='warning')i['push'](u);}}}catch(v){i['push']('pre_publish:\x20rebuilt\x20allocator\x20guard\x20\x22'+q['name']+'\x22\x20lint\x20failed\x20('+(v instanceof Error?v['message']:String(v))+')\x20—\x20non-blocking');}}return{'critical':h,'warnings':i};}export async function handleServiceCloneOperation(a){const b=strictParse(ServiceCloneSchema,a,'service_clone_operation\x20input');let c;switch(b['action']){case'clone_plan':{if(!b['source_service'])throw new Error('\x27source_service\x27\x20is\x20required\x20for\x20action=\x27clone_plan\x27');const d=b['network']??await Config['Instance']()['network_get'](),e=await buildClonePlan(b['source_service'],d),f=b['overrides']??{},g=Object['keys'](f)['length']>0x0?applyOverrides(e,f):e,h=Object['values'](g['guards']),i=h['filter'](m=>m['references_source_service']||m['references_source_machine']),j=new Set(i['map'](m=>normAddr(m['source_address']))),k=(g['repositories']??[])['filter'](m=>(m['policies']??[])['some'](n=>(n['write_guard']??[])['some'](o=>typeof o?.['guard']==='string'&&j['has'](normAddr(o['guard']))))),l=[];i['length']>0x0&&l['push']('F-ND3:\x20'+i['length']+'\x20guard(s)\x20embed\x20the\x20source\x20service/machine\x20address\x20in\x20their\x20binding\x20table\x20or\x20root.\x20Under\x20guard_mode=\x27auto\x27\x20(default)\x20they\x20are\x20REBUILT\x20for\x20the\x20clone\x20with\x20those\x20bindings\x20rewritten\x20to\x20the\x20new\x20LocalMark\x20names\x20—\x20never\x20reuse\x20them\x20by\x20address:\x20guards\x20are\x20immutable,\x20and\x20the\x20clone\x27s\x20orders\x20could\x20never\x20satisfy\x20a\x20binding\x20leg\x20still\x20pointing\x20at\x20the\x20source\x20service\x20(finding\x20F-ND3:\x20silently\x20blocked\x20flows).');k['length']>0x0&&l['push']('F-ND3:\x20'+k['length']+'\x20reused\x20repository(ies)\x20carry\x20policies\x20whose\x20write\x20guards\x20bind\x20the\x20source\x20service\x20—\x20clone_apply\x20emits\x20non-destructive\x20clone\x20policies\x20bound\x20to\x20the\x20rebuilt\x20guards;\x20writers\x20on\x20the\x20clone\x20must\x20use\x20the\x20clone\x20policy\x20names.');l['push'](...g['advisories']??[]),c={'action':'clone_plan','source':{'service':e['source']['service'],'network':e['source']['network'],'name':e['source']['name']},'plan':g,'overrides_applied':f,'summary':{'guard_count':h['length'],'guards_referencing_source_service':h['filter'](m=>m['references_source_service'])['length'],'guards_referencing_source_machine':h['filter'](m=>m['references_source_machine'])['length'],'repositories_with_stale_write_guards':k['length'],'machine_node_count':g['machine']?.['nodes']['length']??0x0,'sale_count':g['service']['sales']['length'],'has_order_allocators':g['service']['order_allocators']!==null,'payment_token':g['source']['token_type']},...l['length']>0x0?{'advisories':l}:{}};break;}case'clone_apply':{if(!b['plan'])throw new Error('\x27plan\x27\x20is\x20required\x20for\x20action=\x27clone_apply\x27');const m=b['plan'],n=b['overrides']??{},o=[],p=m['source']['network'],q=Object['keys'](n)['length']>0x0?applyOverrides(m,n):m,r=q['source']['network'],{ops:s,rebuilt:t,criticals:u,superseded:v}=buildOperations(q,n,o,p),w=await runCloneGate(s,t,q,r);w['critical']['unshift'](...u);const x=findSupersededConsumers(s,v);c={'action':'clone_apply','source':{'service':q['source']['service'],'network':r},'gate':{'critical':w['critical'],'warnings':w['warnings'],'passed':w['critical']['length']===0x0},'operations':s,'superseded_consumers':{'findings':x,'note':'Post-rebuild\x20self-check\x20(4R-06②):\x20the\x20findings\x20list\x20every\x20consumer\x20reference\x20in\x20this\x20rebuild\x20'+'payload\x20that\x20still\x20points\x20at\x20an\x20address\x20the\x20rebuild\x20supersedes\x20(allocations,\x20service/machine\x20'+'bindings,\x20repository\x20policies).\x20WARNING\x20level\x20—\x20never\x20blocks\x20the\x20gate.\x20Residual:\x20the\x20MCP\x20has\x20no\x20'+'address-level\x20reverse-consumer\x20index,\x20so\x20objects\x20OUTSIDE\x20this\x20payload\x20(external\x20Allocations,\x20'+'other\x20Services,\x20repositories\x20the\x20source\x20Service\x20does\x20not\x20carry)\x20are\x20not\x20scanned;\x20after\x20'+'execution,\x20verify\x20them\x20with\x20the\x20op\x20named\x20in\x20each\x20remediation.'},'notes':o,'next_step':w['critical']['length']>0x0?'Fix\x20the\x20CRITICAL\x20findings\x20above,\x20then\x20re-run\x20clone_apply.':x['length']>0x0?'Gate\x20passed,\x20but\x20'+x['length']+'\x20consumer\x20reference(s)\x20still\x20point\x20at\x20superseded\x20addresses\x20(see\x20superseded_consumers.findings)\x20—\x20fix\x20them\x20before\x20executing,\x20then\x20run\x20the\x20operations\x20in\x20order\x20via\x20onchain_operations.':'Gate\x20passed.\x20Execute\x20the\x20operations\x20in\x20order\x20via\x20onchain_operations.'};break;}default:throw new Error('Unknown\x20service_clone_operation\x20action:\x20'+String(b['action']));}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c}};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{handleIndustryPackOperation}from'../handlers/industry-pack.js';import{handleBenchmarkMigrationOperation}from'../handlers/benchmark-migration.js';import{handleStrategyReviewOperation}from'../handlers/strategy-review.js';import{handleWorkspaceOperation}from'../handlers/workspace.js';import{handleWorkflowOperation}from'../handlers/workflow.js';import{handlePermissionOperation}from'../handlers/permission.js';import{handleServiceCloneOperation}from'../handlers/service-clone.js';import{createToolMeta,IndustryPackOperationInputSchema,IndustryPackOperationOutputSchema,BenchmarkMigrationSchema,BenchmarkMigrationOutputSchema,StrategyReviewOperationInputSchema,StrategyReviewOperationOutputSchema,WorkspaceOperationInputSchema,WorkspaceOperationOutputSchema,WorkflowOperationInputSchema,WorkflowOperationOutputSchema,PermissionOperationInputSchema,PermissionOperationOutputSchema,ServiceCloneSchema,ServiceCloneOutputSchema}from'../../schema/index.js';import{BUILTIN_TEMPLATES}from'../../knowledge/builtin-templates.js';const BUILTIN_TEMPLATE_COUNT=BUILTIN_TEMPLATES['length'],BUILTIN_INDUSTRY_COUNT=new Set(BUILTIN_TEMPLATES['map'](a=>a['industry']))['size'];export const BUSINESS_TOOLS=[{'name':'industry_pack_operation','handler':handleIndustryPackOperation,'config':{'title':'🧩\x20Industry\x20Pack\x20-\x20Knowledge\x20Template\x20Orchestration','summary':'Industry\x20knowledge\x20packs:\x20scaffold,\x20register,\x20list,\x20reset\x20templates.','description':'Manage\x20industry\x20knowledge\x20packs\x20(distributable,\x20registrable,\x20versionable\x20units\x20carrying\x20'+'one\x20industry\x27s\x20object-shape,\x20matching\x20rules,\x20and\x20role\x20personae).\x0a\x0a'+'Pack\x20layout\x20(merged\x20v2):\x20pack.json\x20(settings\x20only\x20—\x20manifest\x20+\x20match\x20+\x20personae\x20+\x20'+'dispute/compliance/supply/rules\x20sections;\x20field\x20explanations\x20live\x20in\x20the\x20industry-root\x20'+'README.md)\x20and\x20playbook.md\x20(chaptered\x20AI\x20prompt\x20guide).\x20Legacy\x20split-file\x20layouts\x20'+'(manifest.json/match.json/personae)\x20are\x20still\x20read\x20for\x20backward\x20compatibility.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20scaffold\x20—\x20generate\x20a\x20pack\x20template\x20skeleton\x20(pack.json\x20+\x20playbook.md,\x20settings\x20only)\x20'+'into\x20the\x20industry\x20directory;\x20the\x20user\x20fills\x20in\x20the\x20content.\x0a'+'\x20\x20•\x20list\x20—\x20list\x20currently\x20registered\x20packs.\x0a'+'\x20\x20•\x20scan\x20—\x20scan\x20+\x20register\x20every\x20pack\x20under\x20the\x20default\x20industry\x20directory.\x0a'+'\x20\x20?\x20template_drift\x20-\x20REPORT\x20builtin\x20template\x20files\x20whose\x20on-disk\x20body\x20differs\x20from\x20the\x20'+'in-code\x20catalog\x20(no_sentinel_legacy\x20/\x20stale_release\x20/\x20user_modified).\x20Run\x20this\x20FIRST\x20when\x20a\x20'+'template\x20change\x20appears\x20to\x20have\x20no\x20effect:\x20a\x20builtin\x20file\x20seeded\x20before\x20the\x20release\x20'+'sentinel\x20existed\x20carries\x20no\x20sentinel\x20and\x20is\x20never\x20upgraded\x20automatically.'+'\x20\x20?\x20repair_builtin_templates\x20-\x20RESEED\x20those\x20legacy\x20files\x20from\x20the\x20in-code\x20catalog.\x20'+'Identity-gated\x20on\x20a\x20known\x20builtin\x20id;\x20the\x20previous\x20body\x20is\x20kept\x20as\x20<file>.bak\x20and\x20a\x20'+'custom\x20(user)\x20template\x20is\x20never\x20touched.'+'\x20\x20•\x20resolve\x20—\x20return\x20the\x20industry\x20root\x20directory.\x0a'+'\x20\x20•\x20list_files\x20—\x20list\x20files\x20under\x20the\x20industry\x20directory.\x0a'+'\x20\x20•\x20read_file\x20—\x20read\x20a\x20file\x20under\x20the\x20industry\x20directory\x20(path\x20required).\x0a'+'\x20\x20•\x20write_file\x20—\x20write\x20content\x20to\x20a\x20file\x20under\x20the\x20industry\x20directory\x20(path\x20+\x20content\x20required).\x0a'+'\x20\x20•\x20get\x20—\x20return\x20registered\x20layer\x20data\x20for\x20an\x20industry\x20(name\x20required;\x20dispute/compliance/supply/rules/playbook).\x0a'+'\x20\x20•\x20diff\x20—\x20compare\x20registered\x20vs\x20on-disk\x20manifest\x20version/layers\x20(name\x20required).\x0a'+'\x20\x20•\x20reset\x20—\x20restore\x20a\x20file\x20or\x20entire\x20pack\x20folder\x20to\x20its\x20pristine\x20annotated\x20template\x20(path\x20required).\x0a'+'\x20\x20•\x20delete_file\x20—\x20delete\x20a\x20file\x20or\x20directory\x20(path\x20required).\x0a'+'\x20\x20•\x20create_file\x20—\x20create\x20an\x20empty\x20file\x20(path\x20required;\x20content\x20optional).\x0a'+'\x20\x20•\x20create_dir\x20—\x20create\x20a\x20directory\x20recursively\x20(path\x20required).\x0a'+'\x20\x20•\x20copy\x20—\x20copy\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20move\x20/\x20rename\x20—\x20move\x20or\x20rename\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20recommend_industry\x20—\x20business\x20intent\x20text\x20→\x20top-3\x20similar\x20industry\x20modes\x20(trait\x20similarity;\x20optional\x20strategy\x20statements\x20re-rank\x20by\x20lever\x20alignment).\x0a'+'\x20\x20•\x20list_modes\x20—\x20list\x20builtin\x20+\x20caller\x27s\x20custom\x20industry\x20modes.\x0a'+'\x20\x20•\x20derive_user_mode\x20—\x20derive\x20(and\x20register)\x20a\x20custom\x20mode\x20from\x20a\x20builtin\x20mode.\x0a'+'\x20\x20•\x20evolve_user_mode\x20—\x20iterate\x20an\x20existing\x20custom\x20mode\x20(version-bumped\x20evolution\x20history).\x0a'+'\x20\x20•\x20register_user_mode\x20—\x20register\x20a\x20fully\x20custom\x20mode\x20(machine_shape\x20+\x20key_risk\x20required).\x0a'+'\x20\x20•\x20unregister_user_mode\x20—\x20delete\x20a\x20custom\x20mode\x20(owner\x20only).\x0a'+'\x20\x20•\x20register_custom_metric\x20—\x20register\x20a\x20global\x20custom\x20evaluation\x20metric\x20(risk/benefit;\x20persisted).\x0a'+'\x20\x20•\x20unregister_custom_metric\x20—\x20delete\x20a\x20custom\x20metric\x20(custom\x20only;\x20builtin\x20metrics\x20cannot\x20be\x20deleted).\x0a'+'\x20\x20•\x20register_custom_constraint\x20—\x20register\x20a\x20custom\x20mode\x20constraint\x20(4\x20rule\x20types;\x20hard/soft;\x20persisted).\x0a'+'\x20\x20•\x20unregister_custom_constraint\x20—\x20delete\x20a\x20custom\x20constraint\x20(custom\x20only;\x20builtin\x20constraints\x20cannot\x20be\x20deleted).\x0a'+'\x20\x20•\x20list_metrics_constraints\x20—\x20list\x20metrics\x20+\x20constraints\x20(filterable\x20by\x20type/scope).\x0a\x0a'+'Local\x20filesystem\x20+\x20in-memory\x20registry\x20only;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27industry_pack_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':IndustryPackOperationInputSchema,'outputSchema':IndustryPackOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('industry_pack',['industry','pack','mode','match','persona','scaffold','template'])}},{'name':'benchmark_migration_operation','handler':handleBenchmarkMigrationOperation,'config':{'title':'🏆\x20Template\x20Migration\x20-\x20Industry\x20Templates\x20&\x20Competitor\x20Migration','summary':'MD\x20industry-archetype\x20templates\x20(hot-loaded,\x20'+BUILTIN_TEMPLATE_COUNT+'\x20built-ins)\x20+\x20pre-deploy\x20risk\x20scan\x20+\x20one-click\x20competitor\x20migration.','description':'Industry-archetype\x20MD\x20templates\x20and\x20one-click\x20competitor\x20migration\x20(V2\x20MD-template\x20architecture).\x20'+'Templates\x20live\x20in\x20`.wowok/industry/<industry>/templates/<variant>.md`\x20(the\x20client\x27s\x20industry\x20drawer\x20tree\x20—\x20hot-loaded,\x20zod-validated\x20frontmatter;\x20'+(BUILTIN_TEMPLATE_COUNT+'\x20built-in\x20archetypes\x20across\x20'+BUILTIN_INDUSTRY_COUNT+'\x20industries\x20are\x20seeded\x20idempotently\x20and\x20never\x20')+'overwritten).\x20Each\x20template\x20is\x20a\x20ScenarioMode-compatible\x20build\x20shape\x20(machine_shape\x20/\x20guards\x20/\x20'+'allocator)\x20plus\x20fee\x20parameters\x20and\x20R1-R10\x20trust\x20mechanisms.\x0a\x0a'+'Product\x20tagging:\x20every\x20built-in\x20carries\x20a\x20`product_ref`\x20benchmark\x20slug\x20(e.g.\x20retail/scale-marketplace\x20→\x20'+'\x27amazon\x27,\x20travel/global-ota\x20→\x20\x27booking-com\x27).\x20This\x20is\x20the\x20ONLY\x20sanctioned\x20company\x20name\x20—\x20it\x20lets\x20a\x20user\x20'+'pick\x20a\x20template\x20by\x20naming\x20the\x20incumbent\x20product\x20they\x20want\x20to\x20migrate\x20from.\x20When\x20the\x20user\x20names\x20a\x20product,\x20'+'call\x20template_list\x20and\x20match\x20on\x20product_ref,\x20then\x20template_generate/migration_apply\x20with\x20that\x20template_id.\x0a\x0a'+'Three\x20build\x20modes\x20(choose\x20from\x20the\x20user\x27s\x20intent):\x0a'+'\x20\x20•\x20template-driven\x20—\x20pick\x20the\x20closest\x20product_ref/industry\x20template,\x20adopt\x20it\x20as-is\x20(template_generate).\x0a'+'\x20\x20•\x20template\x20+\x20partial\x20customization\x20—\x20start\x20from\x20a\x20template,\x20then\x20override\x20fee_params\x20(fee_overrides)\x20or\x20'+'edit\x20the\x20MD\x20file\x20via\x20industry_pack_operation\x20write_file\x20before\x20generating.\x0a'+'\x20\x20•\x20fully\x20custom\x20—\x20skip\x20templates;\x20drive\x20the\x20merchant-guide\x20pipeline\x20from\x20a\x20free-text\x20description.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20template_list\x20—\x20list\x20the\x20loaded\x20MD\x20templates\x20(optional\x20industry\x20filter;\x20rows\x20carry\x20product_ref);\x20load\x20errors\x20are\x20'+'reported,\x20never\x20silently\x20dropped.\x0a'+'\x20\x20•\x20template_get\x20—\x20fetch\x20one\x20template\x20by\x20template_id\x20(full\x20machine_shape/guards/allocator/'+'fee_params/trust_mechanisms/body).\x0a'+'\x20\x20•\x20template_generate\x20—\x20generate\x20a\x20creation\x20plan\x20from\x20a\x20template\x20via\x20the\x20merchant-guide\x20pipeline\x20'+'(template_id\x20required;\x20scan-first\x20—\x20CRITICAL\x20findings\x20block;\x20description\x20optional\x20as\x20the\x20intent\x20'+'text;\x20fee_overrides\x20optional;\x20never\x20executes\x20on-chain).\x0a'+'\x20\x20•\x20template_scan\x20—\x20pre-deploy\x20risk\x20scan\x20of\x20one\x20template\x20(template_id\x20required):\x20synthetic\x20draft\x20'+'topology\x20through\x20the\x20same\x20rule\x20surface\x20as\x20on-chain\x20analyze\x20+\x20static\x20R1-R10\x20checks;\x20returns\x20'+'risk_level/findings/red_flags\x20plus\x20a\x20drift\x20face\x20(disk-vs-catalog\x20provenance\x20of\x20the\x20scanned\x20'+'body\x20—\x20blocked=true\x20means\x20the\x20audited\x20body\x20is\x20not\x20the\x20shipped\x20catalog\x20body)\x20and\x20a\x20compile\x20'+'dry-run\x20verdict\x20(compile_dry_run.status\x20ready/blocked/unavailable\x20—\x20synthetic-probe\x20'+'buildability\x20through\x20the\x20same\x20pipeline\x20template_generate\x20uses,\x20mirrored\x20to\x20the\x20'+'generate\x20gate:\x20CRITICAL\x20+\x20N-21\x20HIGH\x20findings\x20+\x20graph\x20+\x20audit\x20blockers;\x20blocked\x20lists\x20'+'the\x20named\x20rules\x20the\x20generate\x20face\x20would\x20refuse\x20on);\x20CRITICAL\x20blocks\x20generation/apply.\x0a'+'\x20\x20•\x20migration_import\x20—\x20competitor\x20URL/description\x20→\x20structured\x20MigrationLog:\x20mapped\x20/\x20'+'unmapped\x20/\x20manual_review\x20entries,\x20WoWok\x20advantages,\x20customizable\x20modules,\x20role\x20assessment\x20'+'and\x20a\x20dry-run\x20risk\x20check\x20(description\x20required;\x20url\x20recorded\x20as\x20provenance\x20only;\x20default\x20'+'network\x20testnet).\x0a'+'\x20\x20•\x20migration_review\x20—\x20surface\x20a\x20prior\x20MigrationLog\x20with\x20counts\x20+\x20risk\x20status\x20for\x20user\x20'+'confirmation\x20(log\x20required).\x0a'+'\x20\x20•\x20migration_apply\x20—\x20run\x20the\x20approved\x20template\x20through\x20the\x20merchant-guide\x20pipeline\x20'+'(template_id\x20required;\x20scan-first\x20—\x20CRITICAL\x20findings\x20block;\x20creation\x20plan\x20only\x20—\x20never\x20executes\x20'+'on-chain;\x20default\x20network\x20testnet,\x20mainnet\x20requires\x20explicit\x20user\x20confirmation).\x0a\x0a'+'Deterministic\x20knowledge\x20lookups\x20+\x20planning;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27benchmark_migration_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':BenchmarkMigrationSchema,'outputSchema':BenchmarkMigrationOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('benchmark_migration',['template','migration','competitor','industry','leader','challenger','scan','risk'])}},{'name':'service_clone_operation','handler':handleServiceCloneOperation,'config':{'title':'🧬\x20Service\x20Clone\x20-\x20Rebuild\x20On-chain\x20Services','summary':'Read\x20an\x20existing\x20Service\x27s\x20full\x20configuration\x20and\x20rebuild\x20it\x20as\x20a\x20new\x20object\x20with\x20optional\x20overrides\x20(token,\x20network,\x20fees).','description':'Clone\x20an\x20existing\x20on-chain\x20Service\x20into\x20a\x20new\x20object.\x20'+'Two\x20actions:\x0a'+'\x20\x20•\x20clone_plan\x20—\x20read\x20the\x20source\x20Service\x20(service\x20fields,\x20machine\x20graph,\x20guards,\x20permission,\x20'+'allocators)\x20and\x20emit\x20a\x20reconstruction\x20plan.\x20Optional\x20overrides:\x20token_type\x20(change\x20payment\x20'+'token),\x20network\x20(target\x20network),\x20description,\x20location,\x20sales,\x20compensation_fund,\x20'+'order_allocators.\x20Never\x20executes\x20on-chain.\x0a'+'\x20\x20•\x20clone_apply\x20—\x20take\x20a\x20prior\x20clone_plan\x20(possibly\x20user-edited),\x20apply\x20overrides,\x20run\x20the\x20'+'pre-publish\x20gate\x20(machine\x20topology,\x20allocator\x20guard\x20lint,\x20immutability\x20warnings),\x20and\x20emit\x20'+'the\x20exact\x20onchain_operations\x20payloads\x20in\x20execution\x20order.\x20Never\x20executes\x20on-chain.\x0a\x0a'+'Workflow:\x20clone_plan\x20→\x20review/edit\x20the\x20plan\x20→\x20clone_apply\x20→\x20review\x20gate\x20findings\x20→\x20execute\x20'+'the\x20operations\x20via\x20onchain_operations.\x0a\x0a'+'Deterministic\x20knowledge\x20lookups\x20+\x20planning;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27service_clone_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':ServiceCloneSchema,'outputSchema':ServiceCloneOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('service_clone',['clone','service','rebuild','token','network','migrate'])}},{'name':'strategy_review_operation','handler':handleStrategyReviewOperation,'config':{'title':'📈\x20Strategy\x20Review\x20-\x20Posture-Weighted\x20Scorecard\x20&\x20Periodic\x20Review','summary':'Collect\x20on-chain/derived\x20evidence\x20for\x20an\x20(account,\x20industry),\x20snapshot\x20it\x20locally,\x20and\x20assemble\x20posture-weighted\x20strategy\x20reviews\x20with\x20current-layer\x20persona\x20proposals.','description':'Evidence-driven\x20operating\x20review\x20for\x20one\x20merchant\x20account\x20in\x20one\x20industry,\x20built\x20on\x20the\x20six-industry\x20'+'strategy\x20catalog\x20(education/rental/freelance/subscription/travel/retail\x20+\x20pack-registered\x20ids).\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20collect\x20—\x20gather\x20fresh\x20evidence\x20(journey\x20funnel,\x20order\x20flow,\x20market\x20metrics,\x20service\x20discovery\x20/\x20'+'competitor\x20count,\x20arbitration\x20trust,\x20account\x20attention),\x20persist\x20ONE\x20append-only\x20snapshot\x20in\x20local\x20'+'SQLite\x20KV,\x20and\x20return\x20the\x20raw\x20collection.\x20Failed\x20evidence\x20sources\x20degrade\x20single\x20metrics\x20to\x20'+'unavailable/error\x20—\x20never\x20zero-filled;\x20storage\x20failure\x20is\x20fail-soft\x20and\x20never\x20loses\x20the\x20collection.\x0a'+'\x20\x20•\x20review\x20—\x20gather\x20fresh\x20evidence\x20WITHOUT\x20persisting,\x20diff\x20against\x20the\x20latest\x20stored\x20snapshot,\x20'+'score\x200–100\x20under\x20the\x20persona\x27s\x20merchant\x20posture\x20(volume/balanced/margin,\x20renormalized\x20over\x20'+'available\x20anchored\x20metrics),\x20and\x20return\x20findings,\x20deterministic\x20pricing/posture\x20recommendations,\x20'+'cadence\x20status\x20and\x20at\x20most\x20two\x20persona\x20proposals.\x20Proposals\x20target\x20the\x20CURRENT\x20layer\x20ONLY\x20and\x20are\x20'+'applied\x20only\x20when\x20the\x20user\x20explicitly\x20calls\x20persona_operation\x20apply\x20—\x20this\x20tool\x20never\x20writes\x20the\x20'+'persona\x20and\x20never\x20mutates\x20chain\x20state.\x0a'+'\x20\x20•\x20list_snapshots\x20—\x20list\x20stored\x20snapshot\x20summaries\x20(oldest-first)\x20for\x20account+industry.\x0a\x0a'+'Posture\x20defaults:\x20explicit\x20`posture`\x20arg\x20→\x20merchant\x20posture\x20in\x20the\x20effective\x20persona\x20→\x20\x27balanced\x27.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27strategy_review_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':StrategyReviewOperationInputSchema,'outputSchema':StrategyReviewOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':!![]},'_meta':createToolMeta('strategy',['strategy','scorecard','review','posture','metrics','industry','competitor','retention','dispute'])},'timeoutMs':0x1d4c0},{'name':'workspace_operation','handler':handleWorkspaceOperation,'config':{'title':'📁\x20Workspace\x20-\x20File\x20Generation\x20&\x20User\x20Data','summary':'Local\x20workspace\x20files:\x20list,\x20read,\x20search,\x20glob,\x20edit,\x20write,\x20move,\x20copy,\x20delete.','description':'Manage\x20the\x20local\x20workspace\x20directory\x20(`.wowok/workspace`):\x20files\x20generated\x20for\x20review\x20'+'(machine/guard/wts/wip\x20JSON)\x20and\x20user-created\x20documents.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20resolve\x20—\x20return\x20the\x20workspace\x20root\x20directory.\x0a'+'\x20\x20•\x20list\x20—\x20list\x20files\x20under\x20the\x20workspace.\x0a'+'\x20\x20•\x20read\x20—\x20read\x20a\x20file\x27s\x20content\x20(use\x20as\x20AI\x20context);\x20optional\x20offset/limit\x20line\x20slicing\x20'+'(1-based\x20offset,\x20max\x202000\x20lines)\x20and\x20encoding=\x27base64\x27\x20for\x20raw\x20bytes\x20(≤10MB).\x0a'+'\x20\x20•\x20search\x20—\x20regex\x20content\x20search\x20across\x20workspace\x20files\x20(pattern\x20required;\x20optional\x20path\x20scope,\x20'+'glob\x20basename\x20filter,\x20ignore_case,\x20max_results\x20≤200,\x20context_lines\x20≤5).\x20Skips\x20binary/large\x20files.\x0a'+'\x20\x20•\x20glob\x20—\x20list\x20files\x20whose\x20workspace-relative\x20path\x20matches\x20a\x20wildcard\x20pattern\x20(\x27**\x27\x20spans\x20'+'directories,\x20\x27*\x27\x20stays\x20within\x20one\x20segment,\x20\x27?\x27\x20=\x20one\x20char,\x20\x27{a,b}\x27\x20alternation).\x0a'+'\x20\x20•\x20edit\x20—\x20exact\x20string\x20replacement\x20inside\x20a\x20file\x20(path\x20+\x20old_string\x20+\x20new_string\x20required;\x20'+'errors\x20when\x20old_string\x20is\x20not\x20unique\x20unless\x20replace_all=true;\x20files\x20≤2MB).\x0a'+'\x20\x20•\x20write\x20—\x20write/overwrite\x20a\x20file\x20(path\x20+\x20content).\x0a'+'\x20\x20•\x20delete\x20—\x20delete\x20a\x20file.\x0a'+'\x20\x20•\x20create_file\x20—\x20create\x20an\x20empty\x20file\x20(path\x20required;\x20content\x20optional).\x0a'+'\x20\x20•\x20create_dir\x20—\x20create\x20a\x20directory\x20recursively\x20(path\x20required).\x0a'+'\x20\x20•\x20copy\x20—\x20copy\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20move\x20—\x20move\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20rename\x20—\x20rename\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a\x0a'+'Local\x20filesystem\x20only;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27workspace_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':WorkspaceOperationInputSchema,'outputSchema':WorkspaceOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('workspace',['workspace','file','document','machine','guard','wts','wip','context'])}},{'name':'workflow_operation','handler':handleWorkflowOperation,'config':{'title':'🔀\x20Workflow\x20-\x20Local-Account\x20Progress\x20Tasks','summary':'List\x20local-account\x20progress\x20(actionable\x20+\x20related/history)\x20+\x20advance/hold/unhold\x20forwards\x20+\x20view\x20progress\x20history.','description':'Local-account\x20workflow\x20view\x20over\x20on-chain\x20Progress\x20objects.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20progress\x20related\x20to\x20local\x20accounts:\x20actionable\x20first\x20(a\x20'+'local\x20account\x20can\x20advance\x20a\x20forward),\x20plus\x20related\x20/\x20completed\x20progress\x20(order\x20'+'holder,\x20named\x20operator,\x20or\x20session\x20operator\x20involvement)\x20so\x20the\x20user\x20always\x20'+'keeps\x20visibility\x20of\x20their\x20own\x20progress\x20history.\x20Each\x20task\x20carries\x20every\x20'+'reachable\x20next\x20node\x20+\x20forward,\x20the\x20local\x20accounts\x20that\x20can\x20execute\x20each\x20'+'forward\x20(order\x20holder\x20/\x20named\x20operator\x20/\x20permission\x20index,\x20including\x20admin),\x20'+'guard\x20reminders\x20(a\x20forward\x20with\x20a\x20guard\x20must\x20be\x20verified\x20via\x20passport),\x20and\x20'+'the\x20on-chain\x20history_count.\x0a'+'\x20\x20•\x20operate\x20—\x20advance\x20(\x27next\x27)\x20/\x20block\x20(\x27hold\x27)\x20/\x20release\x20(\x27unhold\x27)\x20/\x20force-release\x20'+'(\x27adminUnhold\x27)\x20a\x20forward\x20as\x20a\x20chosen\x20local\x20account\x20(env.account).\x20Delegates\x20to\x20the\x20'+'on-chain\x20progress\x20operation\x20(guard-aware).\x0a'+'\x20\x20•\x20history\x20—\x20incrementally\x20sync\x20a\x20progress\x27s\x20ON-CHAIN\x20history\x20(Progress.history\x20'+'append-only\x20u64\x20index)\x20into\x20the\x20local\x20SQLite\x20mirror\x20via\x20a\x20per-progress\x20cursor\x20'+'(only\x20NEW\x20records\x20are\x20pulled),\x20then\x20return\x20the\x20migration\x20timeline\x20(newest\x20first)\x20'+'with\x20each\x20migration\x27s\x20session\x20snapshot\x20(forwards\x20/\x20operator\x20address\x20/\x20weight\x20/\x20time).\x20'+'Also\x20runs\x20a\x2090-day\x20retention\x20cleanup\x20of\x20stale\x20progress\x20histories\x20by\x20default.\x0a\x0a'+'Permission\x20model\x20(chain-authoritative):\x20a\x20forward\x20is\x20executable\x20by\x20an\x20account\x20when\x20'+'(a)\x20namedOperator=\x22\x22\x20and\x20the\x20account\x20is\x20the\x20order\x20holder\x20(order\x20builder\x20or\x20agent),\x20'+'or\x20(b)\x20namedOperator=name\x20and\x20the\x20account\x20is\x20in\x20progress.namedOperator[name],\x20or\x20'+'(c)\x20permissionIndex\x20is\x20set\x20and\x20the\x20account\x20is\x20in\x20permission.admin\x20or\x20permission.table.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27workflow_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':WorkflowOperationInputSchema,'outputSchema':WorkflowOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![],'openWorldHint':!![]},'_meta':createToolMeta('workflow',['workflow','progress','forward','permission','named-operator','guard','advance','hold'])},'timeoutMs':0x1d4c0},{'name':'permission_operation','handler':handlePermissionOperation,'config':{'title':'🛡️\x20Permissions\x20-\x20Local-Account\x20Overview','summary':'List\x20Permissions\x20related\x20to\x20local\x20accounts\x20with\x20related\x20accounts/objects.','description':'Local-account\x20Permission\x20overview.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20every\x20on-chain\x20Permission\x20object\x20related\x20to\x20at\x20least\x20one\x20LOCAL\x20'+'account\x20(reverse-looked-up\x20via\x20the\x20global\x20entity_permission\x20index\x20@0xaad),\x20deduplicated\x20'+'and\x20merged.\x20Each\x20row\x20includes\x20description,\x20owner,\x20latest\x20on-chain\x20update\x20time,\x20related\x20'+'accounts\x20(owner/admin/entity),\x20and\x20related\x20objects\x20(grouped\x20by\x20type\x20via\x20the\x20registrar\x20'+'linker).\x20Pass\x20`permission`\x20to\x20scope\x20the\x20listing\x20to\x20ONE\x20Permission\x20address\x20—\x20fast\x20path\x20'+'(metadata\x20+\x20local-account\x20roles\x20only;\x20skips\x20the\x20per-permission\x20linker/tx-time\x20fan-out)\x20'+'for\x20detail-page\x20Permission\x20rows.\x0a\x0a'+'Read-only\x20(no\x20on-chain\x20mutation).\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27permission_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':PermissionOperationInputSchema,'outputSchema':PermissionOperationOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('query',['permission','account','role','owner','admin','entity','overview','registrar','reverse-index'])}}];
|
|
1
|
+
import{handleIndustryPackOperation}from'../handlers/industry-pack.js';import{handleBenchmarkMigrationOperation}from'../handlers/benchmark-migration.js';import{handleStrategyReviewOperation}from'../handlers/strategy-review.js';import{handleWorkspaceOperation}from'../handlers/workspace.js';import{handleWorkflowOperation}from'../handlers/workflow.js';import{handlePermissionOperation}from'../handlers/permission.js';import{handleServiceCloneOperation}from'../handlers/service-clone.js';import{createToolMeta,IndustryPackOperationInputSchema,IndustryPackOperationOutputSchema,BenchmarkMigrationSchema,BenchmarkMigrationOutputSchema,StrategyReviewOperationInputSchema,StrategyReviewOperationOutputSchema,WorkspaceOperationInputSchema,WorkspaceOperationOutputSchema,WorkflowOperationInputSchema,WorkflowOperationOutputSchema,PermissionOperationInputSchema,PermissionOperationOutputSchema,ServiceCloneSchema,ServiceCloneOutputSchema}from'../../schema/index.js';import{BUILTIN_TEMPLATES}from'../../knowledge/builtin-templates.js';const BUILTIN_TEMPLATE_COUNT=BUILTIN_TEMPLATES['length'],BUILTIN_INDUSTRY_COUNT=new Set(BUILTIN_TEMPLATES['map'](a=>a['industry']))['size'];export const BUSINESS_TOOLS=[{'name':'industry_pack_operation','handler':handleIndustryPackOperation,'config':{'title':'🧩\x20Industry\x20Pack\x20-\x20Knowledge\x20Template\x20Orchestration','summary':'Industry\x20knowledge\x20packs:\x20scaffold,\x20register,\x20list,\x20reset\x20templates.','description':'Manage\x20industry\x20knowledge\x20packs\x20(distributable,\x20registrable,\x20versionable\x20units\x20carrying\x20'+'one\x20industry\x27s\x20object-shape,\x20matching\x20rules,\x20and\x20role\x20personae).\x0a\x0a'+'Pack\x20layout\x20(merged\x20v2):\x20pack.json\x20(settings\x20only\x20—\x20manifest\x20+\x20match\x20+\x20personae\x20+\x20'+'dispute/compliance/supply/rules\x20sections;\x20field\x20explanations\x20live\x20in\x20the\x20industry-root\x20'+'README.md)\x20and\x20playbook.md\x20(chaptered\x20AI\x20prompt\x20guide).\x20Legacy\x20split-file\x20layouts\x20'+'(manifest.json/match.json/personae)\x20are\x20still\x20read\x20for\x20backward\x20compatibility.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20scaffold\x20—\x20generate\x20a\x20pack\x20template\x20skeleton\x20(pack.json\x20+\x20playbook.md,\x20settings\x20only)\x20'+'into\x20the\x20industry\x20directory;\x20the\x20user\x20fills\x20in\x20the\x20content.\x0a'+'\x20\x20•\x20list\x20—\x20list\x20currently\x20registered\x20packs.\x0a'+'\x20\x20•\x20scan\x20—\x20scan\x20+\x20register\x20every\x20pack\x20under\x20the\x20default\x20industry\x20directory.\x0a'+'\x20\x20?\x20template_drift\x20-\x20REPORT\x20builtin\x20template\x20files\x20whose\x20on-disk\x20body\x20differs\x20from\x20the\x20'+'in-code\x20catalog\x20(no_sentinel_legacy\x20/\x20stale_release\x20/\x20user_modified).\x20Run\x20this\x20FIRST\x20when\x20a\x20'+'template\x20change\x20appears\x20to\x20have\x20no\x20effect:\x20a\x20builtin\x20file\x20seeded\x20before\x20the\x20release\x20'+'sentinel\x20existed\x20carries\x20no\x20sentinel\x20and\x20is\x20never\x20upgraded\x20automatically.'+'\x20\x20?\x20repair_builtin_templates\x20-\x20RESEED\x20those\x20legacy\x20files\x20from\x20the\x20in-code\x20catalog.\x20'+'Identity-gated\x20on\x20a\x20known\x20builtin\x20id;\x20the\x20previous\x20body\x20is\x20kept\x20as\x20<file>.bak\x20and\x20a\x20'+'custom\x20(user)\x20template\x20is\x20never\x20touched.'+'\x20\x20•\x20resolve\x20—\x20return\x20the\x20industry\x20root\x20directory.\x0a'+'\x20\x20•\x20list_files\x20—\x20list\x20files\x20under\x20the\x20industry\x20directory.\x0a'+'\x20\x20•\x20read_file\x20—\x20read\x20a\x20file\x20under\x20the\x20industry\x20directory\x20(path\x20required).\x0a'+'\x20\x20•\x20write_file\x20—\x20write\x20content\x20to\x20a\x20file\x20under\x20the\x20industry\x20directory\x20(path\x20+\x20content\x20required).\x0a'+'\x20\x20•\x20get\x20—\x20return\x20registered\x20layer\x20data\x20for\x20an\x20industry\x20(name\x20required;\x20dispute/compliance/supply/rules/playbook).\x0a'+'\x20\x20•\x20diff\x20—\x20compare\x20registered\x20vs\x20on-disk\x20manifest\x20version/layers\x20(name\x20required).\x0a'+'\x20\x20•\x20reset\x20—\x20restore\x20a\x20file\x20or\x20entire\x20pack\x20folder\x20to\x20its\x20pristine\x20annotated\x20template\x20(path\x20required).\x0a'+'\x20\x20•\x20delete_file\x20—\x20delete\x20a\x20file\x20or\x20directory\x20(path\x20required).\x0a'+'\x20\x20•\x20create_file\x20—\x20create\x20an\x20empty\x20file\x20(path\x20required;\x20content\x20optional).\x0a'+'\x20\x20•\x20create_dir\x20—\x20create\x20a\x20directory\x20recursively\x20(path\x20required).\x0a'+'\x20\x20•\x20copy\x20—\x20copy\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20move\x20/\x20rename\x20—\x20move\x20or\x20rename\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20recommend_industry\x20—\x20business\x20intent\x20text\x20→\x20top-3\x20similar\x20industry\x20modes\x20(trait\x20similarity;\x20optional\x20strategy\x20statements\x20re-rank\x20by\x20lever\x20alignment).\x0a'+'\x20\x20•\x20list_modes\x20—\x20list\x20builtin\x20+\x20caller\x27s\x20custom\x20industry\x20modes.\x0a'+'\x20\x20•\x20derive_user_mode\x20—\x20derive\x20(and\x20register)\x20a\x20custom\x20mode\x20from\x20a\x20builtin\x20mode.\x0a'+'\x20\x20•\x20evolve_user_mode\x20—\x20iterate\x20an\x20existing\x20custom\x20mode\x20(version-bumped\x20evolution\x20history).\x0a'+'\x20\x20•\x20register_user_mode\x20—\x20register\x20a\x20fully\x20custom\x20mode\x20(machine_shape\x20+\x20key_risk\x20required).\x0a'+'\x20\x20•\x20unregister_user_mode\x20—\x20delete\x20a\x20custom\x20mode\x20(owner\x20only).\x0a'+'\x20\x20•\x20register_custom_metric\x20—\x20register\x20a\x20global\x20custom\x20evaluation\x20metric\x20(risk/benefit;\x20persisted).\x0a'+'\x20\x20•\x20unregister_custom_metric\x20—\x20delete\x20a\x20custom\x20metric\x20(custom\x20only;\x20builtin\x20metrics\x20cannot\x20be\x20deleted).\x0a'+'\x20\x20•\x20register_custom_constraint\x20—\x20register\x20a\x20custom\x20mode\x20constraint\x20(4\x20rule\x20types;\x20hard/soft;\x20persisted).\x0a'+'\x20\x20•\x20unregister_custom_constraint\x20—\x20delete\x20a\x20custom\x20constraint\x20(custom\x20only;\x20builtin\x20constraints\x20cannot\x20be\x20deleted).\x0a'+'\x20\x20•\x20list_metrics_constraints\x20—\x20list\x20metrics\x20+\x20constraints\x20(filterable\x20by\x20type/scope).\x0a\x0a'+'Local\x20filesystem\x20+\x20in-memory\x20registry\x20only;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27industry_pack_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':IndustryPackOperationInputSchema,'outputSchema':IndustryPackOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('industry_pack',['industry','pack','mode','match','persona','scaffold','template'])}},{'name':'benchmark_migration_operation','handler':handleBenchmarkMigrationOperation,'config':{'title':'🏆\x20Template\x20Migration\x20-\x20Industry\x20Templates\x20&\x20Competitor\x20Migration','summary':'MD\x20industry-archetype\x20templates\x20(hot-loaded,\x20'+BUILTIN_TEMPLATE_COUNT+'\x20built-ins)\x20+\x20pre-deploy\x20risk\x20scan\x20+\x20one-click\x20competitor\x20migration.','description':'Industry-archetype\x20MD\x20templates\x20and\x20one-click\x20competitor\x20migration\x20(V2\x20MD-template\x20architecture).\x20'+'Templates\x20live\x20in\x20`.wowok/industry/<industry>/templates/<variant>.md`\x20(the\x20client\x27s\x20industry\x20drawer\x20tree\x20—\x20hot-loaded,\x20zod-validated\x20frontmatter;\x20'+(BUILTIN_TEMPLATE_COUNT+'\x20built-in\x20archetypes\x20across\x20'+BUILTIN_INDUSTRY_COUNT+'\x20industries\x20are\x20seeded\x20idempotently\x20and\x20never\x20')+'overwritten).\x20Each\x20template\x20is\x20a\x20ScenarioMode-compatible\x20build\x20shape\x20(machine_shape\x20/\x20guards\x20/\x20'+'allocator)\x20plus\x20fee\x20parameters\x20and\x20R1-R10\x20trust\x20mechanisms.\x0a\x0a'+'Product\x20tagging:\x20every\x20built-in\x20carries\x20a\x20`product_ref`\x20benchmark\x20slug\x20(e.g.\x20retail/scale-marketplace\x20→\x20'+'\x27amazon\x27,\x20travel/global-ota\x20→\x20\x27booking-com\x27).\x20This\x20is\x20the\x20ONLY\x20sanctioned\x20company\x20name\x20—\x20it\x20lets\x20a\x20user\x20'+'pick\x20a\x20template\x20by\x20naming\x20the\x20incumbent\x20product\x20they\x20want\x20to\x20migrate\x20from.\x20When\x20the\x20user\x20names\x20a\x20product,\x20'+'call\x20template_list\x20and\x20match\x20on\x20product_ref,\x20then\x20template_generate/migration_apply\x20with\x20that\x20template_id.\x0a\x0a'+'Three\x20build\x20modes\x20(choose\x20from\x20the\x20user\x27s\x20intent):\x0a'+'\x20\x20•\x20template-driven\x20—\x20pick\x20the\x20closest\x20product_ref/industry\x20template,\x20adopt\x20it\x20as-is\x20(template_generate).\x0a'+'\x20\x20•\x20template\x20+\x20partial\x20customization\x20—\x20start\x20from\x20a\x20template,\x20then\x20override\x20fee_params\x20(fee_overrides)\x20or\x20'+'edit\x20the\x20MD\x20file\x20via\x20industry_pack_operation\x20write_file\x20before\x20generating.\x0a'+'\x20\x20•\x20fully\x20custom\x20—\x20skip\x20templates;\x20drive\x20the\x20merchant-guide\x20pipeline\x20from\x20a\x20free-text\x20description.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20template_list\x20—\x20list\x20the\x20loaded\x20MD\x20templates\x20(optional\x20industry\x20filter;\x20rows\x20carry\x20product_ref);\x20load\x20errors\x20are\x20'+'reported,\x20never\x20silently\x20dropped.\x0a'+'\x20\x20•\x20template_get\x20—\x20fetch\x20one\x20template\x20by\x20template_id\x20(full\x20machine_shape/guards/allocator/'+'fee_params/trust_mechanisms/body).\x0a'+'\x20\x20•\x20template_generate\x20—\x20generate\x20a\x20creation\x20plan\x20from\x20a\x20template\x20via\x20the\x20merchant-guide\x20pipeline\x20'+'(template_id\x20required;\x20scan-first\x20—\x20CRITICAL\x20findings\x20block;\x20description\x20optional\x20as\x20the\x20intent\x20'+'text;\x20fee_overrides\x20optional;\x20never\x20executes\x20on-chain).\x0a'+'\x20\x20•\x20plan_execute\x20—\x20execute\x20the\x20plan\x20returned\x20by\x20template_generate\x20in\x20ONE\x20call\x20(plan\x20required):\x20'+'materializes\x20every\x20step\x20in\x20order\x20through\x20the\x20built-in\x20executor\x20(chain\x20writes).\x20On\x20a\x20mid-plan\x20'+'failure\x20the\x20response\x20reports\x20completed_steps\x20+\x20outputs\x20—\x20retry\x20by\x20passing\x20the\x20SAME\x20plan\x20with\x20'+'completed_steps/previous_outputs\x20to\x20RESUME\x20where\x20it\x20halted\x20(never\x20re-run\x20from\x20scratch:\x20the\x20'+'already-created\x20objects\x20would\x20duplicate).\x0a'+'\x20\x20•\x20template_scan\x20—\x20pre-deploy\x20risk\x20scan\x20of\x20one\x20template\x20(template_id\x20required):\x20synthetic\x20draft\x20'+'topology\x20through\x20the\x20same\x20rule\x20surface\x20as\x20on-chain\x20analyze\x20+\x20static\x20R1-R10\x20checks;\x20returns\x20'+'risk_level/findings/red_flags\x20plus\x20a\x20drift\x20face\x20(disk-vs-catalog\x20provenance\x20of\x20the\x20scanned\x20'+'body\x20—\x20blocked=true\x20means\x20the\x20audited\x20body\x20is\x20not\x20the\x20shipped\x20catalog\x20body)\x20and\x20a\x20compile\x20'+'dry-run\x20verdict\x20(compile_dry_run.status\x20ready/blocked/unavailable\x20—\x20synthetic-probe\x20'+'buildability\x20through\x20the\x20same\x20pipeline\x20template_generate\x20uses,\x20mirrored\x20to\x20the\x20'+'generate\x20gate:\x20CRITICAL\x20+\x20N-21\x20HIGH\x20findings\x20+\x20graph\x20+\x20audit\x20blockers;\x20blocked\x20lists\x20'+'the\x20named\x20rules\x20the\x20generate\x20face\x20would\x20refuse\x20on);\x20CRITICAL\x20blocks\x20generation/apply.\x0a'+'\x20\x20•\x20migration_import\x20—\x20competitor\x20URL/description\x20→\x20structured\x20MigrationLog:\x20mapped\x20/\x20'+'unmapped\x20/\x20manual_review\x20entries,\x20WoWok\x20advantages,\x20customizable\x20modules,\x20role\x20assessment\x20'+'and\x20a\x20dry-run\x20risk\x20check\x20(description\x20required;\x20url\x20recorded\x20as\x20provenance\x20only;\x20default\x20'+'network\x20testnet).\x0a'+'\x20\x20•\x20migration_review\x20—\x20surface\x20a\x20prior\x20MigrationLog\x20with\x20counts\x20+\x20risk\x20status\x20for\x20user\x20'+'confirmation\x20(log\x20required).\x0a'+'\x20\x20•\x20migration_apply\x20—\x20run\x20the\x20approved\x20template\x20through\x20the\x20merchant-guide\x20pipeline\x20'+'(template_id\x20required;\x20scan-first\x20—\x20CRITICAL\x20findings\x20block;\x20creation\x20plan\x20only\x20—\x20never\x20executes\x20'+'on-chain;\x20default\x20network\x20testnet,\x20mainnet\x20requires\x20explicit\x20user\x20confirmation).\x0a\x0a'+'Deterministic\x20planning;\x20only\x20plan_execute\x20writes\x20chain\x20state\x20(its\x20plan\x27s\x20steps)\x20—\x20every\x20other\x20action\x20is\x20a\x20read/plan\x20emission.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27benchmark_migration_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':BenchmarkMigrationSchema,'outputSchema':BenchmarkMigrationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('benchmark_migration',['template','migration','competitor','industry','leader','challenger','scan','risk'])}},{'name':'service_clone_operation','handler':handleServiceCloneOperation,'config':{'title':'🧬\x20Service\x20Clone\x20-\x20Rebuild\x20On-chain\x20Services','summary':'Read\x20an\x20existing\x20Service\x27s\x20full\x20configuration\x20and\x20rebuild\x20it\x20as\x20a\x20new\x20object\x20with\x20optional\x20overrides\x20(token,\x20network,\x20fees).','description':'Clone\x20an\x20existing\x20on-chain\x20Service\x20into\x20a\x20new\x20object.\x20'+'Two\x20actions:\x0a'+'\x20\x20•\x20clone_plan\x20—\x20read\x20the\x20source\x20Service\x20(service\x20fields,\x20machine\x20graph,\x20guards,\x20permission,\x20'+'allocators)\x20and\x20emit\x20a\x20reconstruction\x20plan.\x20Optional\x20overrides:\x20token_type\x20(change\x20payment\x20'+'token),\x20network\x20(target\x20network),\x20description,\x20location,\x20sales,\x20compensation_fund,\x20'+'order_allocators.\x20Never\x20executes\x20on-chain.\x0a'+'\x20\x20•\x20clone_apply\x20—\x20take\x20a\x20prior\x20clone_plan\x20(possibly\x20user-edited),\x20apply\x20overrides,\x20run\x20the\x20'+'pre-publish\x20gate\x20(machine\x20topology,\x20allocator\x20guard\x20lint,\x20immutability\x20warnings),\x20and\x20emit\x20'+'the\x20exact\x20onchain_operations\x20payloads\x20in\x20execution\x20order.\x20Never\x20executes\x20on-chain.\x0a\x0a'+'Workflow:\x20clone_plan\x20→\x20review/edit\x20the\x20plan\x20→\x20clone_apply\x20→\x20review\x20gate\x20findings\x20→\x20execute\x20'+'the\x20operations\x20via\x20onchain_operations.\x0a\x0a'+'Deterministic\x20knowledge\x20lookups\x20+\x20planning;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27service_clone_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':ServiceCloneSchema,'outputSchema':ServiceCloneOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('service_clone',['clone','service','rebuild','token','network','migrate'])}},{'name':'strategy_review_operation','handler':handleStrategyReviewOperation,'config':{'title':'📈\x20Strategy\x20Review\x20-\x20Posture-Weighted\x20Scorecard\x20&\x20Periodic\x20Review','summary':'Collect\x20on-chain/derived\x20evidence\x20for\x20an\x20(account,\x20industry),\x20snapshot\x20it\x20locally,\x20and\x20assemble\x20posture-weighted\x20strategy\x20reviews\x20with\x20current-layer\x20persona\x20proposals.','description':'Evidence-driven\x20operating\x20review\x20for\x20one\x20merchant\x20account\x20in\x20one\x20industry,\x20built\x20on\x20the\x20six-industry\x20'+'strategy\x20catalog\x20(education/rental/freelance/subscription/travel/retail\x20+\x20pack-registered\x20ids).\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20collect\x20—\x20gather\x20fresh\x20evidence\x20(journey\x20funnel,\x20order\x20flow,\x20market\x20metrics,\x20service\x20discovery\x20/\x20'+'competitor\x20count,\x20arbitration\x20trust,\x20account\x20attention),\x20persist\x20ONE\x20append-only\x20snapshot\x20in\x20local\x20'+'SQLite\x20KV,\x20and\x20return\x20the\x20raw\x20collection.\x20Failed\x20evidence\x20sources\x20degrade\x20single\x20metrics\x20to\x20'+'unavailable/error\x20—\x20never\x20zero-filled;\x20storage\x20failure\x20is\x20fail-soft\x20and\x20never\x20loses\x20the\x20collection.\x0a'+'\x20\x20•\x20review\x20—\x20gather\x20fresh\x20evidence\x20WITHOUT\x20persisting,\x20diff\x20against\x20the\x20latest\x20stored\x20snapshot,\x20'+'score\x200–100\x20under\x20the\x20persona\x27s\x20merchant\x20posture\x20(volume/balanced/margin,\x20renormalized\x20over\x20'+'available\x20anchored\x20metrics),\x20and\x20return\x20findings,\x20deterministic\x20pricing/posture\x20recommendations,\x20'+'cadence\x20status\x20and\x20at\x20most\x20two\x20persona\x20proposals.\x20Proposals\x20target\x20the\x20CURRENT\x20layer\x20ONLY\x20and\x20are\x20'+'applied\x20only\x20when\x20the\x20user\x20explicitly\x20calls\x20persona_operation\x20apply\x20—\x20this\x20tool\x20never\x20writes\x20the\x20'+'persona\x20and\x20never\x20mutates\x20chain\x20state.\x0a'+'\x20\x20•\x20list_snapshots\x20—\x20list\x20stored\x20snapshot\x20summaries\x20(oldest-first)\x20for\x20account+industry.\x0a\x0a'+'Posture\x20defaults:\x20explicit\x20`posture`\x20arg\x20→\x20merchant\x20posture\x20in\x20the\x20effective\x20persona\x20→\x20\x27balanced\x27.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27strategy_review_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':StrategyReviewOperationInputSchema,'outputSchema':StrategyReviewOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':!![]},'_meta':createToolMeta('strategy',['strategy','scorecard','review','posture','metrics','industry','competitor','retention','dispute'])},'timeoutMs':0x1d4c0},{'name':'workspace_operation','handler':handleWorkspaceOperation,'config':{'title':'📁\x20Workspace\x20-\x20File\x20Generation\x20&\x20User\x20Data','summary':'Local\x20workspace\x20files:\x20list,\x20read,\x20search,\x20glob,\x20edit,\x20write,\x20move,\x20copy,\x20delete.','description':'Manage\x20the\x20local\x20workspace\x20directory\x20(`.wowok/workspace`):\x20files\x20generated\x20for\x20review\x20'+'(machine/guard/wts/wip\x20JSON)\x20and\x20user-created\x20documents.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20resolve\x20—\x20return\x20the\x20workspace\x20root\x20directory.\x0a'+'\x20\x20•\x20list\x20—\x20list\x20files\x20under\x20the\x20workspace.\x0a'+'\x20\x20•\x20read\x20—\x20read\x20a\x20file\x27s\x20content\x20(use\x20as\x20AI\x20context);\x20optional\x20offset/limit\x20line\x20slicing\x20'+'(1-based\x20offset,\x20max\x202000\x20lines)\x20and\x20encoding=\x27base64\x27\x20for\x20raw\x20bytes\x20(≤10MB).\x0a'+'\x20\x20•\x20search\x20—\x20regex\x20content\x20search\x20across\x20workspace\x20files\x20(pattern\x20required;\x20optional\x20path\x20scope,\x20'+'glob\x20basename\x20filter,\x20ignore_case,\x20max_results\x20≤200,\x20context_lines\x20≤5).\x20Skips\x20binary/large\x20files.\x0a'+'\x20\x20•\x20glob\x20—\x20list\x20files\x20whose\x20workspace-relative\x20path\x20matches\x20a\x20wildcard\x20pattern\x20(\x27**\x27\x20spans\x20'+'directories,\x20\x27*\x27\x20stays\x20within\x20one\x20segment,\x20\x27?\x27\x20=\x20one\x20char,\x20\x27{a,b}\x27\x20alternation).\x0a'+'\x20\x20•\x20edit\x20—\x20exact\x20string\x20replacement\x20inside\x20a\x20file\x20(path\x20+\x20old_string\x20+\x20new_string\x20required;\x20'+'errors\x20when\x20old_string\x20is\x20not\x20unique\x20unless\x20replace_all=true;\x20files\x20≤2MB).\x0a'+'\x20\x20•\x20write\x20—\x20write/overwrite\x20a\x20file\x20(path\x20+\x20content).\x0a'+'\x20\x20•\x20delete\x20—\x20delete\x20a\x20file.\x0a'+'\x20\x20•\x20create_file\x20—\x20create\x20an\x20empty\x20file\x20(path\x20required;\x20content\x20optional).\x0a'+'\x20\x20•\x20create_dir\x20—\x20create\x20a\x20directory\x20recursively\x20(path\x20required).\x0a'+'\x20\x20•\x20copy\x20—\x20copy\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20move\x20—\x20move\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a'+'\x20\x20•\x20rename\x20—\x20rename\x20a\x20file\x20or\x20directory\x20(from\x20+\x20to\x20required).\x0a\x0a'+'Local\x20filesystem\x20only;\x20never\x20mutates\x20chain\x20state.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27workspace_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':WorkspaceOperationInputSchema,'outputSchema':WorkspaceOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('workspace',['workspace','file','document','machine','guard','wts','wip','context'])}},{'name':'workflow_operation','handler':handleWorkflowOperation,'config':{'title':'🔀\x20Workflow\x20-\x20Local-Account\x20Progress\x20Tasks','summary':'List\x20local-account\x20progress\x20(actionable\x20+\x20related/history)\x20+\x20advance/hold/unhold\x20forwards\x20+\x20view\x20progress\x20history.','description':'Local-account\x20workflow\x20view\x20over\x20on-chain\x20Progress\x20objects.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20progress\x20related\x20to\x20local\x20accounts:\x20actionable\x20first\x20(a\x20'+'local\x20account\x20can\x20advance\x20a\x20forward),\x20plus\x20related\x20/\x20completed\x20progress\x20(order\x20'+'holder,\x20named\x20operator,\x20or\x20session\x20operator\x20involvement)\x20so\x20the\x20user\x20always\x20'+'keeps\x20visibility\x20of\x20their\x20own\x20progress\x20history.\x20Each\x20task\x20carries\x20every\x20'+'reachable\x20next\x20node\x20+\x20forward,\x20the\x20local\x20accounts\x20that\x20can\x20execute\x20each\x20'+'forward\x20(order\x20holder\x20/\x20named\x20operator\x20/\x20permission\x20index,\x20including\x20admin),\x20'+'guard\x20reminders\x20(a\x20forward\x20with\x20a\x20guard\x20must\x20be\x20verified\x20via\x20passport),\x20and\x20'+'the\x20on-chain\x20history_count.\x0a'+'\x20\x20•\x20operate\x20—\x20advance\x20(\x27next\x27)\x20/\x20block\x20(\x27hold\x27)\x20/\x20release\x20(\x27unhold\x27)\x20/\x20force-release\x20'+'(\x27adminUnhold\x27)\x20a\x20forward\x20as\x20a\x20chosen\x20local\x20account\x20(env.account).\x20Delegates\x20to\x20the\x20'+'on-chain\x20progress\x20operation\x20(guard-aware).\x0a'+'\x20\x20•\x20history\x20—\x20incrementally\x20sync\x20a\x20progress\x27s\x20ON-CHAIN\x20history\x20(Progress.history\x20'+'append-only\x20u64\x20index)\x20into\x20the\x20local\x20SQLite\x20mirror\x20via\x20a\x20per-progress\x20cursor\x20'+'(only\x20NEW\x20records\x20are\x20pulled),\x20then\x20return\x20the\x20migration\x20timeline\x20(newest\x20first)\x20'+'with\x20each\x20migration\x27s\x20session\x20snapshot\x20(forwards\x20/\x20operator\x20address\x20/\x20weight\x20/\x20time).\x20'+'Also\x20runs\x20a\x2090-day\x20retention\x20cleanup\x20of\x20stale\x20progress\x20histories\x20by\x20default.\x0a\x0a'+'Permission\x20model\x20(chain-authoritative):\x20a\x20forward\x20is\x20executable\x20by\x20an\x20account\x20when\x20'+'(a)\x20namedOperator=\x22\x22\x20and\x20the\x20account\x20is\x20the\x20order\x20holder\x20(order\x20builder\x20or\x20agent),\x20'+'or\x20(b)\x20namedOperator=name\x20and\x20the\x20account\x20is\x20in\x20progress.namedOperator[name],\x20or\x20'+'(c)\x20permissionIndex\x20is\x20set\x20and\x20the\x20account\x20is\x20in\x20permission.admin\x20or\x20permission.table.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27workflow_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':WorkflowOperationInputSchema,'outputSchema':WorkflowOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![],'openWorldHint':!![]},'_meta':createToolMeta('workflow',['workflow','progress','forward','permission','named-operator','guard','advance','hold'])},'timeoutMs':0x1d4c0},{'name':'permission_operation','handler':handlePermissionOperation,'config':{'title':'🛡️\x20Permissions\x20-\x20Local-Account\x20Overview','summary':'List\x20Permissions\x20related\x20to\x20local\x20accounts\x20with\x20related\x20accounts/objects.','description':'Local-account\x20Permission\x20overview.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20every\x20on-chain\x20Permission\x20object\x20related\x20to\x20at\x20least\x20one\x20LOCAL\x20'+'account\x20(reverse-looked-up\x20via\x20the\x20global\x20entity_permission\x20index\x20@0xaad),\x20deduplicated\x20'+'and\x20merged.\x20Each\x20row\x20includes\x20description,\x20owner,\x20latest\x20on-chain\x20update\x20time,\x20related\x20'+'accounts\x20(owner/admin/entity),\x20and\x20related\x20objects\x20(grouped\x20by\x20type\x20via\x20the\x20registrar\x20'+'linker).\x20Pass\x20`permission`\x20to\x20scope\x20the\x20listing\x20to\x20ONE\x20Permission\x20address\x20—\x20fast\x20path\x20'+'(metadata\x20+\x20local-account\x20roles\x20only;\x20skips\x20the\x20per-permission\x20linker/tx-time\x20fan-out)\x20'+'for\x20detail-page\x20Permission\x20rows.\x0a\x0a'+'Read-only\x20(no\x20on-chain\x20mutation).\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27permission_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':PermissionOperationInputSchema,'outputSchema':PermissionOperationOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('query',['permission','account','role','owner','admin','entity','overview','registrar','reverse-index'])}}];
|