@vibe-lark/larkpal 0.1.85 → 0.1.87

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.
Files changed (111) hide show
  1. package/dist/account-id-BM1T6029-BzQ_cMoi.mjs +1 -0
  2. package/dist/activation-context--5yu1dPF-XV0Y0pTy.mjs +1 -0
  3. package/dist/anthropic-CFZUCb1w.mjs +39 -0
  4. package/dist/assistant-visible-text-DuFWokAt-BOJV_zwc.mjs +9 -0
  5. package/dist/azure-openai-responses-BEuiMaF-.mjs +1 -0
  6. package/dist/boundary-file-read-BSd9MXPy-gnNVhPKT.mjs +1 -0
  7. package/dist/browser-lifecycle-cleanup-BdNsMhMD-BM97qA_M.mjs +1 -0
  8. package/dist/build-Bkj0hOS2.mjs +3 -0
  9. package/dist/bundled-compat-BpaDaAAu-DJtrIX6i.mjs +27 -0
  10. package/dist/bundled-dir-U738ay4K-BxbzrJOo.mjs +1 -0
  11. package/dist/call-DimWbpgJ-B4pv55RH.mjs +20 -0
  12. package/dist/channel-bootstrap.runtime-BVclcGv1-CEZ0-JP9.mjs +1 -0
  13. package/dist/channel-bootstrap.runtime-Cwcr38m2-Dt6QlQkX.mjs +1 -0
  14. package/dist/chunk-DHbaKqs-.mjs +1 -0
  15. package/dist/cli.mjs +7 -92
  16. package/dist/command-format-LSnUCVVF-Dn4h9IOh.mjs +16 -0
  17. package/dist/config-Bim2pi8a-03N-28sw.mjs +1 -0
  18. package/dist/delivery-context.shared-j5hC5qb1-BSLQG47q.mjs +1 -0
  19. package/dist/diagnostic-ClMwNnUA-BMKvPQJT.mjs +1 -0
  20. package/dist/dist-J5UB83Ws.mjs +601 -0
  21. package/dist/dist-coestTs9.mjs +5 -0
  22. package/dist/env-api-keys-Cuz5irWW.mjs +1 -0
  23. package/dist/event-stream-B7Ei41Bu.mjs +1 -0
  24. package/dist/facade-loader-DFzIYYt_-4bzFvy-b.mjs +1 -0
  25. package/dist/from-Ba69_5cR.mjs +14 -0
  26. package/dist/gateway-method-policy-C7rf0SeV-CTJcMQCE.mjs +1 -0
  27. package/dist/github-copilot-headers-BfhryVuU.mjs +1 -0
  28. package/dist/google-ABo-1guT.mjs +1 -0
  29. package/dist/google-gemini-cli-CGlN1zUA.mjs +2 -0
  30. package/dist/google-shared-C60sNhwd.mjs +301 -0
  31. package/dist/google-vertex-De0nAItu.mjs +1 -0
  32. package/dist/hash-Dw-N8Y9l.mjs +1 -0
  33. package/dist/headers-Bpsp70B9.mjs +1 -0
  34. package/dist/home-dir-C44RaPME-B5iLWwCq.mjs +1 -0
  35. package/dist/ids-BPsM98Uu-CJBJAeVC.mjs +1 -0
  36. package/dist/image-2w3cApg7-CrpUMCvm.mjs +3 -0
  37. package/dist/interactive-init-C5MFL5MW.mjs +8 -0
  38. package/dist/io-CH2g3vsv-JJtUIa_U.mjs +10 -0
  39. package/dist/jiti-loader-cache-Bat69wam-DNIteTtO.mjs +9 -0
  40. package/dist/json-file-BQRNuxmK-hRjIgOXI.mjs +1 -0
  41. package/dist/json-parse-BESd8UAM.mjs +3 -0
  42. package/dist/jws-YaZ38F_i.mjs +12 -0
  43. package/dist/lark-cli-provider-BLMxH6CN.mjs +4 -0
  44. package/dist/lark-logger-xpMKNNtY.mjs +1 -0
  45. package/dist/live-smoke-DpURW676.mjs +33 -0
  46. package/dist/load-context-mb7uvLSn-3xYwSnOZ.mjs +1 -0
  47. package/dist/loader-708jrx4Y-BbJRXNlQ.mjs +4 -0
  48. package/dist/main.mjs +480 -18553
  49. package/dist/manifest-registry-_hxKCS2K-OL8KK_o4.mjs +15 -0
  50. package/dist/mcp-server.mjs +4 -527
  51. package/dist/message-channel-Bk_YHfQg-n2Hw2Y0L.mjs +1 -0
  52. package/dist/message-channel-core-DTA--Gjh-CIh10vfo.mjs +1 -0
  53. package/dist/message.config.runtime-K-k4XOyq-F_h0Cgkl.mjs +1 -0
  54. package/dist/message.gateway.runtime-DqHOHRTQ-ge4c5p4s.mjs +1 -0
  55. package/dist/mistral-DyL3Zo1b.mjs +7 -0
  56. package/dist/model-auth-env-oyg2Hexc-DJbt9J3o.mjs +1 -0
  57. package/dist/models-config-BmpSQJQF-BL6S5qAo.mjs +1 -0
  58. package/dist/models-config.runtime-SOhLEw-f.mjs +1 -0
  59. package/dist/multipart-parser-B9dwXBqu.mjs +2 -0
  60. package/dist/oauth-25y2wc7K.mjs +75 -0
  61. package/dist/openai-C-rgGb7X.mjs +16 -0
  62. package/dist/openai-codex-responses-BbyAPsP1.mjs +7 -0
  63. package/dist/openai-completions-Bu5qvQzb.mjs +5 -0
  64. package/dist/openai-responses-pIdwQBc4.mjs +1 -0
  65. package/dist/openai-responses-shared-DqW1JSux.mjs +10 -0
  66. package/dist/paths-D6msg0S1-BO4XgM1u.mjs +1 -0
  67. package/dist/paths-D92DjaZ--DdtJ-zYp.mjs +1 -0
  68. package/dist/pi-model-discovery-Bd0TWzo8-DvSM0eWu.mjs +1 -0
  69. package/dist/pi-model-discovery-runtime-PrjWOmsV.mjs +1 -0
  70. package/dist/pi-tools.before-tool-call.runtime-Bn7uqKie-WPxU5oNX.mjs +2 -0
  71. package/dist/plugin-auto-enable-DdH3n9V8-Dr_bUXkG.mjs +1 -0
  72. package/dist/process-scoped-map-B2cWkYET-Co-i-MXA.mjs +1 -0
  73. package/dist/provider-discovery.runtime-DY0VWQ81.mjs +1 -0
  74. package/dist/provider-model-compat-CFqcq0it-BUwZENrz.mjs +1 -0
  75. package/dist/provider-runtime-C8rljsNs-BDvu6FW3.mjs +1 -0
  76. package/dist/provider-runtime-CT50mNIX-DImw7ZZu.mjs +79 -0
  77. package/dist/provider-stream-COLujAAo-Dpq1DSIk.mjs +248 -0
  78. package/dist/providers.runtime-Ba7tOlq7-B4t6ywCr.mjs +1 -0
  79. package/dist/public-surface-loader-BVl0NQAE-TfJ3izj1.mjs +1 -0
  80. package/dist/resolve-C33B7eeu-DZM_z6Wr.mjs +1 -0
  81. package/dist/runtime-Cym-fqI8-1GOIuRRQ.mjs +1 -0
  82. package/dist/runtime-channel-state-CohMybAh-BBzhl07Q.mjs +1 -0
  83. package/dist/runtime-snapshot-C54O1-gI-DxusscPf.mjs +1 -0
  84. package/dist/runtime-state-IBOIXKOx-Cw1GA1td.mjs +1 -0
  85. package/dist/runtime-web-tools-fallback.runtime-Ca-qn1mj-BsYE2gOd.mjs +1 -0
  86. package/dist/runtime-web-tools-manifest.runtime-BgxQTjmq-P6MKP9gQ.mjs +1 -0
  87. package/dist/runtime-web-tools-public-artifacts.runtime-D9qcoWIX-5VoyjouO.mjs +1 -0
  88. package/dist/session-archive.runtime-B52_5vs4-cU2tYbBz.mjs +1 -0
  89. package/dist/session-key-Cn2QoOyX-QZeYmbxd.mjs +1 -0
  90. package/dist/session-transcript-files.fs-DEeFXruQ-CXIAFSsr.mjs +1 -0
  91. package/dist/src-CCDx_C-U.mjs +3 -0
  92. package/dist/src-DACmA9V6.mjs +5 -0
  93. package/dist/subagent-announce-L5WsQatW--rMn240x.mjs +2 -0
  94. package/dist/subagent-announce.registry.runtime-DiqZyeTs-DNfNHsls.mjs +1 -0
  95. package/dist/subagent-registry-steer-runtime-DFgZFC0j-XYS1_qwl.mjs +1 -0
  96. package/dist/subagent-system-prompt-C1qnN--K-CsU4f97T.mjs +23 -0
  97. package/dist/target-parsing-loaded-DKkb6jJY-B830OA1a.mjs +12 -0
  98. package/dist/task-registry-delivery-runtime-Dd1CUkZF-B2Hj2k8C.mjs +16 -0
  99. package/dist/task-registry-delivery-runtime-ragbeVx5-Bdvo2Q5u.mjs +1 -0
  100. package/dist/thinking-Bh-7MqXz-uApNUe6g.mjs +1 -0
  101. package/dist/transcript-E_-ISOkD-VTwb782D.mjs +5 -0
  102. package/dist/transcript.runtime-BqhvZZdl-B4E0TiX5.mjs +1 -0
  103. package/dist/transform-messages-BTA3xbAI.mjs +1 -0
  104. package/dist/web-provider-public-artifacts-BlpRwIUS-DbVhDOrY.mjs +1 -0
  105. package/dist/web-search-providers.runtime--0aUtC3b-Bjh4Bmrz.mjs +1 -0
  106. package/package.json +1 -2
  107. package/dist/interactive-init-B6j8j_Ap.mjs +0 -450
  108. package/dist/lark-cli-provider-7LvtOIF_.mjs +0 -554
  109. package/dist/lark-logger-D7_pEVQc.mjs +0 -143
  110. package/dist/live-smoke-nvTUPtrv.mjs +0 -7135
  111. package/dist/rolldown-runtime-wcPFST8Q.mjs +0 -13
@@ -0,0 +1,16 @@
1
+ import{c as e,o as t}from"./home-dir-C44RaPME-B5iLWwCq.mjs";import{o as n}from"./paths-D92DjaZ--DdtJ-zYp.mjs";import{n as r}from"./account-id-BM1T6029-BzQ_cMoi.mjs";import{c as i,l as a}from"./bundled-dir-U738ay4K-BxbzrJOo.mjs";import{S as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as m,i as h,l as g,o as _,p as v,r as y,s as ee,u as b,v as x,w as S,x as te,y as C}from"./target-parsing-loaded-DKkb6jJY-B830OA1a.mjs";import{D as w}from"./io-CH2g3vsv-JJtUIa_U.mjs";import{Mt as T,St as ne,jt as re}from"./bundled-compat-BpaDaAAu-DJtrIX6i.mjs";import"./message-channel-core-DTA--Gjh-CIh10vfo.mjs";import{c as E,i as ie,n as ae,r as oe,s as se}from"./message-channel-Bk_YHfQg-n2Hw2Y0L.mjs";import{P as ce}from"./manifest-registry-_hxKCS2K-OL8KK_o4.mjs";import{a as le,c as ue,i as D,o as O}from"./boundary-file-read-BSd9MXPy-gnNVhPKT.mjs";import{S as de,b as fe,d as k,u as pe,x as me,y as he}from"./runtime-snapshot-C54O1-gI-DxusscPf.mjs";import{r as ge,t as _e}from"./runtime-Cym-fqI8-1GOIuRRQ.mjs";import{c as ve,d as ye,l as be}from"./loader-708jrx4Y-BbJRXNlQ.mjs";import{c as xe,s as Se}from"./session-key-Cn2QoOyX-QZeYmbxd.mjs";import"./paths-D6msg0S1-BO4XgM1u.mjs";import{i as Ce,r as we}from"./transcript-E_-ISOkD-VTwb782D.mjs";import"./delivery-context.shared-j5hC5qb1-BSLQG47q.mjs";import{t as Te}from"./command-format-LSnUCVVF-Dn4h9IOh.mjs";import{t as Ee}from"./channel-bootstrap.runtime-Cwcr38m2-Dt6QlQkX.mjs";import A,{constants as j}from"node:fs";import M from"node:path";import{URL as De,fileURLToPath as Oe}from"node:url";import N from"node:fs/promises";import ke from"node:os";import"node:child_process";import{createHash as Ae,randomUUID as je}from"node:crypto";import"node:stream/promises";function Me(e){let t=[],n,r=0;for(;r<=e.length;){let i=e.indexOf(`
2
+ `,r),a=i===-1?e.length:i,o=e.slice(r,a),s=o.match(/^( {0,3})(`{3,}|~{3,})(.*)$/);if(s){let e=s[1],i=s[2],c=i[0],l=i.length;if(!n)n={start:r,markerChar:c,markerLen:l,openLine:o,marker:i,indent:e};else if(n.markerChar===c&&l>=n.markerLen){let e=a;t.push({start:n.start,end:e,openLine:n.openLine,marker:n.marker,indent:n.indent}),n=void 0}}if(i===-1)break;r=i+1}return n&&t.push({start:n.start,end:e.length,openLine:n.openLine,marker:n.marker,indent:n.indent}),t}function P(e,t){let n=0,r=e.length-1;for(;n<=r;){let i=Math.floor((n+r)/2),a=e[i];if(!a)break;if(t<=a.start){r=i-1;continue}if(t>=a.end){n=i+1;continue}return a}}function F(e,t){return!P(e,t)}function Ne(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function Pe(e){return e===`length`||e===`newline`?e:void 0}function Fe(e){return Ne(e?.streaming)||void 0}function Ie(e){return Pe(Fe(e)?.chunkMode)??Pe(e?.chunkMode)}function Le(e,t,n){if(!e)return[];if(t<=0||e.length<=t)return[e];let r=[],i=e;for(;i.length>t;){let e=n(i.slice(0,t)),a=Number.isFinite(e)&&e>0&&e<=t?e:t,o=i.slice(0,a).trimEnd();o.length>0&&r.push(o);let s=a<i.length&&/\s/.test(i[a]),c=Math.min(i.length,a+ +!!s);i=i.slice(c).trimStart()}return i.length&&r.push(i),r}const Re=`length`;function ze(e,t){if(!e)return;let n=r(t),i=e.accounts;if(i&&typeof i==`object`){let e=w(i,n);if(typeof e?.textChunkLimit==`number`)return e.textChunkLimit}return e.textChunkLimit}function Be(e,t,n,r){let i=typeof r?.fallbackLimit==`number`&&r.fallbackLimit>0?r.fallbackLimit:4e3,a=(()=>{if(!(!t||t===`webchat`))return ze(e?.channels?.[t]??e?.[t],n)})();return typeof a==`number`&&a>0?a:i}function Ve(e,t){if(!e)return;let n=r(t),i=e.accounts;if(i&&typeof i==`object`){let e=Ie(w(i,n));if(e)return e}return Ie(e)??e.chunkMode}function He(e,t,n){return!t||t===`webchat`?Re:Ve(e?.channels?.[t]??e?.[t],n)??Re}function Ue(e,t,n){if(!e)return[];if(t<=0)return[e];let r=n?.splitLongParagraphs!==!1,i=e.replace(/\r\n?/g,`
3
+ `);if(!/\n[\t ]*\n+/.test(i))return i.length<=t||!r?[i]:Ke(i,t);let a=Me(i),o=[],s=/\n[\t ]*\n+/g,c=0;for(let e of i.matchAll(s)){let t=e.index??0;F(a,t)&&(o.push(i.slice(c,t)),c=t+e[0].length)}o.push(i.slice(c));let l=[];for(let e of o){let n=e.replace(/\s+$/g,``);n.trim()&&(n.length<=t?l.push(n):r?l.push(...Ke(n,t)):l.push(n))}return l}function We(e,t,n){if(n===`newline`){let n=Ue(e,t,{splitLongParagraphs:!1}),r=[];for(let e of n){let n=qe(e,t);!n.length&&e?r.push(e):r.push(...n)}return r}return qe(e,t)}function Ge(e,t){if(!e)return[];if(t<=0||e.length<=t)return[e]}function Ke(e,t){return Ge(e,t)||Le(e,t,e=>{let{lastNewline:t,lastWhitespace:n}=Xe(e,0,e.length);return t>0?t:n})}function qe(e,t){let n=Ge(e,t);if(n)return n;let r=[],i=Me(e),a=0,o;for(;a<e.length;){let n=o?`${o.openLine}\n`:``,s=Math.max(1,t-n.length);if(e.length-a<=s){let t=`${n}${e.slice(a)}`;t.length>0&&r.push(t);break}let c=Math.min(e.length,a+s),l=Ye(e,a,c,i),u=l>a?l:c,d=F(i,u)?void 0:P(i,u),f=d;if(d){let t=`${d.indent}${d.marker}`,n=a+(s-(t.length+1));if(n<=a)f=void 0,u=c;else{let r=Math.min(e.length,Math.max(a+1,d.start+d.openLine.length+2)),o=a+(s-t.length),l=!1,p=e.lastIndexOf(`
4
+ `,Math.max(a,o-1));for(;p>=a;){let t=p+1;if(t<r)break;let n=P(i,t);if(n&&n.start===d.start){u=t,l=!0;break}p=e.lastIndexOf(`
5
+ `,p-1)}l||(r>o?(f=void 0,u=c):u=Math.max(r,n))}let r=P(i,u);f=r&&r.start===d.start?r:void 0}let p=e.slice(a,u);if(!p)break;let m=`${n}${p}`,h=u<e.length&&/\s/.test(e[u]),g=Math.min(e.length,u+ +!!h);if(f){let e=`${f.indent}${f.marker}`;m=m.endsWith(`
6
+ `)?`${m}${e}`:`${m}\n${e}`,o=f}else g=Je(e,g),o=void 0;r.push(m),a=g}return r}function Je(e,t=0){let n=t;for(;n<e.length&&e[n]===`
7
+ `;)n++;return n}function Ye(e,t,n,r){let{lastNewline:i,lastWhitespace:a}=Xe(e,t,n,e=>F(r,e));return i>t?i:a>t?a:-1}function Xe(e,t,n,r=()=>!0){let i=-1,a=-1,o=0;for(let s=t;s<n;s++){if(!r(s))continue;let t=e[s];if(t===`(`){o+=1;continue}if(t===`)`&&o>0){--o;continue}o===0&&(t===`
8
+ `?i=s:/\s/.test(t)&&(a=s))}return{lastNewline:i,lastWhitespace:a}}function Ze(e){return e.mediaUrls?.length?e.mediaUrls:e.mediaUrl?[e.mediaUrl]:[]}function I(e,t){let n=t?.text??e.text??``,r=n.trim(),i=Ze(e).map(e=>e.trim()).filter(Boolean),a=i.length,o=!!r,s=a>0;return{text:n,trimmedText:r,mediaUrls:i,mediaCount:a,hasText:o,hasMedia:s,hasContent:o||s}}async function Qe(e){if(e.mediaUrls.length===0)return!1;for(let[t,n]of e.mediaUrls.entries()){let r=t===0,i=r?e.caption:void 0;try{await e.send({mediaUrl:n,caption:i})}catch(a){if(e.onError){await e.onError({error:a,mediaUrl:n,caption:i,index:t,isFirst:r});continue}throw a}}return!0}function $e(e,t,n=he){e.catch(e=>{n(`${t}: ${String(e)}`)})}function et(e){return{to:e.to,content:e.content,success:e.success,error:e.error,channelId:e.channelId,accountId:e.accountId,conversationId:e.conversationId??e.to,messageId:e.messageId,isGroup:e.isGroup,groupId:e.groupId}}function tt(e){return{channelId:e.channelId,accountId:e.accountId,conversationId:e.conversationId}}function nt(e){return{to:e.to,content:e.content,success:e.success,...e.error?{error:e.error}:{}}}function rt(e){return{to:e.to,content:e.content,success:e.success,...e.error?{error:e.error}:{},channelId:e.channelId,accountId:e.accountId,conversationId:e.conversationId,messageId:e.messageId,...e.isGroup==null?{}:{isGroup:e.isGroup},...e.groupId?{groupId:e.groupId}:{}}}function it(){return je()}const at=[`id`,`e164`,`username`,`name`];function ot(e){let n=e.trim();if(!n)return;let r=t(n);for(let e of at){let t=`${e}:`;if(r.startsWith(t))return{type:e,value:n.slice(t.length)}}}function st(e,n,r=!1){if(!e)return;let i=e[n];if(i)return i;if(!r)return;let a=t(n),o=Object.keys(e).find(e=>e!==`*`&&t(e)===a);if(o)return e[o]}const ct=new Set,lt=new WeakMap;function ut(e,n={}){let r=e.trim();return r?t(n.stripLeadingAt&&r.startsWith(`@`)?r.slice(1):r):``}function L(e,t){return ut(e,{stripLeadingAt:t===`username`})}function dt(e){return ut(e,{stripLeadingAt:!0})}function ft(e){let t=e.trim();!t||ct.has(t)||(ct.add(t),process.emitWarning(`toolsBySender key "${t}" is deprecated. Use explicit prefixes (id:, e164:, username:, name:). Legacy unprefixed keys are matched as id only.`,{type:`DeprecationWarning`,code:`OPENCLAW_TOOLS_BY_SENDER_UNTYPED_KEY`}))}function pt(e){let t=e.trim();if(!t)return;if(t===`*`)return{kind:`wildcard`};let n=ot(t);if(n){let e=L(n.value,n.type);return e?{kind:`typed`,type:n.type,key:e}:void 0}ft(t);let r=dt(t);if(r)return{kind:`typed`,type:`id`,key:r}}function mt(){return{id:new Map,e164:new Map,username:new Map,name:new Map}}function ht(e){let t=Object.entries(e);if(t.length===0)return;let n=mt(),r;for(let[e,i]of t){if(!i)continue;let t=pt(e);if(!t)continue;if(t.kind===`wildcard`){r=i;continue}let a=n[t.type];a.has(t.key)||a.set(t.key,i)}return{buckets:n,wildcard:r}}function gt(e){let t=lt.get(e);if(t)return t;let n=ht(e);if(n)return lt.set(e,n),n}function R(t,n){let r=e(t);return r?L(r,n):``}function _t(t){let n=e(t);if(!n)return[];let r=L(n,`id`),i=dt(n);return r?!i||i===r?[r]:[r,i]:i?[i]:[]}function vt(e,t){for(let n of _t(t.senderId)){let t=e.buckets.id.get(n);if(t)return t}let n=R(t.senderE164,`e164`);if(n){let t=e.buckets.e164.get(n);if(t)return t}let r=R(t.senderUsername,`username`);if(r){let t=e.buckets.username.get(r);if(t)return t}let i=R(t.senderName,`name`);if(i){let t=e.buckets.name.get(i);if(t)return t}return e.wildcard}function yt(e){let t=e.toolsBySender;if(!t)return;let n=gt(t);if(n)return vt(n,e)}function bt(e,t,n){let i=r(n),a=e.channels?.[t];if(a)return w(a.accounts,i)?.groups??a.groups}function xt(e){let t=bt(e.cfg,e.channel,e.accountId),n=[e.groupId,...Array.isArray(e.groupIdCandidates)?e.groupIdCandidates:[]],r;for(let i of n){let n=i?.trim();if(n&&(r=st(t,n,e.groupIdCaseInsensitive),r))break}let i=t?.[`*`],a=yt({toolsBySender:r?.toolsBySender,senderId:e.senderId,senderName:e.senderName,senderUsername:e.senderUsername,senderE164:e.senderE164});if(a)return a;if(r?.tools)return r.tools;let o=yt({toolsBySender:i?.toolsBySender,senderId:e.senderId,senderName:e.senderName,senderUsername:e.senderUsername,senderE164:e.senderE164});if(o)return o;if(i?.tools)return i.tools}function St(e){let t=_(e,{stripReplyTags:!1});return{text:t.text,audioAsVoice:t.audioAsVoice,hadTag:t.hasAudioTag}}const Ct=/\bMEDIA:\s*`?([^\n]+)`?/gi;function z(e){return e.startsWith(`file://`)?e.replace(`file://`,``):e}function B(e){return e.replace(/^[`"'[{(]+/,``).replace(/[`"'\\})\],]+$/,``)}const wt=/^[a-zA-Z]:[\\/]/,V=/^[a-zA-Z][a-zA-Z0-9+.-]*:/,Tt=/\.\w{1,10}$/,Et=/(?:^|[/\\])\.\.(?:[/\\]|$)/;function Dt(e){return e.startsWith(`../`)||e===`..`||e.startsWith(`~`)||Et.test(e)}function Ot(e){return e.startsWith(`/`)||e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`~`)||wt.test(e)||e.startsWith(`\\\\`)||!V.test(e)&&(e.includes(`/`)||e.includes(`\\`))}function kt(e){return Dt(e)?!1:e.startsWith(`/`)||e.startsWith(`./`)||wt.test(e)||e.startsWith(`\\\\`)||!V.test(e)&&(e.includes(`/`)||e.includes(`\\`))}function H(e,t){return!e||e.length>4096||!t?.allowSpaces&&/\s/.test(e)?!1:/^https?:\/\//i.test(e)||kt(e)?!0:Dt(e)?!1:!!(t?.allowBareFilename&&!V.test(e)&&Tt.test(e))}function At(e){let t=e.trim();if(t.length<2)return;let n=t[0];if(n===t[t.length-1]&&!(n!==`"`&&n!==`'`&&n!=="`"))return t.slice(1,-1).trim()}function jt(e){return e.includes("```")||e.includes(`~~~`)}function Mt(e,t){return e.some(e=>t>=e.start&&t<e.end)}function Nt(e){let t=e.trimEnd();if(!t.trim())return{text:``};let n=/media:/i.test(t),r=t.includes(`[[`);if(!n&&!r)return{text:t};let i=[],a=!1,o=[],s=e=>{if(!e)return;let t=o[o.length-1];if(t?.type===`text`){t.text=`${t.text}\n${e}`;return}o.push({type:`text`,text:e})},c=jt(t),l=c?Me(t):[],u=t.split(`
9
+ `),d=[],f=0;for(let e of u){if(c&&Mt(l,f)){d.push(e),s(e),f+=e.length+1;continue}if(!e.trimStart().toUpperCase().startsWith(`MEDIA:`)){d.push(e),s(e),f+=e.length+1;continue}let t=Array.from(e.matchAll(Ct));if(t.length===0){d.push(e),s(e),f+=e.length+1;continue}let n=[],r=[],u=0;for(let o of t){let t=o.index??0;n.push(e.slice(u,t));let s=o[1],c=At(s),l=c??s,d=c?[c]:s.split(/\s+/).filter(Boolean),f=i.length,p=0,m=[],h=!1;for(let e of d){let t=z(B(e));H(t,c?{allowSpaces:!0}:void 0)?(i.push(t),h=!0,a=!0,p+=1):m.push(e)}let g=l.trim(),_=Ot(g)||g.startsWith(`file://`);if(!c&&p===1&&m.length>0&&/\s/.test(l)&&_){let e=z(B(l));H(e,{allowSpaces:!0})&&(i.splice(f,i.length-f,e),h=!0,a=!0,p=1,m.length=0)}if(!h&&!c&&/\s/.test(l)){let e=z(B(l));H(e,{allowSpaces:!0,allowBareFilename:!0})&&(i.splice(f,i.length-f,e),h=!0,a=!0,p=1,m.length=0)}if(!h){let e=z(B(l));H(e,{allowSpaces:!0,allowBareFilename:!0})&&(i.push(e),h=!0,a=!0,m.length=0)}if(h){let e=n.join(``).replace(/[ \t]{2,}/g,` `).trim();e&&r.push({type:`text`,text:e}),n.length=0;for(let e of i.slice(f,f+p))r.push({type:`media`,url:e});m.length>0&&n.push(m.join(` `))}else _?a=!0:n.push(o[0]);u=t+o[0].length}n.push(e.slice(u));let p=n.join(``).replace(/[ \t]{2,}/g,` `).trim();p&&(d.push(p),r.push({type:`text`,text:p}));for(let e of r){if(e.type===`text`){s(e.text);continue}o.push(e)}f+=e.length+1}let p=d.join(`
10
+ `).replace(/[ \t]+\n/g,`
11
+ `).replace(/[ \t]{2,}/g,` `).replace(/\n{2,}/g,`
12
+ `).trim(),m=St(p),h=m.audioAsVoice;if(m.hadTag&&(p=m.text.replace(/\n{2,}/g,`
13
+ `).trim()),i.length===0){let e=a||h?p:t,n={text:e,segments:e?[{type:`text`,text:e}]:[]};return h&&(n.audioAsVoice=!0),n}return{text:p,mediaUrls:i,mediaUrl:i[0],segments:o.length>0?o:[{type:`text`,text:p}],...h?{audioAsVoice:!0}:{}}}const Pt=ne(`outbound/pending-spawn`);let Ft=0,U;function It(e){let t=U;return U=e,t}function Lt(e){return e instanceof Error?{name:e.name,message:e.message}:{name:`Unknown`,message:typeof e==`string`?e:`non-error throw`}}function Rt(e){let t=e?.trim();if(t)return Ae(`sha256`).update(t).digest(`hex`).slice(0,12)}function zt(e){if(!U)return!1;try{return U(e)}catch(t){let n=Date.now();return n-Ft>=6e4&&(Ft=n,Pt.warn(`pending-spawn query threw; defaulting to false`,{err:Lt(t),sessionKeyHash:Rt(e)})),!1}}function Bt(e,t={}){let n=Nt(e),r=n.text??``,i=_(r,{currentMessageId:t.currentMessageId,stripAudioTag:!1,stripReplyTags:!0});i.hasReplyTag&&(r=i.text);let a=t.silentToken??`NO_REPLY`,o=S(r,a);return o&&(r=``),{text:r,mediaUrls:n.mediaUrls,mediaUrl:n.mediaUrl,replyToId:i.replyToId,replyToCurrent:i.replyToCurrent||void 0,replyToTag:i.hasReplyTag,audioAsVoice:n.audioAsVoice,isSilent:o}}function Vt(e){let t=e.trim();return t?!!(/^no channel reply\.?$/i.test(t)||/^replied in-thread\.?$/i.test(t)||/^replied in #[-\w]+\.?$/i.test(t)||/^updated\s+\[[^\]]*wiki\/[^\]]+\](?:\([^)]+\))?(?:\s+with\b[\s\S]*)?(?:\.\s*)?(?:no channel reply\.?)?$/i.test(t)):!1}function Ht(...e){let t=new Set,n=[];for(let r of e)if(r)for(let e of r){let r=e?.trim();r&&(t.has(r)||(t.add(r),n.push(r)))}return n}function Ut(e){if(c(e))return null;let t=Bt(e.text??``),n=e.mediaUrls??t.mediaUrls,r=e.mediaUrl??t.mediaUrl,i=Ht(n,r?[r]:void 0),a=t.text??``;if(Vt(a)&&i.length===0)return null;let o=t.isSilent&&i.length===0,l=(n?.length??0)>1?void 0:r,u={...e,text:y({...e,text:a})??``,mediaUrls:i.length?i:void 0,mediaUrl:l,replyToId:e.replyToId??t.replyToId,replyToTag:e.replyToTag||t.replyToTag,replyToCurrent:e.replyToCurrent||t.replyToCurrent,audioAsVoice:!!(e.audioAsVoice||t.audioAsVoice)};if(!h(u)&&!o)return null;let d=s(u.channelData);return{payload:u,hasPresentation:p(u.presentation),hasInteractive:m(u.interactive),hasChannelData:d,isSilent:o}}function Wt(e,t={}){let n=o({cfg:t.cfg,sessionKey:t.sessionKey,surface:t.surface,conversationType:t.conversationType}),r=t.hasPendingSpawnedChildren??zt(t.sessionKey),i=[];for(let t of e){let e=Ut(t);e&&i.push(e)}let a=i.some(e=>{if(e.isSilent)return!1;let t=I(e.payload);return x({...e.payload,text:t.text,mediaUrls:t.mediaUrls},{hasChannelData:e.hasChannelData})}),s=[];for(let e of i){if(!e.isSilent){s.push({payload:e.payload,parts:I(e.payload),hasPresentation:e.hasPresentation,hasInteractive:e.hasInteractive,hasChannelData:e.hasChannelData});continue}if(a||n.policy===`allow`||r)continue;if(!n.rewrite){let t={...e.payload,text:e.payload.text?.trim()||`NO_REPLY`};if(!h(t))continue;s.push({payload:t,parts:I(t),hasPresentation:e.hasPresentation,hasInteractive:e.hasInteractive,hasChannelData:e.hasChannelData});continue}let i={...e.payload,text:te({seed:`${t.sessionKey??t.surface??`silent-reply`}:${e.payload.text??``}`})};h(i)&&s.push({payload:i,parts:I(i),hasPresentation:e.hasPresentation,hasInteractive:e.hasInteractive,hasChannelData:e.hasChannelData})}return s}function Gt(e){return e.map(e=>e.payload)}function Kt(e){return{text:e.map(e=>e.payload.text).filter(e=>!!e).join(`
14
+ `),mediaUrls:e.flatMap(e=>e.parts.mediaUrls)}}function qt(e){let t=I(e);return{text:t.text,mediaUrls:t.mediaUrls,audioAsVoice:e.audioAsVoice===!0?!0:void 0,presentation:e.presentation,delivery:e.delivery,interactive:e.interactive,channelData:e.channelData}}[`import errno`,`import os`,`import stat`,`import sys`,``,`operation = sys.argv[1]`,`root_path = sys.argv[2]`,`relative_path = sys.argv[3]`,``,`DIR_FLAGS = os.O_RDONLY`,`if hasattr(os, 'O_DIRECTORY'):`,` DIR_FLAGS |= os.O_DIRECTORY`,`if hasattr(os, 'O_NOFOLLOW'):`,` DIR_FLAGS |= os.O_NOFOLLOW`,``,`def open_dir(path_value, dir_fd=None):`,` return os.open(path_value, DIR_FLAGS, dir_fd=dir_fd)`,``,`def split_segments(relative_path):`,` return [part for part in relative_path.split('/') if part and part != '.']`,``,`def validate_segment(segment):`,` if segment == '..':`,` raise OSError(errno.EPERM, 'path traversal is not allowed', segment)`,``,`def walk_existing_path(root_fd, segments):`,` current_fd = os.dup(root_fd)`,` try:`,` for segment in segments:`,` validate_segment(segment)`,` next_fd = open_dir(segment, dir_fd=current_fd)`,` os.close(current_fd)`,` current_fd = next_fd`,` return current_fd`,` except Exception:`,` os.close(current_fd)`,` raise`,``,`def mkdirp_within_root(root_fd, segments):`,` current_fd = os.dup(root_fd)`,` try:`,` for segment in segments:`,` validate_segment(segment)`,` try:`,` next_fd = open_dir(segment, dir_fd=current_fd)`,` except FileNotFoundError:`,` os.mkdir(segment, 0o777, dir_fd=current_fd)`,` next_fd = open_dir(segment, dir_fd=current_fd)`,` os.close(current_fd)`,` current_fd = next_fd`,` finally:`,` os.close(current_fd)`,``,`def remove_within_root(root_fd, segments):`,` if not segments:`,` raise OSError(errno.EPERM, 'refusing to remove root path')`,` parent_segments = segments[:-1]`,` basename = segments[-1]`,` validate_segment(basename)`,` parent_fd = walk_existing_path(root_fd, parent_segments)`,` try:`,` target_stat = os.lstat(basename, dir_fd=parent_fd)`,` if stat.S_ISDIR(target_stat.st_mode) and not stat.S_ISLNK(target_stat.st_mode):`,` os.rmdir(basename, dir_fd=parent_fd)`,` else:`,` os.unlink(basename, dir_fd=parent_fd)`,` finally:`,` os.close(parent_fd)`,``,`root_fd = open_dir(root_path)`,`try:`,` segments = split_segments(relative_path)`,` if operation == 'mkdirp':`,` mkdirp_within_root(root_fd, segments)`,` elif operation == 'remove':`,` remove_within_root(root_fd, segments)`,` else:`,` raise RuntimeError(f'unknown pinned path operation: {operation}')`,`finally:`,` os.close(root_fd)`].join(`
15
+ `),[process.env.OPENCLAW_PINNED_PYTHON,process.env.OPENCLAW_PINNED_WRITE_PYTHON,`/usr/bin/python3`,`/opt/homebrew/bin/python3`,`/usr/local/bin/python3`].filter(e=>!!e),[`import errno`,`import os`,`import secrets`,`import stat`,`import sys`,``,`root_path = sys.argv[1]`,`relative_parent = sys.argv[2]`,`basename = sys.argv[3]`,`mkdir_enabled = sys.argv[4] == "1"`,`file_mode = int(sys.argv[5], 8)`,``,`DIR_FLAGS = os.O_RDONLY`,`if hasattr(os, 'O_DIRECTORY'):`,` DIR_FLAGS |= os.O_DIRECTORY`,`if hasattr(os, 'O_NOFOLLOW'):`,` DIR_FLAGS |= os.O_NOFOLLOW`,``,`WRITE_FLAGS = os.O_WRONLY | os.O_CREAT | os.O_EXCL`,`if hasattr(os, 'O_NOFOLLOW'):`,` WRITE_FLAGS |= os.O_NOFOLLOW`,``,`def open_dir(path_value, dir_fd=None):`,` return os.open(path_value, DIR_FLAGS, dir_fd=dir_fd)`,``,`def walk_parent(root_fd, rel_parent, mkdir_enabled):`,` current_fd = os.dup(root_fd)`,` try:`,` for segment in [part for part in rel_parent.split('/') if part and part != '.']:`,` if segment == '..':`,` raise OSError(errno.EPERM, 'path traversal is not allowed', segment)`,` try:`,` next_fd = open_dir(segment, dir_fd=current_fd)`,` except FileNotFoundError:`,` if not mkdir_enabled:`,` raise`,` os.mkdir(segment, 0o777, dir_fd=current_fd)`,` next_fd = open_dir(segment, dir_fd=current_fd)`,` os.close(current_fd)`,` current_fd = next_fd`,` return current_fd`,` except Exception:`,` os.close(current_fd)`,` raise`,``,`def create_temp_file(parent_fd, basename, mode):`,` prefix = '.' + basename + '.'`,` for _ in range(128):`,` candidate = prefix + secrets.token_hex(6) + '.tmp'`,` try:`,` fd = os.open(candidate, WRITE_FLAGS, mode, dir_fd=parent_fd)`,` return candidate, fd`,` except FileExistsError:`,` continue`,` raise RuntimeError('failed to allocate pinned temp file')`,``,`root_fd = open_dir(root_path)`,`parent_fd = None`,`temp_fd = None`,`temp_name = None`,`try:`,` parent_fd = walk_parent(root_fd, relative_parent, mkdir_enabled)`,` temp_name, temp_fd = create_temp_file(parent_fd, basename, file_mode)`,` while True:`,` chunk = sys.stdin.buffer.read(65536)`,` if not chunk:`,` break`,` os.write(temp_fd, chunk)`,` os.fsync(temp_fd)`,` os.close(temp_fd)`,` temp_fd = None`,` os.replace(temp_name, basename, src_dir_fd=parent_fd, dst_dir_fd=parent_fd)`,` temp_name = None`,` os.fsync(parent_fd)`,` result_stat = os.stat(basename, dir_fd=parent_fd, follow_symlinks=False)`,` print(f'{result_stat.st_dev}|{result_stat.st_ino}')`,`finally:`,` if temp_fd is not None:`,` os.close(temp_fd)`,` if temp_name is not None and parent_fd is not None:`,` try:`,` os.unlink(temp_name, dir_fd=parent_fd)`,` except FileNotFoundError:`,` pass`,` if parent_fd is not None:`,` os.close(parent_fd)`,` os.close(root_fd)`].join(`
16
+ `),[process.env.OPENCLAW_PINNED_WRITE_PYTHON,`/usr/bin/python3`,`/opt/homebrew/bin/python3`,`/usr/local/bin/python3`].filter(e=>!!e);var W=class extends Error{constructor(e,t,n){super(t,n),this.code=e,this.name=`SafeOpenError`}};const G=process.platform!==`win32`&&`O_NOFOLLOW`in j,Jt=`O_NONBLOCK`in j?j.O_NONBLOCK:0,Yt=j.O_RDONLY|(G?j.O_NOFOLLOW:0),Xt=Yt|Jt,Zt=j.O_RDONLY,Qt=Zt|Jt;j.O_WRONLY|(G?j.O_NOFOLLOW:0),j.O_WRONLY|j.O_CREAT|j.O_EXCL|(G?j.O_NOFOLLOW:0),j.O_RDWR|j.O_APPEND|(G?j.O_NOFOLLOW:0),j.O_RDWR|j.O_APPEND|j.O_CREAT|j.O_EXCL|(G?j.O_NOFOLLOW:0);async function $t(e,t){try{if((await N.lstat(e)).isDirectory())throw new W(`not-file`,`not a file`);await(void 0)?.afterPreOpenLstat?.(e)}catch(e){if(e instanceof W)throw e}let n;try{let r=t?.allowSymlinkTargetWithinRoot?t?.nonBlockingRead?Qt:Zt:t?.nonBlockingRead?Xt:Yt;await(void 0)?.beforeOpen?.(e,r),n=await N.open(e,r);try{await(void 0)?.afterOpen?.(e,n)}catch(e){throw await n.close().catch(()=>{}),e}}catch(e){throw O(e)?new W(`not-found`,`file not found`):ue(e)?new W(`symlink`,`symlink open blocked`,{cause:e}):le(e,`EISDIR`)?new W(`not-file`,`not a file`):e}try{let r=await n.stat();if(!r.isFile())throw new W(`not-file`,`not a file`);if(t?.rejectHardlinks&&r.nlink>1)throw new W(`invalid-path`,`hardlinked path not allowed`);if(t?.allowSymlinkTargetWithinRoot){if(!D(r,await N.stat(e)))throw new W(`path-mismatch`,`path changed during read`)}else{let t=await N.lstat(e);if(t.isSymbolicLink())throw new W(`symlink`,`symlink not allowed`);if(!D(r,t))throw new W(`path-mismatch`,`path changed during read`)}let i=await rn(n,e),a=await N.stat(i);if(t?.rejectHardlinks&&a.nlink>1)throw new W(`invalid-path`,`hardlinked path not allowed`);if(!D(r,a))throw new W(`path-mismatch`,`path mismatch`);return{handle:n,realPath:i,stat:r}}catch(e){throw await n.close().catch(()=>{}),e instanceof W?e:O(e)?new W(`not-found`,`file not found`):e}}async function en(e){let t=await tn({filePath:e.filePath});try{return await nn({opened:t,maxBytes:e.maxBytes})}finally{await t.handle.close().catch(()=>{})}}async function tn(e){return await $t(e.filePath)}async function nn(e){if(e.maxBytes!==void 0&&e.opened.stat.size>e.maxBytes)throw new W(`too-large`,`file exceeds limit of ${e.maxBytes} bytes (got ${e.opened.stat.size})`);return{buffer:await e.opened.handle.readFile(),realPath:e.opened.realPath,stat:e.opened.stat}}async function rn(e,t){let n=await e.stat(),r=process.platform===`linux`?[`/proc/self/fd/${e.fd}`,`/dev/fd/${e.fd}`]:process.platform===`win32`?[]:[`/dev/fd/${e.fd}`];for(let e of r)try{let t=await N.realpath(e);if(D(n,await N.stat(t)))return t}catch{}try{let e=await N.realpath(t);if(D(n,await N.stat(e)))return e}catch(e){if(!O(e))throw e}let i=await an(n,t);if(i)return i;throw new W(`path-mismatch`,`unable to resolve opened file path`)}async function an(e,t){let n;try{n=await N.realpath(M.dirname(t))}catch(e){if(O(e))return null;throw e}let r;try{r=await N.readdir(n)}catch(e){if(O(e))return null;throw e}for(let t of r.toSorted()){let r=M.join(n,t);try{let t=await N.lstat(r);if(t.isFile()&&D(e,t))return await N.realpath(r)}catch(e){if(!O(e))throw e}}return null}function on(e){return/^[a-zA-Z]:[\\/]/.test(e)}const sn=/%(?:2f|5c)/i;function cn(e){let n=t(e);return n===``||n===`localhost`}function ln(e){return sn.test(e)}function un(e){if(process.platform!==`win32`)return!1;let t=e.replace(/\//g,`\\`);return t.startsWith(`\\\\?\\UNC\\`)||t.startsWith(`\\\\`)}function dn(e,t=`Path`){if(un(e))throw Error(`${t} cannot use Windows network paths: ${e}`)}function fn(e){let t;try{t=new De(e)}catch{throw Error(`Invalid file:// URL: ${e}`)}if(t.protocol!==`file:`)throw Error(`Invalid file:// URL: ${e}`);if(!cn(t.hostname))throw Error(`file:// URLs with remote hosts are not allowed: ${e}`);if(ln(t.pathname))throw Error(`file:// URLs cannot encode path separators: ${e}`);let n=Oe(t);return dn(n,`Local file URL`),n}const pn=/^https?:\/\//i,mn=/^mxc:\/\//i;function hn(e){let t=e?.trim()??``;return!!t&&(pn.test(t)||mn.test(t))}const gn=/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;function _n(e){return e.replace(gn,` `)}function vn(e){return e.startsWith(`@`)?e.slice(1):e}function yn(e){let t=_n(vn(e));return t===`~`?ke.homedir():t.startsWith(`~/`)?ke.homedir()+t.slice(1):t}function bn(e,t){let n=yn(e);return on(n)?M.win32.normalize(n):M.isAbsolute(n)?n:M.resolve(t,n)}function xn(e,t){return bn(e,t)}function Sn(e,t){return!Array.isArray(t)||t.length===0?e:!Array.isArray(e)||e.length===0?Array.from(new Set([`*`,...t])):Array.from(new Set([...e,...t]))}function K(e){if(!e)return;let t=Array.isArray(e.allow)?Sn(e.allow,e.alsoAllow):Array.isArray(e.alsoAllow)&&e.alsoAllow.length>0?Sn(void 0,e.alsoAllow):void 0,n=Array.isArray(e.deny)?e.deny:void 0;if(!(!t&&!n))return{allow:t,deny:n}}function Cn(e){let t=u({raw:b(e.deny??[]),normalize:f}),n=u({raw:b(e.allow??[]),normalize:f});return e=>{let r=f(e);return g(r,t)||r===`apply_patch`&&g(`write`,t)?!1:!!(n.length===0||g(r,n)||r===`apply_patch`&&g(`write`,n))}}function wn(e,t){return t?Cn(t)(e):!0}function Tn(e,t){return t.every(t=>wn(e,t))}function En(e){let t=e.cfg,n=t?.tools?.fs;return{workspaceOnly:(t&&e.agentId?pe(t,e.agentId)?.tools?.fs:void 0)?.workspaceOnly??n?.workspaceOnly}}function Dn(e){return En(e).workspaceOnly===!0}function On(e){let t=e.cfg;if(!t)return!0;let n=e.agentId?pe(t,e.agentId)?.tools:void 0,r=t.tools,i=n?.profile??r?.profile,a=new Set(n?.alsoAllow??r?.alsoAllow??[]),o=En(e),s=n?.fs!==void 0||r?.fs!==void 0;return o.workspaceOnly===!0?!1:(s&&(a.add(`read`),a.add(`write`),a.add(`edit`)),Tn(`read`,[d(v(i),a.size>0?Array.from(a):void 0),K(r),K(n)]))}let kn;const An=/^data:/i,jn=/^[A-Za-z]:[\\/]/;function Mn(){return kn||=re(),kn}function Nn(e,t,n={}){let r=M.resolve(e),i=M.resolve(t),a=n.preferredTmpDir??Mn();return Array.from(new Set([a,M.join(i,`media`),M.join(r,`media`),M.join(r,`canvas`),M.join(r,`workspace`),M.join(r,`sandboxes`)]))}function Pn(t,r){let a=Nn(n(),i()),o=e(r);if(!o)return a;let s=k(t,o);if(!s)return a;let c=M.resolve(s);return a.includes(c)||a.push(c),a}function Fn(e){let t=e.trim();if(!(!t||hn(t)||An.test(t))){if(t.startsWith(`file://`))try{return fn(t)}catch{return}if(t.startsWith(`~`))return a(t);if(M.isAbsolute(t)||jn.test(t))return M.resolve(t)}}function In(e,t){let n=Array.from(new Set(e.map(e=>M.resolve(e))));for(let e of t??[]){let t=Fn(e);if(!t)continue;let r=M.dirname(t);if(r===M.parse(r).root)continue;let i=M.resolve(r);n.includes(i)||n.push(i)}return n}function Ln(e){let t=Pn(e.cfg,e.agentId);return Dn({cfg:e.cfg,agentId:e.agentId})||!On({cfg:e.cfg,agentId:e.agentId})?t:In(t,e.mediaSources)}function Rn(e,t){return M.normalize(xn(e,t))}function zn(e){let t=e?.trim();if(!t)return null;let n=t.startsWith(`~`)?a(t):t,r=M.resolve(n);return r===M.parse(r).root?null:r}function Bn(e){return zn(e)??process.cwd()}function q(e){let t=new Set,n=[];for(let r of e){let e=r?.trim();!e||t.has(e)||(t.add(e),n.push(e))}return n}function J(e){let t=e?.trim();if(!t)return[];let n=t.match(/^(.+):topic:([^:]+):sender:([^:]+)$/i);if(n){let[,e,r]=n;return q([t,`${e}:topic:${r}`,e])}let r=t.match(/^(.+):topic:([^:]+)$/i);if(r){let[,e,t]=r;return q([`${e}:topic:${t}`,e])}let i=t.match(/^(.+):sender:([^:]+)$/i);if(i){let[,e]=i;return q([t,e])}return[t]}function Vn(e){let n=(e??``).trim();if(!n)return{};let{baseSessionKey:r,threadId:i}=xe(n),a=i?r:n,o=Se(a);if(o){let e=/:(?:sender|thread|topic):/iu.test(o.rawId)?Ce({channel:o.channel,kind:o.kind,rawId:o.rawId}):null;return{channel:o.channel,groupIds:q([...J(o.rawId),e?.id,e?.baseConversationId,...e?.parentConversationCandidates??[]])}}let s=(a??n).split(`:`).filter(Boolean),c=s[0]===`agent`?s.slice(2):s;if(c[0]===`subagent`&&(c=c.slice(1)),c.length<3)return{};let[l,u,...d]=c;if(u!==`group`&&u!==`channel`)return{};let f=d.join(`:`).trim();return f?{channel:t(l),groupIds:J(f)}:{}}function Hn(e){if(!e.config)return;let t=Vn(e.sessionKey),n=Vn(e.spawnedBy),r=q([...J(e.groupId),...t.groupIds??[],...n.groupIds??[]]);if(r.length===0)return;let i=E(e.messageProvider??t.channel??n.channel);if(!i)return;let a;try{a=me(i)}catch{a=void 0}for(let t of r){let n=a?.groups?.resolveToolPolicy?.({cfg:e.config,groupId:t,groupChannel:e.groupChannel,groupSpace:e.groupSpace,accountId:e.accountId,senderId:e.senderId,senderName:e.senderName,senderUsername:e.senderUsername,senderE164:e.senderE164}),r=K(n);if(r)return r}return K(xt({cfg:e.config,channel:i,groupId:r[0],groupIdCandidates:r.slice(1),accountId:e.accountId,senderId:e.senderId,senderName:e.senderName,senderUsername:e.senderUsername,senderE164:e.senderE164}))}function Un(t){if(!On({cfg:t.cfg,agentId:t.agentId}))return!1;let n=Hn({config:t.cfg,sessionKey:t.sessionKey,messageProvider:t.messageProvider,groupId:t.groupId,groupChannel:t.groupChannel,groupSpace:t.groupSpace,accountId:t.accountId,senderId:e(t.requesterSenderId),senderName:e(t.requesterSenderName),senderUsername:e(t.requesterSenderUsername),senderE164:e(t.requesterSenderE164)});return!(n&&!Tn(`read`,[n]))}function Wn(e){if(!Un(e))return;let t=Bn(e.workspaceDir??(e.agentId?k(e.cfg,e.agentId):void 0));return async e=>(await en({filePath:Rn(e,t)})).buffer}function Gn(e){let t=Un(e),n=e.mediaAccess?.localRoots??(t?Ln({cfg:e.cfg,agentId:e.agentId,mediaSources:e.mediaSources}):Pn(e.cfg,e.agentId)),r=e.workspaceDir??e.mediaAccess?.workspaceDir??(e.agentId?k(e.cfg,e.agentId):void 0),i=e.mediaAccess?.readFile??e.mediaReadFile??(t?Wn({cfg:e.cfg,agentId:e.agentId,workspaceDir:r,sessionKey:e.sessionKey,messageProvider:e.messageProvider,groupId:e.groupId,groupChannel:e.groupChannel,groupSpace:e.groupSpace,accountId:e.accountId,requesterSenderId:e.requesterSenderId,requesterSenderName:e.requesterSenderName,requesterSenderUsername:e.requesterSenderUsername,requesterSenderE164:e.requesterSenderE164}):void 0);return{...n?.length?{localRoots:n}:{},...i?{readFile:i}:{},...r?{workspaceDir:r}:{}}}function Kn(e){let t=new Map,n=null;return async r=>{let i=_e();i!==n&&(t.clear(),n=i);let a=t.get(r);if(a)return a;let o=i?.channels.find(e=>e.plugin.id===r);if(!o)return;let s=e(o);return s&&t.set(r,s),s}}const qn=Kn(e=>e.plugin.outbound);async function Jn(e){return qn(e)}function Y(e){let t=e??n();return M.join(t,`delivery-queue`)}function Yn(e){return M.join(Y(e),`failed`)}function Xn(e,t){let n=Y(t);return{jsonPath:M.join(n,`${e}.json`),deliveredPath:M.join(n,`${e}.delivered`)}}function Zn(e){return e&&typeof e==`object`&&`code`in e?String(e.code):null}async function Qn(e){try{await A.promises.unlink(e)}catch{}}async function $n(e,t){let n=`${e}.${process.pid}.tmp`;await A.promises.writeFile(n,JSON.stringify(t,null,2),{encoding:`utf-8`,mode:384}),await A.promises.rename(n,e)}async function er(e){return JSON.parse(await A.promises.readFile(e,`utf-8`))}async function tr(e){let t=Y(e);return await A.promises.mkdir(t,{recursive:!0,mode:448}),await A.promises.mkdir(Yn(e),{recursive:!0,mode:448}),t}async function nr(e,t){let n=await tr(t),r=it();return await $n(M.join(n,`${r}.json`),{id:r,enqueuedAt:Date.now(),channel:e.channel,to:e.to,accountId:e.accountId,payloads:e.payloads,threadId:e.threadId,replyToId:e.replyToId,bestEffort:e.bestEffort,gifPlayback:e.gifPlayback,forceDocument:e.forceDocument,silent:e.silent,mirror:e.mirror,session:e.session,gatewayClientScopes:e.gatewayClientScopes,retryCount:0}),r}async function rr(e,t){let{jsonPath:n,deliveredPath:r}=Xn(e,t);try{await A.promises.rename(n,r)}catch(e){if(Zn(e)===`ENOENT`){await Qn(r);return}throw e}await Qn(r)}async function ir(e,t,n){let r=M.join(Y(n),`${e}.json`),i=await er(r);i.retryCount+=1,i.lastAttemptAt=Date.now(),i.lastError=t,await $n(r,i)}const X=new Set;function ar(e){return X.has(e)?!1:(X.add(e),!0)}function or(e){X.delete(e)}async function sr(e,t){if(!ar(e))return{status:`claimed-by-other-owner`};try{return{status:`claimed`,value:await t()}}finally{or(e)}}function Z(e){if(e?.aborted){let e=Error(`Operation aborted`);throw e.name=`AbortError`,e}}const Q=ne(`outbound/deliver`);let cr;async function lr(){return cr??=import(`./transcript.runtime-BqhvZZdl-B4E0TiX5.mjs`),await cr}let ur;async function dr(){return ur??=import(`./channel-bootstrap.runtime-BVclcGv1-CEZ0-JP9.mjs`),await ur}async function fr(e){let t=await Jn(e.channel);if(!t){let{bootstrapOutboundChannelPlugin:n}=await dr();n({channel:e.channel,cfg:e.cfg}),t=await Jn(e.channel)}let n=pr({...e,outbound:t});if(!n)throw Error(`Outbound not configured for channel: ${e.channel}`);return n}function pr(e){let t=e.outbound;if(!t?.sendText)return null;let n=mr(e),r=t.sendText,i=t.sendMedia,a=t.chunker??null,o=t.chunkerMode,s=e=>({...n,replyToId:e?.replyToId??n.replyToId,threadId:e?.threadId??n.threadId,audioAsVoice:e?.audioAsVoice});return{chunker:a,chunkerMode:o,textChunkLimit:t.textChunkLimit,supportsMedia:!!i,sanitizeText:t.sanitizeText?e=>t.sanitizeText({text:e.text??``,payload:e}):void 0,normalizePayload:t.normalizePayload?e=>t.normalizePayload({payload:e}):void 0,renderPresentation:t.renderPresentation?async e=>{let r=C(e.presentation);if(!r)return e;let i={...s({replyToId:e.replyToId??n.replyToId,threadId:n.threadId,audioAsVoice:e.audioAsVoice}),text:e.text??``,mediaUrl:e.mediaUrl,payload:e};return await t.renderPresentation({payload:e,presentation:r,ctx:i})}:void 0,pinDeliveredMessage:t.pinDeliveredMessage?async({target:n,messageId:r,pin:i})=>t.pinDeliveredMessage({cfg:e.cfg,target:n,messageId:r,pin:i}):void 0,shouldSkipPlainTextSanitization:t.shouldSkipPlainTextSanitization?e=>t.shouldSkipPlainTextSanitization({payload:e}):void 0,resolveEffectiveTextChunkLimit:t.resolveEffectiveTextChunkLimit?n=>t.resolveEffectiveTextChunkLimit({cfg:e.cfg,accountId:e.accountId??void 0,fallbackLimit:n}):void 0,sendPayload:t.sendPayload?async(e,n)=>t.sendPayload({...s(n),text:e.text??``,mediaUrl:e.mediaUrl,payload:e}):void 0,sendFormattedText:t.sendFormattedText?async(e,n)=>t.sendFormattedText({...s(n),text:e}):void 0,sendFormattedMedia:t.sendFormattedMedia?async(e,n,r)=>t.sendFormattedMedia({...s(r),text:e,mediaUrl:n}):void 0,sendText:async(e,t)=>r({...s(t),text:e}),buildTargetRef:t=>({channel:e.channel,to:e.to,accountId:e.accountId??void 0,threadId:t?.threadId??n.threadId}),sendMedia:async(e,t,n)=>i?i({...s(n),text:e,mediaUrl:t}):r({...s(n),text:e})}}function mr(e){return{cfg:e.cfg,to:e.to,accountId:e.accountId,replyToId:e.replyToId,threadId:e.threadId,identity:e.identity,gifPlayback:e.gifPlayback,forceDocument:e.forceDocument,deps:e.deps,silent:e.silent,mediaAccess:e.mediaAccess,mediaLocalRoots:e.mediaAccess?.localRoots,mediaReadFile:e.mediaAccess?.readFile,gatewayClientScopes:e.gatewayClientScopes}}const hr=e=>e instanceof Error&&e.name===`AbortError`;function gr(e){return e.flatMap(e=>e.parts.mediaUrls)}function _r(e){let t=typeof e.text==`string`?e.text:``;if(!t.trim()){if(!x({...e,text:t}))return null;if(t)return{...e,text:``}}return e}function vr(e,t){let n=[];for(let r of Gt(e)){let e=r;t.sanitizeText&&e.text&&(t.shouldSkipPlainTextSanitization?.(e)||(e={...e,text:t.sanitizeText(e)}));let i=t.normalizePayload?t.normalizePayload(e):e,a=i?_r(i):null;a&&n.push(a)}return n}function yr(e){return qt(e)}function br(e){let t=e.delivery?.pin;if(t===!0)return{enabled:!0};if(!t||typeof t!=`object`||Array.isArray(t)||!t.enabled)return;let n={enabled:!0};return t.notify===!0&&(n.notify=!0),t.required===!0&&(n.required=!0),n}async function $(e){let t=br(e.payload);if(t){if(!e.messageId){if(t.required)throw Error(`Delivery pin requested, but no delivered message id was returned.`);Q.warn(`Delivery pin requested, but no delivered message id was returned.`,{channel:e.target.channel,to:e.target.to});return}if(!e.handler.pinDeliveredMessage){if(t.required)throw Error(`Delivery pin is not supported by channel: ${e.target.channel}`);Q.warn(`Delivery pin requested, but channel does not support pinning delivered messages.`,{channel:e.target.channel,to:e.target.to});return}try{await e.handler.pinDeliveredMessage({target:e.target,messageId:e.messageId,pin:t})}catch(n){if(t.required)throw n;Q.warn(`Delivery pin requested, but channel failed to pin delivered message.`,{channel:e.target.channel,to:e.target.to,messageId:e.messageId,error:T(n)})}}}async function xr(e,t){let n=C(t.presentation);if(!n)return t;let r=e.renderPresentation?await e.renderPresentation(t):null;if(r){let{presentation:e,...t}=r;return t}let{presentation:i,...a}=t;return{...a,text:l({text:t.text,presentation:n})}}function Sr(e){let t=e.hookRunner?.hasHooks(`message_sent`)??!1,n=!!e.sessionKeyForInternalHooks;return{emitMessageSent:r=>{if(!t&&!n)return;let i=et({to:e.to,content:r.content,success:r.success,error:r.error,channelId:e.channel,accountId:e.accountId??void 0,conversationId:e.to,messageId:r.messageId,isGroup:e.mirrorIsGroup,groupId:e.mirrorGroupId});t&&$e(e.hookRunner.runMessageSent(nt(i),tt(i)),`deliverOutboundPayloads: message_sent plugin hook failed`,e=>{Q.warn(e)}),n&&$e(be(ve(`message`,`sent`,e.sessionKeyForInternalHooks,rt(i))),`deliverOutboundPayloads: message:sent internal hook failed`,e=>{Q.warn(e)})},hasMessageSentHooks:t}}async function Cr(e){if(!e.enabled)return{cancelled:!1,payload:e.payload,payloadSummary:e.payloadSummary};try{let t=await e.hookRunner.runMessageSending({to:e.to,content:e.payloadSummary.text,replyToId:e.payload.replyToId??e.replyToId??void 0,threadId:e.threadId??void 0,metadata:{channel:e.channel,accountId:e.accountId,mediaUrls:e.payloadSummary.mediaUrls}},{channelId:e.channel,accountId:e.accountId??void 0,conversationId:e.to});return t?.cancel?{cancelled:!0,payload:e.payload,payloadSummary:e.payloadSummary}:t?.content==null?{cancelled:!1,payload:e.payload,payloadSummary:e.payloadSummary}:{cancelled:!1,payload:{...e.payload,text:t.content},payloadSummary:{...e.payloadSummary,text:t.content}}}catch{return{cancelled:!1,payload:e.payload,payloadSummary:e.payloadSummary}}}async function wr(e){let{channel:t,to:n,payloads:r}=e,i=e.skipQueue?null:await nr({channel:t,to:n,accountId:e.accountId,payloads:r,threadId:e.threadId,replyToId:e.replyToId,bestEffort:e.bestEffort,gifPlayback:e.gifPlayback,forceDocument:e.forceDocument,silent:e.silent,mirror:e.mirror,session:e.session,gatewayClientScopes:e.gatewayClientScopes}).catch(()=>null);if(!i)return await Tr(e,null);let a=await sr(i,()=>Tr(e,i));return a.status===`claimed-by-other-owner`?[]:a.value}async function Tr(e,t){let n=!1,r=e.onError?{...e,onError:(t,r)=>{n=!0,e.onError(t,r)}}:e;try{let e=await Er(r);return t&&(n?await ir(t,`partial delivery failure (bestEffort)`).catch(()=>{}):await rr(t).catch(()=>{})),e}catch(e){throw t&&(hr(e)?await rr(t).catch(()=>{}):await ir(t,T(e)).catch(()=>{})),e}}async function Er(e){let{cfg:t,channel:n,to:r,payloads:i}=e,a=Wt(i,{cfg:t,sessionKey:e.session?.policyKey??e.session?.key,surface:n}),o=e.accountId,s=e.deps,c=e.abortSignal,l=gr(a),u=l.length>0?Gn({cfg:t,agentId:e.session?.agentId??e.mirror?.agentId,mediaSources:l,sessionKey:e.session?.key,messageProvider:e.session?.key?void 0:n,accountId:e.session?.requesterAccountId??o,requesterSenderId:e.session?.requesterSenderId,requesterSenderName:e.session?.requesterSenderName,requesterSenderUsername:e.session?.requesterSenderUsername,requesterSenderE164:e.session?.requesterSenderE164}):{},d=[],f=await fr({cfg:t,channel:n,to:r,deps:s,accountId:o,replyToId:e.replyToId,threadId:e.threadId,identity:e.identity,gifPlayback:e.gifPlayback,forceDocument:e.forceDocument,silent:e.silent,mediaAccess:u,gatewayClientScopes:e.gatewayClientScopes}),p=f.chunker?Be(t,n,o,{fallbackLimit:f.textChunkLimit}):void 0,m=f.resolveEffectiveTextChunkLimit?f.resolveEffectiveTextChunkLimit(p):p,h=f.chunker?He(t,n,o):`length`,g=async(e,t)=>{if(Z(c),!f.chunker||m===void 0){d.push(await f.sendText(e,t));return}if(h===`newline`){let n=(f.chunkerMode??`text`)===`markdown`?We(e,m,`newline`):Ue(e,m);!n.length&&e&&n.push(e);for(let e of n){let n=f.chunker(e,m);!n.length&&e&&n.push(e);for(let e of n)Z(c),d.push(await f.sendText(e,t))}return}let n=f.chunker(e,m);for(let e of n)Z(c),d.push(await f.sendText(e,t))},_=vr(a,f),v=ye(),y=e.mirror?.sessionKey??e.session?.key,ee=e.mirror?.isGroup,b=e.mirror?.groupId,{emitMessageSent:S,hasMessageSentHooks:te}=Sr({hookRunner:v,channel:n,to:r,accountId:o,sessionKeyForInternalHooks:y,mirrorIsGroup:ee,mirrorGroupId:b}),C=v?.hasHooks(`message_sending`)??!1;te&&e.session?.agentId&&!y&&Q.warn(`deliverOutboundPayloads: session.agentId present without session key; internal message:sent hook will be skipped`,{channel:n,to:r,agentId:e.session.agentId});for(let t of _){let i=yr(t);try{Z(c);let a=await Cr({hookRunner:v,enabled:C,payload:t,payloadSummary:i,to:r,channel:n,accountId:o,replyToId:e.replyToId,threadId:e.threadId});if(a.cancelled)continue;let s=await xr(f,a.payload);i=yr(s),e.onPayload?.(i);let l={replyToId:s.replyToId??e.replyToId??void 0,threadId:e.threadId??void 0,audioAsVoice:s.audioAsVoice===!0?!0:void 0,forceDocument:e.forceDocument},u=f.buildTargetRef({threadId:l.threadId});if(f.sendPayload&&x({presentation:s.presentation,interactive:s.interactive,channelData:s.channelData})){let e=await f.sendPayload(s,l);d.push(e),await $({handler:f,payload:s,target:u,messageId:e.messageId}),S({success:!0,content:i.text,messageId:e.messageId});continue}if(i.mediaUrls.length===0){let e=d.length;f.sendFormattedText?d.push(...await f.sendFormattedText(i.text,l)):await g(i.text,l);let t=d.slice(e),n=d.at(-1)?.messageId,r=t.find(e=>e.messageId)?.messageId;await $({handler:f,payload:s,target:u,messageId:r}),S({success:d.length>e,content:i.text,messageId:n});continue}if(!f.supportsMedia){Q.warn(`Plugin outbound adapter does not implement sendMedia; media URLs will be dropped and text fallback will be used`,{channel:n,to:r,mediaCount:i.mediaUrls.length});let e=i.text.trim();if(!e)throw Error(`Plugin outbound adapter does not implement sendMedia and no text fallback is available for media payload`);let t=d.length;await g(e,l);let a=d.slice(t),o=d.at(-1)?.messageId,c=a.find(e=>e.messageId)?.messageId;await $({handler:f,payload:s,target:u,messageId:c}),S({success:d.length>t,content:i.text,messageId:o});continue}let p,m;await Qe({mediaUrls:i.mediaUrls,caption:i.text,send:async({mediaUrl:e,caption:t})=>{if(Z(c),f.sendFormattedMedia){let n=await f.sendFormattedMedia(t??``,e,l);d.push(n),p??=n.messageId,m=n.messageId;return}let n=await f.sendMedia(t??``,e,l);d.push(n),p??=n.messageId,m=n.messageId}}),await $({handler:f,payload:s,target:u,messageId:p}),S({success:!0,content:i.text,messageId:m})}catch(t){if(S({success:!1,content:i.text,error:T(t)}),!e.bestEffort)throw t;e.onError?.(t,i)}}if(e.mirror&&d.length>0){let t=we({text:e.mirror.text,mediaUrls:e.mirror.mediaUrls});if(t){let{appendAssistantMessageToSessionTranscript:n}=await lr();await n({agentId:e.mirror.agentId,sessionKey:e.mirror.sessionKey,text:t,idempotencyKey:e.mirror.idempotencyKey})}}return d}function Dr(e){let t=E(e);if(!(!t||!ie(t)))return t}function Or(e){Ee(e)}function kr(e){let t=ge();if(t)for(let n of t.channels){let t=n?.plugin;if(t?.id===e)return t}}function Ar(e){let t=Dr(e.channel);if(!t)return;let n=()=>me(t);return n()||kr(t)||(Or({channel:t,cfg:e.cfg}),n()??kr(t)??fe(t))}const jr=()=>se();function Mr(e){return jr().includes(e)}function Nr(e){let t=E(e);if(t&&ie(t)&&Mr(t))return t}function Pr(e){let t=Nr(e.value);if(t)return Ar({channel:t,cfg:e.cfg})?t:void 0}function Fr(e){return!e||typeof e!=`object`?!0:e.enabled!==!1}const Ir=new Set;function Lr(e){let t=T(e.error),n=`${e.pluginId}:${e.accountId}:${e.operation}:${t}`;Ir.has(n)||(Ir.add(n),ce.error?.(`[channel-selection] ${e.pluginId}(${e.accountId}) ${e.operation} failed: ${t}`))}async function Rr(e,t){let n=e.config.listAccountIds(t);if(n.length===0)return!1;for(let r of n){let n;try{n=e.config.resolveAccount(t,r)}catch(t){Lr({pluginId:e.id,accountId:r,operation:`resolveAccount`,error:t});continue}if(!(e.config.isEnabled?e.config.isEnabled(n,t):Fr(n)))continue;if(!e.config.isConfigured)return!0;let i=!1;try{i=await e.config.isConfigured(n,t)}catch(t){Lr({pluginId:e.id,accountId:r,operation:`isConfigured`,error:t});continue}if(i)return!0}return!1}async function zr(e){let t=[];for(let n of de())Mr(n.id)&&await Rr(n,e)&&t.push(n.id);return t}async function Br(e){let t=E(e.channel);if(t){let n=Pr({cfg:e.cfg,value:t});if(!n){let n=Pr({cfg:e.cfg,value:e.fallbackChannel});if(n)return{channel:n,configured:[],source:`tool-context-fallback`};throw Mr(t)?Error(`Channel is unavailable: ${t}`):Error(`Unknown channel: ${t}`)}return{channel:n,configured:[],source:`explicit`}}let n=Pr({cfg:e.cfg,value:e.fallbackChannel});if(n)return{channel:n,configured:[],source:`tool-context-fallback`};let r=await zr(e.cfg);if(r.length===1)return{channel:r[0],configured:r,source:`single-configured`};throw r.length===0?Error(`Channel is required (no configured channels detected).`):Error(`Channel is required when multiple channels are configured: ${r.join(`, `)}`)}function Vr(e,t){return`Delivering to ${e} requires target${Ur(t)}`}function Hr(e,t){return Error(Vr(e,t))}function Ur(e,t=!1){let n=e?.trim();return n?t?` Hint: ${n}`:` ${n}`:``}function Wr(e){return(e??[]).map(e=>String(e))}function Gr(){return Error(`Delivering to WebChat is not supported via \`${Te(`openclaw agent`)}\`; use WhatsApp/Telegram or run with --deliver=false.`)}function Kr(e){if(e.target.channel===`webchat`)return{ok:!1,error:Gr()};let t=e.plugin;if(!t)return e.onMissingPlugin?.();let n=e.target.allowFrom??(e.target.cfg&&t.config.resolveAllowFrom?t.config.resolveAllowFrom({cfg:e.target.cfg,accountId:e.target.accountId??void 0}):void 0),r=n?Wr(n):void 0,i=e.target.to?.trim()||(e.target.cfg&&t.config.resolveDefaultTo?t.config.resolveDefaultTo({cfg:e.target.cfg,accountId:e.target.accountId??void 0}):void 0),a=t.outbound?.resolveTarget;if(a)return a({cfg:e.target.cfg,to:i,allowFrom:r,accountId:e.target.accountId??void 0,mode:e.target.mode??`explicit`});if(i)return{ok:!0,to:i};let o=t.messaging?.targetResolver?.hint;return{ok:!1,error:Hr(t.meta.label??e.target.channel,o)}}function qr(e){return Kr({plugin:Ar({channel:e.channel,cfg:e.cfg}),target:e,onMissingPlugin:()=>e.channel===`webchat`?void 0:{ok:!1,error:Error(`Unsupported channel: ${e.channel}`)}})??{ok:!1,error:Error(`Unsupported channel: ${e.channel}`)}}let Jr=null,Yr=null;function Xr(){return Jr??=import(`./message.config.runtime-K-k4XOyq-F_h0Cgkl.mjs`),Jr}function Zr(){return Yr??=import(`./message.gateway.runtime-DqHOHRTQ-ge4c5p4s.mjs`),Yr}async function Qr(e){return(await Br({cfg:e.cfg,channel:e.channel})).channel}function $r(e,t){let n=Ar({channel:e,cfg:t});if(!n)throw Error(`Unknown channel: ${e}`);return n}function ei(e){return{url:e?.mode===ae.BACKEND||e?.clientName===oe.GATEWAY_CLIENT?void 0:e?.url,token:e?.token,timeoutMs:typeof e?.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?Math.max(1,Math.floor(e.timeoutMs)):1e4,clientName:e?.clientName??oe.CLI,clientDisplayName:e?.clientDisplayName,mode:e?.mode??ae.CLI}}async function ti(e){let{callGatewayLeastPrivilege:t}=await Zr(),n=ei(e.gateway);return await t({url:n.url,token:n.token,method:e.method,params:e.params,timeoutMs:n.timeoutMs,clientName:n.clientName,clientDisplayName:n.clientDisplayName,mode:n.mode})}async function ni(e){if(e)return e;let{loadConfig:t}=await Xr();return t()}async function ri(e){if(e)return e;let{randomIdempotencyKey:t}=await Zr();return t()}async function ii(e){let t=await ni(e.cfg),n=await Qr({cfg:t,channel:e.channel}),r=$r(n,t).outbound?.deliveryMode??`direct`,i=Wt([{text:e.content,mediaUrl:e.mediaUrl,mediaUrls:e.mediaUrls}]),a=Gt(i),o=Kt(i),s=o.text,c=o.mediaUrls,l=c[0]??e.mediaUrl??null;if(e.dryRun)return{channel:n,to:e.to,via:r===`gateway`?`gateway`:`direct`,mediaUrl:l,mediaUrls:c.length?c:void 0,dryRun:!0};if(r!==`gateway`){let r=n,i=qr({channel:r,to:e.to,cfg:t,accountId:e.accountId,mode:`explicit`});if(!i.ok)throw i.error;let o=ee({cfg:t,agentId:e.agentId,sessionKey:e.requesterSessionKey??e.mirror?.sessionKey,requesterAccountId:e.requesterAccountId??e.accountId,requesterSenderId:e.requesterSenderId,requesterSenderName:e.requesterSenderName,requesterSenderUsername:e.requesterSenderUsername,requesterSenderE164:e.requesterSenderE164}),u=await wr({cfg:t,channel:r,to:i.to,session:o,accountId:e.accountId,payloads:a,replyToId:e.replyToId,threadId:e.threadId,gifPlayback:e.gifPlayback,forceDocument:e.forceDocument,deps:e.deps,bestEffort:e.bestEffort,abortSignal:e.abortSignal,silent:e.silent,mirror:e.mirror?{...e.mirror,text:s||e.content,mediaUrls:c.length?c:void 0,idempotencyKey:e.mirror.idempotencyKey??e.idempotencyKey}:void 0});return{channel:n,to:e.to,via:`direct`,mediaUrl:l,mediaUrls:c.length?c:void 0,result:u.at(-1)}}let u=await ti({gateway:e.gateway,method:`send`,params:{to:e.to,message:e.content,mediaUrl:e.mediaUrl,mediaUrls:c.length?c:e.mediaUrls,gifPlayback:e.gifPlayback,accountId:e.accountId,agentId:e.agentId,channel:n,replyToId:e.replyToId,sessionKey:e.mirror?.sessionKey,idempotencyKey:await ri(e.idempotencyKey)}});return{channel:n,to:e.to,via:`gateway`,mediaUrl:l,mediaUrls:c.length?c:void 0,result:u}}export{Bt as n,It as r,ii as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./task-registry-delivery-runtime-Dd1CUkZF-B2Hj2k8C.mjs";export{e as sendMessage};
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,5 @@
1
+ import{c as e,o as t,s as n,u as r}from"./home-dir-C44RaPME-B5iLWwCq.mjs";import{t as i}from"./bundled-dir-U738ay4K-BxbzrJOo.mjs";import{O as a,a as o,n as s}from"./io-CH2g3vsv-JJtUIa_U.mjs";import{Mt as c,St as l,zt as u}from"./bundled-compat-BpaDaAAu-DJtrIX6i.mjs";import"./message-channel-Bk_YHfQg-n2Hw2Y0L.mjs";import{r as d,t as f}from"./jiti-loader-cache-Bat69wam-DNIteTtO.mjs";import{C as p,t as m,x as h}from"./runtime-snapshot-C54O1-gI-DxusscPf.mjs";import{n as g}from"./runtime-Cym-fqI8-1GOIuRRQ.mjs";import{c as _}from"./session-key-Cn2QoOyX-QZeYmbxd.mjs";import"./config-Bim2pi8a-03N-28sw.mjs";import{c as v,n as y,s as b,t as x}from"./paths-D6msg0S1-BO4XgM1u.mjs";import{n as S,r as ee,t as te}from"./process-scoped-map-B2cWkYET-Co-i-MXA.mjs";import{i as ne}from"./delivery-context.shared-j5hC5qb1-BSLQG47q.mjs";import{a as re,i as ie,n as ae,o as oe,r as se}from"./facade-loader-DFzIYYt_-4bzFvy-b.mjs";import{i as ce}from"./dist-J5UB83Ws.mjs";import{createRequire as le}from"node:module";import C from"node:fs";import w from"node:path";import{fileURLToPath as T}from"node:url";import E from"node:fs/promises";import{randomUUID as ue}from"node:crypto";function de(t){let n=e(t.model),r=e(t.modelProvider),i=t;return n?(t.model!==n&&(i===t&&(i={...i}),i.model=n),r?(t.modelProvider!==r&&(i===t&&(i={...i}),i.modelProvider=r),i):(t.modelProvider!==void 0&&(i===t&&(i={...i}),delete i.modelProvider),i)):((t.model!==void 0||t.modelProvider!==void 0)&&(i={...i},delete i.model,delete i.modelProvider),i)}function D(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0}const fe=[`SIGINT`,`SIGTERM`,`SIGQUIT`,`SIGABRT`],O=Symbol.for(`openclaw.sessionWriteLockCleanupState`),pe=Symbol.for(`openclaw.sessionWriteLockHeldLocks`),k=Symbol.for(`openclaw.sessionWriteLockWatchdogState`),me=300*1e3,he=6e4,ge=2147e6,A=te(pe);function _e(){let e=process;return e[O]||(e[O]={registered:!1,exitHandler:void 0,cleanupHandlers:new Map}),e[O]}function ve(){let e=process;return e[k]||(e[k]={started:!1,intervalMs:he}),e[k]}function j(e,t,n={}){return typeof e!=`number`||Number.isNaN(e)||e<=0?t:e===1/0?n.allowInfinity?e:t:Number.isFinite(e)?e:t}function ye(e){let t=j(e.minMs,me),n=j(e.timeoutMs,t,{allowInfinity:!0});if(n===1/0)return ge;let r=j(e.graceMs,12e4);return Math.min(ge,Math.max(t,n+r))}async function M(e,t,n={}){if(A.get(e)!==t)return!1;if(n.force)t.count=0;else if(--t.count,t.count>0)return!1;if(t.releasePromise)return await t.releasePromise.catch(()=>void 0),!0;A.delete(e),t.releasePromise=(async()=>{try{await t.handle.close()}catch{}try{await E.rm(t.lockPath,{force:!0})}catch{}})();try{return await t.releasePromise,!0}finally{t.releasePromise=void 0,A.size===0&&Se()}}function be(){for(let[e,t]of A){t.handle.close().catch(()=>void 0);try{C.rmSync(t.lockPath,{force:!0})}catch{}A.delete(e)}A.size===0&&Se()}async function xe(e=Date.now()){let t=0;for(let[n,r]of A.entries()){let i=e-r.acquiredAt;i<=r.maxHoldMs||(process.stderr.write(`[session-write-lock] releasing lock held for ${i}ms (max=${r.maxHoldMs}ms): ${r.lockPath}\n`),await M(n,r,{force:!0})&&(t+=1))}return t}function Se(){let e=ve();e.timer&&=(clearInterval(e.timer),void 0),e.started=!1}function Ce(){return process.env.VITEST!==`true`||process.env.OPENCLAW_TEST_SESSION_LOCK_WATCHDOG===`1`}function we(e){if(!Ce())return;let t=ve();t.started||(t.started=!0,t.intervalMs=e,t.timer=setInterval(()=>{xe().catch(()=>{})},e),t.timer.unref?.())}function Te(e){be();let t=_e();if(process.listenerCount(e)===1){let n=t.cleanupHandlers.get(e);n&&(process.off(e,n),t.cleanupHandlers.delete(e));try{process.kill(process.pid,e)}catch{}}}function Ee(){let e=_e();e.registered=!0,e.exitHandler||(e.exitHandler=()=>{be()},process.on(`exit`,e.exitHandler)),we(he);for(let t of fe)if(!e.cleanupHandlers.has(t))try{let n=()=>Te(t);e.cleanupHandlers.set(t,n),process.on(t,n)}catch{}}async function De(e){try{let t=await E.readFile(e,`utf8`),n=JSON.parse(t),r={};return D(n.pid)&&n.pid>0&&(r.pid=n.pid),typeof n.createdAt==`string`&&(r.createdAt=n.createdAt),D(n.starttime)&&(r.starttime=n.starttime),r}catch{return null}}function Oe(e,t,n){let r=D(e?.pid)&&e.pid>0?e.pid:null,i=r===null?!1:ee(r),a=typeof e?.createdAt==`string`?e.createdAt:null,o=a?Date.parse(a):NaN,s=Number.isFinite(o)?Math.max(0,n-o):null,c=D(e?.starttime)?e.starttime:null,l=i&&r!==null&&c!==null?(()=>{let e=S(r);return e!==null&&e!==c})():!1,u=[];return r===null?u.push(`missing-pid`):i?l&&u.push(`recycled-pid`):u.push(`dead-pid`),s===null?u.push(`invalid-createdAt`):s>t&&u.push(`too-old`),{pid:r,pidAlive:i,createdAt:a,ageMs:s,stale:u.length>0,staleReasons:u}}function ke(e){return e.stale&&e.staleReasons.every(e=>e===`missing-pid`||e===`invalid-createdAt`)}async function Ae(e,t,n,r){if(!t.stale)return!1;if(!ke(t))return!0;try{let t=await E.stat(e);return Math.max(0,r-t.mtimeMs)>n}catch(e){return e?.code!==`ENOENT`}}function je(e){return(D(e.payload?.pid)?e.payload.pid:null)!==process.pid||D(e.payload?.starttime)?!1:!A.has(e.normalizedSessionFile)}async function Me(e){Ee();let t=e.allowReentrant??!1,n=j(e.timeoutMs,1e4,{allowInfinity:!0}),r=j(e.staleMs,18e5),i=j(e.maxHoldMs,me),a=w.resolve(e.sessionFile),o=w.dirname(a);await E.mkdir(o,{recursive:!0});let s=o;try{s=await E.realpath(o)}catch{}let c=w.join(s,w.basename(a)),l=`${c}.lock`,u=A.get(c);if(t&&u)return u.count+=1,{release:async()=>{await M(c,u)}};let d=Date.now(),f=0;for(;Date.now()-d<n;){f+=1;let e=null;try{e=await E.open(l,`wx`);let t=new Date().toISOString(),n=S(process.pid),r={pid:process.pid,createdAt:t};n!==null&&(r.starttime=n),await e.writeFile(JSON.stringify(r,null,2),`utf8`);let a={count:1,handle:e,lockPath:l,acquiredAt:Date.now(),maxHoldMs:i};return A.set(c,a),{release:async()=>{await M(c,a)}}}catch(t){if(e){try{await e.close()}catch{}try{await E.rm(l,{force:!0})}catch{}}if(t.code!==`EEXIST`)throw t;let i=await De(l),a=Date.now(),o=Oe(i,r,a);if(await Ae(l,je({payload:i,normalizedSessionFile:c})?{...o,stale:!0,staleReasons:o.staleReasons.includes(`orphan-self-pid`)?o.staleReasons:[...o.staleReasons,`orphan-self-pid`]}:o,r,a)){await E.rm(l,{force:!0});continue}let s=n-(Date.now()-d);if(s<=0)break;let u=Math.min(1e3,50*f,s);await new Promise(e=>setTimeout(e,u))}}let p=await De(l),m=typeof p?.pid==`number`?`pid=${p.pid}`:`unknown`;throw Error(`session file locked (timeout ${n}ms): ${m} ${l}`)}[...fe];function Ne(e){return e instanceof Error?e.code:void 0}async function Pe(e,t,n){try{await E.rename(e,t);return}catch(e){let t=Ne(e);if(process.platform!==`win32`||t!==`EPERM`&&t!==`EEXIST`)throw e}await E.copyFile(e,t);try{await E.chmod(t,n)}catch{}await E.rm(e,{force:!0}).catch(()=>void 0)}async function Fe(e,t,n){let r=n?.mode??384,i=n?.appendTrailingNewline&&!t.endsWith(`
2
+ `)?`${t}\n`:t,a={recursive:!0};typeof n?.ensureDirMode==`number`&&(a.mode=n.ensureDirMode),await E.mkdir(w.dirname(e),a);let o=w.dirname(e),s=`${e}.${ue()}.tmp`;try{let t=await E.open(s,`w`,r);try{await t.writeFile(i,{encoding:`utf8`}),await t.sync()}finally{await t.close().catch(()=>void 0)}try{await E.chmod(s,r)}catch{}await Pe(s,e,r);try{let e=await E.open(o,`r`);try{await e.sync()}finally{await e.close().catch(()=>void 0)}}catch{}try{await E.chmod(e,r)}catch{}}finally{await E.rm(s,{force:!0}).catch(()=>void 0)}}function Ie(e){return e.trim()||void 0}function Le(e){if(typeof e==`number`)return Number.isSafeInteger(e)?e:void 0;if(typeof e!=`string`)return;let t=Ie(e);if(!t||!/^[+-]?\d+$/.test(t))return;let n=Number(t);return Number.isSafeInteger(n)?n:void 0}function Re(e){let t=Le(e);return t!==void 0&&t>=0?t:void 0}function ze(e){let{envValue:t,defaultTtlMs:n}=e;if(t){let e=Re(t);if(e!==void 0)return e}return n}function N(e){return e>0}function Be(e){return typeof e==`function`?e():e}function Ve(e,t){return typeof t==`function`?Math.max(0,Math.floor(t(e))):typeof t==`number`?Math.max(0,Math.floor(t)):e}function P(e,t,n){return t-e>n}function He(e){let t=new Map,n=e.clock??Date.now,r=0;function i(){return Math.max(0,Math.floor(Be(e.ttlMs)))}function a(n,i){if(N(i)&&!(n-r<Ve(i,e.pruneIntervalMs))){for(let[e,r]of t.entries())P(r.storedAt,n,i)&&t.delete(e);r=n}}return{get:e=>{let r=i();if(!N(r))return;let o=n();a(o,r);let s=t.get(e);if(s){if(P(s.storedAt,o,r)){t.delete(e);return}return s.value}},set:(e,r)=>{let o=i();if(!N(o))return;let s=n();a(s,o),t.set(e,{storedAt:s,value:r})},delete:e=>{t.delete(e)},clear:()=>{t.clear(),r=0},keys:()=>[...t.keys()],size:()=>t.size,pruneExpired:()=>{let e=i();if(!N(e))return;let a=n();for(let[n,r]of t.entries())P(r.storedAt,a,e)&&t.delete(n);r=a}}}function F(e){try{let t=C.statSync(e);return{mtimeMs:t.mtimeMs,sizeBytes:t.size}}catch{return}}const I=He({ttlMs:Ue}),L=new Map;function Ue(){return ze({envValue:process.env.OPENCLAW_SESSION_CACHE_TTL_MS,defaultTtlMs:45e3})}function R(){return N(Ue())}function We(e){I.delete(e),L.delete(e)}function Ge(e){return L.get(e)}function z(e,t){if(t===void 0){L.delete(e);return}L.set(e,t)}function Ke(e){I.delete(e)}function qe(e){let t=I.get(e.storePath);return t?e.mtimeMs!==t.mtimeMs||e.sizeBytes!==t.sizeBytes?(We(e.storePath),null):structuredClone(t.store):null}function Je(e){I.set(e.storePath,{store:structuredClone(e.store),mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes,serialized:e.serialized}),e.serialized!==void 0&&L.set(e.storePath,e.serialized)}const B=l(`sessions/store`),Ye=720*60*60*1e3,Xe=10485760;function Ze(e){let t=r(e?.pruneAfter??e?.pruneDays);if(!t)return Ye;try{return a(t,{defaultUnit:`d`})}catch{return Ye}}function Qe(e){let t=e?.rotateBytes,n=r(t);if(!n)return Xe;try{return o(n,{defaultUnit:`b`})}catch{return Xe}}function $e(e,t){let n=e?.resetArchiveRetention;if(n===!1)return null;let i=r(n);if(!i)return t;try{return a(i,{defaultUnit:`d`})}catch{return t}}function et(e){let t=e?.maxDiskBytes,n=r(t);if(!n)return null;try{return o(n,{defaultUnit:`b`})}catch{return null}}function tt(e,t){let n=()=>t==null?null:t<=0?0:Math.max(1,Math.min(t,Math.floor(t*.8)));if(t==null)return null;let i=e?.highWaterBytes,a=r(i);if(!a)return n();try{let e=o(a,{defaultUnit:`b`});return Math.min(e,t)}catch{return n()}}function V(e){let t=Ze(e),n=et(e);return{mode:e?.mode??`enforce`,pruneAfterMs:t,maxEntries:e?.maxEntries??500,rotateBytes:Qe(e),resetArchiveRetentionMs:$e(e,t),maxDiskBytes:n,highWaterBytes:tt(e,n)}}function nt(e,t,n={}){let r=t??V().pruneAfterMs,i=Date.now()-r,a=0;for(let[t,r]of Object.entries(e))n.preserveKeys?.has(t)||r?.updatedAt!=null&&r.updatedAt<i&&(n.onPruned?.({key:t,entry:r}),delete e[t],a++);return a>0&&n.log!==!1&&B.info(`pruned stale session entries`,{pruned:a,maxAgeMs:r}),a}function H(e){return e?.updatedAt??-1/0}function rt(e){let t=e.activeSessionKey.trim();if(!t)return null;let n=e.store[t];if(!n)return null;let r=(e.nowMs??Date.now())-e.pruneAfterMs,i=n.updatedAt==null?!1:n.updatedAt<r,a=Object.keys(e.store),o=it({store:e.store,keys:a,activeEntry:n,activeSessionKey:t,maxEntries:e.maxEntries});return!i&&!o?null:{activeSessionKey:t,activeUpdatedAt:n.updatedAt,totalEntries:a.length,pruneAfterMs:e.pruneAfterMs,maxEntries:e.maxEntries,wouldPrune:i,wouldCap:o}}function it(e){if(e.keys.length<=e.maxEntries)return!1;if(e.maxEntries<=0)return!0;let t=H(e.activeEntry),n=0,r=!1;for(let i of e.keys){if(i===e.activeSessionKey){r=!0;continue}let a=H(e.store[i]);if((a>t||!r&&a===t)&&(n++,n>=e.maxEntries))return!0}return!1}function at(e,t,n={}){let r=t??V().maxEntries,i=n.preserveKeys?Object.keys(e).filter(e=>n.preserveKeys?.has(e)).length:0,a=Math.max(0,r-i),o=Object.keys(e).filter(e=>!n.preserveKeys?.has(e));if(o.length<=a)return 0;let s=o.toSorted((t,n)=>{let r=H(e[t]);return H(e[n])-r}).slice(a);for(let t of s){let r=e[t];r&&n.onCapped?.({key:t,entry:r}),delete e[t]}return n.log!==!1&&B.info(`capped session entry count`,{removed:s.length,maxEntries:r}),s.length}async function ot(e){try{return(await C.promises.stat(e)).size}catch{return null}}async function st(e,t){let n=t??V().rotateBytes,r=await ot(e);if(r==null||r<=n)return!1;let i=`${e}.bak.${Date.now()}`;try{await C.promises.rename(e,i),B.info(`rotated session store file`,{backupPath:w.basename(i),sizeBytes:r})}catch{return!1}try{let t=w.dirname(e),n=w.basename(e),r=(await C.promises.readdir(t)).filter(e=>e.startsWith(`${n}.bak.`)).toSorted().toReversed();if(r.length>3){let e=r.slice(3);for(let n of e)await C.promises.unlink(w.join(t,n)).catch(()=>void 0);B.info(`cleaned up old session store backups`,{deleted:e.length})}}catch{}return!0}function ct(e){for(let t of Object.values(e)){if(!t||typeof t!=`object`)continue;let e=t;typeof e.channel!=`string`&&typeof e.provider==`string`&&(e.channel=e.provider,delete e.provider),typeof e.lastChannel!=`string`&&typeof e.lastProvider==`string`&&(e.lastChannel=e.lastProvider,delete e.lastProvider),typeof e.groupChannel!=`string`&&typeof e.room==`string`?(e.groupChannel=e.room,delete e.room):`room`in e&&delete e.room}}const lt=l(`sessions/store`);function ut(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function dt(e){let t=ne({channel:e.channel,lastChannel:e.lastChannel,lastTo:e.lastTo,lastAccountId:e.lastAccountId,lastThreadId:e.lastThreadId??e.deliveryContext?.threadId??e.origin?.threadId,deliveryContext:e.deliveryContext}),n=t.deliveryContext,r=(e.deliveryContext?.channel??void 0)===n?.channel&&(e.deliveryContext?.to??void 0)===n?.to&&(e.deliveryContext?.accountId??void 0)===n?.accountId&&(e.deliveryContext?.threadId??void 0)===n?.threadId,i=e.lastChannel===t.lastChannel&&e.lastTo===t.lastTo&&e.lastAccountId===t.lastAccountId&&e.lastThreadId===t.lastThreadId;return r&&i?e:{...e,deliveryContext:n,lastChannel:t.lastChannel,lastTo:t.lastTo,lastAccountId:t.lastAccountId,lastThreadId:t.lastThreadId}}function ft(e){for(let[t,n]of Object.entries(e)){if(!n)continue;let r=dt(de(n));r!==n&&(e[t]=r)}}function U(e,t={}){if(!t.skipCache&&R()){let t=F(e),n=qe({storePath:e,mtimeMs:t?.mtimeMs,sizeBytes:t?.sizeBytes});if(n)return n}let n={},r=F(e),i=r?.mtimeMs,a,o=process.platform===`win32`?3:1,s=o>1?new Int32Array(new SharedArrayBuffer(4)):void 0;for(let t=0;t<o;t+=1)try{let c=C.readFileSync(e,`utf-8`);if(c.length===0&&t<o-1){Atomics.wait(s,0,0,50);continue}let l=JSON.parse(c);ut(l)&&(n=l,a=c),r=F(e)??r,i=r?.mtimeMs;break}catch{if(t<o-1){Atomics.wait(s,0,0,50);continue}}a===void 0?z(e,void 0):z(e,a),ct(n),ft(n);let c=t.maintenanceConfig??V();if(c.mode===`enforce`&&Object.keys(n).length>c.maxEntries){let t=Object.keys(n).length,r=nt(n,c.pruneAfterMs,{log:!1}),i=at(n,c.maxEntries,{log:!1}),o=Object.keys(n).length;(r>0||i>0)&&(a=void 0,z(e,void 0),lt.info(`applied load-time maintenance to oversized session store`,{storePath:e,before:t,after:o,pruned:r,capped:i,maxEntries:c.maxEntries}))}return!t.skipCache&&R()&&Je({storePath:e,store:n,mtimeMs:i,sizeBytes:r?.sizeBytes,serialized:a}),structuredClone(n)}const W=new Map,pt={warn:()=>{},info:()=>{}};function G(e){let t=w.resolve(e);try{return C.realpathSync(t)}catch{return t}}function K(e){return Buffer.byteLength(JSON.stringify(e,null,2),`utf-8`)}function mt(e,t){let n=JSON.stringify({[e]:t},null,2);if(!n.startsWith(`{
3
+ `)||!n.endsWith(`
4
+ }`))return K({[e]:t})-4;let r=n.slice(2,-2);return Buffer.byteLength(r,`utf-8`)}function ht(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,mt(n,r));return t}function gt(e){if(!e)return 0;let t=e.updatedAt;return Number.isFinite(t)?t:0}function _t(e){let t=new Map;for(let n of Object.values(e)){let e=n?.sessionId;e&&t.set(e,(t.get(e)??0)+1)}return t}function vt(e){if(!e.entry.sessionId)return null;try{let t=y(e.entry.sessionId,e.entry,{sessionsDir:e.sessionsDir}),n=G(e.sessionsDir),r=G(t),i=w.relative(n,r);return!i||i.startsWith(`..`)||w.isAbsolute(i)?null:r}catch{return null}}function yt(e){let t=new Set;for(let n of Object.values(e.store)){let r=vt({sessionsDir:e.sessionsDir,entry:n});r&&t.add(G(r))}return t}async function bt(e){let t=await C.promises.readdir(e,{withFileTypes:!0}).catch(()=>[]),n=[];for(let r of t){if(!r.isFile())continue;let t=w.join(e,r.name),i=await C.promises.stat(t).catch(()=>null);i?.isFile()&&n.push({path:t,canonicalPath:G(t),name:r.name,size:i.size,mtimeMs:i.mtimeMs})}return n}async function xt(e){let t=await C.promises.stat(e).catch(()=>null);return t?.isFile()?(await C.promises.rm(e,{force:!0}).catch(()=>void 0),t.size):0}async function St(e){let t=w.resolve(e.filePath),n=e.canonicalPath??G(t);if(e.dryRun){if(e.simulatedRemovedPaths.has(n))return 0;let t=e.fileSizesByPath.get(n)??0;return t<=0?0:(e.simulatedRemovedPaths.add(n),t)}return xt(t)}async function Ct(e){let r=e.maintenance.maxDiskBytes,i=e.maintenance.highWaterBytes;if(r==null||i==null)return null;let a=e.log??pt,o=e.dryRun===!0,s=w.dirname(e.storePath),c=await bt(s),l=new Map(c.map(e=>[e.canonicalPath,e.size])),u=new Set,d=G(e.storePath),f=c.find(e=>e.canonicalPath===d),p=K(e.store),m=c.reduce((e,t)=>e+t.size,0)-(f?.size??0)+p,h=m;if(m<=r)return{totalBytesBefore:h,totalBytesAfter:m,removedFiles:0,removedEntries:0,freedBytes:0,maxBytes:r,highWaterBytes:i,overBudget:!1};if(e.warnOnly)return a.warn(`session disk budget exceeded (warn-only mode)`,{sessionsDir:s,totalBytes:m,maxBytes:r,highWaterBytes:i}),{totalBytesBefore:h,totalBytesAfter:m,removedFiles:0,removedEntries:0,freedBytes:0,maxBytes:r,highWaterBytes:i,overBudget:!0};let g=0,_=0,y=0,x=yt({sessionsDir:s,store:e.store}),S=c.filter(e=>v(e.name)||b(e.name)&&!x.has(e.canonicalPath)).toSorted((e,t)=>e.mtimeMs-t.mtimeMs);for(let e of S){if(m<=i)break;let t=await St({filePath:e.path,canonicalPath:e.canonicalPath,dryRun:o,fileSizesByPath:l,simulatedRemovedPaths:u});t<=0||(m-=t,y+=t,g+=1)}if(m>i){let r=n(e.activeSessionKey),a=_t(e.store),c=ht(e.store),d=Object.keys(e.store).toSorted((t,n)=>gt(e.store[t])-gt(e.store[n]));for(let n of d){if(m<=i)break;if(r&&t(n)===r)continue;let d=e.store[n];if(!d)continue;let f=p;delete e.store[n];let h=c.get(n);c.delete(n),p=typeof h==`number`&&Number.isFinite(h)&&h>=0?Math.max(2,p-(h+2)):K(e.store),m+=p-f,_+=1;let v=d.sessionId;if(!v)continue;let b=(a.get(v)??1)-1;if(b>0){a.set(v,b);continue}a.delete(v);let x=vt({sessionsDir:s,entry:d});if(!x)continue;let S=await St({filePath:x,dryRun:o,fileSizesByPath:l,simulatedRemovedPaths:u});S<=0||(m-=S,y+=S,g+=1)}}return o||(m>i?a.warn(`session disk budget still above high-water target after cleanup`,{sessionsDir:s,totalBytes:m,maxBytes:r,highWaterBytes:i,removedFiles:g,removedEntries:_}):(g>0||_>0)&&a.info(`applied session disk budget cleanup`,{sessionsDir:s,totalBytesBefore:h,totalBytesAfter:m,maxBytes:r,highWaterBytes:i,removedFiles:g,removedEntries:_})),{totalBytesBefore:h,totalBytesAfter:m,removedFiles:g,removedEntries:_,freedBytes:y,maxBytes:r,highWaterBytes:i,overBudget:!0}}function q(e){return t(e)}function wt(){let e;try{e=s().session?.maintenance}catch{}return V(e)}const J=l(`sessions/store`);let Tt=null;function Et(){return Tt??=import(`./session-archive.runtime-B52_5vs4-cU2tYbBz.mjs`),Tt}function Dt(e){let t=F(e.storePath);if(z(e.storePath,e.serialized),!R()){Ke(e.storePath);return}Je({storePath:e.storePath,store:e.store,mtimeMs:t?.mtimeMs,sizeBytes:t?.sizeBytes,serialized:e.serialized})}function Ot(e,t){let n=t.trim();if(!n)return;if(Object.prototype.hasOwnProperty.call(e,n))return n;let r=q(n);return Object.prototype.hasOwnProperty.call(e,r)?r:Object.keys(e).find(e=>q(e)===r)}function kt(e){let t=new Map;for(let[n,r]of Object.entries(e))r?.acp&&t.set(n,r.acp);return t}function At(e){let t=new Set((e.allowDropSessionKeys??[]).map(e=>q(e)));for(let[n,r]of e.previousAcpByKey.entries()){let i=q(n);if(t.has(i))continue;let a=Ot(e.nextStore,n);if(!a)continue;let o=e.nextStore[a];!o||o.acp||(e.nextStore[a]={...o,acp:r})}}async function jt(e,t,n){if(ft(t),!n?.skipMaintenance){let r=n?.maintenanceConfig?{...n.maintenanceConfig,...n?.maintenanceOverride}:{...wt(),...n?.maintenanceOverride},i=r.mode===`warn`,a=Object.keys(t).length;if(i){let i=n?.activeSessionKey?.trim();if(i){let e=rt({store:t,activeSessionKey:i,pruneAfterMs:r.pruneAfterMs,maxEntries:r.maxEntries});e&&(J.warn(`session maintenance would evict active session; skipping enforcement`,{activeSessionKey:e.activeSessionKey,wouldPrune:e.wouldPrune,wouldCap:e.wouldCap,pruneAfterMs:e.pruneAfterMs,maxEntries:e.maxEntries}),await n?.onWarn?.(e))}let o=await Ct({store:t,storePath:e,activeSessionKey:n?.activeSessionKey,maintenance:r,warnOnly:!0,log:J});await n?.onMaintenanceApplied?.({mode:r.mode,beforeCount:a,afterCount:Object.keys(t).length,pruned:0,capped:0,diskBudget:o})}else{let i=n?.activeSessionKey?new Set([n.activeSessionKey]):void 0,o=new Map,s=nt(t,r.pruneAfterMs,{onPruned:({entry:e})=>{Nt(o,e)},preserveKeys:i}),c=at(t,r.maxEntries,{onCapped:({entry:e})=>{Nt(o,e)},preserveKeys:i}),l=new Set,u=await Pt({removedSessionFiles:o,referencedSessionIds:new Set(Object.values(t).map(e=>e?.sessionId).filter(e=>!!e)),storePath:e,reason:`deleted`,restrictToStoreDir:!0});for(let e of u)l.add(e);if(l.size>0||r.resetArchiveRetentionMs!=null){let{cleanupArchivedSessionTranscripts:t}=await Et(),n=l.size>0?[...l]:[w.dirname(w.resolve(e))];await t({directories:n,olderThanMs:r.pruneAfterMs,reason:`deleted`}),r.resetArchiveRetentionMs!=null&&await t({directories:n,olderThanMs:r.resetArchiveRetentionMs,reason:`reset`})}await st(e,r.rotateBytes);let d=await Ct({store:t,storePath:e,activeSessionKey:n?.activeSessionKey,maintenance:r,warnOnly:!1,log:J});await n?.onMaintenanceApplied?.({mode:r.mode,beforeCount:a,afterCount:Object.keys(t).length,pruned:s,capped:c,diskBudget:d})}}await C.promises.mkdir(w.dirname(e),{recursive:!0});let r=JSON.stringify(t,null,2);if(Ge(e)===r){Dt({storePath:e,store:t,serialized:r});return}if(process.platform===`win32`){for(let n=0;n<5;n++)try{await X({storePath:e,store:t,serialized:r});return}catch(t){if(Y(t)===`ENOENT`)return;if(n<4){await new Promise(e=>setTimeout(e,50*(n+1)));continue}J.warn(`atomic write failed after 5 attempts: ${e}`)}return}try{await X({storePath:e,store:t,serialized:r})}catch(n){if(Y(n)===`ENOENT`){try{await X({storePath:e,store:t,serialized:r})}catch(e){if(Y(e)===`ENOENT`)return;throw e}return}throw n}}async function Mt(e,t,n){return await zt(e,async()=>{let r=U(e,{skipCache:!0}),i=kt(r),a=await t(r);return At({previousAcpByKey:i,nextStore:r,allowDropSessionKeys:n?.allowDropAcpMetaSessionKeys}),await jt(e,r,n),a})}function Y(e){return!e||typeof e!=`object`||!(`code`in e)?null:String(e.code)}function Nt(e,t){(!e.has(t.sessionId)||t.sessionFile)&&e.set(t.sessionId,t.sessionFile)}async function Pt(e){let{archiveSessionTranscripts:t}=await Et(),n=new Set;for(let[r,i]of e.removedSessionFiles){if(e.referencedSessionIds.has(r))continue;let a=t({sessionId:r,storePath:e.storePath,sessionFile:i,reason:e.reason,restrictToStoreDir:e.restrictToStoreDir});for(let e of a)n.add(w.dirname(e))}return n}async function X(e){await Fe(e.storePath,e.serialized,{mode:384}),Dt({storePath:e.storePath,store:e.store,serialized:e.serialized})}function Ft(e){return Error(`timeout waiting for session store lock: ${e}`)}function It(e){if(!(e==null||!Number.isFinite(e)||e<=0))return ye({timeoutMs:e,graceMs:5e3,minMs:5e3})}function Lt(e){let t=W.get(e);if(t)return t;let n={running:!1,pending:[],drainPromise:null};return W.set(e,n),n}async function Rt(e){let t=W.get(e);if(t){if(t.drainPromise){await t.drainPromise;return}t.running=!0,t.drainPromise=(async()=>{try{for(;t.pending.length>0;){let n=t.pending.shift();if(!n)continue;let r=n.timeoutMs??1/0;if(n.timeoutMs!=null&&r<=0){n.reject(Ft(e));continue}let i,a,o,s=!1;try{i=await Me({sessionFile:e,timeoutMs:r,staleMs:n.staleMs,maxHoldMs:It(n.timeoutMs)}),a=await n.fn()}catch(e){s=!0,o=e}finally{await i?.release().catch(()=>void 0)}if(s){n.reject(o);continue}n.resolve(a)}}finally{t.running=!1,t.drainPromise=null,t.pending.length===0?W.delete(e):queueMicrotask(()=>{Rt(e)})}})(),await t.drainPromise}}async function zt(e,t,n={}){if(!e||typeof e!=`string`)throw Error(`withSessionStoreLock: storePath must be a non-empty string, got ${JSON.stringify(e)}`);let r=n.timeoutMs??1e4,i=n.staleMs??3e4;n.pollIntervalMs;let a=r>0&&Number.isFinite(r),o=Lt(e);return await new Promise((n,s)=>{let c={fn:async()=>await t(),resolve:e=>n(e),reject:s,timeoutMs:a?r:void 0,staleMs:i};o.pending.push(c),Rt(e)})}function Bt(e,t){return((...n)=>{let r=e()[t];return typeof r==`function`?r(...n):r})}const Vt=d({modulePath:T(import.meta.url),moduleUrl:import.meta.url})??T(new URL(`../..`,import.meta.url)),Ht=T(import.meta.url),Ut=w.resolve(Vt,`extensions`),Wt=new Map;function Gt(e){let t=i(e.env??process.env);return ie({...e,bundledPluginsDir:t})}function Kt(e){return Q().resolveRegistryPluginModuleLocation({...e,resolutionKey:Gt(e)})}function qt(e){let t=i(e.env??process.env);return re({...e,currentModulePath:Ht,packageRoot:Vt,bundledPluginsDir:t})||Kt(e)}function Jt(e){return oe({cache:Wt,key:Gt(e),resolve:()=>qt(e)})}const Yt=le(import.meta.url),Xt=[`./facade-activation-check.runtime.js`,`./facade-activation-check.runtime.ts`];let Z;const Zt=new Map;function Qt(e){return f({cache:Zt,modulePath:e,importerUrl:import.meta.url,jitiFilename:import.meta.url,aliasMap:{},tryNative:!1})}function $t(e){for(let t of Xt)try{return e(t)}catch{}}function Q(){if(Z||(Z=$t(e=>Yt(e)),Z)||(Z=$t(e=>Qt(e)(e)),Z))return Z;throw Error(`Unable to load facade activation check runtime`)}function en(e){return se(e)}function tn(e,t=Jt(e)){return{...e,location:t,sourceExtensionsRoot:Ut,resolutionKey:Gt(e)}}function nn(e){let t=Jt(e),n=()=>Q().resolveTrackedFacadePluginId(tn(e,t));return t?en({location:t,trackedPluginId:n}):ae({...e,trackedPluginId:n})}function rn(e){return Q().resolveActivatedBundledPluginPublicSurfaceAccessOrThrow(tn(e)),nn(e)}function an(e){return Q().resolveBundledPluginPublicSurfaceAccess(tn(e)).allowed?nn(e):null}const on=new Map;function sn(e){return p(e)??u(e)??n(e)??``}function cn(e){let t=sn(e);try{return h(t)?.messaging}catch{return}}function $(e){let t=new Set,n=[];for(let r of e){if(typeof r!=`string`)continue;let e=r.trim();!e||t.has(e)||(t.add(e),n.push(e))}return n}function ln(e){let t=e.trim();if(!t)return null;let n=_(t),r=(n.baseSessionKey??t).trim();return r?{id:r,threadId:n.threadId,baseConversationId:r,parentConversationCandidates:$(n.threadId?[n.baseSessionKey]:[])}:null}function un(t){return t?.id?.trim()?{id:t.id.trim(),threadId:e(t.threadId),baseConversationId:e(t.baseConversationId)??$(t.parentConversationCandidates??[]).at(-1)??t.id.trim(),parentConversationCandidates:$(t.parentConversationCandidates??[]),hasExplicitParentConversationCandidates:Object.hasOwn(t,`parentConversationCandidates`)}:null}function dn(e){if(fn(e.channel))return null;let t=sn(e.channel),n=g(),r=on.get(t);if(!r||r.version!==n){let e=null;try{let n=an({dirName:t,artifactBasename:`session-key-api.js`});e=typeof n?.resolveSessionConversation==`function`?n.resolveSessionConversation:null}catch{e=null}r={version:n,resolveSessionConversation:e},on.set(t,r)}return typeof r.resolveSessionConversation==`function`?un(r.resolveSessionConversation({kind:e.kind,rawId:e.rawId})):null}function fn(e){let t=m();if(!t?.plugins)return!1;if(t.plugins.enabled===!1)return!0;let n=t.plugins.entries?.[sn(e)];return!!n&&typeof n==`object`&&n.enabled===!1}function pn(e){return e.includes(`:`)}function mn(e){let t=e.rawId.trim();if(!t)return null;let n=cn(e.channel),r=un(n?.resolveSessionConversation?.({kind:e.kind,rawId:t})),i=e.bundledFallback!==!1&&!n&&pn(t),a=r??(i?dn({channel:e.channel,kind:e.kind,rawId:t}):null)??ln(t);if(!a)return null;let o=$(r?.hasExplicitParentConversationCandidates?a.parentConversationCandidates:n?.resolveParentConversationCandidates?.({kind:e.kind,rawId:t})??a.parentConversationCandidates),s=o.at(-1)??a.baseConversationId??a.id;return{...a,baseConversationId:s,parentConversationCandidates:o}}function hn(e){return mn(e)}const gn=new Set;function _n(t){let n=typeof t==`string`?{sessionFile:t}:{sessionFile:t.sessionFile,sessionKey:t.sessionKey,message:t.message,messageId:t.messageId},r=e(n.sessionFile);if(!r)return;let i={sessionFile:r,...e(n.sessionKey)?{sessionKey:e(n.sessionKey)}:{},...n.message===void 0?{}:{message:n.message},...e(n.messageId)?{messageId:e(n.messageId)}:{}};for(let e of gn)try{e(i)}catch{}}async function vn(e){let{sessionId:t,sessionKey:n,sessionStore:r,storePath:i}=e,a=e.sessionEntry??r[n]??{sessionId:t,updatedAt:Date.now()},o=a.sessionId===t,s=e.fallbackSessionFile?.trim(),c=y(t,o?!a.sessionFile&&s?{...a,sessionFile:s}:a:s?{...a,sessionFile:s}:{...a,sessionFile:void 0},{agentId:e.agentId,sessionsDir:e.sessionsDir}),l={...a,sessionId:t,updatedAt:Date.now(),sessionFile:c};return a.sessionId!==t||a.sessionFile!==c?(r[n]=l,await Mt(i,e=>{e[n]={...e[n],...l}},e.activeSessionKey||e.maintenanceConfig?{...e.activeSessionKey?{activeSessionKey:e.activeSessionKey}:{},...e.maintenanceConfig?{maintenanceConfig:e.maintenanceConfig}:{}}:void 0),{sessionFile:c,sessionEntry:l}):(r[n]=l,{sessionFile:c,sessionEntry:l})}function yn(e){let t=e.split(`#`)[0]??e;return t.split(`?`)[0]??t}function bn(e){let t=e.trim();if(!t)return null;let n=yn(t);try{let e=new URL(n),t=w.basename(e.pathname);if(!t)return null;try{return decodeURIComponent(t)}catch{return t}}catch{let e=w.basename(n);return!e||e===`/`||e===`.`?null:e}}function xn(e){let t=e.mediaUrls?.filter(e=>e&&e.trim())??[];if(t.length>0){let e=t.map(e=>bn(e)).filter(e=>!!(e&&e.trim()));return e.length>0?e.join(`, `):`media`}return(e.text??``).trim()||null}async function Sn(e){if(C.existsSync(e.sessionFile))return;await C.promises.mkdir(w.dirname(e.sessionFile),{recursive:!0});let t={type:`session`,version:3,id:e.sessionId,timestamp:new Date().toISOString(),cwd:process.cwd()};await C.promises.writeFile(e.sessionFile,`${JSON.stringify(t)}\n`,{encoding:`utf-8`,mode:384})}async function Cn(e){let t=e.sessionKey.trim();if(!t)return{ok:!1,reason:`missing sessionKey`};let n=xn({text:e.text,mediaUrls:e.mediaUrls});return n?wn({agentId:e.agentId,sessionKey:t,storePath:e.storePath,idempotencyKey:e.idempotencyKey,updateMode:e.updateMode,message:{role:`assistant`,content:[{type:`text`,text:n}],api:`openai-responses`,provider:`openclaw`,model:`delivery-mirror`,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()}}):{ok:!1,reason:`empty text`}}async function wn(e){let t=e.sessionKey.trim();if(!t)return{ok:!1,reason:`missing sessionKey`};if(e.message.role!==`assistant`)return{ok:!1,reason:`message role must be assistant`};let n=e.storePath??x(e.agentId),r=U(n,{skipCache:!0}),i=r[q(t)]??r[t];if(!i?.sessionId)return{ok:!1,reason:`unknown sessionKey: ${t}`};let a;try{a=(await vn({sessionId:i.sessionId,sessionKey:t,sessionStore:r,storePath:n,sessionEntry:i,agentId:e.agentId,sessionsDir:w.dirname(n)})).sessionFile}catch(e){return{ok:!1,reason:c(e)}}await Sn({sessionFile:a,sessionId:i.sessionId});let o=e.idempotencyKey??e.message.idempotencyKey,s=o?await Tn(a,o):void 0;if(s)return{ok:!0,sessionFile:a,messageId:s};let l=En(e.message)?await On(a,e.message):void 0;if(l)return{ok:!0,sessionFile:a,messageId:l};let u={...e.message,...o?{idempotencyKey:o}:{}},d=ce.open(a).appendMessage(u);switch(e.updateMode??`inline`){case`inline`:_n({sessionFile:a,sessionKey:t,message:u,messageId:d});break;case`file-only`:_n(a);break;case`none`:break}return{ok:!0,sessionFile:a,messageId:d}}async function Tn(e,t){try{let n=await C.promises.readFile(e,`utf-8`);for(let e of n.split(/\r?\n/))if(e.trim())try{let n=JSON.parse(e);if(n.message?.idempotencyKey===t&&typeof n.id==`string`&&n.id)return n.id}catch{continue}}catch{return}}function En(e){return e.provider===`openclaw`&&e.model===`delivery-mirror`}function Dn(e){if(!Array.isArray(e.content))return null;let t=e.content.filter(e=>e.type===`text`&&typeof e.text==`string`&&e.text.trim().length>0).map(e=>e.text.trim());return t.length>0?t.join(`
5
+ `).trim():null}async function On(e,t){let n=Dn(t);if(n)try{let t=(await C.promises.readFile(e,`utf-8`)).split(/\r?\n/);for(let e=t.length-1;e>=0;--e){let r=t[e];if(r.trim())try{let e=JSON.parse(r),t=e.message;if(!t||t.role!==`assistant`)continue;return Dn(t)===n&&typeof e.id==`string`&&e.id?e.id:void 0}catch{continue}}}catch{return}}export{Bt as a,U as c,hn as i,wn as n,rn as o,xn as r,Mt as s,Cn as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./transcript-E_-ISOkD-VTwb782D.mjs";export{t as appendAssistantMessageToSessionTranscript,e as appendExactAssistantMessageToSessionTranscript};
@@ -0,0 +1 @@
1
+ function e(e){return e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,``)}function t(e,t,n){return{temperature:t?.temperature,maxTokens:t?.maxTokens??(e.maxTokens>0?Math.min(e.maxTokens,32e3):void 0),signal:t?.signal,apiKey:n||t?.apiKey,cacheRetention:t?.cacheRetention,sessionId:t?.sessionId,headers:t?.headers,onPayload:t?.onPayload,onResponse:t?.onResponse,maxRetryDelayMs:t?.maxRetryDelayMs,metadata:t?.metadata}}function n(e){return e===`xhigh`?`high`:e}function r(e,t,r,i){let a={minimal:1024,low:2048,medium:8192,high:16384,...i}[n(r)],o=Math.min(e+a,t);return o<=a&&(a=Math.max(0,o-1024)),{maxTokens:o,thinkingBudget:a}}function i(e,t){let n=[],r=!1;for(let i of e){if(i.type===`image`){r||n.push({type:`text`,text:t}),r=!0;continue}n.push(i),r=i.text===t}return n}function a(e,t){return t.input.includes(`image`)?e:e.map(e=>e.role===`user`&&Array.isArray(e.content)?{...e,content:i(e.content,`(image omitted: model does not support images)`)}:e.role===`toolResult`?{...e,content:i(e.content,`(tool image omitted: model does not support images)`)}:e)}function o(e,t,n){let r=new Map,i=a(e,t).map(e=>{if(e.role===`user`)return e;if(e.role===`toolResult`){let t=r.get(e.toolCallId);return t&&t!==e.toolCallId?{...e,toolCallId:t}:e}if(e.role===`assistant`){let i=e,a=i.provider===t.provider&&i.api===t.api&&i.model===t.id,o=i.content.flatMap(e=>{if(e.type===`thinking`)return e.redacted?a?e:[]:a&&e.thinkingSignature?e:!e.thinking||e.thinking.trim()===``?[]:a?e:{type:`text`,text:e.thinking};if(e.type===`text`)return a?e:{type:`text`,text:e.text};if(e.type===`toolCall`){let o=e,s=o;if(!a&&o.thoughtSignature&&(s={...o},delete s.thoughtSignature),!a&&n){let e=n(o.id,t,i);e!==o.id&&(r.set(o.id,e),s={...s,id:e})}return s}return e});return{...i,content:o}}return e}),o=[],s=[],c=new Set,l=()=>{if(s.length>0){for(let e of s)c.has(e.id)||o.push({role:`toolResult`,toolCallId:e.id,toolName:e.name,content:[{type:`text`,text:`No result provided`}],isError:!0,timestamp:Date.now()});s=[],c=new Set}};for(let e=0;e<i.length;e++){let t=i[e];if(t.role===`assistant`){l();let e=t;if(e.stopReason===`error`||e.stopReason===`aborted`)continue;let n=e.content.filter(e=>e.type===`toolCall`);n.length>0&&(s=n,c=new Set),o.push(t)}else t.role===`toolResult`?(c.add(t.toolCallId),o.push(t)):(t.role===`user`&&l(),o.push(t))}return l(),o}export{e as a,n as i,r as n,t as r,o as t};
@@ -0,0 +1 @@
1
+ import{l as e,o as t}from"./manifest-registry-_hxKCS2K-OL8KK_o4.mjs";import{t as n}from"./public-surface-loader-BVl0NQAE-TfJ3izj1.mjs";import{g as r,v as i,y as a}from"./plugin-auto-enable-DdH3n9V8-Dr_bUXkG.mjs";import{n as o}from"./activation-context--5yu1dPF-XV0Y0pTy.mjs";import s from"node:path";const c=[`web-search-contract-api.js`,`web-search-provider.js`,`web-search.js`],l=[`web-fetch-contract-api.js`,`web-fetch-provider.js`,`web-fetch.js`];function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function f(e){return u(e)&&typeof e.id==`string`&&typeof e.label==`string`&&typeof e.hint==`string`&&d(e.envVars)&&typeof e.placeholder==`string`&&typeof e.signupUrl==`string`&&typeof e.credentialPath==`string`&&typeof e.getCredentialValue==`function`&&typeof e.setCredentialValue==`function`&&typeof e.createTool==`function`}function p(e){return f(e)}function m(e){return f(e)}function h(e){let t=[];for(let[n,r]of Object.entries(e.mod).toSorted(([e],[t])=>e.localeCompare(t))){if(typeof r!=`function`||r.length!==0||!n.startsWith(`create`)||!n.endsWith(e.suffix))continue;let i=r();e.isProvider(i)&&t.push(i)}return t}function g(e){for(let t of e.artifactCandidates)try{return n({dirName:e.dirName,artifactBasename:t})}catch(e){if(e instanceof Error&&e.message.startsWith(`Unable to resolve bundled plugin public surface `))continue;throw e}return null}function _(e){return[...new Set(e)].toSorted((e,t)=>e.localeCompare(t))}function v(e){let t=g({dirName:e.dirName,artifactCandidates:e.artifactCandidates});if(!t)return null;let n=h({mod:t,suffix:e.suffix,isProvider:e.isProvider});return n.length===0?null:n.map(t=>Object.assign({},t,{pluginId:e.pluginId}))}function y(e){return v({dirName:e.dirName,pluginId:e.pluginId,artifactCandidates:c,suffix:`WebSearchProvider`,isProvider:p})}function b(e){return v({dirName:e.dirName,pluginId:e.pluginId,artifactCandidates:l,suffix:`WebFetchProvider`,isProvider:m})}function x(e){let t=[];for(let n of _(e.onlyPluginIds)){let e=y({dirName:n,pluginId:n});if(!e)return null;t.push(...e)}return t}function S(e){let t=[];for(let n of _(e.onlyPluginIds)){let e=b({dirName:n,pluginId:n});if(!e)return null;t.push(...e)}return t}function C(e,t){return e.id.localeCompare(t.id)||e.pluginId.localeCompare(t.pluginId)}function w(e){return e.toSorted(C)}function T(e,t,n){if((e.contracts?.[n]?.length??0)>0||Object.keys(e.configUiHints??{}).some(e=>e===t||e.startsWith(`${t}.`)))return!0;let r=e.configSchema?.properties;return typeof r==`object`&&!!r&&t in r}function E(e){let n=i(e.onlyPluginIds),a=r(n),o=t({config:e.config,workspaceDir:e.workspaceDir,env:e.env}).plugins.filter(t=>(!e.origin||t.origin===e.origin)&&(!a||a.has(t.id))&&T(t,e.configKey,e.contract)).map(e=>e.id).toSorted((e,t)=>e.localeCompare(t));return o.length>0?o:n?.length===0?[]:void 0}function D(t){return e({contract:t.contract,origin:`bundled`,config:t.config,workspaceDir:t.workspaceDir,env:t.env})}function O(e){let t=o({rawConfig:e.config,env:e.env,workspaceDir:e.workspaceDir,applyAutoEnable:!0,compatMode:{allowlist:e.bundledAllowlistCompat,enablement:`always`,vitest:!0},resolveCompatPluginIds:t=>D({contract:e.contract,...t})});return{config:t.config,activationSourceConfig:t.activationSourceConfig,autoEnabledReasons:t.autoEnabledReasons}}function k(e){let t=typeof e.envKey==`string`?e.envKey:Object.entries(e.envKey).toSorted(([e],[t])=>e.localeCompare(t)),n=i(e.onlyPluginIds);return JSON.stringify({workspaceDir:e.workspaceDir??``,bundledAllowlistCompat:e.bundledAllowlistCompat===!0,origin:e.origin??``,onlyPluginIds:a(n),env:t})}function A(e){let t=r(i(e.onlyPluginIds));return e.sortProviders(e.entries.filter(e=>!t||t.has(e.pluginId)).map(e=>Object.assign({},e.provider,{pluginId:e.pluginId})))}function j(e){return w(e)}function M(e){return O({contract:`webFetchProviders`,config:e.config,workspaceDir:e.workspaceDir,env:e.env,bundledAllowlistCompat:e.bundledAllowlistCompat})}function N(e){return w(e)}function P(e){return O({contract:`webSearchProviders`,config:e.config,workspaceDir:e.workspaceDir,env:e.env,bundledAllowlistCompat:e.bundledAllowlistCompat})}function F(e){if(e.onlyPluginIds&&e.onlyPluginIds.length>0)return[...new Set(e.onlyPluginIds)].toSorted((e,t)=>e.localeCompare(t));let t=e.contract===`webSearchProviders`?P(e).config:M(e).config;return E({contract:e.contract,configKey:e.configKey,config:t,workspaceDir:e.workspaceDir,env:e.env,onlyPluginIds:e.onlyPluginIds,origin:`bundled`})??[]}function I(e){let n=new Set(e.onlyPluginIds);return new Map(t({config:e.config,workspaceDir:e.workspaceDir,env:e.env}).plugins.filter(e=>e.origin===`bundled`&&n.has(e.id)).map(e=>[e.id,e]))}function L(e){let t=F({contract:`webSearchProviders`,configKey:`webSearch`,config:e.config,workspaceDir:e.workspaceDir,env:e.env,bundledAllowlistCompat:e.bundledAllowlistCompat,onlyPluginIds:e.onlyPluginIds});if(t.length===0)return[];let n=x({onlyPluginIds:t});if(n)return n;let r=I({config:e.config,workspaceDir:e.workspaceDir,env:e.env,onlyPluginIds:t}),i=[];for(let e of t){let t=r.get(e);if(!t)return null;let n=y({dirName:s.basename(t.rootDir),pluginId:e});if(!n)return null;i.push(...n)}return i}function R(e){let t=F({contract:`webFetchProviders`,configKey:`webFetch`,config:e.config,workspaceDir:e.workspaceDir,env:e.env,bundledAllowlistCompat:e.bundledAllowlistCompat,onlyPluginIds:e.onlyPluginIds});if(t.length===0)return[];let n=S({onlyPluginIds:t});if(n)return n;let r=I({config:e.config,workspaceDir:e.workspaceDir,env:e.env,onlyPluginIds:t}),i=[];for(let e of t){let t=r.get(e);if(!t)return null;let n=b({dirName:s.basename(t.rootDir),pluginId:e});if(!n)return null;i.push(...n)}return i}export{M as a,j as c,A as i,N as l,L as n,P as o,k as r,E as s,R as t};
@@ -0,0 +1 @@
1
+ import{c as e}from"./home-dir-C44RaPME-B5iLWwCq.mjs";import{a as t}from"./runtime-Cym-fqI8-1GOIuRRQ.mjs";import{n,r,t as i}from"./loader-708jrx4Y-BbJRXNlQ.mjs";import{_ as a,v as o}from"./plugin-auto-enable-DdH3n9V8-Dr_bUXkG.mjs";import{r as s}from"./activation-context--5yu1dPF-XV0Y0pTy.mjs";import{n as c,t as l}from"./load-context-mb7uvLSn-3xYwSnOZ.mjs";import{i as u,l as d,n as f,o as p,r as m,s as h}from"./web-provider-public-artifacts-BlpRwIUS-DbVhDOrY.mjs";function g(t){return!(e(t.OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE)||e(t.OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE)||e(t.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS)===`0`||e(t.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS)===`0`)}function _(t,n){let r=e(t);if(r===``||r===`0`)return 0;if(!r)return n;let i=Number.parseInt(r,10);return Number.isFinite(i)?Math.max(0,i):n}function v(e){let t=_(e.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS,1e3),n=_(e.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS,1e3);return Math.min(t,n)}function y(e){return JSON.stringify({OPENCLAW_BUNDLED_PLUGINS_DIR:e.OPENCLAW_BUNDLED_PLUGINS_DIR??``,OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE:e.OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE??``,OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE:e.OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE??``,OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS:e.OPENCLAW_PLUGIN_DISCOVERY_CACHE_MS??``,OPENCLAW_PLUGIN_MANIFEST_CACHE_MS:e.OPENCLAW_PLUGIN_MANIFEST_CACHE_MS??``,OPENCLAW_HOME:e.OPENCLAW_HOME??``,OPENCLAW_STATE_DIR:e.OPENCLAW_STATE_DIR??``,OPENCLAW_CONFIG_PATH:e.OPENCLAW_CONFIG_PATH??``,HOME:e.HOME??``,USERPROFILE:e.USERPROFILE??``,VITEST:e.VITEST??``})}function b(){return new WeakMap}function x(e,n){let r=e.env??process.env,i=e.workspaceDir??t(),{config:s,activationSourceConfig:u,autoEnabledReasons:d}=n.resolveBundledResolutionConfig({...e,workspaceDir:i,env:r}),f=o(n.resolveCandidatePluginIds({config:s,workspaceDir:i,env:r,onlyPluginIds:e.onlyPluginIds,origin:e.origin}));return l({env:r,config:s,activationSourceConfig:u,autoEnabledReasons:d,workspaceDir:i,logger:c()},{cache:e.cache??!1,activate:e.activate??!1,...a(f)?{onlyPluginIds:f}:{}})}function S(e,a){let o=e.env??process.env,u=e.workspaceDir??t();if(e.mode===`setup`){let t=a.resolveCandidatePluginIds({config:e.config,workspaceDir:u,env:o,onlyPluginIds:e.onlyPluginIds,origin:e.origin})??[];if(t.length===0)return[];if(e.activate!==!0){let n=a.resolveBundledPublicArtifactProviders?.({config:e.config,workspaceDir:u,env:o,bundledAllowlistCompat:e.bundledAllowlistCompat,onlyPluginIds:t});if(n)return n}let r=n(l({config:s({config:e.config,pluginIds:t}),activationSourceConfig:e.config,autoEnabledReasons:{},workspaceDir:u,env:o,logger:c()},{onlyPluginIds:t,cache:e.cache??!1,activate:e.activate??!1}));return a.mapRegistryProviders({registry:r,onlyPluginIds:t})}let d=e.config,f=e.activate!==!0&&e.cache!==!0&&g(o),p=m({config:d,workspaceDir:u,bundledAllowlistCompat:e.bundledAllowlistCompat,onlyPluginIds:e.onlyPluginIds,origin:e.origin,envKey:y(o)});if(d&&f){let e=(a.snapshotCache.get(d)?.get(o))?.get(p);if(e&&e.expiresAt>Date.now())return e.providers}let h=e=>{if(!d||!f)return;let t=v(o),n=a.snapshotCache.get(d);n||(n=new WeakMap,a.snapshotCache.set(d,n));let r=n.get(o);r||(r=new Map,n.set(o,r)),r.set(p,{expiresAt:Date.now()+t,providers:e})},_=x(e,a),b=r(_);if(b){let t=a.mapRegistryProviders({registry:b,onlyPluginIds:e.onlyPluginIds});return h(t),t}if(i(_))return[];let S=a.mapRegistryProviders({registry:n(_),onlyPluginIds:e.onlyPluginIds});return h(S),S}let C=b();function w(e){return h({contract:`webSearchProviders`,configKey:`webSearch`,config:e.config,workspaceDir:e.workspaceDir,env:e.env,onlyPluginIds:e.onlyPluginIds,origin:e.origin})}function T(e){return u({entries:e.registry.webSearchProviders,onlyPluginIds:e.onlyPluginIds,sortProviders:d})}function E(e){return S(e,{snapshotCache:C,resolveBundledResolutionConfig:p,resolveCandidatePluginIds:w,mapRegistryProviders:T,resolveBundledPublicArtifactProviders:f})}export{b as n,S as r,E as t};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-lark/larkpal",
3
- "version": "0.1.85",
3
+ "version": "0.1.87",
4
4
  "description": "LarkPal - Lark/Feishu bot service",
5
5
  "type": "module",
6
6
  "main": "./dist/main.mjs",
@@ -46,7 +46,6 @@
46
46
  "express": "^5.1.0",
47
47
  "image-size": "^2.0.2",
48
48
  "node-cron": "^4.0.8",
49
- "openclaw": "^2026.4.9",
50
49
  "qrcode-terminal": "^0.12.0",
51
50
  "uuid": "^11.1.0",
52
51
  "ws": "^8.21.0",