@wowok/agent-mcp 3.3.6 → 3.3.8
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/eval-order.js +1 -1
- package/dist/chain-semantics/field-capability.js +1 -1
- 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 +3 -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/data/projection/facets.spec.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/match-policy.d.ts +30 -6
- package/dist/evaluation/match-policy.js +1 -1
- package/dist/evaluation/match-policy.spec.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/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/keeper/detectors.d.ts +3 -0
- package/dist/keeper/detectors.js +1 -1
- package/dist/keeper/keeper.spec.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 +128 -3
- package/dist/knowledge/builtin-templates.d.ts +18 -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/event-semantics.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.d.ts +4 -0
- 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 +132 -0
- package/dist/knowledge/semantic-ir.js +1 -0
- 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 +45 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-prose.d.ts +50 -0
- package/dist/knowledge/template-prose.js +1 -0
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +5 -3
- 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/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.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 +16 -6
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +11 -2
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/mode-actions.d.ts +8 -0
- package/dist/playbooks/service-build/mode-actions.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +22 -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/reverse-mapping-nk4.spec.js +1 -1
- package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
- package/dist/playbooks/service-build/reverse-mapping.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 +135 -10
- 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/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +32 -0
- package/dist/schema/call/bridge.d.ts +8 -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/reward.d.ts +10 -0
- package/dist/schema/call/reward.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/evaluation/index.d.ts +152 -0
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +16 -0
- package/dist/schema/goal/planning.d.ts +29 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +70 -0
- package/dist/schema/industry-pack/modes.d.ts +70 -0
- package/dist/schema/industry-pack/modes.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +3 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +80 -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 +6 -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 +148 -47
- 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 +8 -0
- package/dist/schemas/benchmark_migration_operation.output.json +296 -2
- package/dist/schemas/benchmark_migration_operation.schema.json +292 -7
- package/dist/schemas/bridge_operation.output.json +8 -0
- package/dist/schemas/config_operation.output.json +95 -0
- package/dist/schemas/config_operation.schema.json +16 -1
- package/dist/schemas/evaluation_operation.output.json +240 -0
- package/dist/schemas/evaluation_operation.schema.json +397 -1
- package/dist/schemas/goal_operation.schema.json +40 -10
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/industry_pack_operation.output.json +90 -2
- package/dist/schemas/industry_pack_operation.schema.json +236 -0
- package/dist/schemas/intent_radar.output.json +2 -0
- package/dist/schemas/intent_radar.schema.json +1 -0
- package/dist/schemas/local_cache_operation.output.json +8 -0
- package/dist/schemas/local_history_operation.output.json +8 -0
- package/dist/schemas/local_info_operation.output.json +8 -0
- package/dist/schemas/local_mark_operation.output.json +8 -0
- package/dist/schemas/messenger_operation.output.json +609 -1
- package/dist/schemas/messenger_operation.schema.json +96 -1
- package/dist/schemas/onchain_events.output.json +281 -11
- package/dist/schemas/onchain_events.schema.json +5 -1
- package/dist/schemas/onchain_operations.output.json +8 -0
- package/dist/schemas/onchain_operations.schema.json +371 -10
- package/dist/schemas/onchain_operations_allocation.schema.json +10 -1
- package/dist/schemas/onchain_operations_arbitration.schema.json +1 -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_reward.schema.json +35 -1
- package/dist/schemas/onchain_operations_service.schema.json +6 -6
- package/dist/schemas/query_toolkit.output.json +305 -8
- package/dist/schemas/service_clone_operation.output.json +79 -0
- package/dist/tools/handlers/benchmark-migration.d.ts +15 -0
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/evaluation.spec.js +1 -1
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/messenger.d.ts +1 -0
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +20 -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/handlers/wip.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/wip-verify-ledger.d.ts +14 -0
- package/dist/tools/wip-verify-ledger.js +1 -0
- package/dist/tools/wrap.d.ts +4 -0
- 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';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':{let w;try{w=await queryOrdersByUser({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});}catch(x){const y=x instanceof Error?x['message']:String(x);if(/dynamicFieldNotFound/i['test'](y))w=[];else throw x;}c={'query_type':'onchain_orders_of_user','result':w};break;}case'onchain_orders_of_users':{const z=b['addresses']??[],A=[],B=await Promise['allSettled'](z['map'](async M=>{try{const N=await queryOrdersByUser({'address':M,'no_cache':b['no_cache'],'network':b['network']});return{'account':String(M?.['name_or_address']??''),'views':Array['isArray'](N)?N:[]};}catch(O){const P=O instanceof Error?O['message']:String(O);if(/dynamicFieldNotFound/i['test'](P))return{'account':String(M?.['name_or_address']??''),'views':[]};throw O;}})),C=[];for(let M=0x0;M<z['length'];M++){const N=B[M];if(N['status']==='fulfilled')C['push'](N['value']);else{const O=N['reason']instanceof Error?N['reason']['message']:String(N['reason']);A['push'](String(z[M]?.['name_or_address']??'?')+':\x20'+O);}}const D=Array['from'](new Set(C['flatMap'](P=>P['views']['map'](Q=>typeof Q?.['order']?.['object']==='string'?Q['order']['object']:typeof Q?.['order']==='string'?Q['order']:'')['filter'](Boolean)))),E=new Map();try{if(D['length']>0x0){const P=await batchQueryObjectsByIds(D,b['network']);for(const Q of P){if(Q&&Q['type']===ObjectType['Order'])E['set'](Q['object'],Q);}}}catch{A['push']('order\x20details\x20unavailable\x20(non-blocking)');}const F=new Map(),G=new Map(),H=new Map();try{const R=new Set();for(const S of E['values']()){if(S?.['progress'])R['add'](S['progress']);if(S?.['allocation'])R['add'](S['allocation']);}if(R['size']>0x0){const T=await batchQueryObjectsByIds(Array['from'](R),b['network']);for(const U of T){if(!U?.['object'])continue;if(U['type']===ObjectType['Progress']){const V=U?.['current'];F['set'](U['object'],typeof V==='string'&&V!==''?V:null),G['set'](U['object'],Number(U?.['current_time'])||null);}else{if(U['type']===ObjectType['Allocation']){const W=Number(U?.['balance']??0x0);H['set'](U['object'],Number['isFinite'](W)&&W===0x0?'allocated':'pending');}}}}}catch{A['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const I=new Map();try{const X=await Promise['allSettled'](D['map'](Y=>query_object_last_updated({'object':Y,'network':b['network'],'previous_transaction':E['get'](Y)?.['previousTransaction']??null})));for(let Y=0x0;Y<D['length'];Y++){const Z=X[Y];I['set'](D[Y],Z['status']==='fulfilled'&&Z['value']?.['timestamp_ms']?Number(Z['value']['timestamp_ms'])||null:null);}}catch{A['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const J=await coinTypesOfServices(Array['from'](new Set(Array['from'](E['values']())['map'](a0=>typeof a0?.['service']==='string'?a0['service']:'')['filter'](Boolean))),b['network']),K=async(a0,a1)=>{if(a1===null||a1===undefined||a1==='')return{'display':'','tip':''};if(!a0)return{'display':a1,'tip':''};try{const a2=await formatChainValue(a1,a0,b['network']);if(a2['precision_known'])return{'display':a2['symbol']?a2['display']+'\x20'+a2['symbol']:a2['display'],'tip':a2['text']};return{'display':a1,'tip':''};}catch{return{'display':a1,'tip':''};}},L=[];for(const a0 of D){const a1=E['get'](a0),a2=C['filter'](a6=>a6['views']['some'](a7=>(typeof a7?.['order']?.['object']==='string'?a7['order']['object']:a7?.['order'])===a0))['map'](a6=>{const a7=a6['views']['find'](a8=>(typeof a8?.['order']?.['object']==='string'?a8['order']['object']:a8?.['order'])===a0);return{'account':a6['account'],'is_owner':!!a7?.['is_owner'],'is_agent':!!a7?.['is_agent'],'time':a7?.['time']};}),a3=J['get'](String(a1?.['service']??''))??null,a4=a1?.['amount']!==null&&a1?.['amount']!==undefined?String(a1['amount']):'',a5=await K(a3,a4);L['push']({'order':a0,'roles':a2,'time':a1?Number(a1['time'])||0x0:0x0,'updated_ms':I['get'](a0)??null,'amount':a4,'amount_display':a5['display'],'amount_tip':a5['tip'],'service':a1?.['service']??null,'machine':a1?.['machine']??null,'progress':a1?.['progress']??null,'allocation':a1?.['allocation']??null,'owner':ownerAddrOf(a1?.['builder']??a1?.['owner']),'claimed_by':a1?.['claimed_by']??null,'required_info':a1?.['required_info']??null,'progress_next':a1?.['progress']?F['get'](a1['progress'])??null:null,'progress_since':a1?.['progress']?G['get'](a1['progress'])??null:null,'allocation_state':a1?.['allocation']?H['get'](a1['allocation'])??'pending':'none','disputes':Array['isArray'](a1?.['dispute'])?a1['dispute']:[],'agents':Array['isArray'](a1?.['agent'])?a1['agent']:[],'items':await Promise['all']((Array['isArray'](a1?.['items'])?a1['items']:[])['map'](async a6=>{const a7=a6?.['price']!==null&&a6?.['price']!==undefined?String(a6['price']):'0';return{'name':String(a6?.['name']??''),'price':a7,'price_display':(await K(a3,a7))['display'],'quantity':String(a6?.['quantity']??'0'),'wip_hash':String(a6?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':L,...A['length']>0x0?{'account_errors':A}:{}};break;}case'onchain_table_item_object_linker_core':{const a6=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a6};break;}case'onchain_table_item_object_linker_tx':{const a7=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a7};break;}case'onchain_affiliations_of_object':{const a8=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),a9=a8?.['entries'];Array['isArray'](a9)&&(a8['entries']=a9['filter'](aa=>{const ab=typeof aa?.['who']==='string'?aa['who']:'';return!!ab&&objectTypeFromAddress(ab)!==undefined;}));c={'query_type':'onchain_affiliations_of_object','result':a8};break;}case'address_profile':{const aa=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(aa,{'no_cache':b['no_cache'],'network':b['network']});aa&&typeof aa==='object'&&(aa['follow_ups']=buildProfileFollowUps(aa));c={'query_type':'address_profile','result':aa};break;}case'service_supply_chain':{const ab=await resolveSupplyChainGraph(typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),b['network']);c={'query_type':'service_supply_chain','result':ab};break;}case'onchain_table_item_generic':{const ac=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':ac};break;}default:{const ad=['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_generic','onchain_affiliations_of_object','address_profile','service_supply_chain'];throw new Error('Unknown\x20table\x20query_type\x20\x22'+b['query_type']+'\x22.\x20Valid\x20query_types\x20are:\x20'+ad['map'](ae=>'\x22'+ae+'\x22')['join'](',\x20')+'.');}}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}function mcpLayerInfoResponse(a){return{'content':[{'type':'text','text':JSON['stringify']({'result':a})}],'structuredContent':{'result':a}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input'),c=b['info'];if(c==='upgrade_check')return mcpLayerInfoResponse({'info':'upgrade_check','result':await checkUpgrade()});if(c==='universal_template')return mcpLayerInfoResponse({'info':'universal_template','result':getUniversalTemplate()});if(c==='getting\x20started')return mcpLayerInfoResponse({'info':'getting\x20started','result':getGettingStarted()});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{strictParse,WipOperationsSchema}from'../../schema/index.js';import{generate_wip,verify_wip,sign_wip,wip2html}from'@wowok/wowok';import{analyzeWipDeployment,formatDeployHints}from'../wip-deploy-assist.js';import{wipStorageUpload,wipStorageList,wipStorageDelete}from'./wip-upload.js';export async function handleWipOperations(a){if(typeof a==='object'&&a!==null&&a['type']==='deploy_assist'){const d=a['wipFilePath'];if(typeof d!=='string')return{'content':[{'type':'text','text':'Error:\x20\x27wipFilePath\x27\x20is\x20required\x20for\x20deploy_assist\x20action'}],'structuredContent':{'result':{'type':'error','error':'\x27wipFilePath\x27\x20is\x20required\x20for\x20deploy_assist\x20action'}}};const e=analyzeWipDeployment(d),f=formatDeployHints(e);return{'content':[{'type':'text','text':f||'No\x20deployment\x20needed.'}],'structuredContent':{'result':{'type':'deploy_assist',...e}}};}const b=strictParse(WipOperationsSchema,a,'wip_file\x20input');let c;switch(b['type']){case'generate':{const g=await generate_wip(b['options'],b['outputPath']);c={'result':{'type':'generate','filePath':g}};break;}case'verify':{const h=analyzeWipDeployment(b['wipFilePath']),i=await verify_wip(b['wipFilePath'],b['hash_equal'],b['requireSignature']),j=h['needs_deployment']||!i['valid']&&h['classification']['type']!=='data_url';if(j){const k=formatDeployHints(h);c={'result':{'type':'verify',...i,'deployment_assistance':h},'deployment_hints':k};}else c={'result':{'type':'verify',...i}};break;}case'sign':{const l=await sign_wip(b['wipFilePath'],b['account'],b['outputPath']);c={'result':{'type':'sign','filePath':l}};break;}case'wip2html':{const m=await wip2html(b['wipPath'],b['options']),n={'type':'wip2html'};Array['isArray'](m)?n['files']=m:n['filePath']=m;c={'result':n};break;}case'upload':{c={'result':
|
|
1
|
+
import{strictParse,WipOperationsSchema}from'../../schema/index.js';import{generate_wip,verify_wip,sign_wip,wip2html}from'@wowok/wowok';import{analyzeWipDeployment,formatDeployHints}from'../wip-deploy-assist.js';import{wipStorageUpload,wipStorageList,wipStorageDelete}from'./wip-upload.js';import{recordWipUploadAccount,recordWipVerify}from'../wip-verify-ledger.js';export async function handleWipOperations(a){if(typeof a==='object'&&a!==null&&a['type']==='deploy_assist'){const d=a['wipFilePath'];if(typeof d!=='string')return{'content':[{'type':'text','text':'Error:\x20\x27wipFilePath\x27\x20is\x20required\x20for\x20deploy_assist\x20action'}],'structuredContent':{'result':{'type':'error','error':'\x27wipFilePath\x27\x20is\x20required\x20for\x20deploy_assist\x20action'}}};const e=analyzeWipDeployment(d),f=formatDeployHints(e);return{'content':[{'type':'text','text':f||'No\x20deployment\x20needed.'}],'structuredContent':{'result':{'type':'deploy_assist',...e}}};}const b=strictParse(WipOperationsSchema,a,'wip_file\x20input');let c;switch(b['type']){case'generate':{const g=await generate_wip(b['options'],b['outputPath']);c={'result':{'type':'generate','filePath':g}};break;}case'verify':{const h=analyzeWipDeployment(b['wipFilePath']),i=await verify_wip(b['wipFilePath'],b['hash_equal'],b['requireSignature']);i['valid']&&recordWipVerify(b['wipFilePath'],{'hash_equal':b['hash_equal'],'signature_verified':b['requireSignature']===!![]&&i['signatureValid']===!![]});const j=h['needs_deployment']||!i['valid']&&h['classification']['type']!=='data_url';if(j){const k=formatDeployHints(h);c={'result':{'type':'verify',...i,'deployment_assistance':h},'deployment_hints':k};}else c={'result':{'type':'verify',...i}};break;}case'sign':{const l=await sign_wip(b['wipFilePath'],b['account'],b['outputPath']);c={'result':{'type':'sign','filePath':l}};break;}case'wip2html':{const m=await wip2html(b['wipPath'],b['options']),n={'type':'wip2html'};Array['isArray'](m)?n['files']=m:n['filePath']=m;c={'result':n};break;}case'upload':{const o=await wipStorageUpload(b),p=o['url'];typeof p==='string'&&typeof b['account']==='string'&&b['account']['trim']()!==''&&recordWipUploadAccount(p,b['account']);c={'result':o};break;}case'storage_list':{c={'result':await wipStorageList(b)};break;}case'storage_delete':{c={'result':await wipStorageDelete(b)};break;}default:throw new Error('Unknown\x20WIP\x20operation\x20type');}return{'content':[{'type':'text','text':JSON['stringify'](c)}],'structuredContent':c};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{handleIntentRadar}from'../handlers/intent-radar.js';import{handleGoalOperation}from'../handlers/goal.js';import{handleEmployeeOperation}from'../handlers/employee.js';import{createToolMeta,IntentRadarInputSchema,IntentRadarOutputSchema,GoalOperationInputSchema,EmployeeOperationInputSchema,EmployeeOperationOutputSchema}from'../../schema/index.js';export const AGENT_TOOLS=[{'name':'intent_radar','handler':handleIntentRadar,'config':{'title':'📡\x20Intent\x20Radar\x20-\x20User\x20Intent\x20×\x20Chain\x20Event\x20Matching','summary':'Persist\x20user\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events.','description':'Persist\x20the\x20user\x27s\x20standing\x20business\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events/data.\x20'+'This\x20closes\x20the\x20loop:\x20user\x20records\x20an\x20intent\x20(e.g.\x20\x27find\x20subscription\x20services\x27),\x20'+'the\x20system\x20pulls\x20recent\x20chain\x20events\x20and\x20returns\x20ranked\x20hits.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20save\x20—\x20record\x20an\x20intent\x20(industry/keywords\x20resolved\x20once;\x20optionally\x20bound\x20to\x20an\x20account).\x0a'+'\x20\x20•\x20list\x20—\x20list\x20persisted\x20intents\x20(optionally\x20filtered\x20by\x20account).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20intent.\x0a'+'\x20\x20•\x20match\x20—\x20score\x20events\x20against\x20intents\x20(pass\x20`events`\x20from\x20onchain_events,\x20or\x20auto-pull\x20recent\x20events).\x0a\x0a'+'Watchable\x20event\x20families\x20(target_types):\x20market\x20opportunity\x20(ServiceEvent,\x20DemandChangedEvent,\x20'+'DemandPresentEvent\x20—\x20the\x20supply/demand\x20discovery\x20signals),\x20order/workflow\x20(NewOrderEvent,\x20'+'ProgressEvent),\x20dispute\x20(ArbEvent,\x20VoteEvent,\x20FeedbackEvent),\x20reputation\x20(DemandFeedbackEvent,\x20'+'NewEntityEvent),\x20fund\x20flow\x20(AllocationEvent,\x20TreasuryEvent,\x20RewardClaimEvent,\x20RewardFundEvent,\x20'+'RewardWithdrawEvent,\x20NewPaymentEvent),\x20audit/watch\x20(PermissionChangedEvent,\x20'+'RepositoryDataOverwriteEvent).\x20Each\x20hit\x27s\x20business_meaning\x20comes\x20from\x20the\x20Event\x20Semantics\x20Registry.\x0a\x0a'+'Read-only\x20w.r.t.\x20chain\x20state\x20(reads\x20events\x20+\x20local\x20intent\x20store\x20only).\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27intent_radar\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':IntentRadarInputSchema,'outputSchema':IntentRadarOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('intent',['intent','radar','match','event','watch','business','intelligence'])}},{'name':'goal_operation','handler':handleGoalOperation,'config':{'title':'🎯\x20Goal\x20-\x20Goal-Driven\x20Lifecycle\x20(GoalEngine)','summary':'Goal-driven\x20lifecycle:\x20create/list/get/approve/advance/pause/complete/abandon/delete\x20goals\x20+\x20event-bridged\x20advancement\x20suggestions\x20+\x20G5\x20boundaries/pursue/next-steps\x20(self-driving\x20within\x20user-granted\x20autonomy).','description':'GoalEngine\x20Agent\x20portal\x20(K3\x2024)\x20—\x20the\x20business-layer\x20storyline\x20ABOVE\x20projects/tasks:\x20'+'record\x20a\x20user\x20goal\x20once,\x20then\x20track\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20'+'RECOGNIZE\x20→\x20CONFIRM\x20→\x20BIND\x20→\x20PLAN\x20→\x20APPROVE\x20→\x20ACT\x20→\x20MONITOR\x20→\x20COMPLETE\x20(→\x20REFLECT).\x20'+'Near-duplicate\x20create\x20calls\x20ADOPT\x20the\x20existing\x20active\x20goal\x20(same\x20type\x20+\x20account\x20+\x20similar\x20intent)\x20'+'instead\x20of\x20forking\x20a\x20second\x20storyline.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20create\x20—\x20record\x20a\x20goal\x20from\x20intent_text\x20(goal_type\x20auto-classified;\x20override\x20with\x20goal_type).\x20'+'Pass\x20account\x20to\x20BIND\x20immediately\x20(local-account\x20preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).\x20'+'Goal\x20types\x20with\x20a\x20dedicated\x20playbook\x20(publish_service,\x20fulfill_order,\x20capture_demand,\x20publish_demand,\x20'+'purchase_service)\x20AUTOMATICALLY\x20attach\x20a\x20TaskProcess\x20(K3\x2024\x20§3.5):\x20the\x20long-task\x20carrier\x20with\x20a\x20named\x20'+'stage\x20sequence\x20+\x20events/problems/feedback/decisions\x20memory\x20streams;\x20create_process=true\x20forces\x20one\x20for\x20'+'the\x20other\x20(generic)\x20goal\x20types.\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20goals\x20(stage/account\x20filters;\x20include_finished\x20for\x20completed/abandoned)\x20+\x20per-stage\x20counts.\x0a'+'\x20\x20•\x20get\x20—\x20one\x20goal\x27s\x20full\x20record\x20(stage,\x20objects,\x20monitor\x20bindings,\x20approvals,\x20outcome).\x20Goals\x20with\x20a\x20'+'TaskProcess\x20also\x20return\x20process_summary\x20(current\x20stage,\x20per-stage\x20progress,\x20open\x20problems,\x20pending\x20'+'suggestions,\x20last\x20events,\x20feedback\x20count)\x20—\x20the\x20interrupted-task\x20resume\x20surface:\x20read\x20it,\x20then\x20continue\x20'+'with\x20advance\x20(there\x20is\x20no\x20separate\x20resume\x20action).\x0a'+'\x20\x20•\x20approve\x20—\x20APPROVE\x20station:\x20records\x20a\x20plan\x20approval;\x20while\x20active,\x20fail-open\x20ConfirmGate\x20rules\x20'+'(standard/none\x20levels)\x20auto-pass\x20for\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>,\x20and\x20successful\x20'+'creation\x20operations\x20carrying\x20that\x20stamp\x20auto-register\x20their\x20created\x20objects\x20into\x20the\x20goal\x20'+'(ACT\x20station\x20\x27execution\x20registers\x27).\x20'+'Fail-closed\x20levels\x20(irreversible/publish/amount)\x20ALWAYS\x20still\x20ask.\x0a'+'\x20\x20•\x20advance\x20—\x20forward\x20stage\x20move\x20(BIND/PLAN/ACT/MONITOR)\x20and/or\x20ACT\x20object\x20registration\x20'+'(objects:\x20[{type,\x20object}];\x20also\x20written\x20back\x20into\x20the\x20goal\x27s\x20TaskProcess\x20manifest).\x20'+'Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20for\x20the\x20goal\x27s\x20objects\x20'+'(and\x20a\x20radar\x20intent\x20for\x20demand\x20goals),\x20so\x20progress\x20surfaces\x20in\x20the\x20monitor\x20todo\x20stream.\x0a'+'\x20\x20•\x20pause\x20—\x20off-axis\x20hold\x20from\x20any\x20non-terminal\x20stage;\x20resume\x20via\x20advance.\x0a'+'\x20\x20•\x20complete\x20—\x20COMPLETE\x20station:\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20'+'(e.g.\x20publish_service\x20needs\x20a\x20live\x20Service;\x20purchase_service\x20needs\x20a\x20completed\x20Order).\x20'+'force=true\x20skips\x20verification\x20(audited\x20as\x20outcome.forced).\x20Tears\x20down\x20the\x20goal\x27s\x20monitor\x20bindings.\x20'+'Pass\x20feedback\x20{sentiment,\x20comment}\x20to\x20record\x20user\x20feedback\x20on\x20the\x20process;\x20the\x20outcome\x20is\x20distilled\x20'+'into\x20the\x20experience\x20layer\x20(REFLECT).\x0a'+'\x20\x20•\x20abandon\x20—\x20terminal\x20give-up\x20(reason\x20required);\x20same\x20monitor\x20teardown,\x20outcome.success=false.\x0a'+'\x20\x20•\x20delete\x20—\x20housekeeping:\x20remove\x20a\x20TERMINAL\x20goal\x20record\x20entirely\x20(record\x20+\x20stage-index\x20entries\x20+\x20'+'TaskProcess\x20dir).\x20force=true\x20also\x20allows\x20non-terminal\x20goals\x20(monitor\x20teardown\x20runs\x20first).\x0a'+'\x20\x20•\x20suggestions\x20—\x20T5-C:\x20the\x20goal\x27s\x20PENDING\x20advancement\x20suggestions\x20(monitor-bridged\x20POSITIVE\x20events:\x20'+'first\x20order\x20received\x20→\x20enter\x20monitoring;\x20arbitration\x20finished\x20→\x20verify\x20completion;\x20service\x20live\x20→\x20'+'verify\x20completion)\x20joined\x20with\x20its\x20OPEN\x20problems\x20—\x20the\x20single\x20consumption\x20face\x20for\x20\x27what\x20wants\x20my\x20'+'decision\x20on\x20this\x20goal\x27.\x20include_resolved=true\x20also\x20returns\x20confirmed/dismissed\x20ones.\x0a'+'\x20\x20•\x20suggestion_resolve\x20—\x20one-shot\x20decision\x20on\x20one\x20suggestion:\x20confirm\x20(apply=true\x20runs\x20the\x20suggested\x20'+'move\x20through\x20the\x20NORMAL\x20engine\x20stations\x20—\x20advance/complete\x20with\x20chain\x20verification\x20still\x20gating;\x20'+'apply=false\x20just\x20acknowledges)\x20or\x20dismiss\x20(note\x20optional,\x20audited).\x20A\x20suggestion\x20NEVER\x20auto-applies;\x20'+'when\x20applying\x20fails\x20the\x20suggestion\x20stays\x20pending\x20and\x20apply_error\x20explains\x20why.\x0a'+'\x20\x20•\x20boundaries\x20—\x20G5\x20CONFIRM\x20station:\x20the\x20boundary\x20questions\x20to\x20ask\x20the\x20user\x20BEFORE\x20the\x20goal\x20pursues\x20'+'autonomously\x20(budget\x20/\x20deadline\x20/\x20acceptance\x20requirements\x20/\x20autonomy)\x20+\x20the\x20current\x20boundaries\x20and\x20'+'what\x20is\x20still\x20missing.\x0a'+'\x20\x20•\x20boundaries_set\x20—\x20G5\x20CONFIRM\x20station:\x20set/merge-patch\x20the\x20boundaries.\x20budget\x20=\x20total\x20spend\x20ceiling\x20'+'(smallest\x20unit,\x20decimal\x20string;\x20over-budget\x20candidates\x20are\x20rejected,\x20never\x20asked),\x20deadline\x20=\x20ms\x20epoch\x20'+'(past\x20it\x20everything\x20stalls),\x20requirements\x20=\x20hard\x20acceptance\x20red\x20lines\x20(commitment\x20moves\x20wait\x20for\x20'+'verification),\x20autonomy\x20=\x20confirm_all\x20|\x20execute_low_risk\x20|\x20execute_all\x20(irreversible/publish/amount\x20'+'operations\x20ALWAYS\x20ask\x20regardless).\x20Setting\x20any\x20field\x20marks\x20CONFIRM\x20done.\x0a'+'\x20\x20•\x20pursue\x20—\x20G5\x20self-driving\x20tick:\x20gathers\x20the\x20goal\x27s\x20pending\x20suggestions\x20+\x20the\x20engine\x20completion\x20'+'check\x20(monitoring\x20station),\x20runs\x20them\x20through\x20the\x20boundary\x20filter\x20and\x20the\x20autonomy\x20mapping,\x20then\x20'+'APPLIES\x20the\x20allowed\x20moves\x20through\x20the\x20normal\x20engine\x20stations\x20(execute)\x20or\x20surfaces\x20them\x20as\x20pending\x20'+'suggestions\x20(ask_user).\x20Boundary\x20violations\x20stall\x20and\x20are\x20reported.\x20A\x20paused\x20goal\x20does\x20not\x20pursue.\x20'+'Call\x20it\x20after\x20monitor\x20events\x20/\x20periodically\x20—\x20the\x20monitor\x20loop\x20bridges\x20events\x20into\x20suggestions\x20in\x20'+'the\x20background\x20either\x20way.\x0a'+'\x20\x20•\x20next_steps\x20—\x20G5\x20user-driven\x20follow-ups:\x20recommended\x20next\x20steps\x20for\x20this\x20goal\x20—\x20station\x20steps\x20'+'(confirm\x20boundaries,\x20bind,\x20resolve\x20pending\x20suggestions,\x20advance),\x20the\x20G2\x20role-interest\x20view\x20pointer\x20'+'(when\x20the\x20goal\x20has\x20objects\x20+\x20a\x20binding:\x20operable\x20forwards,\x20blocked\x20moves,\x20risks\x20via\x20topology_bi\x20'+'interest_role),\x20and\x20business-loop\x20follow-ups\x20(what\x20goals\x20naturally\x20follow\x20this\x20one).\x20Works\x20for\x20'+'completed\x20goals\x20too\x20(follow-ups\x20lead).\x0a'+'\x20\x20•\x20analyze_intent\x20(C1)\x20—\x20natural-language\x20business\x20intent\x20→\x20parsed\x20intent\x20(primary/secondary\x20objects,\x20'+'detected\x20scenes,\x20industry)\x20+\x20per-object\x20puzzle\x20snapshots\x20+\x20recommended\x20creation\x20order.\x0a'+'\x20\x20•\x20aggregate_risks\x20(C2)\x20—\x20puzzle\x20snapshots\x20→\x20cross-object\x20risk\x20calibration\x20(CRITICAL/HIGH/MEDIUM/LOW/INFO)\x20'+'with\x20blocking\x20status\x20(CLEAN_WITHIN_SCOPE/RISK_BLOCKED/RISK_PENDING_CONFIRM).\x20CLEAN_WITHIN_SCOPE\x20=\x20static\x20analyzers\x20found\x20'+'nothing\x20AND\x20zero\x20on-chain\x20objects\x20were\x20inspected\x20—\x20it\x20is\x20NOT\x20publish\x20clearance.\x20Omit\x20\x27puzzles\x27\x20but\x20pass\x20\x27intent\x27\x20'+'to\x20run\x20C1→C2\x20in\x20one\x20call.\x0a'+'\x20\x20•\x20trace_substeps\x20(C3)\x20—\x20substep\x20execution\x20records\x20→\x20DAG\x20coherence\x20analysis\x20(dangling\x20inputs,\x20circular\x20'+'refs,\x20missing\x20outputs,\x20cross-step\x20breaks,\x20topological\x20order,\x20D-10\x20verdict).\x0a'+'\x20\x20•\x20merchant_guide\x20—\x2010-step\x20merchant\x20onboarding\x20wizard:\x20intent\x20→\x20industry\x20confirmation\x20→\x20module\x20adoption\x20→\x20'+'Blueprint\x20(L1\x20plan\x20projection)\x20→\x20evaluation\x20preview\x20→\x20harness\x20check\x20→\x20creation\x20plan.\x20Stateless\x20(pass\x20'+'guide_state/guide_confirm\x20to\x20advance);\x20NEVER\x20executes\x20on-chain\x20operations.\x0a\x0a'+'Local\x20goal\x20state\x20only;\x20the\x20only\x20chain\x20access\x20is\x20READ-ONLY\x20completion\x20verification\x20(complete\x20/\x20the\x20pursue\x20tick\x27s\x20completion\x20check).\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27goal_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':GoalOperationInputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':![]},'_meta':createToolMeta('goal',['goal','lifecycle','plan','approve','monitor','complete','abandon','objective'])}},{'name':'employee_operation','handler':handleEmployeeOperation,'config':{'title':'👥\x20Employee\x20-\x20Merchant\x20Staff\x20Profile','summary':'Merchant\x20employee\x20profile,\x20KPI\x20assessment,\x20liability\x20resolution.','description':'Read/write\x20a\x20merchant\x20employee\x27s\x20LOCAL\x20organizational\x20profile:\x20department\x20'+'(customer_service/logistics/finance/operations),\x20liability\x20(merchant_bears/self_bears/hybrid),\x20'+'and\x20response-time\x20budget.\x20LOCAL\x20ONLY\x20—\x20never\x20mutates\x20chain\x20state;\x20the\x20employee\x27s\x20on-chain\x20'+'authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20set\x20—\x20persist\x20an\x20employee\x20profile\x20(validated:\x20department+liability\x20required,\x20budget\x20must\x20be\x20positive).\x0a'+'\x20\x20•\x20get\x20—\x20read\x20an\x20employee\x20profile\x20(null\x20when\x20absent).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20employee\x20profile.\x0a'+'\x20\x20•\x20assess_kpi\x20—\x20measure\x20an\x20employee\x27s\x20node\x20reaction\x20speed\x20(assigned_at\x20→\x20advanced_at\x20vs\x20budget:\x20pass/warn/fail).\x20Timestamps:\x20pass\x20them\x20explicitly,\x20OR\x20pass\x20`progress`\x20(progress\x20object\x20address)\x20to\x20auto-derive\x20them\x20from\x20monitored\x20ProgressEvents\x20—\x20explicit\x20values\x20override\x20derived\x20ones.\x20Budget\x20precedence:\x20explicit\x20budget_ms\x20>\x20stored\x20profile\x20>\x2048h\x20default.\x0a'+'\x20\x20•\x20resolve_liability\x20—\x20resolve\x20who\x20internally\x20bears\x20an\x20employee-error\x20loss\x20(merchant/employee,\x20hybrid\x20threshold\x20split)\x20and\x20whether\x20the\x20order\x20user\x20must\x20be\x20compensated\x20BEFORE\x20the\x20workflow\x20resumes.\x20Outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s.\x0a'+'\x20\x20•\x20suggest_incentive\x20—\x20the\x20employment\x20relationship\x27s\x20action\x20layer:\x20node\x20KPIs\x20(from\x20assess_kpi)\x20+\x20WIP\x20acceptance\x20evidence\x20+\x20liability\x20resolution\x20→\x20a\x20Reward\x20suggestion\x20(reward_grant\x20/\x20compensation_offset\x20/\x20correction_notice\x20/\x20none)\x20with\x20rationale\x20and\x20execution\x20hints.\x20Suggestion\x20ONLY\x20—\x20never\x20auto-executes;\x20the\x20merchant\x20confirms\x20and\x20runs\x20the\x20on-chain\x20reward/payment\x20ops\x20separately.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27employee_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':EmployeeOperationInputSchema,'outputSchema':EmployeeOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('employee',['employee','staff','merchant','department','kpi','liability','local'])}}];
|
|
1
|
+
import{handleIntentRadar}from'../handlers/intent-radar.js';import{handleGoalOperation}from'../handlers/goal.js';import{handleEmployeeOperation}from'../handlers/employee.js';import{createToolMeta,IntentRadarInputSchema,IntentRadarOutputSchema,GoalOperationInputSchema,EmployeeOperationInputSchema,EmployeeOperationOutputSchema}from'../../schema/index.js';export const AGENT_TOOLS=[{'name':'intent_radar','handler':handleIntentRadar,'config':{'title':'📡\x20Intent\x20Radar\x20-\x20User\x20Intent\x20×\x20Chain\x20Event\x20Matching','summary':'Persist\x20user\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events.','description':'Persist\x20the\x20user\x27s\x20standing\x20business\x20intents\x20and\x20match\x20them\x20against\x20on-chain\x20events/data.\x20'+'This\x20closes\x20the\x20loop:\x20user\x20records\x20an\x20intent\x20(e.g.\x20\x27find\x20subscription\x20services\x27),\x20'+'the\x20system\x20pulls\x20recent\x20chain\x20events\x20and\x20returns\x20ranked\x20hits.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20save\x20—\x20record\x20an\x20intent\x20(industry/keywords\x20resolved\x20once;\x20optionally\x20bound\x20to\x20an\x20account).\x0a'+'\x20\x20•\x20list\x20—\x20list\x20persisted\x20intents\x20(optionally\x20filtered\x20by\x20account).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20intent.\x0a'+'\x20\x20•\x20match\x20—\x20score\x20events\x20against\x20intents\x20(pass\x20`events`\x20from\x20onchain_events,\x20or\x20auto-pull\x20recent\x20events).\x0a\x0a'+'Watchable\x20event\x20families\x20(target_types):\x20market\x20opportunity\x20(ServiceEvent,\x20DemandChangedEvent,\x20'+'DemandPresentEvent\x20—\x20the\x20supply/demand\x20discovery\x20signals),\x20order/workflow\x20(NewOrderEvent,\x20'+'ProgressEvent,\x20ThresholdPendingEvent\x20—\x20below-threshold\x20multi-sig/vote\x20accumulation),\x20dispute\x20(ArbEvent,\x20VoteEvent,\x20FeedbackEvent),\x20reputation\x20(DemandFeedbackEvent,\x20'+'NewEntityEvent),\x20fund\x20flow\x20(AllocationEvent,\x20TreasuryEvent,\x20RewardClaimEvent,\x20RewardFundEvent,\x20'+'RewardWithdrawEvent,\x20NewPaymentEvent),\x20audit/watch\x20(PermissionChangedEvent,\x20'+'RepositoryDataOverwriteEvent).\x20Each\x20hit\x27s\x20business_meaning\x20comes\x20from\x20the\x20Event\x20Semantics\x20Registry.\x0a\x0a'+'Read-only\x20w.r.t.\x20chain\x20state\x20(reads\x20events\x20+\x20local\x20intent\x20store\x20only).\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27intent_radar\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':IntentRadarInputSchema,'outputSchema':IntentRadarOutputSchema,'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('intent',['intent','radar','match','event','watch','business','intelligence'])}},{'name':'goal_operation','handler':handleGoalOperation,'config':{'title':'🎯\x20Goal\x20-\x20Goal-Driven\x20Lifecycle\x20(GoalEngine)','summary':'Goal-driven\x20lifecycle:\x20create/list/get/approve/advance/pause/complete/abandon/delete\x20goals\x20+\x20event-bridged\x20advancement\x20suggestions\x20+\x20G5\x20boundaries/pursue/next-steps\x20(self-driving\x20within\x20user-granted\x20autonomy).','description':'GoalEngine\x20Agent\x20portal\x20(K3\x2024)\x20—\x20the\x20business-layer\x20storyline\x20ABOVE\x20projects/tasks:\x20'+'record\x20a\x20user\x20goal\x20once,\x20then\x20track\x20it\x20through\x20the\x20nine-station\x20lifecycle\x20'+'RECOGNIZE\x20→\x20CONFIRM\x20→\x20BIND\x20→\x20PLAN\x20→\x20APPROVE\x20→\x20ACT\x20→\x20MONITOR\x20→\x20COMPLETE\x20(→\x20REFLECT).\x20'+'Near-duplicate\x20create\x20calls\x20ADOPT\x20the\x20existing\x20active\x20goal\x20(same\x20type\x20+\x20account\x20+\x20similar\x20intent)\x20'+'instead\x20of\x20forking\x20a\x20second\x20storyline.\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20create\x20—\x20record\x20a\x20goal\x20from\x20intent_text\x20(goal_type\x20auto-classified;\x20override\x20with\x20goal_type).\x20'+'Pass\x20account\x20to\x20BIND\x20immediately\x20(local-account\x20preflight;\x20goal\x20starts\x20at\x20\x27bound\x27).\x20'+'Goal\x20types\x20with\x20a\x20dedicated\x20playbook\x20(publish_service,\x20fulfill_order,\x20capture_demand,\x20publish_demand,\x20'+'purchase_service)\x20AUTOMATICALLY\x20attach\x20a\x20TaskProcess\x20(K3\x2024\x20§3.5):\x20the\x20long-task\x20carrier\x20with\x20a\x20named\x20'+'stage\x20sequence\x20+\x20events/problems/feedback/decisions\x20memory\x20streams;\x20create_process=true\x20forces\x20one\x20for\x20'+'the\x20other\x20(generic)\x20goal\x20types.\x0a'+'\x20\x20•\x20list\x20—\x20enumerate\x20goals\x20(stage/account\x20filters;\x20include_finished\x20for\x20completed/abandoned)\x20+\x20per-stage\x20counts.\x0a'+'\x20\x20•\x20get\x20—\x20one\x20goal\x27s\x20full\x20record\x20(stage,\x20objects,\x20monitor\x20bindings,\x20approvals,\x20outcome).\x20Goals\x20with\x20a\x20'+'TaskProcess\x20also\x20return\x20process_summary\x20(current\x20stage,\x20per-stage\x20progress,\x20open\x20problems,\x20pending\x20'+'suggestions,\x20last\x20events,\x20feedback\x20count)\x20—\x20the\x20interrupted-task\x20resume\x20surface:\x20read\x20it,\x20then\x20continue\x20'+'with\x20advance\x20(there\x20is\x20no\x20separate\x20resume\x20action).\x0a'+'\x20\x20•\x20approve\x20—\x20APPROVE\x20station:\x20records\x20a\x20plan\x20approval;\x20while\x20active,\x20fail-open\x20ConfirmGate\x20rules\x20'+'(standard/none\x20levels)\x20auto-pass\x20for\x20calls\x20carrying\x20env.plan_approval=<goal\x20id>,\x20and\x20successful\x20'+'creation\x20operations\x20carrying\x20that\x20stamp\x20auto-register\x20their\x20created\x20objects\x20into\x20the\x20goal\x20'+'(ACT\x20station\x20\x27execution\x20registers\x27).\x20'+'Fail-closed\x20levels\x20(irreversible/publish/amount)\x20ALWAYS\x20still\x20ask.\x0a'+'\x20\x20•\x20advance\x20—\x20forward\x20stage\x20move\x20(BIND/PLAN/ACT/MONITOR)\x20and/or\x20ACT\x20object\x20registration\x20'+'(objects:\x20[{type,\x20object}];\x20also\x20written\x20back\x20into\x20the\x20goal\x27s\x20TaskProcess\x20manifest).\x20'+'Entering\x20\x27monitoring\x27\x20auto-binds\x20monitor\x20focus\x20for\x20the\x20goal\x27s\x20objects\x20'+'(and\x20a\x20radar\x20intent\x20for\x20demand\x20goals),\x20so\x20progress\x20surfaces\x20in\x20the\x20monitor\x20todo\x20stream.\x0a'+'\x20\x20•\x20pause\x20—\x20off-axis\x20hold\x20from\x20any\x20non-terminal\x20stage;\x20resume\x20via\x20advance.\x0a'+'\x20\x20•\x20complete\x20—\x20COMPLETE\x20station:\x20verifies\x20the\x20goal-type\x20completion\x20conjunction\x20against\x20chain\x20state\x20'+'(e.g.\x20publish_service\x20needs\x20a\x20live\x20Service;\x20purchase_service\x20needs\x20a\x20completed\x20Order).\x20'+'force=true\x20skips\x20verification\x20(audited\x20as\x20outcome.forced).\x20Tears\x20down\x20the\x20goal\x27s\x20monitor\x20bindings.\x20'+'Pass\x20feedback\x20{sentiment,\x20comment}\x20to\x20record\x20user\x20feedback\x20on\x20the\x20process;\x20the\x20outcome\x20is\x20distilled\x20'+'into\x20the\x20experience\x20layer\x20(REFLECT).\x0a'+'\x20\x20•\x20abandon\x20—\x20terminal\x20give-up\x20(reason\x20required);\x20same\x20monitor\x20teardown,\x20outcome.success=false.\x0a'+'\x20\x20•\x20delete\x20—\x20housekeeping:\x20remove\x20a\x20TERMINAL\x20goal\x20record\x20entirely\x20(record\x20+\x20stage-index\x20entries\x20+\x20'+'TaskProcess\x20dir).\x20force=true\x20also\x20allows\x20non-terminal\x20goals\x20(monitor\x20teardown\x20runs\x20first).\x0a'+'\x20\x20•\x20suggestions\x20—\x20T5-C:\x20the\x20goal\x27s\x20PENDING\x20advancement\x20suggestions\x20(monitor-bridged\x20POSITIVE\x20events:\x20'+'first\x20order\x20received\x20→\x20enter\x20monitoring;\x20arbitration\x20finished\x20→\x20verify\x20completion;\x20service\x20live\x20→\x20'+'verify\x20completion)\x20joined\x20with\x20its\x20OPEN\x20problems\x20—\x20the\x20single\x20consumption\x20face\x20for\x20\x27what\x20wants\x20my\x20'+'decision\x20on\x20this\x20goal\x27.\x20include_resolved=true\x20also\x20returns\x20confirmed/dismissed\x20ones.\x0a'+'\x20\x20•\x20suggestion_resolve\x20—\x20one-shot\x20decision\x20on\x20one\x20suggestion:\x20confirm\x20(apply=true\x20runs\x20the\x20suggested\x20'+'move\x20through\x20the\x20NORMAL\x20engine\x20stations\x20—\x20advance/complete\x20with\x20chain\x20verification\x20still\x20gating;\x20'+'apply=false\x20just\x20acknowledges)\x20or\x20dismiss\x20(note\x20optional,\x20audited).\x20A\x20suggestion\x20NEVER\x20auto-applies;\x20'+'when\x20applying\x20fails\x20the\x20suggestion\x20stays\x20pending\x20and\x20apply_error\x20explains\x20why.\x0a'+'\x20\x20•\x20boundaries\x20—\x20G5\x20CONFIRM\x20station:\x20the\x20boundary\x20questions\x20to\x20ask\x20the\x20user\x20BEFORE\x20the\x20goal\x20pursues\x20'+'autonomously\x20(budget\x20/\x20deadline\x20/\x20acceptance\x20requirements\x20/\x20autonomy)\x20+\x20the\x20current\x20boundaries\x20and\x20'+'what\x20is\x20still\x20missing.\x0a'+'\x20\x20•\x20boundaries_set\x20—\x20G5\x20CONFIRM\x20station:\x20set/merge-patch\x20the\x20boundaries.\x20budget\x20=\x20total\x20spend\x20ceiling\x20'+'(smallest\x20unit,\x20decimal\x20string;\x20over-budget\x20candidates\x20are\x20rejected,\x20never\x20asked),\x20deadline\x20=\x20ms\x20epoch\x20'+'(past\x20it\x20everything\x20stalls),\x20requirements\x20=\x20hard\x20acceptance\x20red\x20lines\x20(commitment\x20moves\x20wait\x20for\x20'+'verification),\x20autonomy\x20=\x20confirm_all\x20|\x20execute_low_risk\x20|\x20execute_all\x20(irreversible/publish/amount\x20'+'operations\x20ALWAYS\x20ask\x20regardless).\x20Setting\x20any\x20field\x20marks\x20CONFIRM\x20done.\x0a'+'\x20\x20•\x20pursue\x20—\x20G5\x20self-driving\x20tick:\x20gathers\x20the\x20goal\x27s\x20pending\x20suggestions\x20+\x20the\x20engine\x20completion\x20'+'check\x20(monitoring\x20station),\x20runs\x20them\x20through\x20the\x20boundary\x20filter\x20and\x20the\x20autonomy\x20mapping,\x20then\x20'+'APPLIES\x20the\x20allowed\x20moves\x20through\x20the\x20normal\x20engine\x20stations\x20(execute)\x20or\x20surfaces\x20them\x20as\x20pending\x20'+'suggestions\x20(ask_user).\x20Boundary\x20violations\x20stall\x20and\x20are\x20reported.\x20A\x20paused\x20goal\x20does\x20not\x20pursue.\x20'+'Call\x20it\x20after\x20monitor\x20events\x20/\x20periodically\x20—\x20the\x20monitor\x20loop\x20bridges\x20events\x20into\x20suggestions\x20in\x20'+'the\x20background\x20either\x20way.\x0a'+'\x20\x20•\x20next_steps\x20—\x20G5\x20user-driven\x20follow-ups:\x20recommended\x20next\x20steps\x20for\x20this\x20goal\x20—\x20station\x20steps\x20'+'(confirm\x20boundaries,\x20bind,\x20resolve\x20pending\x20suggestions,\x20advance),\x20the\x20G2\x20role-interest\x20view\x20pointer\x20'+'(when\x20the\x20goal\x20has\x20objects\x20+\x20a\x20binding:\x20operable\x20forwards,\x20blocked\x20moves,\x20risks\x20via\x20topology_bi\x20'+'interest_role),\x20and\x20business-loop\x20follow-ups\x20(what\x20goals\x20naturally\x20follow\x20this\x20one).\x20Works\x20for\x20'+'completed\x20goals\x20too\x20(follow-ups\x20lead).\x0a'+'\x20\x20•\x20analyze_intent\x20(C1)\x20—\x20natural-language\x20business\x20intent\x20→\x20parsed\x20intent\x20(primary/secondary\x20objects,\x20'+'detected\x20scenes,\x20industry)\x20+\x20per-object\x20puzzle\x20snapshots\x20+\x20recommended\x20creation\x20order.\x0a'+'\x20\x20•\x20aggregate_risks\x20(C2)\x20—\x20puzzle\x20snapshots\x20→\x20cross-object\x20risk\x20calibration\x20(CRITICAL/HIGH/MEDIUM/LOW/INFO)\x20'+'with\x20blocking\x20status\x20(CLEAN_WITHIN_SCOPE/RISK_BLOCKED/RISK_PENDING_CONFIRM).\x20CLEAN_WITHIN_SCOPE\x20=\x20static\x20analyzers\x20found\x20'+'nothing\x20AND\x20zero\x20on-chain\x20objects\x20were\x20inspected\x20—\x20it\x20is\x20NOT\x20publish\x20clearance.\x20Omit\x20\x27puzzles\x27\x20but\x20pass\x20\x27intent\x27\x20'+'to\x20run\x20C1→C2\x20in\x20one\x20call.\x0a'+'\x20\x20•\x20trace_substeps\x20(C3)\x20—\x20substep\x20execution\x20records\x20→\x20DAG\x20coherence\x20analysis\x20(dangling\x20inputs,\x20circular\x20'+'refs,\x20missing\x20outputs,\x20cross-step\x20breaks,\x20topological\x20order,\x20D-10\x20verdict).\x0a'+'\x20\x20•\x20merchant_guide\x20—\x2010-step\x20merchant\x20onboarding\x20wizard:\x20intent\x20→\x20industry\x20confirmation\x20→\x20module\x20adoption\x20→\x20'+'Blueprint\x20(L1\x20plan\x20projection)\x20→\x20evaluation\x20preview\x20→\x20harness\x20check\x20→\x20creation\x20plan.\x20Stateless\x20(pass\x20'+'guide_state/guide_confirm\x20to\x20advance);\x20NEVER\x20executes\x20on-chain\x20operations.\x0a\x0a'+'Local\x20goal\x20state\x20only;\x20the\x20only\x20chain\x20access\x20is\x20READ-ONLY\x20completion\x20verification\x20(complete\x20/\x20the\x20pursue\x20tick\x27s\x20completion\x20check).\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27goal_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':GoalOperationInputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![],'openWorldHint':![]},'_meta':createToolMeta('goal',['goal','lifecycle','plan','approve','monitor','complete','abandon','objective'])}},{'name':'employee_operation','handler':handleEmployeeOperation,'config':{'title':'👥\x20Employee\x20-\x20Merchant\x20Staff\x20Profile','summary':'Merchant\x20employee\x20profile,\x20KPI\x20assessment,\x20liability\x20resolution.','description':'Read/write\x20a\x20merchant\x20employee\x27s\x20LOCAL\x20organizational\x20profile:\x20department\x20'+'(customer_service/logistics/finance/operations),\x20liability\x20(merchant_bears/self_bears/hybrid),\x20'+'and\x20response-time\x20budget.\x20LOCAL\x20ONLY\x20—\x20never\x20mutates\x20chain\x20state;\x20the\x20employee\x27s\x20on-chain\x20'+'authorization\x20lives\x20in\x20the\x20merchant\x27s\x20Permission\x20(namedOperator/entity).\x0a\x0a'+'Actions:\x0a'+'\x20\x20•\x20set\x20—\x20persist\x20an\x20employee\x20profile\x20(validated:\x20department+liability\x20required,\x20budget\x20must\x20be\x20positive).\x0a'+'\x20\x20•\x20get\x20—\x20read\x20an\x20employee\x20profile\x20(null\x20when\x20absent).\x0a'+'\x20\x20•\x20remove\x20—\x20delete\x20an\x20employee\x20profile.\x0a'+'\x20\x20•\x20assess_kpi\x20—\x20measure\x20an\x20employee\x27s\x20node\x20reaction\x20speed\x20(assigned_at\x20→\x20advanced_at\x20vs\x20budget:\x20pass/warn/fail).\x20Timestamps:\x20pass\x20them\x20explicitly,\x20OR\x20pass\x20`progress`\x20(progress\x20object\x20address)\x20to\x20auto-derive\x20them\x20from\x20monitored\x20ProgressEvents\x20—\x20explicit\x20values\x20override\x20derived\x20ones.\x20Budget\x20precedence:\x20explicit\x20budget_ms\x20>\x20stored\x20profile\x20>\x2048h\x20default.\x0a'+'\x20\x20•\x20resolve_liability\x20—\x20resolve\x20who\x20internally\x20bears\x20an\x20employee-error\x20loss\x20(merchant/employee,\x20hybrid\x20threshold\x20split)\x20and\x20whether\x20the\x20order\x20user\x20must\x20be\x20compensated\x20BEFORE\x20the\x20workflow\x20resumes.\x20Outward\x20liability\x20toward\x20the\x20customer\x20is\x20ALWAYS\x20the\x20merchant\x27s.\x0a'+'\x20\x20•\x20suggest_incentive\x20—\x20the\x20employment\x20relationship\x27s\x20action\x20layer:\x20node\x20KPIs\x20(from\x20assess_kpi)\x20+\x20WIP\x20acceptance\x20evidence\x20+\x20liability\x20resolution\x20→\x20a\x20Reward\x20suggestion\x20(reward_grant\x20/\x20compensation_offset\x20/\x20correction_notice\x20/\x20none)\x20with\x20rationale\x20and\x20execution\x20hints.\x20Suggestion\x20ONLY\x20—\x20never\x20auto-executes;\x20the\x20merchant\x20confirms\x20and\x20runs\x20the\x20on-chain\x20reward/payment\x20ops\x20separately.\x0a\x0a'+'💡\x20Schema\x20hint:\x20call\x20the\x20OTHER\x20tool\x20`schema_query`\x20with\x20action=\x27get\x27\x20and\x20name=\x27employee_operation\x27\x20to\x20retrieve\x20the\x20exact\x20parameter\x20schema.','inputSchema':EmployeeOperationInputSchema,'outputSchema':EmployeeOperationOutputSchema,'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![],'openWorldHint':![]},'_meta':createToolMeta('employee',['employee','staff','merchant','department','kpi','liability','local'])}}];
|