@wowok/agent-mcp 3.4.4 → 3.4.5
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/.build-stamp.json +3 -3
- package/dist/chain-semantics/composition-truth.js +1 -1
- package/dist/composition/audit.js +1 -1
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.js +1 -1
- package/dist/composition/guard-fill.js +1 -1
- package/dist/composition/input-normalize.js +1 -1
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.js +1 -1
- package/dist/composition/param-disclosure.js +1 -1
- package/dist/composition/plan-run-store.js +1 -0
- package/dist/composition/reflux.js +1 -1
- package/dist/composition/role-bindings.js +1 -0
- package/dist/composition/shape-expand.js +1 -1
- package/dist/composition/supply-chain-emit.js +1 -1
- package/dist/config/judgment.d.ts +13 -25
- package/dist/config/judgment.js +1 -1
- package/dist/config/match-policy-file.js +1 -1
- package/dist/config/rule-engine.d.ts +4 -10
- package/dist/config/rule-engine.js +1 -1
- package/dist/config/template-params.js +1 -1
- package/dist/evaluation/engine.js +1 -1
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/capability.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/harness/forward-roster-preflight.js +1 -0
- package/dist/keeper/detectors.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arb-operation-face.js +1 -1
- package/dist/knowledge/arbitration-rail-verifier.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +17 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/rules/alloc_audit.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/allocation.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/arb.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/arbitration.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/bridge.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/contact.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/demand.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/graph.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/guard.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/machine.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/oracle.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/order.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/payment.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/permission.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/personal.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/plan.json +153 -33
- package/dist/knowledge/baselines/rules/plan.json.good +153 -33
- package/dist/knowledge/baselines/rules/plan.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/progress.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/proof.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/registrar.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/repository.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/resource.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/reward.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/service.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/treasury.json.good.sha256 +1 -0
- package/dist/knowledge/baselines/rules/util.json.good.sha256 +1 -0
- package/dist/knowledge/builtin-templates.d.ts +1 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/fee-param-bindings.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-binding-table.js +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +3 -2
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/knob-docs.js +1 -1
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/path-oracle/products/alibaba-1688.js +1 -1
- package/dist/knowledge/path-oracle/products/amazon.js +1 -1
- package/dist/knowledge/path-oracle/products/booking-com.js +1 -1
- package/dist/knowledge/path-oracle/products/contra.js +1 -1
- package/dist/knowledge/path-oracle/products/costco.js +1 -1
- package/dist/knowledge/path-oracle/products/duoduo-maicai.js +1 -1
- package/dist/knowledge/path-oracle/products/etsy.js +1 -1
- package/dist/knowledge/path-oracle/products/gamefound.js +1 -1
- package/dist/knowledge/path-oracle/products/gofundme.js +1 -1
- package/dist/knowledge/path-oracle/products/klook.js +1 -1
- package/dist/knowledge/path-oracle/products/ninety-nine-designs.js +1 -1
- package/dist/knowledge/path-oracle/products/pinduoduo-kuaituantuan.js +1 -1
- package/dist/knowledge/path-oracle/products/shansong.js +1 -1
- package/dist/knowledge/path-oracle/products/taobao-presale.js +1 -1
- package/dist/knowledge/path-oracle/products/upwork-catalog.js +1 -1
- package/dist/knowledge/path-oracle/products/upwork.js +1 -1
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/protocol-facts.js +1 -1
- package/dist/knowledge/publish-gate.js +1 -1
- package/dist/knowledge/publish-surface-contract.js +1 -1
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/time-units.js +1 -0
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/radar-core.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.js +1 -1
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +110 -2
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/boundary-coercion.js +1 -0
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +56 -8
- package/dist/schema/call/order.d.ts +37 -10
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/permission.d.ts +210 -30
- package/dist/schema/call/personal.d.ts +56 -8
- package/dist/schema/call/progress.d.ts +28 -4
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +84 -12
- package/dist/schema/common/index.d.ts +14 -2
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +1 -1
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +168 -24
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +655 -22
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +22 -110
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workflow/index.d.ts +4 -0
- package/dist/schema/workflow/index.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/benchmark_migration_operation.schema.json +1 -1
- package/dist/schemas/evaluation_operation.schema.json +1 -1
- package/dist/schemas/goal_operation.schema.json +1 -1
- package/dist/schemas/guard_rebind_replacement.schema.json +1 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/messenger_operation.schema.json +1 -1
- package/dist/schemas/onchain_operations.schema.json +1 -1
- package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
- package/dist/schemas/onchain_operations_arbitration.schema.json +1 -1
- package/dist/schemas/onchain_operations_contact.schema.json +1 -1
- package/dist/schemas/onchain_operations_demand.schema.json +1 -1
- package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -1
- package/dist/schemas/onchain_operations_machine.schema.json +1 -1
- package/dist/schemas/onchain_operations_order.schema.json +1 -1
- package/dist/schemas/onchain_operations_permission.schema.json +1 -1
- package/dist/schemas/onchain_operations_personal.schema.json +1 -1
- package/dist/schemas/onchain_operations_progress.schema.json +1 -1
- package/dist/schemas/onchain_operations_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_repository.schema.json +1 -1
- package/dist/schemas/onchain_operations_reward.schema.json +1 -1
- package/dist/schemas/onchain_operations_service.schema.json +1 -1
- package/dist/schemas/onchain_operations_treasury.schema.json +1 -1
- package/dist/schemas/persona_operation.schema.json +1 -1
- package/dist/schemas/time_convert.schema.json +1 -0
- package/dist/schemas/wip_file.schema.json +1 -1
- package/dist/schemas/workflow_operation.schema.json +1 -1
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/fund-rail-recipe.js +1 -1
- package/dist/tools/handlers/guard-rebind-replacement.js +1 -0
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/mark-namespace.js +1 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/settle-sweep.js +1 -1
- package/dist/tools/handlers/time-convert.js +1 -0
- package/dist/tools/handlers/wip.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/wip-verify-ledger.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +6 -5
|
@@ -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,GetAccountOrMark_Address,ENTRYPOINT}from'@wowok/wowok';import{listInFlightMarkers,recentReturnedDigests,recentLandedTombstones}from'../../composition/inflight.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{attachWinnerDerivation}from'./winner-derivation.js';import{attachEscrowDeficit}from'./escrow-deficit.js';import{aggregateOrdersViaIndex}from'../../knowledge/jsonrpc-enum.js';import{resolveNetwork}from'./network.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=(k,l)=>{if(k===null||k===undefined)return undefined;if(typeof k!=='string'&&typeof k!=='number'&&typeof k!=='bigint')return undefined;if(typeof l!=='string'||!l)return undefined;return formatChainValue(k,l,b);},g=a['balance'];if(g&&typeof g==='object'){const k=g['coinType'],l=await f(g['totalBalance'],k);if(l)e['balance.totalBalance']=l;if(g['lockedBalance']!==undefined){const m=await f(g['lockedBalance'],k);if(m)e['balance.lockedBalance']=m;}}const h=a['object'];if(h&&typeof h==='object'&&(typeof h['balance']==='string'||typeof h['balance']==='number')&&String(h['balance'])!==''){const n=typeof h['type']==='string'?h['type']:undefined,o=n?.['match'](/<([^>]+)>/)?.[0x1]??n,p=await f(h['balance'],o);if(p)e['object.balance']=p;a['_balance_shape']='object_address:\x20the\x20queried\x20name/address\x20resolved\x20to\x20an\x20ON-CHAIN\x20OBJECT\x20—\x20its\x20funds\x20surface\x20as\x20'+'`object.balance`\x20(the\x20object\x27s\x20own\x20coin\x20balance),\x20NOT\x20as\x20`balance.totalBalance`\x20(the\x20account-aggregate\x20'+'shape).\x20Same\x20units,\x20different\x20key:\x20read\x20BOTH\x20keys,\x20or\x20branch\x20on\x20this\x20note,\x20when\x20polling\x20balances\x20'+'(ks7\x20F-14:\x20a\x20funded\x20escrow\x20was\x20reported\x20as\x200\x20because\x20only\x20the\x20aggregate\x20key\x20was\x20read).';}const j=a['coin']?.['data'];if(Array['isArray'](j))for(let q=0x0;q<j['length'];q++){const r=j[q],s=await f(r?.['balance'],r?.['coinType']);if(s)e['coin.data['+q+'].balance']=s;}if(Object['keys'](e)['length']>0x0){if(b)for(const t of Object['keys'](e)){const u=e[t];e[t]={...u,'text':u['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.';}export function balanceFreshnessFace(a){return{'source':'live','cached':![],'network':a,'fetched_at':new Date()['toISOString'](),'note':'Live\x20read\x20—\x20no\x20MCP/SDK\x20session\x20cache;\x20every\x20account_balance\x20call\x20is\x20an\x20independent\x20query\x20against\x20the\x20'+'network\x27s\x20indexer.\x20Figures\x20CAN\x20differ\x20between\x20calls\x20taken\x20moments\x20apart\x20(live\x20F-RQ-12:\x20the\x20same\x20wallet\x20'+'returned\x209.93\x20/\x2021.88\x20/\x2056.28\x20WOW\x20on\x20three\x20consecutive\x20reads)\x20because\x20the\x20aggregate\x20is\x20assembled\x20from\x20'+'independently\x20owned\x20Coin\x20objects\x20and\x20each\x20query\x20may\x20catch\x20a\x20different\x20settle/merge\x20state.\x20To\x20resolve\x20a\x20'+'discrepancy:\x20re-read\x20and\x20compare\x20fetched_at,\x20enumerate\x20the\x20per-object\x20breakdown\x20(coin={cursor,limit}),\x20'+'and\x20prove\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20—\x20never\x20off\x20a\x20single\x20balance\x20read.'};}import{QUERY_NETWORK_FIELD as a557a}from'../../schema/operations.js';export{QUERY_NETWORK_FIELD as NETWORK_FIELD_BY_QUERY}from'../../schema/operations.js';function requestedNetworkForQuery(a,b){const c=a557a[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=a557a[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 m={...a};normalizeNetworkFieldAlias(m),c=m;}const d=strictParse(WatchQueryOperationsSchema,c,'watch_and_query\x20input');let f,g,h;switch(d['query_type']){case'local_mark_list':{const n=await query_local_mark_list(d['filter']||{});f={'query_type':'local_mark_list','result':n};break;}case'account_list':{const o=await query_account_list(d['filter']);f={'query_type':'account_list','result':o};break;}case'local_info_list':{const p=await query_local_info_list(d['filter'],d['account']);f={'query_type':'local_info_list','result':p};break;}case'token_list':{const q=await query_local_token_list(d['filter']||{});f={'query_type':'token_list','result':q};break;}case'account_balance':{const r=await query_account({'name_or_address':d['name_or_address'],'token_type':d['token_type'],'balance':d['balance'],'coin':d['coin'],'network':d['network']}),s=d['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(r,s);let t=![];if(r['balance']&&!d['coin']&&!r['object']&&!r['hint'])try{const u=await query_account({'name_or_address':d['name_or_address'],'coin':{'cursor':null,'limit':0x5},'token_type':d['token_type'],'network':d['network']});u['coin']&&(r['coin']=u['coin'],t=!![]);}catch{}r['_balance_scope_note']=balanceScopeNote(t),r['_balance_read_freshness']=balanceFreshnessFace(s),f={'query_type':'account_balance','result':r};break;}case'local_names':{const v=await GetLocalNamesByAddresses(d['addresses']);f={'query_type':'local_names','result':v};break;}case'onchain_personal_profile':{const w=await query_personal({'account':d['account'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_personal_profile','result':w};break;}case'onchain_objects':{const x=d['no_cache']??!![],y=await batchQueryObjectsByIds(d['objects'],d['network'],x),z=lastUnresolvedInputs(),A={'objects':y,'_read_freshness':{'source':x?'live':'session_cache','no_cache':x,'fetched_at':new Date()['toISOString'](),'note':x?'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.'},...y['length']===0x0&&z['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':z,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(d['network']??'current\x20(session\x20default)')+'\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.\x20If\x20your\x20session\x20targets\x20a\x20DIFFERENT\x20network,\x20this\x20is\x20NOT\x20evidence\x20that\x20the\x20objects\x20are\x20absent\x20there\x20—\x20re-query\x20on\x20the\x20intended\x20network\x20before\x20concluding\x20absence.'}}:{},...y['length']<d['objects']['length']?{'_unreturned':{'requested':d['objects']['length'],'returned':y['length'],'missing':d['objects']['map'](B=>typeof B==='string'?B:B?.['name_or_address']??B?.['object']??B?.['address'])['filter'](B=>typeof B==='string'&&B!=='')['filter'](B=>!y['some'](C=>typeof C?.['object']==='string'&&C['object']['toLowerCase']()===B['toLowerCase']())),'note':'These\x20requested\x20ids\x20were\x20NOT\x20returned\x20—\x20they\x20MAY\x20be\x20absent\x20on\x20the\x20queried\x20network,\x20or\x20filtered\x20by\x20the\x20reader\x27s\x20type\x20support,\x20or\x20unparseable\x20(network\x20defaults\x20to\x20the\x20session\x20network\x20when\x20not\x20passed\x20explicitly\x20—\x20a\x20cross-network\x20read\x20is\x20a\x20false\x20negative,\x20not\x20absence).\x20This\x20is\x20NOT\x20proof\x20of\x20nonexistence:\x20verify\x20via\x20an\x20alternative\x20read\x20(object_panorama\x20/\x20a\x20direct\x20address\x20query\x20on\x20the\x20intended\x20network)\x20before\x20concluding\x20an\x20object\x20is\x20gone.'}}:{}};if(A&&A['objects']&&Array['isArray'](A['objects'])){A['objects']=A['objects']['map'](B=>{if(B&&B['data']&&B['data']['type']==='Guard'&&B['data']['root'])try{const C=generateNodeComments(B['data']['root']);return{...B,'_guard_node_comments':C};}catch(D){return B;}return B;}),A['objects']=A['objects']['map'](B=>{if(B&&B['data']&&B['data']['type']==='Progress'&&B['data']['current']===''){const C=B['data']['machine'],D=B['data']['task'];return{...B,'_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':C??null,'bound_order_id':D??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](C)+']).','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 B;});for(const B of A['objects']){const C=B?.['data']??B;if((B?.['type']??C?.['type'])!=='Progress')continue;const D=B?.['object']??C?.['object'];if(!D)continue;try{const E=await enrichWorkflowGuidance({'progressRef':D,'network':d['network'],'noCache':d['no_cache']});if(E?.['guidance']){B['_workflow_guidance']=E['guidance'];if(E['text'])B['_workflow_guidance_text']=E['text'];}}catch{}try{const F=d['winner_node'],G=await attachWinnerDerivation(D,C,d['network'],typeof F==='string'?F:undefined);B['_winner_derivation']=G['winner_derivation'],G['winner_derivation_note']!==undefined&&(B['_winner_derivation_note']=G['winner_derivation_note']);}catch{}}for(const H of A['objects']){const I=H?.['data']??H;if((H?.['type']??I?.['type'])!=='Arb')continue;const J=H?.['object']??I?.['object'];if(!J)continue;try{const K=await buildOrderFundFacts({'arbRef':J,'network':d['network'],'noCache':x});K&&(H['_order_fund_facts']=K['structured'],H['_order_fund_facts_text']=K['text'],K['arb_key_diagnostic']&&(H['_arb_key_diagnostic']=K['arb_key_diagnostic']));}catch{}}for(const L of A['objects']){const M=L?.['data']??L;if((L?.['type']??M?.['type'])!=='Order')continue;try{const N=await attachEscrowDeficit(M,d['network'],x);if(N)L['_escrow_deficit']=N;}catch{}}for(const O of A['objects']){try{await annotateObjectMonetaryFields(O,d['network']);}catch{}}}f={'query_type':'onchain_objects','result':A};break;}case'onchain_received':{const P=d['name_or_address'],Q=typeof P==='string'?P:P?.['name_or_address'],R=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']}),S=R;if(d['type']==='CoinWrapper'&&S&&!Array['isArray'](S)&&Array['isArray'](S['received'])&&S['received']['length']===0x0&&typeof Q==='string'&&Q!==''&&!Q['toLowerCase']()['startsWith']('0x00')){const T=await recoverObjectHeldReceipts(Q,{'network':d['network'],'no_cache':d['no_cache']});T&&T['receipts']['length']>0x0&&(S['received']=T['receipts']['map'](U=>({'id':U['id'],'balance':U['amount'],'payment':U['payment'],'type':U['type'],'version':U['version'],'digest':U['digest']})),S['token_type']=T['token_type'],S['balance']=T['receipts']['reduce']((U,V)=>U+BigInt(V['amount']||'0'),0x0n),h='allocation-transaction-effects');}if(S&&typeof S==='object'&&typeof S['balance']==='bigint'){const U=S['token_type'];S['balance']=S['balance']['toString']();if(Array['isArray'](S['received']))for(const V of S['received']){V&&typeof V['balance']==='bigint'&&(V['balance']=V['balance']['toString']());}if(U)try{const W={'balance':await formatChainValue(S['balance'],U,d['network'])};if(Array['isArray'](S['received']))for(let X=0x0;X<S['received']['length'];X++){const Y=S['received'][X]?.['balance'];Y!==undefined&&Y!==null&&(W['received['+X+'].balance']=await formatChainValue(Y,U,d['network']));}S['_money_display']=W;}catch{}}f={'query_type':'onchain_received','result':S};break;}case'onchain_transaction':{const Z=a4=>query_transaction({'digest':d['digest'],'no_cache':d['no_cache'],'network':a4}),a0=a4=>/could not find the referenced transaction|not found/i['test'](a4 instanceof Error?a4['message']:String(a4));let a1;if(d['network'])a1=await Z(d['network']);else{const a4=await Config['Instance']()['network_get']();try{a1=await Z(undefined);}catch(a5){if(!a0(a5))throw a5;}if(!a1){const a6=[];for(const a7 of Object['values'](ENTRYPOINT)){if(a7===a4)continue;a6['push'](a7);try{const a8=await Z(a7);if(a8){a1=a8,g=a7;break;}}catch{}}if(!a1)throw new Error('Transaction\x20digest\x20not\x20found\x20on\x20the\x20session\x20default\x20network\x20('+a4+')\x20'+('or\x20any\x20other\x20probed\x20network\x20('+[a4,...a6]['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 a2=d['network']??g;try{await annotateBalanceChanges(a1?.['balance_changes'],a2);}catch{}g&&(a1['_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 a3=fundExitAuditNote(a1);a3&&(a1['_fund_exit_audit']=a3);f={'query_type':'onchain_transaction','result':a1};break;}case'onchain_block':{const a9=await query_checkpoint({'block':d['block'],'network':d['network']});f={'query_type':'onchain_block','result':a9};break;}case'onchain_object_history':{const aa=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':aa};break;}case'onchain_last_updated':{const ab=d['objects']??[],ac=await Promise['allSettled'](ab['map'](ae=>query_object_last_updated({'object':ae,'network':d['network']}))),ad=ab['map']((ae,af)=>{const ag=ac[af],ah=ag['status']==='fulfilled'?ag['value']:null;return{'object':ae,'timestamp_ms':ah?.['timestamp_ms']?String(ah['timestamp_ms']):null,'digest':ah?.['digest']??null,'sender':ah?.['sender']??null};});f={'query_type':'onchain_last_updated','result':{'items':ad}};break;}case'onchain_address_activity':{const ae=typeof d['name_or_address']==='string'?d['name_or_address']:d['name_or_address']['name_or_address'],af=await query_address_activity({'name_or_address':ae,'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':af};break;}case'recover_created_objects':{const ag=d['label'],ah=typeof ag==='string'?ag:ag['name_or_address']??'',ai=ah['trim']();let aj;if(/^0x[0-9a-fA-F]{1,64}$/['test'](ai))aj=ai['toLowerCase']();else try{aj=await GetAccountOrMark_Address(ai)??undefined;}catch{aj=undefined;}const ak=d['op'],al=aj?.['toLowerCase'](),am=listInFlightMarkers()['filter'](aq=>ak?aq['op']===ak:!![])['filter'](aq=>al?!aq['buyer']||aq['buyer']['toLowerCase']()===al:!![]),an=d['limit']??0x14;let ao=null,ap;try{ao=await query_address_activity({'name_or_address':ah,'direction':'sent','limit':an,'no_cache':d['no_cache'],'network':d['network']});}catch(aq){ap=aq instanceof Error?aq['message']:String(aq);}f={'query_type':'recover_created_objects','result':{'label':ah,...aj?{'resolved_address':aj}:{},'inflight_markers':am,'returned_digests':recentReturnedDigests(an),'landed_tombstones':recentLandedTombstones(),...ao!==null?{'onchain_activity':ao}:{},...ap?{'onchain_activity_error':ap}:{},'recovery_guidance':'Decision\x20rule,\x20in\x20order:\x20(1)\x20a\x20marker\x20whose\x20digests\x20include\x20a\x20digest\x20that\x20resolves\x20to\x20an\x20'+'EXECUTED\x20transaction\x20(query_toolkit\x20onchain_transaction)\x20—\x20the\x20operation\x20landed:\x20ADOPT\x20its\x20'+'created\x20objects\x20and\x20stop;\x20(2)\x20onchain_activity\x20shows\x20the\x20operation\x27s\x20effects\x20inside\x20the\x20'+'failure\x20window\x20—\x20adopt,\x20stop;\x20(3)\x20markers\x20are\x20open\x20but\x20nothing\x20on-chain\x20—\x20the\x20commit\x20state\x20'+'stayed\x20open:\x20a\x20CORRECTED\x20resubmit\x20is\x20allowed\x20(an\x20identical\x20payload\x20within\x20the\x20intercept\x20'+'window\x20is\x20still\x20held\x20by\x20the\x20verify-first\x20gate);\x20(4)\x20no\x20markers\x20and\x20no\x20activity\x20—\x20nothing\x20'+'landed\x20from\x20THIS\x20process;\x20other\x20sessions/devices\x20may\x20hold\x20state,\x20the\x20chain\x20remains\x20the\x20only\x20truth.'}};break;}case'token_value_convert':{const ar=d['raw']!==undefined,as=d['unit']!==undefined;if(ar===as)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 at=await convertTokenValue(d['token_type'],ar?{'raw':d['raw']}:{'unit':d['unit']},d['network']);f={'query_type':'token_value_convert','result':at};break;}case'address_profile':{const au=await query_address_profile({'address':d['address'],'no_cache':d['no_cache'],'network':d['network']});await mergeServiceAnalysis(au,{'no_cache':d['no_cache'],'network':d['network']});au&&typeof au==='object'&&(au['follow_ups']=buildProfileFollowUps(au));f={'query_type':'address_profile','result':au};break;}case'address_profiles':{const av=await query_address_profiles({'addresses':d['addresses'],'no_cache':d['no_cache'],'network':d['network']});await Promise['all'](av['map'](aw=>mergeServiceAnalysis(aw,{'no_cache':d['no_cache'],'network':d['network']})));for(const aw of av??[]){aw&&typeof aw==='object'&&(aw['follow_ups']=buildProfileFollowUps(aw));}f={'query_type':'address_profiles','result':av};break;}case'service_supply_chain':{const ax=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':ax};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 ay=d['context_network']??await Config['Instance']()['network_get'](),az=await batchQueryObjectsByIds(d['context_objects'],ay,!![]);let aA,aB,aC=null;{const aE=az['find'](aG=>{const aH=aG?.['machine']??aG?.['data']?.['machine'];return typeof aH==='string'&&/^0x[0-9a-fA-F]/['test'](aH);});if(aE)try{aC=String(aE['object']??aE['id']??'');const aG=await LocalMark['Instance']()['list']({'address':aC});if(aG[0x0]?.['name'])aE['name']=aG[0x0]['name'];}catch{}const aF=aE?String(aE['machine']??aE['data']?.['machine']):null;if(aF)try{const aH=az['some'](aJ=>String(aJ?.['object']??aJ?.['id']??'')['toLowerCase']()===aF['toLowerCase']());!aH&&az['push'](...await batchQueryObjectsByIds([aF],ay,!![]));const aI=await fetchMachineNodes(aF,ay);aA=aI['map'](aJ=>({'name':String(aJ?.['name']??'')}))['filter'](aJ=>aJ['name']['length']>0x0),aB=buildMachineGraph(aI)['edges']['map'](aJ=>({'from':aJ['from'],'to':aJ['to']}));}catch{}}let aD;if(aC)try{const aJ=await fetchServiceOrders(aC,ay),aK=(aJ?.['items']??[])['slice'](0x0,0xa)['map'](aL=>typeof aL?.['who']==='string'?aL['who']:'')['filter'](aL=>aL!=='');if(aK['length']>0x0){const aL=await batchQueryObjectsByIds(aK,ay,!![]);aD=aL['filter'](aM=>aM?.['type']===ObjectType['Order'])['map'](aM=>({'id':aM['object'],'created_at_ms':Number(aM?.['time'])||undefined,'claimed_by':aM?.['claimed_by']??null}));}}catch{}f={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':az['length'],'report':generateBusinessReport({'objects':az,'machine_nodes':aA,'machine_edges':aB,'orders':aD,'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'order_aggregate':{const aM=await resolveNetwork(d['context_network']),aN=await aggregateOrdersViaIndex(aM,{'group':d['group'],'groupId':d['group_id'],'metric':d['metric'],'excludeClaimed':d['exclude_claimed'],'limit':d['limit']});f={'query_type':'order_aggregate','result':{'action':'order_aggregate',...aN}};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 aO=d['chain_id'];f={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':aO?SCENARIO_CHAINS['filter'](aP=>aP['id']===aO):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\x22recover_created_objects\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(a557a[f['query_type']]){const aP=j??g??await Config['Instance']()['network_get']();k={'network':aP,'network_source':j?'explicit':g?'probed':'default'};}const l=[];return k?.['network_source']==='default'&&l['push']('network_source=default:'+k['network']+'\x20—\x20result\x20may\x20be\x20a\x20false\x20negative\x20if\x20your\x20session\x20targets\x20another\x20network.\x20'+'Confirm\x20the\x20session\x20network\x20(or\x20pass\x20network\x20explicitly)\x20BEFORE\x20treating\x20any\x20absent/not-found\x20answer\x20here\x20as\x20final.'),{'content':[{'type':'text','text':JSON['stringify']({...k,...h?{'read_path':h}:{},'result':f})}],'structuredContent':{'result':f,...queryPayloadAliases(f),...k??{},...h?{'read_path':h}:{},...l['length']>0x0?{'warnings':l}:{},'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
|
+
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,GetAccountOrMark_Address,ENTRYPOINT}from'@wowok/wowok';import{listInFlightMarkers,recentReturnedDigests,recentLandedTombstones}from'../../composition/inflight.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{attachWinnerDerivation}from'./winner-derivation.js';import{attachEscrowDeficit}from'./escrow-deficit.js';import{aggregateOrdersViaIndex}from'../../knowledge/jsonrpc-enum.js';import{resolveNetwork}from'./network.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=(k,l)=>{if(k===null||k===undefined)return undefined;if(typeof k!=='string'&&typeof k!=='number'&&typeof k!=='bigint')return undefined;if(typeof l!=='string'||!l)return undefined;return formatChainValue(k,l,b);},g=a['balance'];if(g&&typeof g==='object'){const k=g['coinType'],l=await f(g['totalBalance'],k);if(l)e['balance.totalBalance']=l;if(g['lockedBalance']!==undefined){const m=await f(g['lockedBalance'],k);if(m)e['balance.lockedBalance']=m;}}const h=a['object'];if(h&&typeof h==='object'&&(typeof h['balance']==='string'||typeof h['balance']==='number')&&String(h['balance'])!==''){const n=typeof h['type']==='string'?h['type']:undefined,o=n?.['match'](/<([^>]+)>/)?.[0x1]??n,p=await f(h['balance'],o);if(p)e['object.balance']=p;a['_balance_shape']='object_address:\x20the\x20queried\x20name/address\x20resolved\x20to\x20an\x20ON-CHAIN\x20OBJECT\x20—\x20its\x20funds\x20surface\x20as\x20'+'`object.balance`\x20(the\x20object\x27s\x20own\x20coin\x20balance),\x20NOT\x20as\x20`balance.totalBalance`\x20(the\x20account-aggregate\x20'+'shape).\x20Same\x20units,\x20different\x20key:\x20read\x20BOTH\x20keys,\x20or\x20branch\x20on\x20this\x20note,\x20when\x20polling\x20balances\x20'+'(ks7\x20F-14:\x20a\x20funded\x20escrow\x20was\x20reported\x20as\x200\x20because\x20only\x20the\x20aggregate\x20key\x20was\x20read).';}const j=a['coin']?.['data'];if(Array['isArray'](j))for(let q=0x0;q<j['length'];q++){const r=j[q],s=await f(r?.['balance'],r?.['coinType']);if(s)e['coin.data['+q+'].balance']=s;}if(Object['keys'](e)['length']>0x0){if(b)for(const t of Object['keys'](e)){const u=e[t];e[t]={...u,'text':u['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.';}export function balanceFreshnessFace(a){return{'source':'live','cached':![],'network':a,'fetched_at':new Date()['toISOString'](),'note':'Live\x20read\x20—\x20no\x20MCP/SDK\x20session\x20cache;\x20every\x20account_balance\x20call\x20is\x20an\x20independent\x20query\x20against\x20the\x20'+'network\x27s\x20indexer.\x20Figures\x20CAN\x20differ\x20between\x20calls\x20taken\x20moments\x20apart\x20(live\x20F-RQ-12:\x20the\x20same\x20wallet\x20'+'returned\x209.93\x20/\x2021.88\x20/\x2056.28\x20WOW\x20on\x20three\x20consecutive\x20reads)\x20because\x20the\x20aggregate\x20is\x20assembled\x20from\x20'+'independently\x20owned\x20Coin\x20objects\x20and\x20each\x20query\x20may\x20catch\x20a\x20different\x20settle/merge\x20state.\x20To\x20resolve\x20a\x20'+'discrepancy:\x20re-read\x20and\x20compare\x20fetched_at,\x20enumerate\x20the\x20per-object\x20breakdown\x20(coin={cursor,limit}),\x20'+'and\x20prove\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20—\x20never\x20off\x20a\x20single\x20balance\x20read.'};}import{QUERY_NETWORK_FIELD as a563a}from'../../schema/operations.js';export{QUERY_NETWORK_FIELD as NETWORK_FIELD_BY_QUERY}from'../../schema/operations.js';function requestedNetworkForQuery(a,b){const c=a563a[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=a563a[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 m={...a};normalizeNetworkFieldAlias(m),c=m;}const d=strictParse(WatchQueryOperationsSchema,c,'watch_and_query\x20input');let f,g,h;switch(d['query_type']){case'local_mark_list':{const n=await query_local_mark_list(d['filter']||{});f={'query_type':'local_mark_list','result':n};break;}case'account_list':{const o=await query_account_list(d['filter']);f={'query_type':'account_list','result':o};break;}case'local_info_list':{const p=await query_local_info_list(d['filter'],d['account']);f={'query_type':'local_info_list','result':p};break;}case'token_list':{const q=await query_local_token_list(d['filter']||{});f={'query_type':'token_list','result':q};break;}case'account_balance':{const r=await query_account({'name_or_address':d['name_or_address'],'token_type':d['token_type'],'balance':d['balance'],'coin':d['coin'],'network':d['network']}),s=d['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(r,s);let t=![];if(r['balance']&&!d['coin']&&!r['object']&&!r['hint'])try{const u=await query_account({'name_or_address':d['name_or_address'],'coin':{'cursor':null,'limit':0x5},'token_type':d['token_type'],'network':d['network']});u['coin']&&(r['coin']=u['coin'],t=!![]);}catch{}r['_balance_scope_note']=balanceScopeNote(t),r['_balance_read_freshness']=balanceFreshnessFace(s),f={'query_type':'account_balance','result':r};break;}case'local_names':{const v=await GetLocalNamesByAddresses(d['addresses']);f={'query_type':'local_names','result':v};break;}case'onchain_personal_profile':{const w=await query_personal({'account':d['account'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_personal_profile','result':w};break;}case'onchain_objects':{const x=d['no_cache']??!![],y=await batchQueryObjectsByIds(d['objects'],d['network'],x),z=lastUnresolvedInputs(),A={'objects':y,'_read_freshness':{'source':x?'live':'session_cache','no_cache':x,'fetched_at':new Date()['toISOString'](),'note':x?'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.'},...y['length']===0x0&&z['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':z,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(d['network']??'current\x20(session\x20default)')+'\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.\x20If\x20your\x20session\x20targets\x20a\x20DIFFERENT\x20network,\x20this\x20is\x20NOT\x20evidence\x20that\x20the\x20objects\x20are\x20absent\x20there\x20—\x20re-query\x20on\x20the\x20intended\x20network\x20before\x20concluding\x20absence.'}}:{},...y['length']<d['objects']['length']?{'_unreturned':{'requested':d['objects']['length'],'returned':y['length'],'missing':d['objects']['map'](B=>typeof B==='string'?B:B?.['name_or_address']??B?.['object']??B?.['address'])['filter'](B=>typeof B==='string'&&B!=='')['filter'](B=>!y['some'](C=>typeof C?.['object']==='string'&&C['object']['toLowerCase']()===B['toLowerCase']())),'note':'These\x20requested\x20ids\x20were\x20NOT\x20returned\x20—\x20they\x20MAY\x20be\x20absent\x20on\x20the\x20queried\x20network,\x20or\x20filtered\x20by\x20the\x20reader\x27s\x20type\x20support,\x20or\x20unparseable\x20(network\x20defaults\x20to\x20the\x20session\x20network\x20when\x20not\x20passed\x20explicitly\x20—\x20a\x20cross-network\x20read\x20is\x20a\x20false\x20negative,\x20not\x20absence).\x20This\x20is\x20NOT\x20proof\x20of\x20nonexistence:\x20verify\x20via\x20an\x20alternative\x20read\x20(object_panorama\x20/\x20a\x20direct\x20address\x20query\x20on\x20the\x20intended\x20network)\x20before\x20concluding\x20an\x20object\x20is\x20gone.'}}:{}};if(A&&A['objects']&&Array['isArray'](A['objects'])){A['objects']=A['objects']['map'](B=>{if(B&&B['data']&&B['data']['type']==='Guard'&&B['data']['root'])try{const C=generateNodeComments(B['data']['root']);return{...B,'_guard_node_comments':C};}catch(D){return B;}return B;}),A['objects']=A['objects']['map'](B=>{if(B&&B['data']&&B['data']['type']==='Progress'&&B['data']['current']===''){const C=B['data']['machine'],D=B['data']['task'];return{...B,'_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':C??null,'bound_order_id':D??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](C)+']).','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 B;});for(const B of A['objects']){const C=B?.['data']??B;if((B?.['type']??C?.['type'])!=='Progress')continue;const D=B?.['object']??C?.['object'];if(!D)continue;try{const E=await enrichWorkflowGuidance({'progressRef':D,'network':d['network'],'noCache':d['no_cache']});if(E?.['guidance']){B['_workflow_guidance']=E['guidance'];if(E['text'])B['_workflow_guidance_text']=E['text'];}}catch{}try{const F=d['winner_node'],G=await attachWinnerDerivation(D,C,d['network'],typeof F==='string'?F:undefined);B['_winner_derivation']=G['winner_derivation'],G['winner_derivation_note']!==undefined&&(B['_winner_derivation_note']=G['winner_derivation_note']);}catch{}}for(const H of A['objects']){const I=H?.['data']??H;if((H?.['type']??I?.['type'])!=='Arb')continue;const J=H?.['object']??I?.['object'];if(!J)continue;try{const K=await buildOrderFundFacts({'arbRef':J,'network':d['network'],'noCache':x});K&&(H['_order_fund_facts']=K['structured'],H['_order_fund_facts_text']=K['text'],K['arb_key_diagnostic']&&(H['_arb_key_diagnostic']=K['arb_key_diagnostic']));}catch{}}for(const L of A['objects']){const M=L?.['data']??L;if((L?.['type']??M?.['type'])!=='Order')continue;try{const N=await attachEscrowDeficit(M,d['network'],x);if(N)L['_escrow_deficit']=N;}catch{}}for(const O of A['objects']){try{await annotateObjectMonetaryFields(O,d['network']);}catch{}}}f={'query_type':'onchain_objects','result':A};break;}case'onchain_received':{const P=d['name_or_address'],Q=typeof P==='string'?P:P?.['name_or_address'],R=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']}),S=R;if(d['type']==='CoinWrapper'&&S&&!Array['isArray'](S)&&Array['isArray'](S['received'])&&S['received']['length']===0x0&&typeof Q==='string'&&Q!==''&&!Q['toLowerCase']()['startsWith']('0x00')){const T=await recoverObjectHeldReceipts(Q,{'network':d['network'],'no_cache':d['no_cache']});T&&T['receipts']['length']>0x0&&(S['received']=T['receipts']['map'](U=>({'id':U['id'],'balance':U['amount'],'payment':U['payment'],'type':U['type'],'version':U['version'],'digest':U['digest']})),S['token_type']=T['token_type'],S['balance']=T['receipts']['reduce']((U,V)=>U+BigInt(V['amount']||'0'),0x0n),h='allocation-transaction-effects');}if(S&&typeof S==='object'&&typeof S['balance']==='bigint'){const U=S['token_type'];S['balance']=S['balance']['toString']();if(Array['isArray'](S['received']))for(const V of S['received']){V&&typeof V['balance']==='bigint'&&(V['balance']=V['balance']['toString']());}if(U)try{const W={'balance':await formatChainValue(S['balance'],U,d['network'])};if(Array['isArray'](S['received']))for(let X=0x0;X<S['received']['length'];X++){const Y=S['received'][X]?.['balance'];Y!==undefined&&Y!==null&&(W['received['+X+'].balance']=await formatChainValue(Y,U,d['network']));}S['_money_display']=W;}catch{}}f={'query_type':'onchain_received','result':S};break;}case'onchain_transaction':{const Z=a4=>query_transaction({'digest':d['digest'],'no_cache':d['no_cache'],'network':a4}),a0=a4=>/could not find the referenced transaction|not found/i['test'](a4 instanceof Error?a4['message']:String(a4));let a1;if(d['network'])a1=await Z(d['network']);else{const a4=await Config['Instance']()['network_get']();try{a1=await Z(undefined);}catch(a5){if(!a0(a5))throw a5;}if(!a1){const a6=[];for(const a7 of Object['values'](ENTRYPOINT)){if(a7===a4)continue;a6['push'](a7);try{const a8=await Z(a7);if(a8){a1=a8,g=a7;break;}}catch{}}if(!a1)throw new Error('Transaction\x20digest\x20not\x20found\x20on\x20the\x20session\x20default\x20network\x20('+a4+')\x20'+('or\x20any\x20other\x20probed\x20network\x20('+[a4,...a6]['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 a2=d['network']??g;try{await annotateBalanceChanges(a1?.['balance_changes'],a2);}catch{}g&&(a1['_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 a3=fundExitAuditNote(a1);a3&&(a1['_fund_exit_audit']=a3);f={'query_type':'onchain_transaction','result':a1};break;}case'onchain_block':{const a9=await query_checkpoint({'block':d['block'],'network':d['network']});f={'query_type':'onchain_block','result':a9};break;}case'onchain_object_history':{const aa=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':aa};break;}case'onchain_last_updated':{const ab=d['objects']??[],ac=await Promise['allSettled'](ab['map'](ae=>query_object_last_updated({'object':ae,'network':d['network']}))),ad=ab['map']((ae,af)=>{const ag=ac[af],ah=ag['status']==='fulfilled'?ag['value']:null;return{'object':ae,'timestamp_ms':ah?.['timestamp_ms']?String(ah['timestamp_ms']):null,'digest':ah?.['digest']??null,'sender':ah?.['sender']??null};});f={'query_type':'onchain_last_updated','result':{'items':ad}};break;}case'onchain_address_activity':{const ae=typeof d['name_or_address']==='string'?d['name_or_address']:d['name_or_address']['name_or_address'],af=await query_address_activity({'name_or_address':ae,'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':af};break;}case'recover_created_objects':{const ag=d['label'],ah=typeof ag==='string'?ag:ag['name_or_address']??'',ai=ah['trim']();let aj;if(/^0x[0-9a-fA-F]{1,64}$/['test'](ai))aj=ai['toLowerCase']();else try{aj=await GetAccountOrMark_Address(ai)??undefined;}catch{aj=undefined;}const ak=d['op'],al=aj?.['toLowerCase'](),am=listInFlightMarkers()['filter'](aq=>ak?aq['op']===ak:!![])['filter'](aq=>al?!aq['buyer']||aq['buyer']['toLowerCase']()===al:!![]),an=d['limit']??0x14;let ao=null,ap;try{ao=await query_address_activity({'name_or_address':ah,'direction':'sent','limit':an,'no_cache':d['no_cache'],'network':d['network']});}catch(aq){ap=aq instanceof Error?aq['message']:String(aq);}f={'query_type':'recover_created_objects','result':{'label':ah,...aj?{'resolved_address':aj}:{},'inflight_markers':am,'returned_digests':recentReturnedDigests(an),'landed_tombstones':recentLandedTombstones(),...ao!==null?{'onchain_activity':ao}:{},...ap?{'onchain_activity_error':ap}:{},'recovery_guidance':'Decision\x20rule,\x20in\x20order:\x20(1)\x20a\x20marker\x20whose\x20digests\x20include\x20a\x20digest\x20that\x20resolves\x20to\x20an\x20'+'EXECUTED\x20transaction\x20(query_toolkit\x20onchain_transaction)\x20—\x20the\x20operation\x20landed:\x20ADOPT\x20its\x20'+'created\x20objects\x20and\x20stop;\x20(2)\x20onchain_activity\x20shows\x20the\x20operation\x27s\x20effects\x20inside\x20the\x20'+'failure\x20window\x20—\x20adopt,\x20stop;\x20(3)\x20markers\x20are\x20open\x20but\x20nothing\x20on-chain\x20—\x20the\x20commit\x20state\x20'+'stayed\x20open:\x20a\x20CORRECTED\x20resubmit\x20is\x20allowed\x20(an\x20identical\x20payload\x20within\x20the\x20intercept\x20'+'window\x20is\x20still\x20held\x20by\x20the\x20verify-first\x20gate);\x20(4)\x20no\x20markers\x20and\x20no\x20activity\x20—\x20nothing\x20'+'landed\x20from\x20THIS\x20process;\x20other\x20sessions/devices\x20may\x20hold\x20state,\x20the\x20chain\x20remains\x20the\x20only\x20truth.'}};break;}case'token_value_convert':{const ar=d['raw']!==undefined,as=d['unit']!==undefined;if(ar===as)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 at=await convertTokenValue(d['token_type'],ar?{'raw':d['raw']}:{'unit':d['unit']},d['network']);f={'query_type':'token_value_convert','result':at};break;}case'address_profile':{const au=await query_address_profile({'address':d['address'],'no_cache':d['no_cache'],'network':d['network']});await mergeServiceAnalysis(au,{'no_cache':d['no_cache'],'network':d['network']});au&&typeof au==='object'&&(au['follow_ups']=buildProfileFollowUps(au));f={'query_type':'address_profile','result':au};break;}case'address_profiles':{const av=await query_address_profiles({'addresses':d['addresses'],'no_cache':d['no_cache'],'network':d['network']});await Promise['all'](av['map'](aw=>mergeServiceAnalysis(aw,{'no_cache':d['no_cache'],'network':d['network']})));for(const aw of av??[]){aw&&typeof aw==='object'&&(aw['follow_ups']=buildProfileFollowUps(aw));}f={'query_type':'address_profiles','result':av};break;}case'service_supply_chain':{const ax=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':ax};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 ay=d['context_network']??await Config['Instance']()['network_get'](),az=await batchQueryObjectsByIds(d['context_objects'],ay,!![]);let aA,aB,aC=null;{const aE=az['find'](aG=>{const aH=aG?.['machine']??aG?.['data']?.['machine'];return typeof aH==='string'&&/^0x[0-9a-fA-F]/['test'](aH);});if(aE)try{aC=String(aE['object']??aE['id']??'');const aG=await LocalMark['Instance']()['list']({'address':aC});if(aG[0x0]?.['name'])aE['name']=aG[0x0]['name'];}catch{}const aF=aE?String(aE['machine']??aE['data']?.['machine']):null;if(aF)try{const aH=az['some'](aJ=>String(aJ?.['object']??aJ?.['id']??'')['toLowerCase']()===aF['toLowerCase']());!aH&&az['push'](...await batchQueryObjectsByIds([aF],ay,!![]));const aI=await fetchMachineNodes(aF,ay);aA=aI['map'](aJ=>({'name':String(aJ?.['name']??'')}))['filter'](aJ=>aJ['name']['length']>0x0),aB=buildMachineGraph(aI)['edges']['map'](aJ=>({'from':aJ['from'],'to':aJ['to']}));}catch{}}let aD;if(aC)try{const aJ=await fetchServiceOrders(aC,ay),aK=(aJ?.['items']??[])['slice'](0x0,0xa)['map'](aL=>typeof aL?.['who']==='string'?aL['who']:'')['filter'](aL=>aL!=='');if(aK['length']>0x0){const aL=await batchQueryObjectsByIds(aK,ay,!![]);aD=aL['filter'](aM=>aM?.['type']===ObjectType['Order'])['map'](aM=>({'id':aM['object'],'created_at_ms':Number(aM?.['time'])||undefined,'claimed_by':aM?.['claimed_by']??null}));}}catch{}f={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':az['length'],'report':generateBusinessReport({'objects':az,'machine_nodes':aA,'machine_edges':aB,'orders':aD,'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'order_aggregate':{const aM=await resolveNetwork(d['context_network']),aN=await aggregateOrdersViaIndex(aM,{'group':d['group'],'groupId':d['group_id'],'metric':d['metric'],'excludeClaimed':d['exclude_claimed'],'limit':d['limit']});f={'query_type':'order_aggregate','result':{'action':'order_aggregate',...aN}};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 aO=d['chain_id'];f={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':aO?SCENARIO_CHAINS['filter'](aP=>aP['id']===aO):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\x22recover_created_objects\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(a563a[f['query_type']]){const aP=j??g??await Config['Instance']()['network_get']();k={'network':aP,'network_source':j?'explicit':g?'probed':'default'};}const l=[];return k?.['network_source']==='default'&&l['push']('network_source=default:'+k['network']+'\x20—\x20result\x20may\x20be\x20a\x20false\x20negative\x20if\x20your\x20session\x20targets\x20another\x20network.\x20'+'Confirm\x20the\x20session\x20network\x20(or\x20pass\x20network\x20explicitly)\x20BEFORE\x20treating\x20any\x20absent/not-found\x20answer\x20here\x20as\x20final.'),{'content':[{'type':'text','text':JSON['stringify']({...k,...h?{'read_path':h}:{},'result':f})}],'structuredContent':{'result':f,...queryPayloadAliases(f),...k??{},...h?{'read_path':h}:{},...l['length']>0x0?{'warnings':l}:{},'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 +1 @@
|
|
|
1
|
-
import{LocalMark}from'@wowok/wowok';import{batchQueryObjectsByIds,fetchMachineNodes,fetchServiceOrders}from'../../graph/onchain/sdk-batch.js';import{buildPendingAllocations}from'../../playbooks/service-build/service-panorama.js';import{TASK_BINDING_SLOT}from'../../knowledge/onchain-constants.js';import{SettleSweepInputSchema,strictParse}from'../../schema/index.js';import{dryRunGateKey,dryRunGateWaived,hasDryRunAudit,recordDryRunAudit}from'../publish-gate-state.js';import{resolveNetwork}from'./network.js';const PERMISSION_BINDING_SLOT=0x6,SCAN_WINDOW=0x32;let depsOverride;export function setSettleSweepDeps(a){depsOverride=a;}function sweepDeps(){if(depsOverride)return depsOverride;return{'execute':defaultExecute,'resolveNetwork':resolveNetwork};}async function defaultExecute(a){const {handleOnchainOperations:b}=await import('./onchain.js');try{const c=await b({'operation_type':'allocation','data':{'object':a['allocation'],'alloc_by_guard':a['guard']},'submission':{'type':'submission','guard':[{'object':a['guard'],'impack':!![]}],'submission':[]},'env':{'account':a['account'],'network':a['network'],'confirmed':!![],'user_intent_phrases':['settle_sweep\x20batch\x20settlement']}}),d=c?.['structuredContent']?.['result'];if(d?.['type']==='transaction'&&typeof d?.['digest']==='string')return{'ok':!![],'digest':d['digest']};const f=d?.['type']==='error'&&typeof d?.['error']==='string'?d['error']:typeof c?.['structuredContent']?.['message']==='string'?c['structuredContent']['message']:'execution\x20did\x20not\x20produce\x20a\x20transaction';return{'ok':![],'error':String(f)['slice'](0x0,0x1f4)};}catch(g){return{'ok':![],'error':String(g?.['message']??g)['slice'](0x0,0x1f4)};}}async function resolveRef(a){if(typeof a!=='string'||a==='')return undefined;if(a['startsWith']('0x'))return a;try{return await LocalMark['Instance']()['get_address'](a)??undefined;}catch{return undefined;}}function pickMachine(a){for(const b of a){const c=b?.['data']??b;if(typeof c?.['machine']==='string'&&c['machine']!=='')return c['machine'];}return undefined;}function rowMap(a,b){const c=new Map();for(const d of a??[]){const e=typeof d?.['object']==='string'?d['object']['toLowerCase']():'';if(e&&d?.['type']===b)c['set'](e,d);}return c;}export async function enumeratePending(a,b){if(a['kind']==='order'){const n=a['address'],o=await batchQueryObjectsByIds([n],b,!![]),p=(o??[])['find'](w=>String(w?.['object']??'')['toLowerCase']()===n['toLowerCase']()&&w?.['type']==='Order');if(!p)return{'entries':[],'scanned_orders':0x0,'note':'order\x20'+n+'\x20not\x20found\x20on\x20'+b+'\x20(or\x20not\x20an\x20Order\x20object)'};const q=typeof p['allocation']==='string'?p['allocation']:undefined,r=typeof p['progress']==='string'?p['progress']:undefined;if(!q||!r)return{'entries':[],'scanned_orders':0x1,'note':'order\x20carries\x20no\x20allocation/progress\x20binding\x20—\x20nothing\x20to\x20settle'};const s=await batchQueryObjectsByIds([q,r],b,!![]),t=pickMachine([p,...s??[]]),u=t?await fetchMachineNodes(t,b):[],v=buildPendingAllocations([p],rowMap(s,'Allocation'),rowMap(s,'Progress'),u);return{'entries':v,'scanned_orders':0x1,...t?{}:{'note':'machine\x20topology\x20unreadable\x20—\x20settlement\x20judgment\x20degraded\x20to\x20empty'}};}const c=await fetchServiceOrders(a['address'],b,!![]),d=Array['isArray'](c?.['items'])?c['items']:[],e=d['map'](w=>typeof w?.['who']==='string'?w['who']:'')['filter'](w=>w!=='')['slice'](-SCAN_WINDOW);if(e['length']===0x0)return{'entries':[],'scanned_orders':0x0};const f=await batchQueryObjectsByIds(e,b,!![]),g=(f??[])['filter'](w=>w?.['type']==='Order'),h=new Set();for(const w of g){if(typeof w?.['allocation']==='string')h['add'](w['allocation']);if(typeof w?.['progress']==='string')h['add'](w['progress']);}const i=h['size']>0x0?await batchQueryObjectsByIds([...h],b,!![]):[],j=pickMachine([...g,...i??[]]),k=j?await fetchMachineNodes(j,b):[],l=buildPendingAllocations(g,rowMap(i,'Allocation'),rowMap(i,'Progress'),k),m=new Map(e['map']((x,y)=>[x['toLowerCase'](),y]));return l['sort']((x,y)=>(m['get'](y['order']['toLowerCase']())??-0x1)-(m['get'](x['order']['toLowerCase']())??-0x1)),{'entries':l,'scanned_orders':g['length'],...d['length']>SCAN_WINDOW?{'note':'scan\x20window:\x20newest\x20'+SCAN_WINDOW+'\x20of\x20'+d['length']+'\x20registered\x20orders\x20(FIFO\x20window)'}:{}};}async function readGuardSlots(a,b){try{const c=await batchQueryObjectsByIds([a],b,!![]),d=(c??[])['find'](h=>String(h?.['object']??'')['toLowerCase']()===a['toLowerCase']());if(!d||d['type']!=='Guard')return null;const e=d['data']??d,f=Array['isArray'](e?.['table'])?e['table']:[];return f['filter'](h=>h?.['b_submission']===!![])['map'](h=>({'identifier':Number(h?.['identifier']),'value_type':typeof h?.['value_type']==='string'?h['value_type']:String(h?.['value_type']??'')}));}catch{return null;}}export function staticallySatisfiable(a){return a['every'](b=>b['identifier']===TASK_BINDING_SLOT||b['identifier']===PERMISSION_BINDING_SLOT&&b['value_type']['includes']('Address'));}export async function selectGuard(a,b){const c=Array['isArray'](a['candidate_guards'])?a['candidate_guards']:[];if(c['length']===0x0)return{'status':'no_guard','reason':'pool\x20exposes\x20no\x20readable\x20allocator\x20guards'};let d,e='',f;for(const h of c){const i=await resolveRef(h);if(!i){f??=h;continue;}const j=await readGuardSlots(i,b);if(j===null){f??=i;continue;}if(staticallySatisfiable(j))return{'status':'ok','guard':i};const k=j['filter'](l=>!(l['identifier']===TASK_BINDING_SLOT||l['identifier']===PERMISSION_BINDING_SLOT&&l['value_type']['includes']('Address')))['map'](l=>'#'+l['identifier']+'('+(l['value_type']||'?')+')');d??=i,e||='guard\x20'+i+'\x20requires\x20non-auto-fillable\x20submission\x20slot(s)\x20'+k['join'](',\x20')+'\x20—\x20guard\x20semantics\x20need\x20human\x20context\x20(never\x20guessed)';}if(d)return{'status':'needs_context','guard':d,'reason':e};return{'status':'needs_context','guard':f,'reason':'no\x20candidate\x20guard\x20could\x20be\x20statically\x20screened\x20(unresolvable\x20or\x20unreadable:\x20'+(f??c[0x0])+')'};}function claimHint(a){return a['is_refund_terminal']?'REFUND\x20is\x20TWO-STEP:\x20the\x20refund\x20alloc\x20pays\x20into\x20the\x20ORDER\x20object\x20—\x20the\x20order\x20owner\x20unwraps\x20it\x20via\x20'+'onchain_operations\x20{\x20operation_type:\x27order\x27,\x20data:{\x20object:\x27'+a['order']+'\x27,\x20receive:\x27recently\x27\x20}\x20}.':'Payout\x20is\x20TWO-HOP:\x20alloc_by_guard\x20split\x20the\x20pool\x20into\x20recipients\x27\x20CoinWrappers\x20—\x20each\x20recipient\x20'+'claims\x20via\x20onchain_operations\x20{\x20operation_type:\x27payment\x27,\x20data:{\x20object:\x27<wrapper>\x27,\x20receive:true\x20}\x20};\x20'+'find\x20pending\x20wrappers\x20via\x20query_toolkit\x20query_type=\x27onchain_received\x27.';}function gatePayloadOf(a){return{'service':a['service'],'order':a['order'],'max_orders':a['max_orders'],'account':a['account'],'network':a['network']};}function textEnvelope(b){const c=[];c['push'](b['dry_run']?'SETTLE\x20SWEEP\x20—\x20DRY\x20RUN\x20(plan\x20only,\x20nothing\x20was\x20sent).\x20Source\x20'+b['source']?.['kind']+'\x20'+b['source']?.['address']+'\x20on\x20'+b['network']+'.':'SETTLE\x20SWEEP\x20—\x20EXECUTED.\x20Source\x20'+b['source']?.['kind']+'\x20'+b['source']?.['address']+'\x20on\x20'+b['network']+'.');const e=b['planned'];if(Array['isArray'](e)&&e['length']>0x0){c['push']('Planned\x20alloc_by_guard\x20actions\x20('+e['length']+'):');for(const l of e){c['push']('\x20\x20•\x20order\x20'+l['order']+'\x20→\x20allocation\x20'+l['allocation']+'\x20(balance\x20'+l['balance']+',\x20terminal\x20\x27'+l['terminal_node']+'\x27)\x20via\x20guard\x20'+l['guard']);}}const g=b['settled'];for(const m of g??[]){c['push']('SETTLED\x20order\x20'+m['order']+':\x20allocation\x20'+m['allocation']+'\x20drained\x20via\x20guard\x20'+m['guard']+((m['digest']?'\x20(tx\x20'+m['digest']+')':'')+'.\x20'+m['claim_hint']));}const h=b['failed'];for(const n of h??[]){c['push']('FAILED\x20order\x20'+n['order']+'\x20(guard\x20'+n['guard']+'):\x20'+n['error']);}const i=b['skipped'];for(const o of i??[]){c['push']('SKIPPED\x20order\x20'+o['order']+':\x20'+o['reason']);}const j=b['deferred'];for(const p of j??[]){c['push']('DEFERRED\x20order\x20'+p['order']+':\x20batch\x20cap\x20reached\x20—\x20re-run\x20settle_sweep\x20to\x20continue.');}if(b['enumeration_error'])c['push']('ENUMERATION\x20FAILED\x20(empty\x20plan):\x20'+b['enumeration_error']);if(b['note'])c['push']('Note:\x20'+b['note']);const k=b['summary'];return c['push']('Summary:\x20scanned='+k['scanned']+'\x20pending='+k['pending']+'\x20planned='+k['planned']+'\x20'+('settled='+k['settled']+'\x20failed='+k['failed']+'\x20skipped='+k['skipped']+'\x20deferred='+k['deferred']+'.')),c['join']('\x0a');}export async function handleSettleSweep(b){const c=strictParse(SettleSweepInputSchema,b,'settle_sweep\x20input'),f=sweepDeps(),g=c['dry_run']!==![],h=await f['resolveNetwork'](c['network'])['catch'](()=>c['network']??''),i=c['order']?{'kind':'order','address':c['order']}:{'kind':'service','address':c['service']},j=c['max_orders']??0xa,k=dryRunGateKey('settle_sweep',gatePayloadOf(c));if(!g&&!c['confirm']&&!hasDryRunAudit(k)&&!dryRunGateWaived(b)){const u='Settle\x20sweep\x20BLOCKED\x20by\x20the\x20dry-run-first\x20mandate\x20(R23/R18):\x20a\x20real\x20execution\x20'+'(dry_run:false)\x20requires\x20a\x20PASSED\x20dry_run:true\x20face\x20of\x20THIS\x20exact\x20payload\x20earlier\x20in\x20this\x20'+'session,\x20or\x20an\x20explicit\x20confirm:true.\x20Nothing\x20was\x20sent.';return{'content':[{'type':'text','text':u}],'structuredContent':{'result':{'dry_run':![],'source':i,'network':h,'blocked':!![],'error_code':'state_conflict','error':u,'recovery_hint':'Re-issue\x20with\x20the\x20default\x20dry_run:true\x20first\x20(review\x20the\x20action\x20list),\x20then\x20repeat\x20'+'the\x20SAME\x20payload\x20with\x20dry_run:false\x20—\x20or\x20pass\x20confirm:true\x20to\x20accept\x20in\x20one\x20call.'}}};}let l={'entries':[],'scanned_orders':0x0},m;try{l=await enumeratePending(i,h);}catch(v){m=String(v?.['message']??v)['slice'](0x0,0x190);}const n=[],o=[];for(const w of l['entries']){try{const x=await selectGuard(w,h);x['status']==='ok'?n['push']({'order':w['order'],'allocation':w['allocation'],'guard':x['guard'],'balance':w['balance'],'terminal_node':w['terminal_node'],'is_refund_terminal':w['is_refund_terminal']}):o['push']({'order':w['order'],'allocation':w['allocation'],'reason':x['reason'],'needs_context':x['status']==='needs_context'});}catch(y){o['push']({'order':w['order'],'allocation':w['allocation'],'reason':'guard\x20screening\x20failed:\x20'+String(y?.['message']??y)['slice'](0x0,0xc8),'needs_context':!![]});}}const p=n['slice'](0x0,j),q=n['slice'](j)['map'](z=>({'order':z['order'],'allocation':z['allocation']}));if(g){recordDryRunAudit(k);const z={'dry_run':!![],'source':i,'network':h,'scanned_orders':l['scanned_orders'],'planned':p,'settled':[],'failed':[],'skipped':o,'deferred':q,...l['note']?{'note':l['note']}:{},...m?{'enumeration_error':m}:{},'summary':{'scanned':l['scanned_orders'],'pending':l['entries']['length'],'planned':p['length'],'settled':0x0,'failed':0x0,'skipped':o['length'],'deferred':q['length']},'next_step':p['length']>0x0?'Review\x20the\x20plan,\x20then\x20re-issue\x20the\x20SAME\x20call\x20with\x20dry_run:false\x20(or\x20confirm:true)\x20to\x20execute.':'Nothing\x20to\x20settle\x20from\x20this\x20source.'};return{'content':[{'type':'text','text':textEnvelope(z)}],'structuredContent':{'result':z}};}const r=[],s=[];for(const A of p){try{const B=await f['execute']({'order':A['order'],'allocation':A['allocation'],'guard':A['guard'],'account':c['account'],'network':h});if(B['ok']){const C=l['entries']['find'](D=>D['order']===A['order']);r['push']({...A,'digest':B['digest'],'claim_hint':claimHint(C??{'order':A['order'],'allocation':A['allocation'],'balance':A['balance'],'terminal_node':A['terminal_node'],'is_refund_terminal':A['is_refund_terminal'],'candidate_guards':[A['guard']]})});}else s['push']({'order':A['order'],'allocation':A['allocation'],'guard':A['guard'],'error':B['error']??'unknown\x20execution\x20failure'});}catch(D){s['push']({'order':A['order'],'allocation':A['allocation'],'guard':A['guard'],'error':String(D?.['message']??D)['slice'](0x0,0x1f4)});}}const t={'dry_run':![],'source':i,'network':h,'scanned_orders':l['scanned_orders'],'planned':[],'settled':r,'failed':s,'skipped':o,'deferred':q,...l['note']?{'note':l['note']}:{},...m?{'enumeration_error':m}:{},'summary':{'scanned':l['scanned_orders'],'pending':l['entries']['length'],'planned':0x0,'settled':r['length'],'failed':s['length'],'skipped':o['length'],'deferred':q['length']},'next_step':r['length']>0x0?'Every\x20settled\x20order\x27s\x20recipients\x20still\x20owe\x20the\x20CLAIM\x20hop\x20—\x20follow\x20each\x20receipt\x27s\x20claim_hint.':s['length']>0x0?'All\x20actions\x20failed\x20—\x20inspect\x20the\x20per-order\x20errors\x20before\x20retrying\x20(verify-first:\x20check\x20whether\x20any\x20tx\x20actually\x20landed).':'Nothing\x20to\x20settle\x20from\x20this\x20source.'};return{'content':[{'type':'text','text':textEnvelope(t)}],'structuredContent':{'result':t}};}
|
|
1
|
+
import{LocalMark}from'@wowok/wowok';import{batchQueryObjectsByIds,fetchMachineNodes,fetchServiceOrders}from'../../graph/onchain/sdk-batch.js';import{buildEscrowStranded,buildPendingAllocations}from'../../playbooks/service-build/service-panorama.js';import{TASK_BINDING_SLOT}from'../../knowledge/onchain-constants.js';import{SettleSweepInputSchema,strictParse}from'../../schema/index.js';import{dryRunGateKey,dryRunGateWaived,hasDryRunAudit,recordDryRunAudit}from'../publish-gate-state.js';import{resolveNetwork}from'./network.js';const PERMISSION_BINDING_SLOT=0x6,SCAN_WINDOW=0x32;let depsOverride;export function setSettleSweepDeps(a){depsOverride=a;}function sweepDeps(){if(depsOverride)return depsOverride;return{'execute':defaultExecute,'resolveNetwork':resolveNetwork};}async function defaultExecute(a){const {handleOnchainOperations:b}=await import('./onchain.js');try{const c=await b({'operation_type':'allocation','data':{'object':a['allocation'],'alloc_by_guard':a['guard']},'submission':{'type':'submission','guard':[{'object':a['guard'],'impack':!![]}],'submission':[]},'env':{'account':a['account'],'network':a['network'],'confirmed':!![],'user_intent_phrases':['settle_sweep\x20batch\x20settlement']}}),d=c?.['structuredContent']?.['result'];if(d?.['type']==='transaction'&&typeof d?.['digest']==='string')return{'ok':!![],'digest':d['digest']};const f=d?.['type']==='error'&&typeof d?.['error']==='string'?d['error']:typeof c?.['structuredContent']?.['message']==='string'?c['structuredContent']['message']:'execution\x20did\x20not\x20produce\x20a\x20transaction';return{'ok':![],'error':String(f)['slice'](0x0,0x1f4)};}catch(g){return{'ok':![],'error':String(g?.['message']??g)['slice'](0x0,0x1f4)};}}async function resolveRef(a){if(typeof a!=='string'||a==='')return undefined;if(a['startsWith']('0x'))return a;try{return await LocalMark['Instance']()['get_address'](a)??undefined;}catch{return undefined;}}function pickMachine(a){for(const b of a){const c=b?.['data']??b;if(typeof c?.['machine']==='string'&&c['machine']!=='')return c['machine'];}return undefined;}function rowMap(a,b){const c=new Map();for(const d of a??[]){const e=typeof d?.['object']==='string'?d['object']['toLowerCase']():'';if(e&&d?.['type']===b)c['set'](e,d);}return c;}export async function enumeratePending(a,b){if(a['kind']==='order'){const n=a['address'],o=await batchQueryObjectsByIds([n],b,!![]),p=(o??[])['find'](v=>String(v?.['object']??'')['toLowerCase']()===n['toLowerCase']()&&v?.['type']==='Order');if(!p)return{'entries':[],'attention':[],'scanned_orders':0x0,'note':'order\x20'+n+'\x20not\x20found\x20on\x20'+b+'\x20(or\x20not\x20an\x20Order\x20object)'};const q=typeof p['allocation']==='string'?p['allocation']:undefined,r=typeof p['progress']==='string'?p['progress']:undefined;if(!q||!r)return{'entries':[],'attention':[],'scanned_orders':0x1,'note':'order\x20carries\x20no\x20allocation/progress\x20binding\x20—\x20nothing\x20to\x20settle'};const s=await batchQueryObjectsByIds([q,r],b,!![]),t=pickMachine([p,...s??[]]),u=t?await fetchMachineNodes(t,b):[];return{'entries':buildPendingAllocations([p],rowMap(s,'Allocation'),rowMap(s,'Progress'),u),'attention':buildEscrowStranded([p],rowMap(s,'Allocation'),rowMap(s,'Progress'),u,Date['now']()),'scanned_orders':0x1,...t?{}:{'note':'machine\x20topology\x20unreadable\x20—\x20settlement\x20judgment\x20degraded\x20to\x20empty'}};}const c=await fetchServiceOrders(a['address'],b,!![]),d=Array['isArray'](c?.['items'])?c['items']:[],e=d['map'](v=>typeof v?.['who']==='string'?v['who']:'')['filter'](v=>v!=='')['slice'](-SCAN_WINDOW);if(e['length']===0x0)return{'entries':[],'attention':[],'scanned_orders':0x0};const f=await batchQueryObjectsByIds(e,b,!![]),g=(f??[])['filter'](v=>v?.['type']==='Order'),h=new Set();for(const v of g){if(typeof v?.['allocation']==='string')h['add'](v['allocation']);if(typeof v?.['progress']==='string')h['add'](v['progress']);}const i=h['size']>0x0?await batchQueryObjectsByIds([...h],b,!![]):[],j=pickMachine([...g,...i??[]]),k=j?await fetchMachineNodes(j,b):[],l=buildPendingAllocations(g,rowMap(i,'Allocation'),rowMap(i,'Progress'),k),m=new Map(e['map']((w,x)=>[w['toLowerCase'](),x]));return l['sort']((w,x)=>(m['get'](x['order']['toLowerCase']())??-0x1)-(m['get'](w['order']['toLowerCase']())??-0x1)),{'entries':l,'attention':buildEscrowStranded(g,rowMap(i,'Allocation'),rowMap(i,'Progress'),k,Date['now']()),'scanned_orders':g['length'],...d['length']>SCAN_WINDOW?{'note':'scan\x20window:\x20newest\x20'+SCAN_WINDOW+'\x20of\x20'+d['length']+'\x20registered\x20orders\x20(FIFO\x20window)'}:{}};}async function readGuardSlots(a,b){try{const c=await batchQueryObjectsByIds([a],b,!![]),d=(c??[])['find'](h=>String(h?.['object']??'')['toLowerCase']()===a['toLowerCase']());if(!d||d['type']!=='Guard')return null;const e=d['data']??d,f=Array['isArray'](e?.['table'])?e['table']:[];return f['filter'](h=>h?.['b_submission']===!![])['map'](h=>({'identifier':Number(h?.['identifier']),'value_type':typeof h?.['value_type']==='string'?h['value_type']:String(h?.['value_type']??'')}));}catch{return null;}}export function staticallySatisfiable(a){return a['every'](b=>b['identifier']===TASK_BINDING_SLOT||b['identifier']===PERMISSION_BINDING_SLOT&&b['value_type']['includes']('Address'));}export async function selectGuard(a,b){const c=Array['isArray'](a['candidate_guards'])?a['candidate_guards']:[];if(c['length']===0x0)return{'status':'no_guard','reason':'pool\x20exposes\x20no\x20readable\x20allocator\x20guards'};let d,e='',f;for(const h of c){const i=await resolveRef(h);if(!i){f??=h;continue;}const j=await readGuardSlots(i,b);if(j===null){f??=i;continue;}if(staticallySatisfiable(j))return{'status':'ok','guard':i};const k=j['filter'](l=>!(l['identifier']===TASK_BINDING_SLOT||l['identifier']===PERMISSION_BINDING_SLOT&&l['value_type']['includes']('Address')))['map'](l=>'#'+l['identifier']+'('+(l['value_type']||'?')+')');d??=i,e||='guard\x20'+i+'\x20requires\x20non-auto-fillable\x20submission\x20slot(s)\x20'+k['join'](',\x20')+'\x20—\x20guard\x20semantics\x20need\x20human\x20context\x20(never\x20guessed)';}if(d)return{'status':'needs_context','guard':d,'reason':e};return{'status':'needs_context','guard':f,'reason':'no\x20candidate\x20guard\x20could\x20be\x20statically\x20screened\x20(unresolvable\x20or\x20unreadable:\x20'+(f??c[0x0])+')'};}function claimHint(a){return a['is_refund_terminal']?'REFUND\x20is\x20TWO-STEP:\x20the\x20refund\x20alloc\x20pays\x20into\x20the\x20ORDER\x20object\x20—\x20the\x20order\x20owner\x20unwraps\x20it\x20via\x20'+'onchain_operations\x20{\x20operation_type:\x27order\x27,\x20data:{\x20object:\x27'+a['order']+'\x27,\x20receive:\x27recently\x27\x20}\x20}.':'Payout\x20is\x20TWO-HOP:\x20alloc_by_guard\x20split\x20the\x20pool\x20into\x20recipients\x27\x20CoinWrappers\x20—\x20each\x20recipient\x20'+'claims\x20via\x20onchain_operations\x20{\x20operation_type:\x27payment\x27,\x20data:{\x20object:\x27<wrapper>\x27,\x20receive:true\x20}\x20};\x20'+'find\x20pending\x20wrappers\x20via\x20query_toolkit\x20query_type=\x27onchain_received\x27.';}function gatePayloadOf(a){return{'service':a['service'],'order':a['order'],'max_orders':a['max_orders'],'account':a['account'],'network':a['network']};}function textEnvelope(b){const c=[];c['push'](b['dry_run']?'SETTLE\x20SWEEP\x20—\x20DRY\x20RUN\x20(plan\x20only,\x20nothing\x20was\x20sent).\x20Source\x20'+b['source']?.['kind']+'\x20'+b['source']?.['address']+'\x20on\x20'+b['network']+'.':'SETTLE\x20SWEEP\x20—\x20EXECUTED.\x20Source\x20'+b['source']?.['kind']+'\x20'+b['source']?.['address']+'\x20on\x20'+b['network']+'.');const e=b['planned'];if(Array['isArray'](e)&&e['length']>0x0){c['push']('Planned\x20alloc_by_guard\x20actions\x20('+e['length']+'):');for(const m of e){c['push']('\x20\x20•\x20order\x20'+m['order']+'\x20→\x20allocation\x20'+m['allocation']+'\x20(balance\x20'+m['balance']+',\x20terminal\x20\x27'+m['terminal_node']+'\x27)\x20via\x20guard\x20'+m['guard']);}}const g=b['settled'];for(const n of g??[]){c['push']('SETTLED\x20order\x20'+n['order']+':\x20allocation\x20'+n['allocation']+'\x20drained\x20via\x20guard\x20'+n['guard']+((n['digest']?'\x20(tx\x20'+n['digest']+')':'')+'.\x20'+n['claim_hint']));}const h=b['failed'];for(const o of h??[]){c['push']('FAILED\x20order\x20'+o['order']+'\x20(guard\x20'+o['guard']+'):\x20'+o['error']);}const i=b['skipped'];for(const p of i??[]){c['push']('SKIPPED\x20order\x20'+p['order']+':\x20'+p['reason']);}const j=b['deferred'];for(const q of j??[]){c['push']('DEFERRED\x20order\x20'+q['order']+':\x20batch\x20cap\x20reached\x20—\x20re-run\x20settle_sweep\x20to\x20continue.');}const k=b['attention'];if(Array['isArray'](k)&&k['length']>0x0){c['push']('ATTENTION\x20—\x20'+k['length']+'\x20escrowed\x20order(s)\x20rest\x20OFF-TERMINAL\x20(the\x20old\x20sweep\x20reported\x20this\x20as\x20a\x20silent\x20pending=0;\x20disclosure\x20only\x20—\x20these\x20are\x20never\x20auto-settled):');for(const t of k['slice'](0x0,0x8)){c['push']('\x20\x20•\x20order\x20'+t['order']+'\x20→\x20allocation\x20'+t['allocation']+'\x20(balance\x20'+t['balance']+')\x20resting\x20at\x20'+('\x27'+(t['current']===''?'<genesis>':t['current'])+'\x27\x20(history\x20'+t['history_len']+',\x20age\x20'+t['age_ms']+'\x20ms):\x20'+t['hint']));}if(k['length']>0x8)c['push']('\x20\x20…\x20and\x20'+(k['length']-0x8)+'\x20more\x20(see\x20attention[]\x20in\x20the\x20structured\x20result).');}if(b['enumeration_error'])c['push']('ENUMERATION\x20FAILED\x20(empty\x20plan):\x20'+b['enumeration_error']);if(b['note'])c['push']('Note:\x20'+b['note']);const l=b['summary'];return c['push']('Summary:\x20scanned='+l['scanned']+'\x20pending='+l['pending']+'\x20attention='+(l['attention']??0x0)+'\x20planned='+l['planned']+'\x20'+('settled='+l['settled']+'\x20failed='+l['failed']+'\x20skipped='+l['skipped']+'\x20deferred='+l['deferred']+'.')),c['join']('\x0a');}export async function handleSettleSweep(b){const c=strictParse(SettleSweepInputSchema,b,'settle_sweep\x20input'),f=sweepDeps(),g=c['dry_run']!==![],h=await f['resolveNetwork'](c['network'])['catch'](()=>c['network']??''),i=c['order']?{'kind':'order','address':c['order']}:{'kind':'service','address':c['service']},j=c['max_orders']??0xa,k=dryRunGateKey('settle_sweep',gatePayloadOf(c));if(!g&&!c['confirm']&&!hasDryRunAudit(k)&&!dryRunGateWaived(b)){const u='Settle\x20sweep\x20BLOCKED\x20by\x20the\x20dry-run-first\x20mandate\x20(R23/R18):\x20a\x20real\x20execution\x20'+'(dry_run:false)\x20requires\x20a\x20PASSED\x20dry_run:true\x20face\x20of\x20THIS\x20exact\x20payload\x20earlier\x20in\x20this\x20'+'session,\x20or\x20an\x20explicit\x20confirm:true.\x20Nothing\x20was\x20sent.';return{'content':[{'type':'text','text':u}],'structuredContent':{'result':{'dry_run':![],'source':i,'network':h,'blocked':!![],'error_code':'state_conflict','error':u,'recovery_hint':'Re-issue\x20with\x20the\x20default\x20dry_run:true\x20first\x20(review\x20the\x20action\x20list),\x20then\x20repeat\x20'+'the\x20SAME\x20payload\x20with\x20dry_run:false\x20—\x20or\x20pass\x20confirm:true\x20to\x20accept\x20in\x20one\x20call.'}}};}let l={'entries':[],'attention':[],'scanned_orders':0x0},m;try{l=await enumeratePending(i,h);}catch(v){m=String(v?.['message']??v)['slice'](0x0,0x190);}const n=[],o=[];for(const w of l['entries']){try{const x=await selectGuard(w,h);x['status']==='ok'?n['push']({'order':w['order'],'allocation':w['allocation'],'guard':x['guard'],'balance':w['balance'],'terminal_node':w['terminal_node'],'is_refund_terminal':w['is_refund_terminal']}):o['push']({'order':w['order'],'allocation':w['allocation'],'reason':x['reason'],'needs_context':x['status']==='needs_context'});}catch(y){o['push']({'order':w['order'],'allocation':w['allocation'],'reason':'guard\x20screening\x20failed:\x20'+String(y?.['message']??y)['slice'](0x0,0xc8),'needs_context':!![]});}}const p=n['slice'](0x0,j),q=n['slice'](j)['map'](z=>({'order':z['order'],'allocation':z['allocation']}));if(g){recordDryRunAudit(k);const z={'dry_run':!![],'source':i,'network':h,'scanned_orders':l['scanned_orders'],'planned':p,'settled':[],'failed':[],'skipped':o,'deferred':q,'attention':l['attention'],...l['note']?{'note':l['note']}:{},...m?{'enumeration_error':m}:{},'summary':{'scanned':l['scanned_orders'],'pending':l['entries']['length'],'attention':l['attention']['length'],'planned':p['length'],'settled':0x0,'failed':0x0,'skipped':o['length'],'deferred':q['length']},'next_step':p['length']>0x0?'Review\x20the\x20plan,\x20then\x20re-issue\x20the\x20SAME\x20call\x20with\x20dry_run:false\x20(or\x20confirm:true)\x20to\x20execute.':l['attention']['length']>0x0?'Nothing\x20to\x20SETTLE\x20from\x20this\x20source,\x20but\x20escrowed\x20orders\x20rest\x20off-terminal\x20—\x20review\x20attention[]\x20before\x20assuming\x20the\x20rails\x20are\x20drained.':'Nothing\x20to\x20settle\x20from\x20this\x20source.'};return{'content':[{'type':'text','text':textEnvelope(z)}],'structuredContent':{'result':z}};}const r=[],s=[];for(const A of p){try{const B=await f['execute']({'order':A['order'],'allocation':A['allocation'],'guard':A['guard'],'account':c['account'],'network':h});if(B['ok']){const C=l['entries']['find'](D=>D['order']===A['order']);r['push']({...A,'digest':B['digest'],'claim_hint':claimHint(C??{'order':A['order'],'allocation':A['allocation'],'balance':A['balance'],'terminal_node':A['terminal_node'],'is_refund_terminal':A['is_refund_terminal'],'candidate_guards':[A['guard']]})});}else s['push']({'order':A['order'],'allocation':A['allocation'],'guard':A['guard'],'error':B['error']??'unknown\x20execution\x20failure'});}catch(D){s['push']({'order':A['order'],'allocation':A['allocation'],'guard':A['guard'],'error':String(D?.['message']??D)['slice'](0x0,0x1f4)});}}const t={'dry_run':![],'source':i,'network':h,'scanned_orders':l['scanned_orders'],'planned':[],'settled':r,'failed':s,'skipped':o,'deferred':q,'attention':l['attention'],...l['note']?{'note':l['note']}:{},...m?{'enumeration_error':m}:{},'summary':{'scanned':l['scanned_orders'],'pending':l['entries']['length'],'attention':l['attention']['length'],'planned':0x0,'settled':r['length'],'failed':s['length'],'skipped':o['length'],'deferred':q['length']},'next_step':r['length']>0x0?'Every\x20settled\x20order\x27s\x20recipients\x20still\x20owe\x20the\x20CLAIM\x20hop\x20—\x20follow\x20each\x20receipt\x27s\x20claim_hint.':s['length']>0x0?'All\x20actions\x20failed\x20—\x20inspect\x20the\x20per-order\x20errors\x20before\x20retrying\x20(verify-first:\x20check\x20whether\x20any\x20tx\x20actually\x20landed).':l['attention']['length']>0x0?'Nothing\x20to\x20SETTLE\x20from\x20this\x20source,\x20but\x20escrowed\x20orders\x20rest\x20off-terminal\x20—\x20review\x20attention[]\x20before\x20assuming\x20the\x20rails\x20are\x20drained.':'Nothing\x20to\x20settle\x20from\x20this\x20source.'};return{'content':[{'type':'text','text':textEnvelope(t)}],'structuredContent':{'result':t}};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z}from'zod';import{strictParse}from'../../schema/index.js';import{msToHuman,msToIsoDuration,parseTimeWindowMs}from'../../knowledge/time-units.js';export const TimeConvertInputSchema=z['object']({'value':z['union']([z['string'](),z['number']()]),'unit':z['enum'](['ms','second','minute','hour','day','week','month','year'])['optional'](),'window_profile':z['enum'](['production','test'])['optional']()});export const TimeConvertOutputSchema=z['object']({'ok':z['boolean'](),'tool':z['literal']('time_convert'),'profile':z['enum'](['production','test'])['optional'](),'ms':z['number']()['optional'](),'iso_8601':z['string']()['optional'](),'human':z['string']()['optional'](),'declared':z['object']({'value':z['number'](),'unit':z['string']()})['nullable']()['optional'](),'note':z['string']()['optional'](),'reason':z['string']()['optional'](),'llm_hint':z['string']()['optional']()});export async function handleTimeConvert(a){const b=strictParse(TimeConvertInputSchema,a,'time_convert\x20input'),c=b['window_profile']??'production',d=b['unit']!==undefined?String(b['value'])+'\x20'+b['unit']:b['value'],e=parseTimeWindowMs(d,c);if(!e['ok']){const h={'ok':![],'tool':'time_convert','reason':e['reason'],'llm_hint':e['llm_hint']};return{'content':[{'type':'text','text':JSON['stringify'](h)}],'structuredContent':h};}const f=b['unit']!==undefined?{'value':Number(b['value']),'unit':b['unit']}:e['declared'],g={'ok':!![],'tool':'time_convert','profile':c,'ms':e['ms'],'iso_8601':msToIsoDuration(e['ms']),'human':msToHuman(e['ms']),'declared':f??null,'note':'Chain-aligned\x20whole\x20ms\x20(u64)\x20—\x20paste\x20this\x20constant\x20into\x20the\x20time\x20slot\x20as-is.\x20Guards\x20consume\x20it\x20'+'directly:\x20the\x20conversion\x20is\x20LOCAL\x20and\x20the\x20chain\x20performs\x20NO\x20multiply\x20(2026-11-10\x20ruling).\x20'+(c==='test'?'TEST\x20profile:\x20declared\x20units\x20compressed\x20(1\x20day/hour\x20=\x201\x20minute,\x20nonzero\x20floor\x201\x20minute);\x20'+'test-profile\x20constants\x20are\x20hard-blocked\x20from\x20real-network\x20publish.':'Fractional\x20declared\x20units\x20are\x20exact\x20(0.5\x20days\x20=\x2043200000).')};return{'content':[{'type':'text','text':JSON['stringify'](g)}],'structuredContent':g};}
|
|
@@ -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';import{recordWipUploadAccount,recordWipUploadHash,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']);const q=o['hash'];typeof p==='string'&&typeof q==='string'&&recordWipUploadHash(p,q,typeof b['account']==='string'?b['account']:undefined);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
|
+
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,recordWipUploadHash,recordWipVerify,wipRefsForHash}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']);const q=o['hash'];typeof p==='string'&&typeof q==='string'&&recordWipUploadHash(p,q,typeof b['account']==='string'?b['account']:undefined);c={'result':o};break;}case'storage_list':{c={'result':await wipStorageList(b)};break;}case'storage_delete':{const r=wipRefsForHash(b['hash']),s=b['confirmed']===!![];if(r['length']>0x0&&!s){c={'result':{'type':'error','error':'REFERENCE\x20CHECK\x20BLOCKED\x20the\x20deletion\x20of\x20hash\x20'+b['hash']+':\x20'+('this\x20session\x20has\x20'+r['length']+'\x20WIP\x20reference(s)\x20pinning\x20it\x20—\x20plausibly\x20bound\x20to\x20a\x20sale\x20or\x20catalog\x20row\x20')+'(product_detail_source\x20/\x20wip_hash).\x20Deleting\x20the\x20file\x20orphans\x20those\x20references:\x20buyers\x20can\x20never\x20fetch\x20the\x20deliverable.\x0a'+'Pinned\x20references:\x0a'+r['map'](u=>'\x20\x20-\x20'+u)['join']('\x0a')+'\x0aIf\x20you\x20verified\x20on-chain\x20(service\x20sales\x20/\x20product\x20detail)\x20that\x20NOTHING\x20still\x20pins\x20this\x20hash,\x20'+'re-run\x20with\x20confirmed:\x20true\x20to\x20delete\x20anyway.\x20Freeing\x20quota\x20without\x20breaking\x20sales:\x20prefer\x20re-binding\x20'+'the\x20sale\x20to\x20a\x20new\x20upload\x20FIRST,\x20then\x20delete\x20the\x20old\x20file.'}};break;}const t=await wipStorageDelete(b);r['length']>0x0&&(t['reference_warning']='Deleted\x20a\x20file\x20that\x20'+r['length']+'\x20known\x20reference(s)\x20pinned\x20('+r['join'](',\x20')+').\x20'+'Any\x20sale\x20still\x20binding\x20this\x20hash\x20now\x20points\x20at\x20a\x20dead\x20URL\x20—\x20re-bind\x20before\x20selling.');c={'result':t};break;}default:throw new Error('Unknown\x20WIP\x20operation\x20type');}return{'content':[{'type':'text','text':JSON['stringify'](c)}],'structuredContent':c};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{query_events}from'@wowok/wowok';import{Cache}from'@wowok/wowok/w/local/cache';import{strictParse,WorkflowOperationInputSchema}from'../../schema/index.js';import{fetchMachineNodes,fetchPermissionContext,batchFetchEntityOrder,batchQueryObjectsByIds,batchReadU64KeyedFields}from'../../graph/onchain/sdk-batch.js';import{resolveLocalNamesFor,listLocalAccounts,enumerateActionableForwards}from'../../knowledge/index.js';import{handleOnchainOperations}from'./onchain.js';import{resolveNetwork}from'./network.js';async function mapWithConcurrency(a,b,c){const d=new Array(a['length']);let e=0x0;const f=Array['from']({'length':Math['max'](0x1,Math['min'](b,a['length']))},async()=>{while(e<a['length']){const g=e++;try{d[g]=await c(a[g]);}catch{}}});return await Promise['all'](f),d;}function progressRelatedToLocalAccount(a,b,c,d){const e=new Set(d['map'](f=>f['address']['toLowerCase']()));if(b?.['builder']&&e['has'](String(b['builder'])['toLowerCase']()))return!![];if(b?.['agent']&&[...b['agent']]['some'](f=>e['has'](f)))return!![];for(const f of c){if(f['operators']['some'](g=>e['has'](String(g)['toLowerCase']())))return!![];}for(const g of Array['isArray'](a['session'])?a['session']:[]){for(const h of Array['isArray'](g?.['forwards'])?g['forwards']:[]){if(h?.['who']&&e['has'](String(h['who'])['toLowerCase']()))return!![];}}return![];}function buildWorkflowTaskFromData(a,b,c,d){const e=b['current']??'',f=b['machine'],g=b['task']??null,h=(Array['isArray'](b['namedOperator'])?b['namedOperator']:[])['map'](s=>({'name':String(s?.['name']??''),'operators':(s?.['operators']??[])['map'](t=>String(t))}));if(!f)return undefined;const i=String(f)['toLowerCase'](),j=c['machineNodes']['get'](i)??[],k=c['permAddrByMachine']['get'](i),l=k?c['permCtxByPermission']['get'](String(k)['toLowerCase']()):undefined,m=g?c['orderCtxByOrder']['get'](String(g)['toLowerCase']()):undefined,n=g?c['serviceByOrder']['get'](String(g)['toLowerCase']()):undefined,o=new Map(d['map'](s=>[s['address']['toLowerCase'](),s['name']])),p=enumerateActionableForwards(b,j,d['map'](s=>s['address']),h,m,l)['map'](s=>({'next_node':s['next_node'],'forward':s['forward'],'weight':s['weight'],'threshold':s['threshold'],'guard':s['guard'],'guard_submissions':s['guard']?c['guardSubsByAddr']['get'](String(s['guard'])['toLowerCase']()):undefined,'operator_kind':s['operator_kind'],'permission_index':s['permission_index'],'named_operator':s['named_operator'],'executable_accounts':s['executable_accounts']['map'](t=>({'address':t,'name':o['get'](t)}))})),q=p['some'](s=>s['executable_accounts']['length']>0x0),r=progressRelatedToLocalAccount(b,m,h,d);if(!q&&!r)return undefined;return{'progress':a,'progress_name':c['localNames']['get'](a['toLowerCase']()),'current':e,'machine':f,'machine_name':c['localNames']['get'](String(f)['toLowerCase']()),'task':g,'task_name':g?c['localNames']['get'](String(g)['toLowerCase']()):undefined,'service':n,'service_name':n?c['localNames']['get'](String(n)['toLowerCase']()):undefined,'context_repositories':(Array['isArray'](b['context_repositories'])?b['context_repositories']:[])['filter'](s=>typeof s==='string'&&s['startsWith']('0x'))['map'](s=>({'address':s,'name':c['localNames']['get'](s['toLowerCase']())})),'options':p,'terminal':p['length']===0x0,'actionable':q,'history_count':Number(b['history_count']??0x0),'current_time':Number(b['current_time']??0x0)||undefined};}async function handleList(a){const b=a['limit']??0x32,c=a['network'],e=a['no_cache'],f=await listLocalAccounts();if(f['length']===0x0){const J={'action':'list','tasks':[],'note':'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':J})}],'structuredContent':{'result':J}};}const g=await query_events({'type':'ProgressEvent','order':'descending','limit':b*0x3,'no_cache':e,'network':c}),h=new Set((g?.['data']??[])['map'](K=>K?.['progress'])['filter'](K=>typeof K==='string'&&K['startsWith']('0x'))['map'](K=>K['toLowerCase']())),i=await batchFetchEntityOrder(f['map'](K=>String(K['address'])['toLowerCase']()),c,e)['catch'](()=>undefined),j=[...new Set((i?[...i['values']()]:[])['flatMap'](K=>K['items']['map'](L=>L['order'])))],k=j['length']>0x0?await batchQueryObjectsByIds(j,c,e):[];for(const K of k??[]){const L=K?.['data']??K,M=L?.['progress'];K?.['type']==='Order'&&typeof M==='string'&&M['startsWith']('0x')&&h['add'](M['toLowerCase']());}if(h['size']===0x0){const N={'action':'list','tasks':[]};return{'content':[{'type':'text','text':JSON['stringify']({'result':N})}],'structuredContent':{'result':N}};}const l=[...h],m=await batchQueryObjectsByIds(l,c,!![]),n=new Map();for(const O of m??[]){const P=O?.['data']??O;O?.['type']==='Progress'&&typeof P?.['machine']==='string'&&n['set'](String(O?.['query_name']??O?.['object']??'')['toLowerCase'](),P);}const q=[...new Set([...n['values']()]['map'](Q=>Q['machine'])['filter'](Q=>typeof Q==='string'))],r=[...new Set([...n['values']()]['map'](Q=>Q['task'])['filter'](Q=>typeof Q==='string'&&Q['startsWith']('0x')))],s=await batchQueryObjectsByIds(q,c,e),t=new Map(),u=new Set();for(const Q of s??[]){const R=Q?.['data']??Q,S=String(Q?.['query_name']??Q?.['object']??'')['toLowerCase'](),T=typeof R?.['permission']==='string'?R['permission']:undefined;t['set'](S,T);if(T)u['add'](String(T)['toLowerCase']());}const v=new Map();await mapWithConcurrency(q,0x8,async U=>{v['set'](String(U)['toLowerCase'](),await fetchMachineNodes(U,c,![]));});const w=[...new Set([...v['values']()]['flatMap'](U=>U['flatMap'](V=>V['pairs']['flatMap'](W=>W['forwards']['map'](X=>X['guard'])['filter'](X=>typeof X==='string'&&X['startsWith']('0x'))))))],x=new Map();if(w['length']>0x0){const U=await batchQueryObjectsByIds(w,c,e);for(const V of U??[]){const W=V?.['data']??V;if(V?.['type']==='Guard'&&Array['isArray'](W?.['table'])){const X=String(V?.['query_name']??V?.['object']??'')['toLowerCase'](),Y=W['table']['filter'](Z=>Z?.['b_submission'])['map'](Z=>({'identifier':Number(Z?.['identifier']??0x0),'name':String(Z?.['name']??'field\x20'+Z?.['identifier']),'value_type':String(Z?.['value_type']??''),'object_type':Z?.['object_type']?String(Z['object_type']):undefined}));if(Y['length']>0x0)x['set'](X,Y);}}}const y=new Map();await mapWithConcurrency([...u],0x8,async Z=>{y['set'](Z,await fetchPermissionContext(Z,c,e));});const z=new Map(),A=new Map(),B=await batchQueryObjectsByIds(r,c,e);for(const Z of B??[]){const a0=Z?.['data']??Z;if(Z?.['type']==='Order'){const a1=String(Z?.['query_name']??Z?.['object']??'')['toLowerCase']();z['set'](a1,{'builder':String(a0?.['builder']??a0?.['owner']??''),'agent':new Set((a0?.['agent']??[])['map'](a2=>String(a2)['toLowerCase']()))});if(typeof a0?.['service']==='string')A['set'](a1,a0['service']);}}const C=[...n['values']()]['flatMap'](a2=>Array['isArray'](a2?.['context_repositories'])?a2['context_repositories']:[]),D=[...l,...q,...r,...[...A['values']()]['filter'](a2=>typeof a2==='string'),...C['filter'](a2=>typeof a2==='string')],{byAddress:E}=await resolveLocalNamesFor(D),F={'machineNodes':v,'permAddrByMachine':t,'permCtxByPermission':y,'orderCtxByOrder':z,'serviceByOrder':A,'localNames':E,'guardSubsByAddr':x},G=await mapWithConcurrency(l,0x8,async a2=>{try{const a3=n['get'](String(a2)['toLowerCase']());return a3?buildWorkflowTaskFromData(a2,a3,F,f):undefined;}catch{return undefined;}}),H=G['filter'](a2=>a2!==undefined)['sort']((a2,a3)=>Number(a3['actionable'])-Number(a2['actionable'])),I={'action':'list','tasks':H['slice'](0x0,b)};return{'content':[{'type':'text','text':JSON['stringify']({'result':I})}],'structuredContent':{'result':I}};}async function handleTask(a){const b=a['network'],c=a['no_cache'],e=a['progress'],f=await listLocalAccounts(),g=await batchQueryObjectsByIds([e],b,!![]),h=(g??[])['find'](y=>y?.['type']==='Progress'),i=h?h?.['data']??h:undefined;if(!h||!i||typeof i?.['machine']!=='string'){const y={'action':'task','note':'Progress\x20'+e+'\x20not\x20found\x20on\x20'+(b??'the\x20current\x20network')+'.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':y})}],'structuredContent':{'result':y}};}const j=i['machine'],k=String(j)['toLowerCase'](),l=await batchQueryObjectsByIds([j],b,c),m=(l??[])['find'](z=>z?.['type']==='Machine'),n=m?m?.['data']??m:undefined,p=n&&typeof n?.['permission']==='string'?n['permission']:undefined,q=await fetchMachineNodes(j,b,![]),r={'machineNodes':new Map([[k,q]]),'permAddrByMachine':new Map([[k,p]]),'permCtxByPermission':new Map(),'orderCtxByOrder':new Map(),'serviceByOrder':new Map(),'localNames':new Map(),'guardSubsByAddr':new Map()},s=[...new Set(q['flatMap'](z=>z['pairs']['flatMap'](A=>A['forwards']['map'](B=>B['guard'])['filter'](B=>typeof B==='string'&&B['startsWith']('0x')))))];if(s['length']>0x0){const z=await batchQueryObjectsByIds(s,b,c);for(const A of z??[]){const B=A?.['data']??A;if(A?.['type']==='Guard'&&Array['isArray'](B?.['table'])){const C=String(A?.['query_name']??A?.['object']??'')['toLowerCase'](),D=B['table']['filter'](E=>E?.['b_submission'])['map'](E=>({'identifier':Number(E?.['identifier']??0x0),'name':String(E?.['name']??'field\x20'+E?.['identifier']),'value_type':String(E?.['value_type']??''),'object_type':E?.['object_type']?String(E['object_type']):undefined}));if(D['length']>0x0)r['guardSubsByAddr']['set'](C,D);}}}p&&r['permCtxByPermission']['set'](String(p)['toLowerCase'](),await fetchPermissionContext(p,b,c));if(typeof i?.['task']==='string'&&i['task']['startsWith']('0x')){const E=await batchQueryObjectsByIds([i['task']],b,c);for(const F of E??[]){if(F?.['type']==='Order'){const G=F?.['data']??F,H=String(F?.['query_name']??F?.['object']??'')['toLowerCase']();r['orderCtxByOrder']['set'](H,{'builder':String(G?.['builder']??G?.['owner']??''),'agent':new Set((G?.['agent']??[])['map'](I=>String(I)['toLowerCase']()))}),typeof G?.['service']==='string'&&r['serviceByOrder']['set'](H,G['service']);}}}const t=Array['isArray'](i?.['context_repositories'])?i['context_repositories']:[],u=[String(h?.['object']??e),i?.['task'],j,...t]['filter'](I=>typeof I==='string'&&I['startsWith']('0x')),{byAddress:v}=await resolveLocalNamesFor(u);r['localNames']=v;const w=buildWorkflowTaskFromData(String(h?.['query_name']??h?.['object']??e),i,r,f),x=w?{'action':'task','tasks':[w]}:{'action':'task','note':'Progress\x20snapshot\x20could\x20not\x20be\x20built.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':x})}],'structuredContent':{'result':x}};}const WORKFLOW_HISTORY_PREFIX='__workflow_history',WORKFLOW_HISTORY_RETENTION_MS=0x5a*0x18*0xe10*0x3e8;async function readHistoryStore(a){const b=await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':{}}));return b?.['data']??{};}async function writeHistoryStore(a,b){await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':b}),!![]);}async function handleHistory(a){const b=await resolveNetwork(a['network']),c=a['limit']??0x32,d=a['prune']??!![],g=a['progress'],h=await batchQueryObjectsByIds([g],b,!![]),i=(h??[])[0x0],j=i?.['object']??(typeof g==='string'&&g['startsWith']('0x')?g:undefined),k=i?.['data']??i;if(!j||i?.['type']!=='Progress'){const E={'action':'history','note':'Not\x20a\x20Progress\x20object\x20or\x20not\x20found.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':E})}],'structuredContent':{'result':E}};}const l=Number(k?.['history_count']??0x0),m=await readHistoryStore(b),n=m[j]??{'cursor':-0x1,'lastActivity':0x0,'records':[]},o=[],p=n['cursor']+0x1;if(p<l){const F=[];for(let H=p;H<l;H++)F['push'](H);const G=await batchReadU64KeyedFields(j,F,b,![]);for(let I=p;I<l;I++){const J=G['get'](String(I));if(!J)break;o['push']({'index':I,'node':J['node'],'next_node':J['next_node'],'time':J['time'],'session':J['session']});}}const q=o['length']>0x0?p+o['length']-0x1:n['cursor'],t=[...n['records'],...o],u=o['length']>0x0?Math['max'](n['lastActivity'],...o['map'](K=>K['time'])):n['lastActivity'];m[j]={'cursor':q,'lastActivity':u,'records':t};let v=0x0;if(d){const K=Date['now']()-WORKFLOW_HISTORY_RETENTION_MS;for(const L of Object['keys'](m)){const M=m[L];M['lastActivity']>0x0&&M['lastActivity']<K&&(delete m[L],v++);}}await writeHistoryStore(b,m);const w=typeof k?.['machine']==='string'?k['machine']:undefined,x=new Map();if(w)try{const N=await fetchMachineNodes(w,b,![]);for(const O of N??[]){for(const P of O?.['pairs']??[]){for(const Q of P?.['forwards']??[]){if(Q?.['name'])x['set'](O['name']+'|'+Q['name'],Number(Q?.['weight']??0x0));}}}}catch{}const y=[],z=R=>{for(const S of R??[]){const T=String(S?.['value_type']??'')['toLowerCase'](),U=S?.['value'];if(!T['includes']('address'))continue;if(Array['isArray'](U)){for(const V of U)if(typeof V==='string'&&V['startsWith']('0x'))y['push'](V);}else typeof U==='string'&&U['startsWith']('0x')&&y['push'](U);}};for(const R of t){for(const S of Array['isArray'](R?.['session'])?R['session']:[]){for(const T of Array['isArray'](S?.['forwards'])?S['forwards']:[]){if(T?.['who'])y['push'](String(T['who']));z(T?.['retained_submission']);}}}const {byAddress:A}=await resolveLocalNamesFor([...new Set(y)]),B=U=>{const V=String(U?.['value_type']??'')['toLowerCase'](),W=U?.['value'];if(!V['includes']('address'))return U;const X=Array['isArray'](W)?typeof W[0x0]==='string'?W[0x0]:undefined:typeof W==='string'?W:undefined;return{...U,'display_name':X?A['get'](String(X)['toLowerCase']()):undefined};},C=t['map'](U=>({...U,'session':(Array['isArray'](U?.['session'])?U['session']:[])['map'](V=>({...V,'forwards':(Array['isArray'](V?.['forwards'])?V['forwards']:[])['map'](W=>({...W,'weight':x['get'](V?.['next_node']+'|'+W?.['forward'])??undefined,'who_name':W?.['who']?A['get'](String(W['who'])['toLowerCase']()):undefined,'retained_submission':(Array['isArray'](W?.['retained_submission'])?W['retained_submission']:[])['map'](B)}))}))})),D={'action':'history','history':{'progress':j,'current':k?.['current'],'records':[...C]['sort']((U,V)=>V['index']-U['index'])['slice'](0x0,c),'synced':o['length'],'cursor':q,'pruned':v}};return{'content':[{'type':'text','text':JSON['stringify']({'result':D})}],'structuredContent':{'result':D}};}async function handleOperate(a){const b={'operation_type':'progress','data':{'object':a['progress'],'operate':a['operate']},'env':{'account':a['account']?a['account']:undefined,'network':a['network'],'no_cache':a['no_cache'],'confirmed':a['confirmed'],'dry_run':a['dry_run']}};return a['submission']!==undefined&&(b['submission']=a['submission']),await handleOnchainOperations(b);}export async function handleWorkflowOperation(a){const b=strictParse(WorkflowOperationInputSchema,a,'workflow_operation\x20input');if(b['action']==='list')return await handleList(b);if(b['action']==='task')return await handleTask(b);if(b['action']==='history')return await handleHistory(b);return await handleOperate(b);}
|
|
1
|
+
import{query_events}from'@wowok/wowok';import{Cache}from'@wowok/wowok/w/local/cache';import{strictParse,WorkflowOperationInputSchema}from'../../schema/index.js';import{fetchMachineNodes,fetchPermissionContext,batchFetchEntityOrder,batchQueryObjectsByIds,batchReadU64KeyedFields}from'../../graph/onchain/sdk-batch.js';import{resolveLocalNamesFor,listLocalAccounts,enumerateActionableForwards,namedOperatorRosterNote}from'../../knowledge/index.js';import{handleOnchainOperations}from'./onchain.js';import{resolveNetwork}from'./network.js';async function mapWithConcurrency(a,b,c){const d=new Array(a['length']);let e=0x0;const f=Array['from']({'length':Math['max'](0x1,Math['min'](b,a['length']))},async()=>{while(e<a['length']){const g=e++;try{d[g]=await c(a[g]);}catch{}}});return await Promise['all'](f),d;}function progressRelatedToLocalAccount(a,b,c,d){const e=new Set(d['map'](f=>f['address']['toLowerCase']()));if(b?.['builder']&&e['has'](String(b['builder'])['toLowerCase']()))return!![];if(b?.['agent']&&[...b['agent']]['some'](f=>e['has'](f)))return!![];for(const f of c){if(f['operators']['some'](g=>e['has'](String(g)['toLowerCase']())))return!![];}for(const g of Array['isArray'](a['session'])?a['session']:[]){for(const h of Array['isArray'](g?.['forwards'])?g['forwards']:[]){if(h?.['who']&&e['has'](String(h['who'])['toLowerCase']()))return!![];}}return![];}function buildWorkflowTaskFromData(a,b,c,d){const e=b['current']??'',f=b['machine'],g=b['task']??null,h=(Array['isArray'](b['namedOperator'])?b['namedOperator']:[])['map'](s=>({'name':String(s?.['name']??''),'operators':(s?.['operators']??[])['map'](t=>String(t))}));if(!f)return undefined;const i=String(f)['toLowerCase'](),j=c['machineNodes']['get'](i)??[],k=c['permAddrByMachine']['get'](i),l=k?c['permCtxByPermission']['get'](String(k)['toLowerCase']()):undefined,m=g?c['orderCtxByOrder']['get'](String(g)['toLowerCase']()):undefined,n=g?c['serviceByOrder']['get'](String(g)['toLowerCase']()):undefined,o=new Map(d['map'](s=>[s['address']['toLowerCase'](),s['name']])),p=enumerateActionableForwards(b,j,d['map'](s=>s['address']),h,m,l)['map'](s=>({'next_node':s['next_node'],'forward':s['forward'],'weight':s['weight'],'threshold':s['threshold'],'guard':s['guard'],'guard_submissions':s['guard']?c['guardSubsByAddr']['get'](String(s['guard'])['toLowerCase']()):undefined,'operator_kind':s['operator_kind'],'permission_index':s['permission_index'],'named_operator':s['named_operator'],'roster_note':namedOperatorRosterNote(s,h),'executable_accounts':s['executable_accounts']['map'](t=>({'address':t,'name':o['get'](t)}))})),q=p['some'](s=>s['executable_accounts']['length']>0x0),r=progressRelatedToLocalAccount(b,m,h,d);if(!q&&!r)return undefined;return{'progress':a,'progress_name':c['localNames']['get'](a['toLowerCase']()),'current':e,'machine':f,'machine_name':c['localNames']['get'](String(f)['toLowerCase']()),'task':g,'task_name':g?c['localNames']['get'](String(g)['toLowerCase']()):undefined,'service':n,'service_name':n?c['localNames']['get'](String(n)['toLowerCase']()):undefined,'context_repositories':(Array['isArray'](b['context_repositories'])?b['context_repositories']:[])['filter'](s=>typeof s==='string'&&s['startsWith']('0x'))['map'](s=>({'address':s,'name':c['localNames']['get'](s['toLowerCase']())})),'options':p,'terminal':p['length']===0x0,'actionable':q,'history_count':Number(b['history_count']??0x0),'current_time':Number(b['current_time']??0x0)||undefined};}async function handleList(a){const b=a['limit']??0x32,c=a['network'],e=a['no_cache'],f=await listLocalAccounts();if(f['length']===0x0){const J={'action':'list','tasks':[],'note':'No\x20local\x20accounts\x20found\x20—\x20create\x20or\x20import\x20an\x20account\x20first.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':J})}],'structuredContent':{'result':J}};}const g=await query_events({'type':'ProgressEvent','order':'descending','limit':b*0x3,'no_cache':e,'network':c}),h=new Set((g?.['data']??[])['map'](K=>K?.['progress'])['filter'](K=>typeof K==='string'&&K['startsWith']('0x'))['map'](K=>K['toLowerCase']())),i=await batchFetchEntityOrder(f['map'](K=>String(K['address'])['toLowerCase']()),c,e)['catch'](()=>undefined),j=[...new Set((i?[...i['values']()]:[])['flatMap'](K=>K['items']['map'](L=>L['order'])))],k=j['length']>0x0?await batchQueryObjectsByIds(j,c,e):[];for(const K of k??[]){const L=K?.['data']??K,M=L?.['progress'];K?.['type']==='Order'&&typeof M==='string'&&M['startsWith']('0x')&&h['add'](M['toLowerCase']());}if(h['size']===0x0){const N={'action':'list','tasks':[]};return{'content':[{'type':'text','text':JSON['stringify']({'result':N})}],'structuredContent':{'result':N}};}const l=[...h],m=await batchQueryObjectsByIds(l,c,!![]),n=new Map();for(const O of m??[]){const P=O?.['data']??O;O?.['type']==='Progress'&&typeof P?.['machine']==='string'&&n['set'](String(O?.['query_name']??O?.['object']??'')['toLowerCase'](),P);}const q=[...new Set([...n['values']()]['map'](Q=>Q['machine'])['filter'](Q=>typeof Q==='string'))],r=[...new Set([...n['values']()]['map'](Q=>Q['task'])['filter'](Q=>typeof Q==='string'&&Q['startsWith']('0x')))],s=await batchQueryObjectsByIds(q,c,e),t=new Map(),u=new Set();for(const Q of s??[]){const R=Q?.['data']??Q,S=String(Q?.['query_name']??Q?.['object']??'')['toLowerCase'](),T=typeof R?.['permission']==='string'?R['permission']:undefined;t['set'](S,T);if(T)u['add'](String(T)['toLowerCase']());}const v=new Map();await mapWithConcurrency(q,0x8,async U=>{v['set'](String(U)['toLowerCase'](),await fetchMachineNodes(U,c,![]));});const w=[...new Set([...v['values']()]['flatMap'](U=>U['flatMap'](V=>V['pairs']['flatMap'](W=>W['forwards']['map'](X=>X['guard'])['filter'](X=>typeof X==='string'&&X['startsWith']('0x'))))))],x=new Map();if(w['length']>0x0){const U=await batchQueryObjectsByIds(w,c,e);for(const V of U??[]){const W=V?.['data']??V;if(V?.['type']==='Guard'&&Array['isArray'](W?.['table'])){const X=String(V?.['query_name']??V?.['object']??'')['toLowerCase'](),Y=W['table']['filter'](Z=>Z?.['b_submission'])['map'](Z=>({'identifier':Number(Z?.['identifier']??0x0),'name':String(Z?.['name']??'field\x20'+Z?.['identifier']),'value_type':String(Z?.['value_type']??''),'object_type':Z?.['object_type']?String(Z['object_type']):undefined}));if(Y['length']>0x0)x['set'](X,Y);}}}const y=new Map();await mapWithConcurrency([...u],0x8,async Z=>{y['set'](Z,await fetchPermissionContext(Z,c,e));});const z=new Map(),A=new Map(),B=await batchQueryObjectsByIds(r,c,e);for(const Z of B??[]){const a0=Z?.['data']??Z;if(Z?.['type']==='Order'){const a1=String(Z?.['query_name']??Z?.['object']??'')['toLowerCase']();z['set'](a1,{'builder':String(a0?.['builder']??a0?.['owner']??''),'agent':new Set((a0?.['agent']??[])['map'](a2=>String(a2)['toLowerCase']()))});if(typeof a0?.['service']==='string')A['set'](a1,a0['service']);}}const C=[...n['values']()]['flatMap'](a2=>Array['isArray'](a2?.['context_repositories'])?a2['context_repositories']:[]),D=[...l,...q,...r,...[...A['values']()]['filter'](a2=>typeof a2==='string'),...C['filter'](a2=>typeof a2==='string')],{byAddress:E}=await resolveLocalNamesFor(D),F={'machineNodes':v,'permAddrByMachine':t,'permCtxByPermission':y,'orderCtxByOrder':z,'serviceByOrder':A,'localNames':E,'guardSubsByAddr':x},G=await mapWithConcurrency(l,0x8,async a2=>{try{const a3=n['get'](String(a2)['toLowerCase']());return a3?buildWorkflowTaskFromData(a2,a3,F,f):undefined;}catch{return undefined;}}),H=G['filter'](a2=>a2!==undefined)['sort']((a2,a3)=>Number(a3['actionable'])-Number(a2['actionable'])),I={'action':'list','tasks':H['slice'](0x0,b)};return{'content':[{'type':'text','text':JSON['stringify']({'result':I})}],'structuredContent':{'result':I}};}async function handleTask(a){const b=a['network'],c=a['no_cache'],e=a['progress'],f=await listLocalAccounts(),g=await batchQueryObjectsByIds([e],b,!![]),h=(g??[])['find'](y=>y?.['type']==='Progress'),i=h?h?.['data']??h:undefined;if(!h||!i||typeof i?.['machine']!=='string'){const y={'action':'task','note':'Progress\x20'+e+'\x20not\x20found\x20on\x20'+(b??'the\x20current\x20network')+'.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':y})}],'structuredContent':{'result':y}};}const j=i['machine'],k=String(j)['toLowerCase'](),l=await batchQueryObjectsByIds([j],b,c),m=(l??[])['find'](z=>z?.['type']==='Machine'),n=m?m?.['data']??m:undefined,p=n&&typeof n?.['permission']==='string'?n['permission']:undefined,q=await fetchMachineNodes(j,b,![]),r={'machineNodes':new Map([[k,q]]),'permAddrByMachine':new Map([[k,p]]),'permCtxByPermission':new Map(),'orderCtxByOrder':new Map(),'serviceByOrder':new Map(),'localNames':new Map(),'guardSubsByAddr':new Map()},s=[...new Set(q['flatMap'](z=>z['pairs']['flatMap'](A=>A['forwards']['map'](B=>B['guard'])['filter'](B=>typeof B==='string'&&B['startsWith']('0x')))))];if(s['length']>0x0){const z=await batchQueryObjectsByIds(s,b,c);for(const A of z??[]){const B=A?.['data']??A;if(A?.['type']==='Guard'&&Array['isArray'](B?.['table'])){const C=String(A?.['query_name']??A?.['object']??'')['toLowerCase'](),D=B['table']['filter'](E=>E?.['b_submission'])['map'](E=>({'identifier':Number(E?.['identifier']??0x0),'name':String(E?.['name']??'field\x20'+E?.['identifier']),'value_type':String(E?.['value_type']??''),'object_type':E?.['object_type']?String(E['object_type']):undefined}));if(D['length']>0x0)r['guardSubsByAddr']['set'](C,D);}}}p&&r['permCtxByPermission']['set'](String(p)['toLowerCase'](),await fetchPermissionContext(p,b,c));if(typeof i?.['task']==='string'&&i['task']['startsWith']('0x')){const E=await batchQueryObjectsByIds([i['task']],b,c);for(const F of E??[]){if(F?.['type']==='Order'){const G=F?.['data']??F,H=String(F?.['query_name']??F?.['object']??'')['toLowerCase']();r['orderCtxByOrder']['set'](H,{'builder':String(G?.['builder']??G?.['owner']??''),'agent':new Set((G?.['agent']??[])['map'](I=>String(I)['toLowerCase']()))}),typeof G?.['service']==='string'&&r['serviceByOrder']['set'](H,G['service']);}}}const t=Array['isArray'](i?.['context_repositories'])?i['context_repositories']:[],u=[String(h?.['object']??e),i?.['task'],j,...t]['filter'](I=>typeof I==='string'&&I['startsWith']('0x')),{byAddress:v}=await resolveLocalNamesFor(u);r['localNames']=v;const w=buildWorkflowTaskFromData(String(h?.['query_name']??h?.['object']??e),i,r,f),x=w?{'action':'task','tasks':[w]}:{'action':'task','note':'Progress\x20snapshot\x20could\x20not\x20be\x20built.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':x})}],'structuredContent':{'result':x}};}const WORKFLOW_HISTORY_PREFIX='__workflow_history',WORKFLOW_HISTORY_RETENTION_MS=0x5a*0x18*0xe10*0x3e8;async function readHistoryStore(a){const b=await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':{}}));return b?.['data']??{};}async function writeHistoryStore(a,b){await Cache['read']([WORKFLOW_HISTORY_PREFIX,a],async()=>({'expire':'INFINITE','data':b}),!![]);}async function handleHistory(a){const b=await resolveNetwork(a['network']),c=a['limit']??0x32,d=a['prune']??!![],g=a['progress'],h=await batchQueryObjectsByIds([g],b,!![]),i=(h??[])[0x0],j=i?.['object']??(typeof g==='string'&&g['startsWith']('0x')?g:undefined),k=i?.['data']??i;if(!j||i?.['type']!=='Progress'){const E={'action':'history','note':'Not\x20a\x20Progress\x20object\x20or\x20not\x20found.'};return{'content':[{'type':'text','text':JSON['stringify']({'result':E})}],'structuredContent':{'result':E}};}const l=Number(k?.['history_count']??0x0),m=await readHistoryStore(b),n=m[j]??{'cursor':-0x1,'lastActivity':0x0,'records':[]},o=[],p=n['cursor']+0x1;if(p<l){const F=[];for(let H=p;H<l;H++)F['push'](H);const G=await batchReadU64KeyedFields(j,F,b,![]);for(let I=p;I<l;I++){const J=G['get'](String(I));if(!J)break;o['push']({'index':I,'node':J['node'],'next_node':J['next_node'],'time':J['time'],'session':J['session']});}}const q=o['length']>0x0?p+o['length']-0x1:n['cursor'],t=[...n['records'],...o],u=o['length']>0x0?Math['max'](n['lastActivity'],...o['map'](K=>K['time'])):n['lastActivity'];m[j]={'cursor':q,'lastActivity':u,'records':t};let v=0x0;if(d){const K=Date['now']()-WORKFLOW_HISTORY_RETENTION_MS;for(const L of Object['keys'](m)){const M=m[L];M['lastActivity']>0x0&&M['lastActivity']<K&&(delete m[L],v++);}}await writeHistoryStore(b,m);const w=typeof k?.['machine']==='string'?k['machine']:undefined,x=new Map();if(w)try{const N=await fetchMachineNodes(w,b,![]);for(const O of N??[]){for(const P of O?.['pairs']??[]){for(const Q of P?.['forwards']??[]){if(Q?.['name'])x['set'](O['name']+'|'+Q['name'],Number(Q?.['weight']??0x0));}}}}catch{}const y=[],z=R=>{for(const S of R??[]){const T=String(S?.['value_type']??'')['toLowerCase'](),U=S?.['value'];if(!T['includes']('address'))continue;if(Array['isArray'](U)){for(const V of U)if(typeof V==='string'&&V['startsWith']('0x'))y['push'](V);}else typeof U==='string'&&U['startsWith']('0x')&&y['push'](U);}};for(const R of t){for(const S of Array['isArray'](R?.['session'])?R['session']:[]){for(const T of Array['isArray'](S?.['forwards'])?S['forwards']:[]){if(T?.['who'])y['push'](String(T['who']));z(T?.['retained_submission']);}}}const {byAddress:A}=await resolveLocalNamesFor([...new Set(y)]),B=U=>{const V=String(U?.['value_type']??'')['toLowerCase'](),W=U?.['value'];if(!V['includes']('address'))return U;const X=Array['isArray'](W)?typeof W[0x0]==='string'?W[0x0]:undefined:typeof W==='string'?W:undefined;return{...U,'display_name':X?A['get'](String(X)['toLowerCase']()):undefined};},C=t['map'](U=>({...U,'session':(Array['isArray'](U?.['session'])?U['session']:[])['map'](V=>({...V,'forwards':(Array['isArray'](V?.['forwards'])?V['forwards']:[])['map'](W=>({...W,'weight':x['get'](V?.['next_node']+'|'+W?.['forward'])??undefined,'who_name':W?.['who']?A['get'](String(W['who'])['toLowerCase']()):undefined,'retained_submission':(Array['isArray'](W?.['retained_submission'])?W['retained_submission']:[])['map'](B)}))}))})),D={'action':'history','history':{'progress':j,'current':k?.['current'],'records':[...C]['sort']((U,V)=>V['index']-U['index'])['slice'](0x0,c),'synced':o['length'],'cursor':q,'pruned':v}};return{'content':[{'type':'text','text':JSON['stringify']({'result':D})}],'structuredContent':{'result':D}};}async function handleOperate(a){const b={'operation_type':'progress','data':{'object':a['progress'],'operate':a['operate']},'env':{'account':a['account']?a['account']:undefined,'network':a['network'],'no_cache':a['no_cache'],'confirmed':a['confirmed'],'dry_run':a['dry_run']}};return a['submission']!==undefined&&(b['submission']=a['submission']),await handleOnchainOperations(b);}export async function handleWorkflowOperation(a){const b=strictParse(WorkflowOperationInputSchema,a,'workflow_operation\x20input');if(b['action']==='list')return await handleList(b);if(b['action']==='task')return await handleTask(b);if(b['action']==='history')return await handleHistory(b);return await handleOperate(b);}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export interface StructuredSchemaError {
|
|
|
18
18
|
expected?: string;
|
|
19
19
|
received_value?: unknown;
|
|
20
20
|
suggestion: string;
|
|
21
|
+
legal_fields?: string[];
|
|
21
22
|
}
|
|
22
23
|
export declare function buildSchemaPreview(schema: Record<string, unknown>, toolName: string, data: unknown): string;
|
|
23
24
|
export declare function dispatchToolCall(name: string, args: unknown, options?: DispatchOptions, req?: ToolRequestContext): Promise<ToolDispatchResult>;
|