@okxweb3/a2a-openclaw 0.2.3-beta-fa7df0d9e7-260810102542 → 0.2.3
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/index.js +3 -3
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var __importMetaUrl=require('url').pathToFileURL(__filename).href;
|
|
2
2
|
"use strict";var Fr=Object.create;var me=Object.defineProperty;var Br=Object.getOwnPropertyDescriptor;var Hr=Object.getOwnPropertyNames;var qr=Object.getPrototypeOf,Xr=Object.prototype.hasOwnProperty;var y=(e,n)=>()=>(e&&(n=e(e=0)),n);var Ee=(e,n)=>{for(var t in n)me(e,t,{get:n[t],enumerable:!0})},tt=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Hr(n))!Xr.call(e,s)&&s!==t&&me(e,s,{get:()=>n[s],enumerable:!(r=Br(n,s))||r.enumerable});return e};var Yr=(e,n,t)=>(t=e!=null?Fr(qr(e)):{},tt(n||!e||!e.__esModule?me(t,"default",{value:e,enumerable:!0}):t,e)),Wr=e=>tt(me({},"__esModule",{value:!0}),e);function Vr(e=new Date){return e.toISOString()}function rt(e){return[`[${Vr()}]`,...e]}function u(...e){console.error(...rt(e))}function st(...e){console.warn(...rt(e))}var I=y(()=>{"use strict"});function ot(e){We=e}function _e(){if(!We)throw new Error("[xmtp] PluginRuntime not initialized \u2014 ensure setXmtpRuntime is called in register()");return We}var We,Ie=y(()=>{"use strict";We=null});var a,Se=y(()=>{"use strict";a={GATEWAY_STARTED:"Gateway started",GATEWAY_STOPPED:"Gateway stopped",BOOTSTRAP_APPLIED:"Bootstrap applied",CHANNEL_READY:"Channel ready",CONVERSATION_STARTED:"Conversation started",EVALUATE_CONVERSATION_STARTED:"Evaluate conversation started",CONVERSATION_DELETED:"Conversation deleted",PENDING_CONVERSATION_DENIED:"Pending conversation denied",AGENTS_REFRESHED:"Agents refreshed",USER_DISPATCHED:"User dispatched",SESSION_DISPATCHED:"Session dispatched",SYNC_TICK_COMPLETED:"Sync tick completed",INBOUND_HANDLER_ENTERED:"Inbound handler entered",MESSAGE_RECEIVED:"Message received",MESSAGE_SENT:"Message sent",INBOUND_BUYER_PENDING:"Inbound buyer: no session, group still Unknown (pending)",INBOUND_BUYER_SESSION_AUTO_RECOVERED:"Inbound buyer: session missing for Allowed group, auto-recovered",INBOUND_BLOCKED_SENSITIVE:"Inbound blocked: sensitive word; reply sent",INBOUND_BLOCKED_ADDRESS_MISMATCH:"Inbound blocked: address mismatch",INBOUND_BLOCKED_INELIGIBLE:"Inbound blocked: message-eligible check failed",INBOUND_DROP_EMPTY_CONTENT:"Inbound drop: empty content",INBOUND_DROP_MISSING_JOBID:"Inbound drop: missing jobId",INBOUND_DROP_UNSUPPORTED_MSGTYPE:"Inbound drop: unsupported msgType",INBOUND_DROP_DM_NON_SYSTEM:"Inbound drop: DM sender not in system whitelist",INBOUND_DROP_DM_INVALID_PAYLOAD:"Inbound drop: DM payload invalid",INBOUND_DROP_DM_UNKNOWN_AGENT:"Inbound drop: DM target agent not local",DM_FALLBACK_TO_BACKUP:"DM fallback to backup session",DM_WHITELIST_FAIL_OPEN:"DM whitelist fail-open (empty system accounts)",FILE_UPLOADED:"File uploaded",FILE_DOWNLOADED:"File downloaded",PENDING_LIST_QUERIED:"Pending list queried",AGENT_LIST_QUERIED:"Agent list queried",SESSION_KEY_DERIVED:"Session key derived",CONVERSATION_HISTORY_QUERIED:"Conversation history queried",SESSIONS_QUERIED:"Sessions queried",GROUP_CONSENT_CHANGED:"Group consent changed",SESSION_CREATED:"Session created",SESSION_DELETED:"Session deleted",SESSION_AUTO_RECOVERED:"Session auto-recovered",INBOUND_DELIVERED:"Inbound delivered to session",DM_DELIVERED:"DM delivered to session",OUTBOUND_ELIGIBILITY_CHECKED:"Outbound eligibility checked",MESSAGE_ELIGIBILITY_CHECKED:"Message eligibility checked",AGENT_CLIENT_CREATED:"Agent client created",AGENT_INSTALLATION_SUMMARY:"Agent installation summary",XMTP_HISTORY_SYNC_REQUESTED:"XMTP history sync requested",XMTP_DEBUG_SYNC_REQUESTED:"XMTP debug sync requested",XMTP_DEBUG_SYNC_COMPLETED:"XMTP debug sync completed",AGENT_CLIENT_REMOVED:"Agent client removed",AGENT_STREAM_RECOVERED:"Agent stream recovered",AGENT_STREAM_RECOVERY_REPLAY_COMPLETED:"Agent stream recovery replay completed",ADDRESS_SYNC_COMPLETED:"Address sync completed",AGENT_REFRESH_SESSION_EXPIRED:"Agent refresh aborted: onchainos session expired, local clients taken offline",OFFLINE_REPLAY_MESSAGE_REPLAYED:"Offline replay message replayed",AGENTS_WAKEUP_NOTIFIED:"Agents wakeup notified",CONFIG_SENSITIVE_WORDS_REFRESHED:"Sensitive words config refreshed",CONFIG_SYSTEM_REFRESHED:"System config refreshed",GATEWAY_DISCONNECTED:"Gateway disconnected",GATEWAY_REQUEST:"Gateway request",GATEWAY_DELIVERY_BUFFERED:"Gateway delivery buffered",DAEMON_LIFECYCLE_SKIPPED:"Daemon lifecycle skipped",DAEMON_LIFECYCLE_REQUESTED:"Daemon lifecycle requested",PROMPT_USER_CHECKPOINT:"Prompt user checkpoint",USER_WATCH_STARTED:"User watch started",USER_WATCH_EVENT_DELIVERED:"User watch event delivered",INBOUND_DM_RAW:"Inbound DM raw",INBOUND_GROUP_RAW:"Inbound group raw",INBOUND_IGNORED_DUPLICATE:"Inbound ignored: duplicate message",INBOUND_IGNORED_NON_BUSINESS:"Inbound ignored: non-business message",AI_RUN_STARTED:"AI run started",AI_RUN_COMPLETED:"AI run completed",AI_RUN_SKIPPED:"AI run skipped",RUNTIME_DETECTED:"Runtime detected",PROVIDER_READINESS_CHECKED:"Provider readiness checked",PROVIDER_SWITCHED:"Provider switched",JOB_PROVIDER_BOUND:"Job provider bound",USER_CHANNEL_MESSAGE_DELIVERED:"User channel message delivered",SYSTEM_NOTIFICATION_RECEIVED:"System notification received",SYSTEM_NOTIFICATION_ROUTED:"System notification routed",HERMES_SESSION_ROUTE_BINDING:"Hermes session route binding",DOCTOR_REPORT:"Doctor report",XMTP_CONNECTION_FAILED:"XMTP connection failed",CONVERSATIONS_STREAM_FAILED:"conversations.stream failed",AGENT_START_FAILED:"agent.start failed",AGENT_STREAM_ERROR:"agent stream error",AGENT_UNHANDLED_ERROR:"Agent unhandled error",AGENT_STREAM_RECOVERY_TIMEOUT:"Agent stream recovery timeout",BOOTSTRAP_FAILED:"Bootstrap failed",ONCHAINOS_SESSION_EXPIRED:"Onchainos session expired",ONCHAINOS_CLI_ERROR:"Onchainos CLI error",HEARTBEAT_FAILED:"Heartbeat failed",HEARTBEAT_SKIPPED:"Heartbeat skipped",HEARTBEAT_GATEWAY_CHECK_FAILED:"Heartbeat gateway check failed",MESSAGE_PARSE_FAILED:"Message parse failed",MESSAGE_HANDLER_ERROR:"Message handler error",INBOUND_DISPATCH_FAILED:"Inbound dispatch failed",INBOUND_REPLAY_GATE_DRAIN_FAILED:"Inbound replay gate drain failed",FATAL_UNCAUGHT:"Fatal uncaught error",OFFLINE_REPLAY_FAILED:"Offline replay failed",INBOUND_ROUTING_FAILED:"Inbound routing failed",CONVERSATION_NOT_FOUND:"Conversation not found for send",XMTP_SEND_FAILED:"XMTP send failed",AGENT_REFRESH_FAILED:"Agent refresh failed",GROUP_CONSENT_UPDATE_FAILED:"Group consent update failed",TOOL_EXECUTE_FAILED:"Tool execute failed",AGENT_RESOLUTION_FAILED:"Agent resolution failed",USER_DISPATCH_FAILED:"User dispatch failed",INBOUND_ELIGIBILITY_BYPASSED:"Inbound eligibility bypassed",INBOUND_ADDRESS_CHECK_FAILED:"Inbound address check failed",INBOUND_ADDRESS_CHECK_BYPASSED:"Inbound address check bypassed",INBOUND_SENSITIVE_CHECK_FAILED:"Inbound sensitive check failed",FILE_UPLOAD_FAILED:"File upload failed",FILE_DOWNLOAD_FAILED:"File download failed",OFFLINE_REPLAY_MESSAGE_FAILED:"Offline replay message failed",PENDING_NOTIFICATION_FAILED:"Pending notification failed",GATEWAY_CONNECT_FAILED:"Gateway connect failed",GATEWAY_REQUEST_FAILED:"Gateway request failed",PROMPT_USER_FAILED:"Prompt user failed",DAEMON_COMMAND_FAILED:"Daemon command failed",DAEMON_COMMAND_TIMEOUT:"Daemon command timeout",DAEMON_COMMAND_STALE:"Daemon command stale",DAEMON_LIFECYCLE_FAILED:"Daemon lifecycle failed",DAEMON_TICK_FAILED:"Daemon tick failed",DIRECT_CLI_FAILED:"Direct CLI failed",DOCTOR_NOT_READY:"Doctor not ready",DOCTOR_CRASHED:"Doctor crashed",AI_RUN_FAILED:"AI run failed",AI_RUN_TIMEOUT:"AI run timeout",AI_RUN_TOOL_FAILED:"AI run tool failed",IPC_FAILED:"IPC failed",NOTIFY_AGENTS_WAKEUP_FAILED:"Notify agents wakeup failed",OUTBOUND_AGENT_LOOKUP_FAILED:"Outbound agent lookup failed",OUTBOUND_ELIGIBILITY_CHECK_FAILED:"Outbound eligibility check failed",OUTBOUND_ELIGIBILITY_BYPASSED:"Outbound eligibility bypassed",OUTBOUND_BLOCKED_INELIGIBLE:"Outbound blocked: message-eligible check failed",CACHE_LOAD_FAILED:"Cache load failed",CACHE_WRITE_FAILED:"Cache write failed",CONFIG_LOAD_FAILED:"Config load failed",SENTRY_INIT_SKIPPED:"Sentry init skipped",AGENT_DB_DIR_CREATE_FAILED:"Agent DB dir create failed",AGENT_INSTALLATION_LIMIT_NEAR:"Agent installation limit near",XMTP_HISTORY_SYNC_REQUEST_FAILED:"XMTP history sync request failed",XMTP_DEBUG_SYNC_FAILED:"XMTP debug sync failed"}});function V(e){return typeof e=="string"&&e.trim().length>0}function at(e){let n=V(e.messageId)?e.messageId.trim():"";if(n&&zr.test(n))return n;let t=[n,e.jobId,e.sessionKey,e.attentionId].map(s=>V(s)?s.trim():"");if(t.every(s=>s===""))return U;let r=(0,it.createHash)("sha256").update(t.join("|")).digest("hex");return`${Jr}${r.slice(0,Qr)}`}function dt(e){if(!V(e))return{...Ve};let[n,...t]=e.trim().split("-"),r=n.split(".");if(r.length<3)return{...Ve};let[s,o,i]=r.map(d=>Number(d));return[s,o,i].every(d=>Number.isInteger(d)&&d>=0)?{releaseBase:n,releaseChannel:ns(t[0]),releaseCode:s*Zr+o*es+i}:{...Ve}}function ns(e){if(!V(e))return"release";let n=e.toLowerCase().replace(/[^a-z0-9]/g,"");return n?n.startsWith("beta")?"beta":n:"release"}function z(e){return[["checkpoint",e.checkpoint],["outcome",e.outcome],["transport",e.transport],["eventFamily",e.eventFamily],["workloadClass",e.workloadClass],["taskMode",e.taskMode],["originPlatform",e.originPlatform],["deliveryId",e.deliveryId]].reduce((t,[r,s])=>(V(s)&&(t[r]=s.trim()),t),{})}function he(e){if(typeof e!="string")return;let n=e.trim();if(!(!n||n===U||n==="*"))return n}function Ae(...e){return e.map(he).find(n=>!!n)}function ze(e){let n={...e},t=Ae(e.jobId,e.taskId);t&&(n.jobId=t,n.taskId=t);let r=he(e.stage)??"",s=r.startsWith("inbound/"),o=r.startsWith("outbound/"),i=Ae(e.onchainosAgentId,e.myAgentId,e.agentId),d=[e.peerAgentId,e.providerAgentId,e.clientAgentId].map(he).find(_=>!!_&&_!==i),c=Ae(e.fromAgentId,e.senderAgentId,s?d:void 0,o?i:void 0),l=Ae(e.toAgentId,e.receiverAgentId,s?i:void 0,o?d:void 0);c&&(n.fromAgentId=c),l&&(n.toAgentId=l);let g=[c,l,e.agentId,e.onchainosAgentId,e.peerAgentId,e.providerAgentId,e.clientAgentId,e.sessionAgentId,e.myAgentId].map(he).filter(_=>!!_),p=[...new Set(g)].sort();return p.length>0&&(n.participantAgentIds=p.join(",")),n}var it,zr,Jr,Qr,Zr,es,U,Ve,Te=y(()=>{"use strict";it=require("node:crypto"),zr=/^[0-9a-f]{16,}$/i,Jr="dlv",Qr=24,Zr=1e6,es=1e3,U="unknown";Ve={releaseBase:U,releaseChannel:U,releaseCode:0}});function J(){return M||(process.env.OKX_AGENT_TASK_HOME?(M=Re(process.env.OKX_AGENT_TASK_HOME),M):(M=Re((0,we.join)(rs(),".okx-agent-task")),M))}function Re(e){return ts(e)}function ts(e){(0,Ne.mkdirSync)(e,{recursive:!0,mode:ct});try{(0,Ne.chmodSync)(e,ct)}catch(n){let t=n.code;if(t!=="EPERM"&&t!=="EACCES")throw n}return e}function rs(){try{let e=(0,ut.homedir)();if(e)return e}catch(e){}return(0,we.resolve)(process.cwd())}var ut,we,Ne,M,ct,Je=y(()=>{"use strict";ut=require("node:os"),we=require("node:path"),Ne=require("node:fs"),M=null,ct=448});function Qe(e,n,t){if(os.has(n))try{let r=J(),s=(0,D.join)(r,"xmtp-tests"),o=(0,D.join)(s,"active.json");if(!(0,$.existsSync)(o))return;let i=JSON.parse((0,$.readFileSync)(o,"utf8")),d=typeof i.runId=="string"?i.runId:"";if(!ss.test(d))return;let c=(0,D.resolve)(s,d),l=`${(0,D.resolve)(s)}${D.sep}`;if(!c.startsWith(l))return;(0,$.appendFileSync)((0,D.join)(c,"events.jsonl"),`${JSON.stringify({timestamp:new Date().toISOString(),level:e,eventName:n,runId:d,...t})}
|
|
3
|
-
`,{encoding:"utf8",mode:384})}catch{}}var $,D,ss,os,lt=y(()=>{"use strict";$=require("node:fs"),D=require("node:path");Je();ss=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$/,os=new Set(["Address sync completed","Agent client created","Agent client removed","agent stream error","Agent stream recovered","Agent stream recovery replay completed","Agent stream recovery timeout","conversations.stream failed","Inbound delivered to session","Inbound dispatch failed","Inbound handler entered","Inbound ignored: duplicate message","Message handler error","Message received","Message sent","Offline replay failed","Offline replay message failed","Offline replay message replayed","System notification received","System notification routed","XMTP connection failed"])});function At(e){return e instanceof Error?e:void 0}function Ze(e){if(typeof e!="string"&&typeof e!="number")return;let n=String(e).trim();if(!(!n||/^(?:null|undefined|unknown)$/i.test(n))&&/^[A-Za-z0-9_.:-]+$/.test(n))return n.slice(0,is)}function gt(e){if(typeof e!="string")return;let n=Ze(e.trim().split(/\s+/,1)[0])?.toLowerCase();return n&&cs.has(n)?n:void 0}function ft(e){let n=Ze(e)?.toUpperCase();return n&&ds.has(n)?n:void 0}function pt(e){return ft(e?.code)??ft(e?.errno)}function yt(e,n){let t=n?.toUpperCase(),r=e?.name.toLowerCase()??"",s=e?.message.toLowerCase()??"";return t&&mt.has(t)?"resource_exhausted":t&&Et.has(t)?"connection_interrupted":t&&_t.has(t)?"network_unavailable":t&&It.has(t)?"timeout":t&&St.has(t)?"permission_denied":t==="ENOENT"?"missing_dependency":t==="ABORT_ERR"||r==="aborterror"?"cancelled":r==="syntaxerror"||/(?:json|response).*(?:parse|invalid)/.test(s)?"invalid_response":/session\s+(?:is\s+)?expired|login\s+expired/.test(s)?"session_expired":/timed?\s*out|timeout/.test(s)?"timeout":"unknown"}function us(e){switch(e){case"connection_interrupted":case"network_unavailable":case"resource_exhausted":case"timeout":return"retryable";case"invalid_response":case"missing_dependency":case"permission_denied":case"session_expired":return"non_retryable";default:return"unknown"}}function ls(e){let n=[],t=new Set,r=e;for(;r&&n.length<as&&!t.has(r);)n.push(r),t.add(r),r=At(r.cause);return n}function ht(e,n,t){let r=At(n),s={};if(r&&(s.errorName=r.name,s.errorMessageLength=String(r.message.length)),!r||e===a.AGENT_STREAM_ERROR)return s;let o=ls(r),i=o[0],d=o.length>1?o[o.length-1]:void 0,c=Ze(t.exitCode),l=pt(i),g=yt(i,l),p=gt(i.syscall),_=pt(d),L=d?yt(d,_):void 0,Ye=gt(d?.syscall),Qn=g==="unknown"&&L?L:g,Zn=Qn==="unknown"&&c&&c!=="0"?"process_exit":Qn,et=l??_,nt=p??Ye;return{...s,errorCategory:Zn,errorRetryability:us(Zn),errorCauseDepth:String(Math.max(0,o.length-1)),...et?{errorCode:et}:{},...nt?{errorSyscall:nt}:{},...d?{causeErrorMessageLength:String(d.message.length),causeErrorCategory:L??"unknown",..._?{causeErrorCode:_}:{},...Ye?{causeErrorSyscall:Ye}:{}}:{}}}var is,as,mt,Et,_t,It,St,ds,cs,Tt=y(()=>{"use strict";Se();is=64,as=4,mt=new Set(["EAGAIN","EMFILE","ENFILE","ENOMEM"]),Et=new Set(["ECONNRESET","EPIPE"]),_t=new Set(["EAI_AGAIN","ECONNREFUSED","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND"]),It=new Set(["ETIMEDOUT","ESOCKETTIMEDOUT"]),St=new Set(["EACCES","EPERM"]),ds=new Set([...mt,...Et,..._t,...It,...St,"ABORT_ERR","ENOENT"]),cs=new Set(["access","bind","close","connect","getaddrinfo","kill","listen","mkdir","open","read","readdir","readlink","rename","rmdir","spawn","stat","unlink","write"])});function Es(e){try{let n=e?.extra?.eventName??e?.tags?.eventName;if(typeof n=="string"&&n.trim().length>0)return e;let t=e;t.extra={...De,...t.extra??{},eventName:a.FATAL_UNCAUGHT,eventFamily:"diagnostics",outcome:"failed",transport:"local"},t.tags={...t.tags??{},eventName:a.FATAL_UNCAUGHT,eventFamily:"diagnostics",outcome:"failed"},t.fingerprint=["a2a",a.FATAL_UNCAUGHT]}catch{}return e}var m,Ot,Rt,wt,gs,fs,ps,ys,ms,Oe,Nt,De,en,f,Dt,bt,k=y(()=>{"use strict";I();m=Yr(require("@sentry/node")),Ot=require("node:crypto");Se();Te();lt();Tt();Se();Te();Rt=(0,Ot.randomUUID)(),wt=new Set(["args","apikey","argv","auth","authorization","authtoken","bearer","body","cache","command","content","credential","credentials","cwd","data","error","failures","filename","file_name","filepath","file_path","headers","input","logpath","message","output","password","params","path","payload","privatekey","prompt","raw","rawevent","rawtext","request","response","accesstoken","refreshtoken","digest","nonce","salt","secret","token","stderr","stdout","title","tooloutput"]),gs=["accesstoken","apikey","authorization","authtoken","content","credential","filepath","logpath","outputpath","password","payload","privatekey","prompt","rawevent","rawtext","refreshtoken","requestbody","responsebody","secret","stderr","stdout","token","tooloutput"],fs=new Set(["onchainosagentlistresultjson","onchainosagentlistdiagnostictext","systemconfigjson"]),ps=new Set(["agentId","agentPlatform","cacheName","causeCode","causeType","causeVariant","checkpoint","code","communicationClass","component","eventFamily","eventName","endpoint","errorCategory","errorCode","errorRetryability","errorSyscall","exitCode","fromAgentId","grpcMethod","jobId","kind","method","onchainosAgentId","operation","originPlatform","outcome","participantAgentIds","peerAgentId","phase","platform","provider","reason","releaseBase","releaseChannel","releaseCode","role","runId","runtimeContainer","senderAgentId","source","stage","status","streamErrorCode","streamType","subcommand","systemEvent","taskId","taskMode","toAgentId","transport","transportFailure","transportProtocol","type","workloadClass"]),ys=["eventName","errorCategory","errorCode","errorSyscall","cacheName","component","method","operation","phase","reason","code","provider","type","kind","status","subcommand"],ms=new Set([a.GATEWAY_STARTED,a.GATEWAY_STOPPED,a.GATEWAY_DISCONNECTED,a.GATEWAY_REQUEST,a.GATEWAY_DELIVERY_BUFFERED,a.DAEMON_LIFECYCLE_SKIPPED,a.DAEMON_LIFECYCLE_REQUESTED,a.PROMPT_USER_CHECKPOINT,a.USER_WATCH_STARTED,a.USER_WATCH_EVENT_DELIVERED,a.CHANNEL_READY,a.CONVERSATION_STARTED,a.EVALUATE_CONVERSATION_STARTED,a.CONVERSATION_DELETED,a.USER_DISPATCHED,a.SESSION_DISPATCHED,a.SESSION_CREATED,a.SESSION_DELETED,a.SESSION_AUTO_RECOVERED,a.INBOUND_DELIVERED,a.INBOUND_DM_RAW,a.INBOUND_GROUP_RAW,a.INBOUND_IGNORED_DUPLICATE,a.INBOUND_IGNORED_NON_BUSINESS,a.AI_RUN_STARTED,a.AI_RUN_COMPLETED,a.AI_RUN_SKIPPED,a.RUNTIME_DETECTED,a.PROVIDER_READINESS_CHECKED,a.PROVIDER_SWITCHED,a.JOB_PROVIDER_BOUND,a.USER_CHANNEL_MESSAGE_DELIVERED,a.SYSTEM_NOTIFICATION_RECEIVED,a.SYSTEM_NOTIFICATION_ROUTED,a.HERMES_SESSION_ROUTE_BINDING,a.INBOUND_BLOCKED_ADDRESS_MISMATCH,a.INBOUND_BLOCKED_INELIGIBLE,a.MESSAGE_ELIGIBILITY_CHECKED,a.INBOUND_BLOCKED_SENSITIVE,a.INBOUND_DROP_DM_INVALID_PAYLOAD,a.INBOUND_DROP_DM_NON_SYSTEM,a.INBOUND_DROP_DM_UNKNOWN_AGENT,a.INBOUND_DROP_EMPTY_CONTENT,a.INBOUND_DROP_MISSING_JOBID,a.INBOUND_DROP_UNSUPPORTED_MSGTYPE,a.DM_DELIVERED,a.DM_FALLBACK_TO_BACKUP,a.DM_WHITELIST_FAIL_OPEN,a.INBOUND_BUYER_PENDING,a.INBOUND_BUYER_SESSION_AUTO_RECOVERED,a.MESSAGE_SENT,a.AGENT_CLIENT_CREATED,a.AGENT_CLIENT_REMOVED,a.AGENT_STREAM_ERROR,a.AGENT_STREAM_RECOVERED,a.AGENT_STREAM_RECOVERY_REPLAY_COMPLETED,a.ADDRESS_SYNC_COMPLETED,a.AGENTS_REFRESHED,a.AGENTS_WAKEUP_NOTIFIED,a.AGENT_LIST_QUERIED,a.BOOTSTRAP_APPLIED,a.CONFIG_SENSITIVE_WORDS_REFRESHED,a.CONFIG_SYSTEM_REFRESHED,a.CONVERSATION_HISTORY_QUERIED,a.FILE_DOWNLOADED,a.FILE_UPLOADED,a.GROUP_CONSENT_CHANGED,a.INBOUND_HANDLER_ENTERED,a.MESSAGE_RECEIVED,a.OFFLINE_REPLAY_MESSAGE_REPLAYED,a.AGENT_REFRESH_SESSION_EXPIRED,a.OUTBOUND_ELIGIBILITY_CHECKED,a.OUTBOUND_BLOCKED_INELIGIBLE,a.AGENT_INSTALLATION_SUMMARY,a.XMTP_HISTORY_SYNC_REQUESTED,a.XMTP_DEBUG_SYNC_REQUESTED,a.XMTP_DEBUG_SYNC_COMPLETED,a.PENDING_CONVERSATION_DENIED,a.PENDING_LIST_QUERIED,a.SESSION_KEY_DERIVED,a.SESSIONS_QUERIED,a.SYNC_TICK_COMPLETED]),Oe=256,Nt=128,De={},en=class e{static instance;initialized=!1;buffer=[];constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}init(n){if(this.initialized){st("[logger] Already initialized, skipping.");return}try{De=dt(n.release),m.init({dsn:n.dsn,release:n.release,environment:n.environment,maxBreadcrumbs:0,beforeBreadcrumb:()=>null,beforeSend:r=>Es(r),isInner:!1});let t={projectName:n.projectName,agentPlatform:n.agentPlatform};n.runtimeContainer&&(t.runtimeContainer=n.runtimeContainer),m.setTags(t)}catch{return}this.initialized=!0,this.flush()}info(n,t){let r=e.sanitizeExtra(ze({flowId:Rt,...De,...t??{}}));if(Qe("info",n,r),!!ms.has(n)){if(!this.initialized){this.buffer.push({level:"info",message:n,extra:r});return}this.captureInfo(n,r)}}captureInfo(n,t){try{m.withScope(r=>{e.applyDiagnostics(r,n,t),m.captureEvent({level:"info",message:n,extra:{...t,eventName:n}})})}catch{}}error(n,t,r){let s=e.sanitizeExtra(ze({flowId:Rt,...De,...r??{}}));if(Qe("error",n,s),!this.initialized){this.buffer.push({level:"error",message:n,error:t,extra:s});return}this.captureError(n,t,s)}captureError(n,t,r){try{let s=ht(n,t,r),o={...r,...s};m.withScope(i=>{i.setLevel("error"),e.applyDiagnostics(i,n,o),m.captureException(e.createSentryEvent(n),{extra:{...o,eventName:n}})})}catch{}}async shutdown(){try{await m.close(5e3)}catch{await m.flush(5e3)}}flush(){for(;this.buffer.length>0;){let n=this.buffer.shift();n.level==="info"?this.captureInfo(n.message,n.extra??{}):this.captureError(n.message,n.error,n.extra??{})}}static sanitizeExtra(n){return Object.fromEntries(Object.entries(n).filter(([,t])=>t!==void 0).filter(([t])=>!e.isBlockedExtraKey(t)).map(([t,r])=>[t,e.safeValueForKey(t,r)]))}static isBlockedExtraKey(n){let t=n.toLowerCase(),r=e.normalizeSensitiveKey(n);return wt.has(t)||wt.has(r)?!0:e.isSafeMetricKey(r)?!1:gs.some(s=>r.includes(s))}static isSafeMetricKey(n){return/(bytes|count|length|ms|size)$/.test(n)}static safeValueForKey(n,t){return typeof t=="string"&&fs.has(e.normalizeSensitiveKey(n))?t:e.safeValue(t)}static normalizeSensitiveKey(n){return n.toLowerCase().replace(/[^a-z0-9]/g,"")}static safeValue(n){if(typeof n=="string")return n.length<=Oe?n:`${n.slice(0,Oe)}...`;if(n==null||typeof n=="number"||typeof n=="boolean")return n;if(typeof n=="bigint")return n.toString();if(n instanceof Error)return{name:n.name,messageLength:n.message.length};if(Array.isArray(n))return n.slice(0,20).map(r=>e.safeValue(r));if(typeof n=="object")return Object.fromEntries(Object.entries(n).slice(0,50).filter(([,r])=>r!==void 0).filter(([r])=>!e.isBlockedExtraKey(r)).map(([r,s])=>[r,e.safeValueForKey(r,s)]));let t=String(n);return t.length<=Oe?t:`${t.slice(0,Oe)}...`}static tagValue(n){let t=String(n);return t.length<=Nt?t:`${t.slice(0,Nt)}...`}static normalizeTagKey(n){return n.replace(/[^A-Za-z0-9_.:-]+/g,"_").slice(0,32)||"unknown"}static applyDiagnostics(n,t,r){let s={eventName:t,...r};for(let[i,d]of Object.entries(s))ps.has(i)&&n.setTag(e.normalizeTagKey(i),e.tagValue(d));let o=["a2a",t];for(let i of ys){let d=s[i];d&&o.push(`${i}:${e.tagValue(d)}`)}n.setFingerprint(o)}static toPascalCase(n){return n.split(/[\s:]+/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}static createSentryEvent(n){let t=new Error(n);return t.name=e.toPascalCase(n),t.stack=`${t.name}: ${n}`,t}},f=en.getInstance(),Dt=e=>f.init(e),bt=()=>f.shutdown()});function be(){return _e()}function Kt(e){kt.has(e)||(kt.add(e),u(`[okx-a2a:runtime] using legacy OpenClaw PluginRuntime API api=${e}`))}function Ce(){let e=be().config;if(typeof e.current=="function")return e.current();if(typeof e.loadConfig=="function")return Kt("config.loadConfig"),e.loadConfig();throw new Error("Unsupported OpenClaw PluginRuntime: neither config.current nor config.loadConfig is available")}function vt(){let e=be().agent.session;if(typeof e.resolveStorePath!="function"||typeof e.loadSessionStore!="function")throw new Error("Unsupported OpenClaw PluginRuntime: no row-level or legacy session reader is available");Kt("agent.session.loadSessionStore");let n=e.resolveStorePath(void 0,{agentId:"main"});return e.loadSessionStore(n,{skipCache:!0})}function Pt(e){let n=be().agent.session;return typeof n.getSessionEntry=="function"?n.getSessionEntry({agentId:"main",sessionKey:e,readConsistency:"latest"}):vt()[e]}function nn(){let e=be().agent.session;return typeof e.listSessionEntries=="function"?e.listSessionEntries({agentId:"main",readConsistency:"latest",readOnly:!0}):Object.entries(vt()).map(([n,t])=>({sessionKey:n,entry:t}))}function xt(){return Object.fromEntries(nn().map(({sessionKey:e,entry:n})=>[e,n]))}var kt,tn=y(()=>{"use strict";I();Ie();kt=new Set});function Is(e=J()){return(0,Lt.join)(e,"openclaw-gateway.json")}function Ut(e,n=J()){let t=Re(n),r=Is(t),s=`${r}.${process.pid}.tmp`,o={version:1,url:e.url,...e.password?{password:e.password}:{},...e.token?{token:e.token}:{},updatedAt:new Date().toISOString(),source:"openclaw-plugin"};(0,b.writeFileSync)(s,`${JSON.stringify(o,null,2)}
|
|
3
|
+
`,{encoding:"utf8",mode:384})}catch{}}var $,D,ss,os,lt=y(()=>{"use strict";$=require("node:fs"),D=require("node:path");Je();ss=/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$/,os=new Set(["Address sync completed","Agent client created","Agent client removed","agent stream error","Agent stream recovered","Agent stream recovery replay completed","Agent stream recovery timeout","conversations.stream failed","Inbound delivered to session","Inbound dispatch failed","Inbound handler entered","Inbound ignored: duplicate message","Message handler error","Message received","Message sent","Offline replay failed","Offline replay message failed","Offline replay message replayed","System notification received","System notification routed","XMTP connection failed"])});function At(e){return e instanceof Error?e:void 0}function Ze(e){if(typeof e!="string"&&typeof e!="number")return;let n=String(e).trim();if(!(!n||/^(?:null|undefined|unknown)$/i.test(n))&&/^[A-Za-z0-9_.:-]+$/.test(n))return n.slice(0,is)}function gt(e){if(typeof e!="string")return;let n=Ze(e.trim().split(/\s+/,1)[0])?.toLowerCase();return n&&cs.has(n)?n:void 0}function ft(e){let n=Ze(e)?.toUpperCase();return n&&ds.has(n)?n:void 0}function pt(e){return ft(e?.code)??ft(e?.errno)}function yt(e,n){let t=n?.toUpperCase(),r=e?.name.toLowerCase()??"",s=e?.message.toLowerCase()??"";return t&&mt.has(t)?"resource_exhausted":t&&Et.has(t)?"connection_interrupted":t&&_t.has(t)?"network_unavailable":t&&It.has(t)?"timeout":t&&St.has(t)?"permission_denied":t==="ENOENT"?"missing_dependency":t==="ABORT_ERR"||r==="aborterror"?"cancelled":r==="syntaxerror"?"invalid_response":/connection\s+(?:reset|closed|interrupted)|broken\s+pipe|unexpected\s+eof/.test(s)?"connection_interrupted":/(?:json|response).*(?:parse|invalid)/.test(s)?"invalid_response":/session\s+(?:is\s+)?expired|login\s+expired/.test(s)?"session_expired":/timed?\s*out|timeout/.test(s)?"timeout":"unknown"}function us(e){switch(e){case"connection_interrupted":case"network_unavailable":case"resource_exhausted":case"timeout":return"retryable";case"invalid_response":case"missing_dependency":case"permission_denied":case"session_expired":return"non_retryable";default:return"unknown"}}function ls(e){let n=[],t=new Set,r=e;for(;r&&n.length<as&&!t.has(r);)n.push(r),t.add(r),r=At(r.cause);return n}function ht(e,n,t){let r=At(n),s={};if(r&&(s.errorName=r.name,s.errorMessageLength=String(r.message.length)),!r||e===a.AGENT_STREAM_ERROR)return s;let o=ls(r),i=o[0],d=o.length>1?o[o.length-1]:void 0,c=Ze(t.exitCode),l=pt(i),g=yt(i,l),p=gt(i.syscall),_=pt(d),L=d?yt(d,_):void 0,Ye=gt(d?.syscall),Qn=g==="unknown"&&L?L:g,Zn=Qn==="unknown"&&c&&c!=="0"?"process_exit":Qn,et=l??_,nt=p??Ye;return{...s,errorCategory:Zn,errorRetryability:us(Zn),errorCauseDepth:String(Math.max(0,o.length-1)),...et?{errorCode:et}:{},...nt?{errorSyscall:nt}:{},...d?{causeErrorMessageLength:String(d.message.length),causeErrorCategory:L??"unknown",..._?{causeErrorCode:_}:{},...Ye?{causeErrorSyscall:Ye}:{}}:{}}}var is,as,mt,Et,_t,It,St,ds,cs,Tt=y(()=>{"use strict";Se();is=64,as=4,mt=new Set(["EAGAIN","EMFILE","ENFILE","ENOMEM"]),Et=new Set(["ECONNRESET","EPIPE"]),_t=new Set(["EAI_AGAIN","ECONNREFUSED","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND"]),It=new Set(["ETIMEDOUT","ESOCKETTIMEDOUT"]),St=new Set(["EACCES","EPERM"]),ds=new Set([...mt,...Et,..._t,...It,...St,"ABORT_ERR","ENOENT"]),cs=new Set(["access","bind","close","connect","getaddrinfo","kill","listen","mkdir","open","read","readdir","readlink","rename","rmdir","spawn","stat","unlink","write"])});function Es(e){try{let n=e?.extra?.eventName??e?.tags?.eventName;if(typeof n=="string"&&n.trim().length>0)return e;let t=e;t.extra={...De,...t.extra??{},eventName:a.FATAL_UNCAUGHT,eventFamily:"diagnostics",outcome:"failed",transport:"local"},t.tags={...t.tags??{},eventName:a.FATAL_UNCAUGHT,eventFamily:"diagnostics",outcome:"failed"},t.fingerprint=["a2a",a.FATAL_UNCAUGHT]}catch{}return e}var m,Ot,Rt,wt,gs,fs,ps,ys,ms,Oe,Nt,De,en,f,Dt,bt,k=y(()=>{"use strict";I();m=Yr(require("@sentry/node")),Ot=require("node:crypto");Se();Te();lt();Tt();Se();Te();Rt=(0,Ot.randomUUID)(),wt=new Set(["args","apikey","argv","auth","authorization","authtoken","bearer","body","cache","command","content","credential","credentials","cwd","data","error","failures","filename","file_name","filepath","file_path","headers","input","logpath","message","output","password","params","path","payload","privatekey","prompt","raw","rawevent","rawtext","request","response","accesstoken","refreshtoken","digest","nonce","salt","secret","token","stderr","stdout","title","tooloutput"]),gs=["accesstoken","apikey","authorization","authtoken","content","credential","filepath","logpath","outputpath","password","payload","privatekey","prompt","rawevent","rawtext","refreshtoken","requestbody","responsebody","secret","stderr","stdout","token","tooloutput"],fs=new Set(["onchainosagentlistresultjson","onchainosagentlistdiagnostictext","systemconfigjson"]),ps=new Set(["agentId","agentPlatform","cacheName","causeCode","causeType","causeVariant","checkpoint","code","communicationClass","component","eventFamily","eventName","endpoint","errorCategory","errorCode","errorRetryability","errorSyscall","exitCode","fromAgentId","grpcMethod","jobId","kind","method","onchainosAgentId","operation","originPlatform","outcome","participantAgentIds","peerAgentId","phase","platform","provider","reason","releaseBase","releaseChannel","releaseCode","replayOutcome","role","runId","runtimeContainer","senderAgentId","source","stage","status","streamErrorCode","streamType","subcommand","systemEvent","taskId","taskMode","toAgentId","transport","transportFailure","transportProtocol","type","workloadClass"]),ys=["eventName","errorCategory","errorCode","errorSyscall","cacheName","component","method","operation","phase","reason","code","provider","type","kind","status","subcommand"],ms=new Set([a.GATEWAY_STARTED,a.GATEWAY_STOPPED,a.GATEWAY_DISCONNECTED,a.GATEWAY_REQUEST,a.GATEWAY_DELIVERY_BUFFERED,a.DAEMON_LIFECYCLE_SKIPPED,a.DAEMON_LIFECYCLE_REQUESTED,a.PROMPT_USER_CHECKPOINT,a.USER_WATCH_STARTED,a.USER_WATCH_EVENT_DELIVERED,a.CHANNEL_READY,a.CONVERSATION_STARTED,a.EVALUATE_CONVERSATION_STARTED,a.CONVERSATION_DELETED,a.USER_DISPATCHED,a.SESSION_DISPATCHED,a.SESSION_CREATED,a.SESSION_DELETED,a.SESSION_AUTO_RECOVERED,a.INBOUND_DELIVERED,a.INBOUND_DM_RAW,a.INBOUND_GROUP_RAW,a.INBOUND_IGNORED_DUPLICATE,a.INBOUND_IGNORED_NON_BUSINESS,a.AI_RUN_STARTED,a.AI_RUN_COMPLETED,a.AI_RUN_SKIPPED,a.RUNTIME_DETECTED,a.PROVIDER_READINESS_CHECKED,a.PROVIDER_SWITCHED,a.JOB_PROVIDER_BOUND,a.USER_CHANNEL_MESSAGE_DELIVERED,a.SYSTEM_NOTIFICATION_RECEIVED,a.SYSTEM_NOTIFICATION_ROUTED,a.HERMES_SESSION_ROUTE_BINDING,a.INBOUND_BLOCKED_ADDRESS_MISMATCH,a.INBOUND_BLOCKED_INELIGIBLE,a.MESSAGE_ELIGIBILITY_CHECKED,a.INBOUND_BLOCKED_SENSITIVE,a.INBOUND_DROP_DM_INVALID_PAYLOAD,a.INBOUND_DROP_DM_NON_SYSTEM,a.INBOUND_DROP_DM_UNKNOWN_AGENT,a.INBOUND_DROP_EMPTY_CONTENT,a.INBOUND_DROP_MISSING_JOBID,a.INBOUND_DROP_UNSUPPORTED_MSGTYPE,a.DM_DELIVERED,a.DM_FALLBACK_TO_BACKUP,a.DM_WHITELIST_FAIL_OPEN,a.INBOUND_BUYER_PENDING,a.INBOUND_BUYER_SESSION_AUTO_RECOVERED,a.MESSAGE_SENT,a.AGENT_CLIENT_CREATED,a.AGENT_CLIENT_REMOVED,a.AGENT_STREAM_ERROR,a.AGENT_STREAM_RECOVERED,a.AGENT_STREAM_RECOVERY_REPLAY_COMPLETED,a.ADDRESS_SYNC_COMPLETED,a.AGENTS_REFRESHED,a.AGENTS_WAKEUP_NOTIFIED,a.AGENT_LIST_QUERIED,a.BOOTSTRAP_APPLIED,a.CONFIG_SENSITIVE_WORDS_REFRESHED,a.CONFIG_SYSTEM_REFRESHED,a.CONVERSATION_HISTORY_QUERIED,a.FILE_DOWNLOADED,a.FILE_UPLOADED,a.GROUP_CONSENT_CHANGED,a.INBOUND_HANDLER_ENTERED,a.MESSAGE_RECEIVED,a.OFFLINE_REPLAY_MESSAGE_REPLAYED,a.AGENT_REFRESH_SESSION_EXPIRED,a.OUTBOUND_ELIGIBILITY_CHECKED,a.OUTBOUND_BLOCKED_INELIGIBLE,a.AGENT_INSTALLATION_SUMMARY,a.XMTP_HISTORY_SYNC_REQUESTED,a.XMTP_DEBUG_SYNC_REQUESTED,a.XMTP_DEBUG_SYNC_COMPLETED,a.PENDING_CONVERSATION_DENIED,a.PENDING_LIST_QUERIED,a.SESSION_KEY_DERIVED,a.SESSIONS_QUERIED,a.SYNC_TICK_COMPLETED]),Oe=256,Nt=128,De={},en=class e{static instance;initialized=!1;buffer=[];constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}init(n){if(this.initialized){st("[logger] Already initialized, skipping.");return}try{De=dt(n.release),m.init({dsn:n.dsn,release:n.release,environment:n.environment,maxBreadcrumbs:0,beforeBreadcrumb:()=>null,beforeSend:r=>Es(r),isInner:!1});let t={projectName:n.projectName,agentPlatform:n.agentPlatform};n.runtimeContainer&&(t.runtimeContainer=n.runtimeContainer),m.setTags(t)}catch{return}this.initialized=!0,this.flush()}info(n,t){let r=e.sanitizeExtra(ze({flowId:Rt,...De,...t??{}}));if(Qe("info",n,r),!!ms.has(n)){if(!this.initialized){this.buffer.push({level:"info",message:n,extra:r});return}this.captureInfo(n,r)}}captureInfo(n,t){try{m.withScope(r=>{e.applyDiagnostics(r,n,t),m.captureEvent({level:"info",message:n,extra:{...t,eventName:n}})})}catch{}}error(n,t,r){let s=e.sanitizeExtra(ze({flowId:Rt,...De,...r??{}}));if(Qe("error",n,s),!this.initialized){this.buffer.push({level:"error",message:n,error:t,extra:s});return}this.captureError(n,t,s)}captureError(n,t,r){try{let s=ht(n,t,r),o={...r,...s};m.withScope(i=>{i.setLevel("error"),e.applyDiagnostics(i,n,o),m.captureException(e.createSentryEvent(n),{extra:{...o,eventName:n}})})}catch{}}async shutdown(){try{await m.close(5e3)}catch{await m.flush(5e3)}}flush(){for(;this.buffer.length>0;){let n=this.buffer.shift();n.level==="info"?this.captureInfo(n.message,n.extra??{}):this.captureError(n.message,n.error,n.extra??{})}}static sanitizeExtra(n){return Object.fromEntries(Object.entries(n).filter(([,t])=>t!==void 0).filter(([t])=>!e.isBlockedExtraKey(t)).map(([t,r])=>[t,e.safeValueForKey(t,r)]))}static isBlockedExtraKey(n){let t=n.toLowerCase(),r=e.normalizeSensitiveKey(n);return wt.has(t)||wt.has(r)?!0:e.isSafeMetricKey(r)?!1:gs.some(s=>r.includes(s))}static isSafeMetricKey(n){return/(bytes|count|length|ms|size)$/.test(n)}static safeValueForKey(n,t){return typeof t=="string"&&fs.has(e.normalizeSensitiveKey(n))?t:e.safeValue(t)}static normalizeSensitiveKey(n){return n.toLowerCase().replace(/[^a-z0-9]/g,"")}static safeValue(n){if(typeof n=="string")return n.length<=Oe?n:`${n.slice(0,Oe)}...`;if(n==null||typeof n=="number"||typeof n=="boolean")return n;if(typeof n=="bigint")return n.toString();if(n instanceof Error)return{name:n.name,messageLength:n.message.length};if(Array.isArray(n))return n.slice(0,20).map(r=>e.safeValue(r));if(typeof n=="object")return Object.fromEntries(Object.entries(n).slice(0,50).filter(([,r])=>r!==void 0).filter(([r])=>!e.isBlockedExtraKey(r)).map(([r,s])=>[r,e.safeValueForKey(r,s)]));let t=String(n);return t.length<=Oe?t:`${t.slice(0,Oe)}...`}static tagValue(n){let t=String(n);return t.length<=Nt?t:`${t.slice(0,Nt)}...`}static normalizeTagKey(n){return n.replace(/[^A-Za-z0-9_.:-]+/g,"_").slice(0,32)||"unknown"}static applyDiagnostics(n,t,r){let s={eventName:t,...r};for(let[i,d]of Object.entries(s))ps.has(i)&&n.setTag(e.normalizeTagKey(i),e.tagValue(d));let o=["a2a",t];for(let i of ys){let d=s[i];d&&o.push(`${i}:${e.tagValue(d)}`)}n.setFingerprint(o)}static toPascalCase(n){return n.split(/[\s:]+/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}static createSentryEvent(n){let t=new Error(n);return t.name=e.toPascalCase(n),t.stack=`${t.name}: ${n}`,t}},f=en.getInstance(),Dt=e=>f.init(e),bt=()=>f.shutdown()});function be(){return _e()}function Kt(e){kt.has(e)||(kt.add(e),u(`[okx-a2a:runtime] using legacy OpenClaw PluginRuntime API api=${e}`))}function Ce(){let e=be().config;if(typeof e.current=="function")return e.current();if(typeof e.loadConfig=="function")return Kt("config.loadConfig"),e.loadConfig();throw new Error("Unsupported OpenClaw PluginRuntime: neither config.current nor config.loadConfig is available")}function vt(){let e=be().agent.session;if(typeof e.resolveStorePath!="function"||typeof e.loadSessionStore!="function")throw new Error("Unsupported OpenClaw PluginRuntime: no row-level or legacy session reader is available");Kt("agent.session.loadSessionStore");let n=e.resolveStorePath(void 0,{agentId:"main"});return e.loadSessionStore(n,{skipCache:!0})}function Pt(e){let n=be().agent.session;return typeof n.getSessionEntry=="function"?n.getSessionEntry({agentId:"main",sessionKey:e,readConsistency:"latest"}):vt()[e]}function nn(){let e=be().agent.session;return typeof e.listSessionEntries=="function"?e.listSessionEntries({agentId:"main",readConsistency:"latest",readOnly:!0}):Object.entries(vt()).map(([n,t])=>({sessionKey:n,entry:t}))}function xt(){return Object.fromEntries(nn().map(({sessionKey:e,entry:n})=>[e,n]))}var kt,tn=y(()=>{"use strict";I();Ie();kt=new Set});function Is(e=J()){return(0,Lt.join)(e,"openclaw-gateway.json")}function Ut(e,n=J()){let t=Re(n),r=Is(t),s=`${r}.${process.pid}.tmp`,o={version:1,url:e.url,...e.password?{password:e.password}:{},...e.token?{token:e.token}:{},updatedAt:new Date().toISOString(),source:"openclaw-plugin"};(0,b.writeFileSync)(s,`${JSON.stringify(o,null,2)}
|
|
4
4
|
`,{encoding:"utf8",mode:384});try{(0,b.chmodSync)(s,384)}catch{}(0,b.renameSync)(s,r);try{(0,b.chmodSync)(r,384)}catch{}return r}var b,Lt,Mt=y(()=>{"use strict";b=require("node:fs"),Lt=require("node:path");Je()});function ne(e){return e.includes(Z)||e.includes(`:${ee}:`)}function ke(e){if(!(!e||e==="direct"||e==="@direct"))return e.startsWith("telegram:")||e.startsWith("@")?e:`telegram:${e}`}function Q(e){if(typeof e=="number"&&Number.isFinite(e))return String(Math.trunc(e));if(typeof e=="string")return e.trim()||void 0}function $t(e){if(e.length!==0)return e[0]==="topic"?Q(e[1]):e[0]==="thread"?e.length>=3?Q(e.slice(2).join(":")):Q(e[1]):Q(e[0])}function rn(e,n){return!e||!n||!e.startsWith("telegram:")||/:topic:\d+$/.test(e)?e:`${e}:topic:${n}`}function Ss(e,n){let t=e.split(":");if(n==="telegram"){let r=t.indexOf("telegram"),s=r>=0?t.slice(r+1):t.slice(3),o=s.findIndex(d=>d==="direct"||d==="dm");if(o>=0){let d=o>0?s[o-1]:void 0,c=s[o+1]==="telegram"&&s[o+2]?`telegram:${s[o+2]}`:s[o+1],l=$t(s.slice(o+2));return{to:rn(ke(c),l),accountId:d,threadId:l}}let i=s.indexOf("group");if(i>=0){let d=i>0?s[i-1]:void 0,c=s[i+1]==="telegram"&&s[i+2]?`telegram:${s[i+2]}`:s[i+1],l=$t(s.slice(i+2));return{to:rn(ke(c),l),accountId:d,threadId:l}}if(s[0]==="telegram"&&s[1])return{to:`telegram:${s[1]}`,accountId:void 0};if(s[1]==="telegram"&&s[2])return{to:`telegram:${s[2]}`,accountId:s[0]};if(s.length>=2)return{to:ke(s[1]),accountId:s[0]};if(s.length===1)return{to:ke(s[0]),accountId:void 0}}return{to:t[4],accountId:void 0}}function Gt(e,n){return typeof e!="string"||e==="direct"||e==="@direct"?n:e}function jt(e){return As[e]??e}function Ft(e){let n=[e],t=e.split(":");if(t.length<6||t[0]!=="agent"||t[2]!=="telegram"||t[3]!=="direct"&&t[3]!=="dm"||!t[4])return n;let r=t[4],s=t.slice(5),o;if(s[0]==="topic"&&s[1])o=`agent:${t[1]}:telegram:direct:${r}:thread:${r}:${s.slice(1).join(":")}`;else if(s[0]==="thread"){let i=s.length>=3?s.slice(2).join(":"):s[1];i&&(o=`agent:${t[1]}:telegram:direct:${r}:topic:${i}`)}return o&&o!==e&&n.push(o),n}function hs(e){if(e==="agent:main")return"main";let n=e.split(":");return n.length<4||n[0]!=="agent"||!n[1]||!n[2]||ne(e)||n[2]==="backup"?null:n[2]}function sn(e,n){if(!Ht(n))return null;let t=n,r=t.deliveryContext?.channel??t.lastChannel??t.origin?.provider??hs(e);if(!r)return null;let s=jt(r),o=Ss(e,s),i=Gt(t.deliveryContext?.to,o.to)??Gt(t.lastTo,o.to)??o.to,d=t.deliveryContext?.accountId??o.accountId,c=Q(t.deliveryContext?.threadId??t.origin?.threadId??t.lastThreadId??o.threadId);return{channel:s,target:{sessionKey:e,to:s==="telegram"?rn(i,c):i,accountId:d,threadId:c,updatedAt:t.lastInteractionAt??t.updatedAt??Date.now()}}}function Bt(e){let n=new Map,t=new Map;for(let[r,s]of Object.entries(e)){if(ne(r)||!Ht(s))continue;let o=s;if(o.spawnedBy||o.subagentRole)continue;let i=sn(r,s);if(!i)continue;let{channel:d,target:c}=i,{to:l,updatedAt:g}=c;l&&(!t.get(d)||g>(n.get(d)?.updatedAt??0))&&t.set(d,l);let p=n.get(d);(!p||g>p.updatedAt)&&n.set(d,c)}for(let[r,s]of n)if(!s.to){let o=t.get(r);o&&(s.to=o)}for(let[r,s]of n)u(`[findLatestUserSessions] channel=${r} winner=${s.sessionKey} to=${s.to??"(none)"} accountId=${s.accountId??"(none)"} interactedAt=${s.updatedAt}`);return n}function Ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Z,ee,As,qt=y(()=>{"use strict";I();Z="okx-xmtp",ee="okx-a2a";As={dashboard:"webchat"}});function Yt(e){if(ne(e))return null;try{for(let n of Ft(e)){let t=sn(n,Pt(n));if(t)return t}return null}catch(n){return Wt("find_user_session_target",n),null}}function Xt(e){return e.toLowerCase().startsWith("0x")}function Ts(e){if(typeof e=="string")return`${Z}:${e}`;let n="myAgentId"in e&&"toAgentId"in e?new URLSearchParams({my:e.myAgentId,to:e.toAgentId,job:e.jobId}):new URLSearchParams({my:e.myXmtpAddress,to:e.toXmtpAddress,job:e.jobId});return`${Z}:${n.toString()}`}function on(e){let n=`${Z}:`,t=e.indexOf(n);if(t===-1)return null;let r=new URLSearchParams(e.slice(t+n.length)),s=r.get("myAgentId")||r.get("myagentid"),o=r.get("toAgentId")||r.get("toagentid"),i=r.get("my"),d=r.get("to"),c=r.get("job"),l=r.get("gid");return s&&o&&c?{format:"agent",myAgentId:s,toAgentId:o,jobId:c,xmtpGroupId:l??""}:!i||!d||!c?null:!Xt(i)&&(d==="_"||!Xt(d))?{format:"agent",myAgentId:i,toAgentId:d,jobId:c,xmtpGroupId:l??""}:{format:"address",myXmtpAddress:i,toXmtpAddress:d,jobId:c,xmtpGroupId:l??""}}function te(e){if(!e)return"";let n=on(e);return n?.jobId?n.jobId:/(?:^|:)backup:([^:&]+)/.exec(e)?.[1]??""}function se(e){let n=e.taskId?.trim()||te(e.scopeKey)||te(e.sessionKey);return n?{taskId:n}:{}}function Wt(e,n){u(`[okx-a2a:session] session-store lookup failed; continuing phase=${e} error=${n instanceof Error?n.message:String(n)}`)}function Rs(e){let n=typeof e=="string"?e:Ts(e);return(0,re.buildAgentSessionKey)({agentId:"main",channel:ee,peer:{kind:"group",id:n}})}function Vt(){let e=Ce().agents?.list;if(e&&e.length>0){let n=e.find(t=>t.id==="main");return n?n.id:e[0].id}return"main"}function zt(){return(0,re.buildAgentSessionKey)({agentId:Vt(),channel:ee,peer:{kind:"group",id:"backup"}})}function ws(e){return(0,re.buildAgentSessionKey)({agentId:Vt(),channel:ee,peer:{kind:"group",id:`backup:${e}`}})}function K(){try{return Bt(xt())}catch(e){return Wt("find_latest_user_sessions",e),new Map}}function Jt(e){let n=new Set,t=[...e.sessionKey?[e.sessionKey]:[],...Array.isArray(e.sessionKeys)?e.sessionKeys:[]].filter(s=>s.trim()),r=[];e.jobId&&r.push({jobId:e.jobId,myAgentId:e.myAgentId,toAgentId:e.toAgentId,myXmtpAddress:e.myXmtpAddress,toXmtpAddress:e.toXmtpAddress});for(let s of t){if(s.startsWith("agent:")){n.add(s);continue}let o=bs(s);if(o){n.add(ws(o));continue}let i=Qt(s);if(i){r.push(i);continue}let d=on(s);if(d){r.push(Ds(d));continue}n.add(Rs(s))}for(let s of Ns())for(let o of r)if(Os(s,o)){n.add(s);break}return[...n].sort()}function Ns(){return nn().map(({sessionKey:e})=>e).filter(ne)}function Os(e,n){let t=on(e);if(t)return Cs(t,n);let r=Qt(e);return r?!(n.jobId&&r.jobId!==n.jobId||n.myAgentId&&r.myAgentId!==n.myAgentId||n.toAgentId&&r.toAgentId!==n.toAgentId||n.myXmtpAddress&&!n.myAgentId||n.toXmtpAddress&&!n.toAgentId):!n.jobId||n.myAgentId||n.toAgentId||n.myXmtpAddress||n.toXmtpAddress?!1:te(e)===n.jobId}function Ds(e){return"myAgentId"in e?{myAgentId:e.myAgentId,toAgentId:e.toAgentId,jobId:e.jobId}:{myXmtpAddress:e.myXmtpAddress,toXmtpAddress:e.toXmtpAddress,jobId:e.jobId}}function Qt(e){let n=e.split(":"),t=n.indexOf("job");return t<0||n[t+2]!=="my"||n[t+4]!=="to"||!n[t+1]||!n[t+3]||!n[t+5]?null:{jobId:Ke(n[t+1]),myAgentId:Ke(n[t+3]),toAgentId:Ke(n[t+5])}}function bs(e){return e.startsWith("backup:")?Ke(e.slice(7)):null}function Cs(e,n){return n.jobId&&e.jobId!==n.jobId?!1:"myAgentId"in e?!(n.myAgentId&&e.myAgentId!==n.myAgentId||n.toAgentId&&e.toAgentId!==n.toAgentId||n.myXmtpAddress&&!n.myAgentId||n.toXmtpAddress&&!n.toAgentId):!(n.myXmtpAddress&&e.myXmtpAddress.toLowerCase()!==n.myXmtpAddress.toLowerCase()||n.toXmtpAddress&&e.toXmtpAddress.toLowerCase()!==n.toXmtpAddress.toLowerCase()||n.myAgentId&&!n.myXmtpAddress||n.toAgentId&&!n.toXmtpAddress)}function Ke(e){try{return decodeURIComponent(e)}catch{return e}}var re,G=y(()=>{"use strict";I();re=require("openclaw/plugin-sdk/routing");tn();qt()});function Zt(e){return e.reduce((n,[t,r])=>(r!=null&&(n[t]=String(r)),n),{})}function er(e){let n=at({jobId:e.jobId,sessionKey:e.sessionKey});return n===U?null:n}function C(e){return{...z({checkpoint:e.checkpoint,outcome:e.outcome,transport:"user_channel",eventFamily:"user_channel",deliveryId:er(e)}),...Zt([["component",ks],["source",e.source],["channel",e.channel],["sessionKey",e.sessionKey],["jobId",e.jobId],["direction",e.direction],["senderAgentId",e.senderAgentId],["receiverAgentId",e.receiverAgentId],["hasTo",e.hasTo===void 0?void 0:e.hasTo?"1":"0"]])}}function ve(e,n="success"){let t={};for(let[s,o]of Object.entries(e))o!=null&&(t[s]=String(o));let r=t.phase?.trim()??"";return{...z({checkpoint:r?`${Ps}${r}`:null,outcome:n,transport:"gateway_rpc",eventFamily:"lifecycle"}),...t}}function T(e){let n=Object.entries({component:Ks,operation:vs,checkpoint:e.checkpoint,sessionKey:e.sessionKey,channel:e.channel??"",taskId:e.taskId??"",runId:e.runId??"",reason:e.reason??"",status:e.status??"",queued:e.queued??"",delayMs:e.delayMs??"",durationMs:e.durationMs??"",running:e.running??"",processing:e.processing??""}).filter(([,t])=>t!=="");return{...z({outcome:Us[e.checkpoint],transport:"user_channel",eventFamily:"user_channel",deliveryId:er({jobId:e.taskId,sessionKey:e.sessionKey})}),...n.reduce((t,[r,s])=>(t[r]=String(s),t),{})}}function an(e){let{delivered:n,failed:t,abandoned:r}=e,s=n>0||t>0||r>0;return t===0&&r===0?{shouldEmit:s,outcome:"success"}:{shouldEmit:s,outcome:n>0?"partial":"failed"}}function nr(e){return{...z({checkpoint:xs,outcome:an(e).outcome,transport:"gateway_rpc",eventFamily:"outbound"}),...Zt([["onchainosAgentId","*"],["source",Ls],["deliveredCount",e.delivered],["failedCount",e.failed],["abandonedCount",e.abandoned],["batchSize",e.batchSize]])}}var ks,Ks,vs,Ps,xs,Ls,Us,oe=y(()=>{"use strict";Te();ks="openclaw_user_dispatch",Ks="openclaw_prompt_user_queue",vs="xmtp_prompt_user",Ps="gateway/",xs="outbound/outbox_drained",Ls="gateway_outbox_drain";Us={fallback_scheduled:"pending",queued:"pending",run_pending:"pending",dispatch_started:"pending",dispatch_completed:"success",run_completed:"success",dispatch_failed:"failed",fallback_fired:"timeout"}});var dr={};Ee(dr,{callChatInject:()=>ae,callGateway:()=>A,callSessionsCreate:()=>ie,callSessionsDelete:()=>mn,callSessionsSend:()=>En,formatPairingErrorHint:()=>Le,gatewayExtra:()=>ve,onGatewayEvent:()=>gn,resolveGatewayRuntimeConfig:()=>fn,stopGatewayClient:()=>yn,syncGatewayConfigForNodeDaemon:()=>pn});function dn(e){if(e){if(typeof e=="string")return e;if(typeof e=="object"&&e!==null&&"env"in e)return process.env[e.env]||void 0}}function js(e){return e&&(typeof e=="string"?{type:"string",configured:!0}:typeof e=="object"&&e!==null&&"env"in e?{type:"env",env:String(e.env),configured:!!dn(e)}:{type:typeof e,configured:!0})}function cn(e){if(!e||typeof e!="object")return e??null;if(Array.isArray(e))return e.map(t=>cn(t));let n={};for(let[t,r]of Object.entries(e)){if(/password|token|secret/i.test(t)){n[t]=js(r);continue}n[t]=cn(r)}return n}function Fs(e){try{return JSON.stringify(e)}catch{return"[unserializable]"}}function Bs(e){let n=e.params;if(!n||typeof n!="object"||Array.isArray(n))return se({taskId:e.taskId});let t=n;return se({taskId:e.taskId,sessionKey:typeof t.sessionKey=="string"?t.sessionKey:typeof t.key=="string"?t.key:""})}function S(e,n={}){let t=ve({phase:e,...n});u(`[gateway] ${e}: ${JSON.stringify(t)}`),f.info(e.startsWith("request_")?a.GATEWAY_REQUEST:a.GATEWAY_STARTED,{component:"openclaw_gateway",...t})}function F(e,n,t={},r=a.GATEWAY_CONNECT_FAILED){let s=ve({phase:e,component:"openclaw_gateway",...t},"failed");u(`[gateway] ${e}:`,n),f.error(r,n instanceof Error?n:new Error(String(n)),s)}function Hs(e){for(let n of un)try{n(e)}catch(t){u("[gateway] event handler failed:",t)}}function gn(e){return un.add(e),()=>{un.delete(e)}}function rr(){S("ready_gate_reset",{hasSharedClient:!!w,hasConnected:R}),j=new Promise((e,n)=>{Pe=e,xe=n})}function sr(e,n,t){if(w!==e){S(`${n}_skip_clear_noncurrent`,t);return}try{e.stop?.()}catch(r){F(`${n}_stop_failed`,r,t)}w=null,R=!1,j=null,Pe=null,xe=null,S(`${n}_cleared_client`,t)}function qs(){if(w)return S("reuse_client",{hasConnected:R,hasReadyPromise:!!j}),{client:w,ready:j};let e=fn(),{url:n,password:t,token:r}=e,s=(0,ln.randomUUID)(),o=++Gs;rr(),S("init_client",{clientSeq:o,instanceId:s,url:n,hasGatewayConfig:!!e.rawGatewayConfig,gatewayConfig:Fs(cn(e.rawGatewayConfig)),passwordConfigured:!!t,tokenConfigured:!!r,scopes:tr.join(",")});let i=new ar.GatewayClient({url:n,password:t,token:r,instanceId:s,clientName:"gateway-client",clientDisplayName:"okx-a2a-plugin",mode:"backend",role:"operator",scopes:[...tr],onHelloOk:()=>{S("hello_ok",{clientSeq:o,instanceId:s,url:n}),R=!0,Pe?.()},onEvent:Hs,onClose:(d,c)=>{if(u(`[gateway] closed (${d}): ${c||"no reason"}`),f.info(a.GATEWAY_DISCONNECTED,{clientSeq:String(o),instanceId:s,url:n,code:String(d),reason:c||"no-reason",hadConnected:String(R)}),R){R=!1,rr();return}sr(i,"close_before_connect",{clientSeq:o,instanceId:s,url:n,code:d,reason:c||"no-reason"})},onConnectError:d=>{let c=d;if(c?.retryable){F("connect_error_retryable",d,{clientSeq:o,instanceId:s,url:n,retryable:"true",reason:c?.details?.reason??"retryable",code:c?.gatewayCode??c?.details?.code});return}F("connect_error",d,{clientSeq:o,instanceId:s,url:n,retryable:"false",code:c?.gatewayCode??c?.details?.code}),xe?.(d instanceof Error?d:new Error(String(d))),sr(i,"connect_error",{clientSeq:o,instanceId:s,url:n,code:c?.gatewayCode??c?.details?.code,reason:c?.details?.reason})}});return w=i,S("start_client",{clientSeq:o,instanceId:s,url:n}),i.start(),{client:i,ready:j}}function fn(){let n=Ce().gateway;return{url:`ws://127.0.0.1:${or(process.env.OPENCLAW_GATEWAY_PORT)??or(n?.port)??$s}`,password:dn(n?.auth?.password),token:dn(n?.auth?.token),rawGatewayConfig:n}}function or(e){if(typeof e=="number"&&Number.isFinite(e)){let r=Math.trunc(e);return r>0&&r<=65535?r:null}if(typeof e!="string")return null;let n=e.trim();if(!/^\d+$/.test(n))return null;let t=Number.parseInt(n,10);return t>0&&t<=65535?t:null}function pn(){let e=fn();try{let n=Ut({url:e.url,password:e.password,token:e.token});return S("synced_node_gateway_config",{path:n,url:e.url,passwordConfigured:!!e.password,tokenConfigured:!!e.token}),n}catch(n){return F("sync_node_gateway_config_failed",n,{url:e.url,passwordConfigured:!!e.password,tokenConfigured:!!e.token},a.GATEWAY_CONNECT_FAILED),null}}function yn(){if(w){try{w.stop()}catch{}w=null,j=null,Pe=null,xe=null,R=!1}}function Le(e){let n=e,t=n?.gatewayCode??n?.details?.code;if(!t)return null;let r=n?.details??{},s=[`code=${t}`];r.reason&&s.push(`reason=${r.reason}`),r.authReason&&s.push(`authReason=${r.authReason}`),Array.isArray(r.requestedScopes)&&r.requestedScopes.length&&s.push(`requestedScopes=${r.requestedScopes.join(",")}`),r.deviceId&&s.push(`deviceId=${r.deviceId}`),r.requestId&&s.push(`requestId=${r.requestId}`);let o=` (${s.join(", ")})`;switch(t){case"NOT_PAIRED":case"PAIRING_REQUIRED":return`Device pairing approval pending${o}. On the openclaw host run \`openclaw devices approve --latest\` to review and approve the pending request, then retry.`;case"AUTH_SCOPE_MISMATCH":return`Existing device token lacks the required scope${o}. On the openclaw host run \`openclaw devices list\` to find the operator deviceId, then \`openclaw devices rotate --device <id> --role operator --scope operator.admin\` to reissue a token with operator.admin, and restart openclaw.`;case"AUTH_TOKEN_MISSING":case"AUTH_TOKEN_MISMATCH":case"AUTH_DEVICE_TOKEN_MISMATCH":return`Gateway device token is missing or stale${o}. On the openclaw host run \`openclaw devices list\`, then \`openclaw devices remove <deviceId>\`, then restart openclaw to re-pair.`;default:return null}}async function A(e){let n=e.timeoutMs??Ms,t=Date.now(),r=Bs(e);S("request_start",{method:e.method,timeoutMs:n,hasSharedClient:!!w,hasConnected:R,...r});let{client:s,ready:o}=qs();try{await o}catch(d){let c=Date.now()-t;throw F("request_ready_failed",d,{method:e.method,durationMs:c,timeoutMs:n,...r,code:d?.gatewayCode??d?.code??d?.details?.code,reason:"gateway_ready_failed",communicationClass:"openclaw_gateway_connect"},a.GATEWAY_REQUEST_FAILED),d}let i=Date.now()-t;S("request_ready",{method:e.method,readyWaitMs:i,timeoutMs:n,hasConnected:R,...r});try{let d=await s.request(e.method,e.params,{timeoutMs:n});return S("request_done",{method:e.method,durationMs:Date.now()-t,timeoutMs:n,...r}),d}catch(d){let c=Date.now()-t,l=/timeout|timed out/i.test(String(d?.message??d??""));F("request_error",d,{method:e.method,durationMs:c,timeoutMs:n,readyWaitMs:i,...r,isTimeout:l,code:d?.gatewayCode??d?.code??d?.details?.code,reason:l?"gateway_request_timeout":"gateway_request_error",communicationClass:"openclaw_gateway_rpc"},a.GATEWAY_REQUEST_FAILED);let g=Le(d);if(g){let p=d?.message??String(d);try{d.message=`${p}
|
|
5
5
|
${g}`}catch{}}throw d}}async function ie(e){return A({method:"sessions.create",params:e})}async function mn(e){return A({method:"sessions.delete",params:e})}async function En(e){let n=e.idempotencyKey??(0,ln.randomUUID)(),t={key:e.key,message:e.message,idempotencyKey:n};try{let r=await A({method:"sessions.send",params:t});return{runId:ir(r),raw:r}}catch(r){let s=r?.gatewayCode??r?.code,o=String(r?.message??"");if(s==="INVALID_REQUEST"&&o.includes("session not found")){await ie({key:e.key}),f.info(a.SESSION_AUTO_RECOVERED,{sessionKey:e.key,trigger:"sessions.send"});let i=await A({method:"sessions.send",params:t});return{runId:ir(i),raw:i}}throw r}}function ir(e){if(!e||typeof e!="object")return;let n=e.runId;return typeof n=="string"&&n.trim()?n:void 0}async function ae(e){try{return await A({method:"chat.inject",params:e})}catch(n){let t=n?.gatewayCode??n?.code,r=String(n?.message??"");if(t==="INVALID_REQUEST"&&r.includes("session not found"))return await ie({key:e.sessionKey}),f.info(a.SESSION_AUTO_RECOVERED,{sessionKey:e.sessionKey,trigger:"chat.inject"}),await A({method:"chat.inject",params:e});throw n}}var ar,ln,Ms,$s,tr,Gs,w,j,Pe,xe,R,un,B=y(()=>{"use strict";I();ar=require("openclaw/plugin-sdk/gateway-runtime"),ln=require("node:crypto");tn();k();Mt();G();oe();Ms=2e4,$s=18789,tr=["operator.admin"],Gs=0;w=null,j=null,Pe=null,xe=null,R=!1,un=new Set});function gr(e){if(e.toolName!=="exec")return null;let n=e.sessionKey?.trim(),t=new Set;for(let o of e.routeSessionKeys??[]){let i=o?.trim();i&&t.add(i)}if(n&&t.add(n),t.size===0)return null;In(n);let r=e.params??{},s=oo(r.env)?r.env:{};return{...r,env:{...s,[Ws]:"openclaw",[Vs]:"openclaw-gateway",[zs]:"1",[Xs]:n??[...t][0],[Ys]:JSON.stringify([...t])}}}function fr(e){let n=e.runId?.trim(),t=e.sessionKey?.trim();if(!t||!le(t))return!1;Sn();let r=ro([t,...e.routeSessionKeys??[]]);return eo(t,r),n&&ue.set(n,{sessionKeys:r,updatedAt:Date.now()}),!0}function pr(e){let n=typeof e=="string"?e.trim():e?.runId?.trim(),t=typeof e=="string"?null:e?.sessionKey?.trim();n&&ue.delete(n),t&&le(t)&&no(t)}function Ue(e){let n=new Set,t=e.sessionKey?.trim();t&&le(t)&&n.add(t);let r=e.runId?.trim();if(r){Sn(e.now??Date.now());let s=ue.get(r);for(let o of s?.sessionKeys??[])n.add(o)}else if(!t||!le(t))for(let s of to(e.now??Date.now()))n.add(s);return[...n]}function In(e){let n=e?.trim();!n||!Zs(n)||(de={sessionKey:n,updatedAt:Date.now()})}function yr(e=Date.now()){return de?e-de.updatedAt>Js?(de=null,null):de.sessionKey:null}function Zs(e){return e.startsWith("job:")||e.startsWith("backup:")||/(?:^|[?&:])job=([^:&]+)/.test(e)}function le(e){if(e==="agent:main")return!0;let n=e.split(":");if(n.length<4||n[0]!=="agent"||!n[1])return!1;let t=n[2];return!!(t&&t!=="okx-a2a"&&!Qs.has(t))}function Sn(e=Date.now()){for(let[n,t]of ue)e-t.updatedAt>ur&&ue.delete(n);for(let[n,t]of N)e-t.updatedAt>ur&&N.delete(n)}function eo(e,n){let t=N.get(e);N.set(e,{count:(t?.count??0)+1,updatedAt:Date.now(),routeSessionKeys:n}),_n()}function no(e){let n=N.get(e);if(n){if(n.count<=1){N.delete(e),_n();return}N.set(e,{count:n.count-1,updatedAt:Date.now(),routeSessionKeys:n.routeSessionKeys}),_n()}}function to(e=Date.now()){Sn(e);let n=[...N.keys()];return n.length!==1?[]:N.get(n[0])?.routeSessionKeys??[]}function ro(e){let n=new Set;for(let t of e){let r=t?.trim();r&&le(r)&&n.add(r)}return[...n]}function _n(){try{let e=so();(0,H.mkdirSync)((0,ce.dirname)(e),{recursive:!0,mode:448});let t={version:1,updatedAt:Date.now(),origins:[...N.entries()].map(([s,o])=>({sessionKey:s,count:o.count,updatedAt:o.updatedAt,routeSessionKeys:o.routeSessionKeys}))},r=`${e}.${process.pid}.tmp`;(0,H.writeFileSync)(r,`${JSON.stringify(t)}
|
|
6
6
|
`,{encoding:"utf8",mode:384}),(0,H.renameSync)(r,e)}catch(e){console.log(`[okx-a2a:hook] failed to persist gateway route origins: ${e instanceof Error?e.message:String(e)}`)}}function so(e=process.env){let n=e.OKX_AGENT_TASK_HOME?.trim()||(0,ce.join)((0,lr.homedir)(),".okx-agent-task");return(0,ce.join)(n,"run","gateway-route-origins.json")}function oo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var H,lr,ce,Xs,Ys,Ws,Vs,zs,Js,ur,Qs,de,ue,N,An=y(()=>{"use strict";H=require("node:fs"),lr=require("node:os"),ce=require("node:path"),Xs="OKX_A2A_CURRENT_GATEWAY_SESSION_KEY",Ys="OKX_A2A_CURRENT_GATEWAY_SESSION_KEYS",Ws="OKX_A2A_GATEWAY_PROVIDER",Vs="OKX_A2A_RUNTIME_CONTEXT",zs="OKX_A2A_IN_GATEWAY",Js=12e4,ur=30*6e4,Qs=new Set(["heartbeat","cron","webhook","voice"]),de=null,ue=new Map,N=new Map});function ao(e=process.env){return e.OKX_AGENT_TASK_HOME?.trim()||(0,Tn.join)((0,Er.homedir)(),".okx-agent-task")}function co(e=process.env){return e.OKX_A2A_SESSION_STORE_DB_PATH?.trim()||(0,Tn.join)(ao(e),"sqlite","session-store.sqlite")}function Me(e){let n=h(e.jobId)??te(e.sessionKey);return n?uo(lo(n,e.dbPath??co())):[]}function uo(e){let n=new Set,t=[];for(let r of e){let s=hn(h(r.gatewaySessionKey)??h(r.sessionKey)??""),o=po(s);!s||!o||n.has(o)||(n.add(o),t.push(s))}return t}function lo(e,n){if(!(0,mr.existsSync)(n))return[];let{DatabaseSync:t}=go(),r=new t(n,{readOnly:!0});try{if(r.exec("PRAGMA busy_timeout=5000"),!r.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='job_provider_bindings'").get())return[];let o=r.prepare("SELECT provider, gateway_routes_json FROM job_provider_bindings WHERE job_id = ?").get(e);return o?.provider!=="openclaw"||typeof o.gateway_routes_json!="string"?[]:fo(o.gateway_routes_json)}catch(s){return console.log(`[okx-a2a:stored-routes] failed to resolve job route jobId=${e}: ${s instanceof Error?s.message:String(s)}`),[]}finally{r.close()}}function go(){let e=process.emitWarning;process.emitWarning=((n,...t)=>{if(!((typeof n=="string"?n:n.message).includes("SQLite is an experimental feature")&&t.some(s=>s==="ExperimentalWarning")))return e.call(process,n,...t)});try{return require("node:sqlite")}finally{process.emitWarning=e}}function fo(e){try{let n=JSON.parse(e);if(!Array.isArray(n))return[];let t=[];for(let r of n){if(!mo(r))continue;let s=h(typeof r.platform=="string"?r.platform:null),o=hn(h(typeof r.sessionKey=="string"?r.sessionKey:null)??"");if(!s||!o)continue;let i=hn(h(typeof r.gatewaySessionKey=="string"?r.gatewaySessionKey:null)??""),d=h(typeof r.chatId=="string"?r.chatId:null),c=h(typeof r.threadId=="string"?r.threadId:null),l=h(typeof r.updatedAt=="string"?r.updatedAt:null);t.push({platform:s,sessionKey:o,...i?{gatewaySessionKey:i}:{},...d?{chatId:d}:{},...c?{threadId:c}:{},...l?{updatedAt:l}:{}})}return t}catch{return[]}}function po(e){let n=h(e);if(!n)return null;if(n==="agent:main")return"main";if(n.startsWith("backup:"))return null;let t=n.split(":");if(t.length<4||t[0]!=="agent"||!t[1])return null;let r=t[2];return!r||r==="okx-a2a"||r==="backup"||io.has(r)?null:r}function hn(e){let n=h(e);if(!n)return"";let t=n.split(":");if(t.length<4||t[0]!=="agent")return n;let r=t[2],s=t[3];if(r!=="telegram")return n;if((s==="direct"||s==="dm")&&t[4]){if(t[5]==="thread")return n;let o=yo(t.slice(5));return o?`agent:${t[1]}:telegram:direct:${t[4]}:topic:${o}`:`agent:${t[1]}:telegram:direct:${t[4]}`}if(s==="group"&&t[4]){let o=t[5]==="topic"?t[6]:t[5];return o?`agent:${t[1]}:telegram:group:${t[4]}:topic:${o}`:`agent:${t[1]}:telegram:group:${t[4]}`}return n}function yo(e){if(e.length!==0)return e[0]==="topic"?e[1]||void 0:e[0]==="thread"?e.length>=3?e.slice(2).join(":")||void 0:e[1]||void 0:e[0]||void 0}function mo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function h(e){let n=e?.trim();return n||null}var mr,Er,Tn,io,Rn=y(()=>{"use strict";mr=require("node:fs"),Er=require("node:os"),Tn=require("node:path");G();io=new Set(["heartbeat","cron","webhook","voice"])});function On(e){let n=v(e.jobId)??Ao([e.content,...e.contents??[]]);if(!n)return console.log("[okx-a2a:stored-routes] skipped delivered route bind reason=missing_job_id"),[];let t=e.sessionKeys.map(i=>_o(i)).filter(i=>!!i);if(t.length===0)return[];let r=e.dbPath??To(),{DatabaseSync:s}=Ro(),o=new s(r);try{o.exec("PRAGMA busy_timeout=5000"),o.exec(`
|
|
@@ -25,6 +25,6 @@ ${g}`}catch{}}throw d}}async function ie(e){return A({method:"sessions.create",p
|
|
|
25
25
|
UPDATE pending_gateway_deliveries
|
|
26
26
|
SET attempts = attempts + 1, last_error = ?, last_attempt_at = ?
|
|
27
27
|
WHERE id = ?
|
|
28
|
-
`).run(_,new Date().toISOString(),g.id),u(`[okx-a2a:outbox-drain] delivery failed id=${g.id} kind=${g.kind} attempts=${L}: ${_}`))}return an({delivered:i,failed:d,abandoned:c}).shouldEmit&&f.info(a.SESSION_DISPATCHED,nr({delivered:i,failed:d,abandoned:c,batchSize:o.length})),{delivered:i,failed:d,abandoned:c,skipped:!1}}finally{r.close()}}function $r(e={}){let n=e.intervalMs??Uo,t=!1,r=async()=>{if(!t){t=!0;try{await Ho({...e.dbPath!==void 0?{dbPath:e.dbPath}:{},...e.limit!==void 0?{limit:e.limit}:{}})}catch(o){u("[okx-a2a:outbox-drain] tick failed:",o)}finally{t=!1}}},s=setInterval(()=>{r()},n);return s.unref?.(),r(),()=>{clearInterval(s)}}k();var qo=process.env.SENTRY_ENV==="dev"?"dev":"prod";function Xo(e){return e?.trim().toLowerCase().replace(/[^a-z0-9_.:-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,128)||void 0}var Gr={projectName:"okx/openclaw-okx-a2a-extension",release:"0.2.3
|
|
29
|
-
`)}function zo(){ie({key:zt()}).then(()=>{u("[okx-a2a:service] gateway client admin precheck succeeded"),f.info(a.GATEWAY_STARTED,{source:"gateway_preconnect",outcome:"ok"})},e=>{u("[okx-a2a:service] gateway client admin precheck failed:",e),f.error(a.GATEWAY_CONNECT_FAILED,e instanceof Error?e:new Error(String(e)),{source:"gateway_preconnect",code:String(e?.gatewayCode??e?.details?.code??""),reason:String(e?.details?.reason??""),requestId:String(e?.details?.requestId??"")}),qn(Vo(e),{source:"gateway_preconnect"}).then(({dispatched:n,failed:t})=>{f.info(a.USER_DISPATCHED,{source:"gateway_preconnect",outcome:t.length===0?"all_ok":"partial",dispatchedChannels:n.join(","),failedChannels:t.join(","),dispatchedCount:String(n.length),failedCount:String(t.length)})},n=>{f.error(a.USER_DISPATCH_FAILED,n instanceof Error?n:new Error(String(n)),{source:"gateway_preconnect"})})})}function Jo(){let e=process.env.OKX_A2A_SENTRY_DSN?.trim()||process.env.SENTRY_DSN?.trim()||Yo;Dt({dsn:e,...Gr,agentPlatform:"openclaw"})}function Wn(e,n){let t=[e?.sessionKey,e?.context?.sessionKey,e?.ctx?.sessionKey,e?.hookContext?.sessionKey,n?.sessionKey];for(let r of t)if(typeof r=="string"&&r.trim())return r;return null}function Vn(e,n){let t=[e?.runId,e?.agentRunId,e?.context?.runId,e?.context?.agentRunId,e?.ctx?.runId,e?.ctx?.agentRunId,e?.hookContext?.runId,e?.hookContext?.agentRunId,n?.runId,n?.agentRunId];for(let r of t)if(typeof r=="string"&&r.trim())return r;return null}function Qo(e){let n=jr(e),t=new Set([e]);for(let[r,s]of K())r&&r!==n&&s.sessionKey&&t.add(s.sessionKey);return[...t]}function jr(e){let n=e.split(":");return n.length>=4&&n[0]==="agent"?n[2]??null:null}function O(e,n,t,r){let s="0.2.3
|
|
28
|
+
`).run(_,new Date().toISOString(),g.id),u(`[okx-a2a:outbox-drain] delivery failed id=${g.id} kind=${g.kind} attempts=${L}: ${_}`))}return an({delivered:i,failed:d,abandoned:c}).shouldEmit&&f.info(a.SESSION_DISPATCHED,nr({delivered:i,failed:d,abandoned:c,batchSize:o.length})),{delivered:i,failed:d,abandoned:c,skipped:!1}}finally{r.close()}}function $r(e={}){let n=e.intervalMs??Uo,t=!1,r=async()=>{if(!t){t=!0;try{await Ho({...e.dbPath!==void 0?{dbPath:e.dbPath}:{},...e.limit!==void 0?{limit:e.limit}:{}})}catch(o){u("[okx-a2a:outbox-drain] tick failed:",o)}finally{t=!1}}},s=setInterval(()=>{r()},n);return s.unref?.(),r(),()=>{clearInterval(s)}}k();var qo=process.env.SENTRY_ENV==="dev"?"dev":"prod";function Xo(e){return e?.trim().toLowerCase().replace(/[^a-z0-9_.:-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,128)||void 0}var Gr={projectName:"okx/openclaw-okx-a2a-extension",release:"0.2.3",environment:qo,runtimeContainer:Xo(process.env.OKX_A2A_RUNTIME_CONTAINER)};var Y,W,Yo="https://e20ff987c945887733de9ec6cca87aba@sentry.coinall.ltd/apmfe/70295";function Wo(e){let n=e?.details?.requestId;return typeof n=="string"&&n.trim()?`openclaw devices approve ${n}`:"openclaw devices approve --latest"}function Vo(e){let n=e?.details??{},t=Le(e);return["OKX A2A plugin needs OpenClaw gateway `operator.admin` scope before it can create sessions, inject chat messages, and route XMTP conversations.","","Ask the user whether they approve granting this scope to the OKX A2A plugin.","","If the user approves, ask them to run this command on the OpenClaw host:","","```bash",Wo(e),"```","",`requestId: ${n.requestId??""}`,`deviceId: ${n.deviceId??""}`,`requestedScopes: ${Array.isArray(n.requestedScopes)?n.requestedScopes.join(","):""}`,`approvedScopes: ${Array.isArray(n.approvedScopes)?n.approvedScopes.join(","):""}`,t?`hint: ${t}`:""].filter(Boolean).join(`
|
|
29
|
+
`)}function zo(){ie({key:zt()}).then(()=>{u("[okx-a2a:service] gateway client admin precheck succeeded"),f.info(a.GATEWAY_STARTED,{source:"gateway_preconnect",outcome:"ok"})},e=>{u("[okx-a2a:service] gateway client admin precheck failed:",e),f.error(a.GATEWAY_CONNECT_FAILED,e instanceof Error?e:new Error(String(e)),{source:"gateway_preconnect",code:String(e?.gatewayCode??e?.details?.code??""),reason:String(e?.details?.reason??""),requestId:String(e?.details?.requestId??"")}),qn(Vo(e),{source:"gateway_preconnect"}).then(({dispatched:n,failed:t})=>{f.info(a.USER_DISPATCHED,{source:"gateway_preconnect",outcome:t.length===0?"all_ok":"partial",dispatchedChannels:n.join(","),failedChannels:t.join(","),dispatchedCount:String(n.length),failedCount:String(t.length)})},n=>{f.error(a.USER_DISPATCH_FAILED,n instanceof Error?n:new Error(String(n)),{source:"gateway_preconnect"})})})}function Jo(){let e=process.env.OKX_A2A_SENTRY_DSN?.trim()||process.env.SENTRY_DSN?.trim()||Yo;Dt({dsn:e,...Gr,agentPlatform:"openclaw"})}function Wn(e,n){let t=[e?.sessionKey,e?.context?.sessionKey,e?.ctx?.sessionKey,e?.hookContext?.sessionKey,n?.sessionKey];for(let r of t)if(typeof r=="string"&&r.trim())return r;return null}function Vn(e,n){let t=[e?.runId,e?.agentRunId,e?.context?.runId,e?.context?.agentRunId,e?.ctx?.runId,e?.ctx?.agentRunId,e?.hookContext?.runId,e?.hookContext?.agentRunId,n?.runId,n?.agentRunId];for(let r of t)if(typeof r=="string"&&r.trim())return r;return null}function Qo(e){let n=jr(e),t=new Set([e]);for(let[r,s]of K())r&&r!==n&&s.sessionKey&&t.add(s.sessionKey);return[...t]}function jr(e){let n=e.split(":");return n.length>=4&&n[0]==="agent"?n[2]??null:null}function O(e,n,t,r){let s="0.2.3",o=r.sessionKey?jr(r.sessionKey)??"unknown":"missing",i=t instanceof Error?t.message:String(t);u(`[okx-a2a:hook] ${e} bookkeeping failed; continuing phase=${n} pluginVersion=${s} channel=${o} hasRunId=${r.runId?"true":"false"} error=${i}`)}function zn(e,n){let t=e[n];if(typeof t!="string"||!t.trim())throw new Error(`Missing required param ${n}`);return t}function E(e,n){let t=e[n];return typeof t=="string"&&t.trim()?t:void 0}function Jn(e,n){let t=e[n];if(!Array.isArray(t))return;let r=t.filter(s=>typeof s=="string"&&s.trim().length>0).map(s=>s.trim());return r.length>0?r:void 0}function Zo(e,n){let t=e[n];return typeof t=="boolean"?t:void 0}var x={id:"okx-a2a",name:"OKX A2A Plugin",version:"0.2.3",register(e){ot(e.runtime),e.registerChannel({plugin:Ct}),e.registerGatewayMethod("okx-a2a.health",async({respond:n})=>{n(!0,{ok:!0,provider:"openclaw",pluginId:x.id,pluginVersion:x.version,startedAt:W??null})},{scope:"operator.admin"}),e.registerGatewayMethod("okx-a2a.dispatch_user",async({params:n,respond:t})=>{try{let r=zn(n,"content"),s=E(n,"label"),o=E(n,"sessionKey"),i=Jn(n,"sessionKeys"),d=E(n,"jobId"),c=E(n,"currentSessionKey"),l=E(n,"idempotencyKey");t(!0,i?await Gn({sessionKeys:i,content:r,label:s,idempotencyKey:l}):o?await jn({sessionKey:o,content:r,label:s,idempotencyKey:l}):await Mn({content:r,label:s,jobId:d,currentSessionKey:c,idempotencyKey:l}))}catch(r){t(!1,void 0,{code:"INVALID_REQUEST",message:r instanceof Error?r.message:String(r)})}},{scope:"operator.admin"}),e.registerGatewayMethod("okx-a2a.prompt_user",async({params:n,respond:t})=>{try{let r=zn(n,"userContent"),s=zn(n,"llmContent"),o=E(n,"sessionKey"),i=Jn(n,"sessionKeys"),d=E(n,"jobId"),c=E(n,"currentSessionKey"),l=E(n,"idempotencyKey");t(!0,i?await Bn({sessionKeys:i,userContent:r,llmContent:s,idempotencyKey:l}):o?await Hn({sessionKey:o,userContent:r,llmContent:s,idempotencyKey:l}):await Fn({userContent:r,llmContent:s,jobId:d,currentSessionKey:c,idempotencyKey:l}))}catch(r){t(!1,void 0,{code:"INVALID_REQUEST",message:r instanceof Error?r.message:String(r)})}},{scope:"operator.admin"}),e.registerGatewayMethod("okx-a2a.delete_sessions",async({params:n,respond:t})=>{try{let r=E(n,"sessionKey"),s=Jn(n,"sessionKeys"),o=E(n,"jobId");if(!r&&!s&&!o)throw new Error("Missing required selector: sessionKey, sessionKeys, or jobId");let i=E(n,"myAgentId"),d=E(n,"toAgentId"),c=E(n,"myXmtpAddress"),l=E(n,"toXmtpAddress"),g=Zo(n,"deleteTranscript");t(!0,await cr({...r?{sessionKey:r}:{},...s?{sessionKeys:s}:{},...o?{jobId:o}:{},...i?{myAgentId:i}:{},...d?{toAgentId:d}:{},...c?{myXmtpAddress:c}:{},...l?{toXmtpAddress:l}:{},...g!==void 0?{deleteTranscript:g}:{}}))}catch(r){t(!1,void 0,{code:"INVALID_REQUEST",message:r instanceof Error?r.message:String(r)})}},{scope:"operator.admin"}),e.registerHook("agent:bootstrap",async n=>{let t=n.context,r=t.bootstrapFiles;if(Array.isArray(r))try{let s=r.map(i=>`${i.name}(${i.missing?"missing":`${i.content?.length??0}b`})`).join(", ");u(`[okx-a2a:hook] agent:bootstrap agentId=${t.agentId??"?"} files=[${s}]`);let o=r.reduce((i,d)=>i+(d.content?.length??0),0);f.info(a.BOOTSTRAP_APPLIED,{openclawAgentId:t.agentId??"",promptSize:String(o),fileCount:String(r.length),missingCount:String(r.filter(i=>i.missing).length)})}catch(s){f.error(a.BOOTSTRAP_FAILED,s instanceof Error?s:void 0,{openclawAgentId:t.agentId??""})}},{name:"okx-a2a-agent-bootstrap"}),e.on("before_agent_run",async(n,t)=>{let r=Wn(n,t),s=Vn(n,t);if(!r){u("[xmtp_prompt_user:queue] before_agent_run ignored: missing sessionKey");return}let o=[r];try{o=Qo(r)}catch(i){O("before_agent_run","route_discovery",i,{runId:s,sessionKey:r})}try{fr({runId:s,sessionKey:r,routeSessionKeys:o})&&console.log(`[okx-a2a:hook] remembered gateway route origin runId=${s} sessionKey=${r} routeSessionKeys=${o.join(",")}`)}catch(i){O("before_agent_run","route_origin",i,{runId:s,sessionKey:r})}try{Cn(r)}catch(i){O("before_agent_run","prompt_user_running",i,{runId:s,sessionKey:r})}}),e.on("before_tool_call",async(n,t)=>{let r=null,s=null;try{r=Wn(n,t),s=Vn(n,t)}catch(i){O("before_tool_call","context",i,{runId:s,sessionKey:r});return}try{In(r)}catch(i){O("before_tool_call","remember_recent_session",i,{runId:s,sessionKey:r})}let o=r?[r]:[];try{o=[...new Set([...Me({sessionKey:r}),...Ue({runId:s,sessionKey:r})])]}catch(i){O("before_tool_call","route_discovery",i,{runId:s,sessionKey:r})}try{let i=gr({toolName:n?.toolName,params:n?.params,sessionKey:r,routeSessionKeys:o});return i?(console.log(`[okx-a2a:hook] injected gateway session env tool=${n?.toolName??"?"} sessionKey=${r} routeSessionKeys=${o.join(",")}`),{params:i}):void 0}catch(i){O("before_tool_call","env_injection",i,{runId:s,sessionKey:r});return}},{priority:50}),e.on("agent_end",async(n,t)=>{let r=null,s=null;try{r=Wn(n,t),s=Vn(n,t)}catch(o){O("agent_end","context",o,{runId:s,sessionKey:r});return}try{pr({runId:s,sessionKey:r})}catch(o){O("agent_end","route_origin_cleanup",o,{runId:s,sessionKey:r})}if(!r){u("[xmtp_prompt_user:queue] agent_end ignored: missing sessionKey");return}try{kn(r)}catch(o){O("agent_end","prompt_user_ended",o,{runId:s,sessionKey:r})}}),e.registerService({id:"okx-a2a:core",start:async()=>{u("[okx-a2a:service] okx-a2a:core starting (multi-identity mode); initializing communication identities..."),W=Date.now(),Jo(),f.info(a.GATEWAY_STARTED,{onchainosAgentId:"*",pid:String(process.pid),pluginId:x.id,pluginVersion:x.version,nodeVersion:process.version,startedAt:String(W)}),pn(),zo(),Y&&Y(),Y=$r(),u("[okx-a2a:service] OpenClaw lightweight gateway initialized; node daemon owns XMTP receive/send/agent sync.")},stop:async()=>{Y&&(Y(),Y=void 0),yn(),u("[okx-a2a:service] okx-a2a:core stopped");let n=Date.now();f.info(a.GATEWAY_STOPPED,{onchainosAgentId:"*",pid:String(process.pid),pluginId:x.id,pluginVersion:x.version,stoppedAt:String(n),uptimeMs:W?String(n-W):"unknown"}),W=void 0}})}},ei=x;
|
|
30
30
|
if(module.exports&&module.exports.__esModule&&module.exports.default){module.exports=module.exports.default;}
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED