@okxweb3/a2a-openclaw 0.2.6 → 0.2.7

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 CHANGED
@@ -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.6",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.6",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.6",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;
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.7",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.7",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.7",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;}
@@ -2,7 +2,7 @@
2
2
  "id": "okx-a2a",
3
3
  "name": "OKX A2A",
4
4
  "description": "E2E encrypted wallet-to-agent communication via A2A protocol",
5
- "version": "0.2.6",
5
+ "version": "0.2.7",
6
6
  "activation": {
7
7
  "onStartup": true
8
8
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@okxweb3/a2a-openclaw",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "OpenClaw plugin for E2E encrypted agent-to-agent communication via XMTP",
5
5
  "main": "dist/index.js",
6
6
  "files": [