@vibe-lark/larkpal 0.1.88 → 0.1.89

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 (115) hide show
  1. package/dist/{account-id-BM1T6029-BzQ_cMoi.mjs → account-id-BM1T6029-BvcZ99G0.mjs} +1 -1
  2. package/dist/{activation-context--5yu1dPF-XV0Y0pTy.mjs → activation-context--5yu1dPF-DHM2x52-.mjs} +1 -1
  3. package/dist/{anthropic-CFZUCb1w.mjs → anthropic-gnoZ_QRy.mjs} +1 -1
  4. package/dist/{assistant-visible-text-DuFWokAt-BOJV_zwc.mjs → assistant-visible-text-DuFWokAt-GbRm46te.mjs} +1 -1
  5. package/dist/{azure-openai-responses-BEuiMaF-.mjs → azure-openai-responses-DbHzq7dt.mjs} +1 -1
  6. package/dist/{boundary-file-read-BSd9MXPy-gnNVhPKT.mjs → boundary-file-read-BSd9MXPy-Tpd4W7aA.mjs} +1 -1
  7. package/dist/{browser-lifecycle-cleanup-BdNsMhMD-BM97qA_M.mjs → browser-lifecycle-cleanup-BdNsMhMD-Bjf5GI3L.mjs} +1 -1
  8. package/dist/{bundled-compat-BpaDaAAu-DJtrIX6i.mjs → bundled-compat-BpaDaAAu-DElY7pj-.mjs} +1 -1
  9. package/dist/{bundled-dir-U738ay4K-BxbzrJOo.mjs → bundled-dir-U738ay4K-DxHVp4u1.mjs} +1 -1
  10. package/dist/{call-DimWbpgJ-B4pv55RH.mjs → call-DimWbpgJ-BnglLl-j.mjs} +1 -1
  11. package/dist/channel-bootstrap.runtime-BVclcGv1-BH-3XviM.mjs +1 -0
  12. package/dist/{channel-bootstrap.runtime-Cwcr38m2-Dt6QlQkX.mjs → channel-bootstrap.runtime-Cwcr38m2-K7QN0kxA.mjs} +1 -1
  13. package/dist/cli.mjs +2 -2
  14. package/dist/{command-format-LSnUCVVF-Dn4h9IOh.mjs → command-format-LSnUCVVF-Ck0yuZRk.mjs} +1 -1
  15. package/dist/config-Bim2pi8a-xbw-saVR.mjs +1 -0
  16. package/dist/config-CtxZK_ZE.mjs +2 -0
  17. package/dist/{delivery-context.shared-j5hC5qb1-BSLQG47q.mjs → delivery-context.shared-j5hC5qb1-DIY5v1oC.mjs} +1 -1
  18. package/dist/{diagnostic-ClMwNnUA-BMKvPQJT.mjs → diagnostic-ClMwNnUA-BLmizo4w.mjs} +1 -1
  19. package/dist/{dist-coestTs9.mjs → dist-BUE_cxIa.mjs} +1 -1
  20. package/dist/{dist-J5UB83Ws.mjs → dist-Drhg3yZT.mjs} +1 -1
  21. package/dist/{facade-loader-DFzIYYt_-4bzFvy-b.mjs → facade-loader-DFzIYYt_--SN2-DQM.mjs} +1 -1
  22. package/dist/{google-ABo-1guT.mjs → google-BdoIr_xq.mjs} +1 -1
  23. package/dist/{google-gemini-cli-CGlN1zUA.mjs → google-gemini-cli-H9jO3Mvn.mjs} +1 -1
  24. package/dist/{google-shared-C60sNhwd.mjs → google-shared-DDK4NMAJ.mjs} +2 -2
  25. package/dist/{google-vertex-De0nAItu.mjs → google-vertex-B_OTGKnl.mjs} +1 -1
  26. package/dist/{ids-BPsM98Uu-CJBJAeVC.mjs → ids-BPsM98Uu-DGJB5aAM.mjs} +1 -1
  27. package/dist/{image-2w3cApg7-CrpUMCvm.mjs → image-2w3cApg7-B_-Jsk_m.mjs} +1 -1
  28. package/dist/interactive-init-CzbT0dDB.mjs +8 -0
  29. package/dist/{io-CH2g3vsv-JJtUIa_U.mjs → io-CH2g3vsv-BevbMdi6.mjs} +1 -1
  30. package/dist/{jiti-loader-cache-Bat69wam-DNIteTtO.mjs → jiti-loader-cache-Bat69wam-Cq2EONsH.mjs} +1 -1
  31. package/dist/{live-smoke-DpURW676.mjs → live-smoke-Be7Fzqj0.mjs} +18 -18
  32. package/dist/load-context-mb7uvLSn-C6DFwEWN.mjs +1 -0
  33. package/dist/{loader-708jrx4Y-BbJRXNlQ.mjs → loader-708jrx4Y-eFvaGnCt.mjs} +1 -1
  34. package/dist/main.mjs +86 -86
  35. package/dist/{manifest-registry-_hxKCS2K-OL8KK_o4.mjs → manifest-registry-_hxKCS2K-ezh_x2Cu.mjs} +1 -1
  36. package/dist/{message-channel-Bk_YHfQg-n2Hw2Y0L.mjs → message-channel-Bk_YHfQg-BGBJVvRK.mjs} +1 -1
  37. package/dist/{message-channel-core-DTA--Gjh-CIh10vfo.mjs → message-channel-core-DTA--Gjh-DeWCDZu1.mjs} +1 -1
  38. package/dist/message.config.runtime-K-k4XOyq-JWPtRES_.mjs +1 -0
  39. package/dist/message.gateway.runtime-DqHOHRTQ-BeYUdgSg.mjs +1 -0
  40. package/dist/{mistral-DyL3Zo1b.mjs → mistral-zWGv0zHS.mjs} +1 -1
  41. package/dist/{model-auth-env-oyg2Hexc-DJbt9J3o.mjs → model-auth-env-oyg2Hexc-B5WQGZqf.mjs} +1 -1
  42. package/dist/{models-config-BmpSQJQF-BL6S5qAo.mjs → models-config-BmpSQJQF-Bwnt6IgA.mjs} +1 -1
  43. package/dist/models-config.runtime-DkQfNKqN.mjs +1 -0
  44. package/dist/{multipart-parser-B9dwXBqu.mjs → multipart-parser-D_0C82Yv.mjs} +1 -1
  45. package/dist/{oauth-25y2wc7K.mjs → oauth-TYJ7I-Cs.mjs} +1 -1
  46. package/dist/{openai-codex-responses-BbyAPsP1.mjs → openai-codex-responses-CJA9360v.mjs} +1 -1
  47. package/dist/{openai-completions-Bu5qvQzb.mjs → openai-completions-BfXo7VuS.mjs} +1 -1
  48. package/dist/{openai-responses-pIdwQBc4.mjs → openai-responses-BH-GaE-g.mjs} +1 -1
  49. package/dist/{openai-responses-shared-DqW1JSux.mjs → openai-responses-shared-DHm7pNQU.mjs} +1 -1
  50. package/dist/{paths-D6msg0S1-BO4XgM1u.mjs → paths-D6msg0S1-C3GtW9t2.mjs} +1 -1
  51. package/dist/{paths-D92DjaZ--DdtJ-zYp.mjs → paths-D92DjaZ--CKAvIWoZ.mjs} +1 -1
  52. package/dist/{pi-model-discovery-Bd0TWzo8-DvSM0eWu.mjs → pi-model-discovery-Bd0TWzo8-DcalEcic.mjs} +1 -1
  53. package/dist/{pi-model-discovery-runtime-PrjWOmsV.mjs → pi-model-discovery-runtime-DnW_CaR2.mjs} +1 -1
  54. package/dist/{pi-tools.before-tool-call.runtime-Bn7uqKie-WPxU5oNX.mjs → pi-tools.before-tool-call.runtime-Bn7uqKie-CitpH_Lv.mjs} +1 -1
  55. package/dist/{plugin-auto-enable-DdH3n9V8-Dr_bUXkG.mjs → plugin-auto-enable-DdH3n9V8-Dd9H4luQ.mjs} +1 -1
  56. package/dist/{provider-discovery.runtime-DY0VWQ81.mjs → provider-discovery.runtime-CVft4TR0.mjs} +1 -1
  57. package/dist/{provider-model-compat-CFqcq0it-BUwZENrz.mjs → provider-model-compat-CFqcq0it-W6mE-T-j.mjs} +1 -1
  58. package/dist/{provider-runtime-C8rljsNs-BDvu6FW3.mjs → provider-runtime-C8rljsNs-BGpzSHUk.mjs} +1 -1
  59. package/dist/{provider-runtime-CT50mNIX-DImw7ZZu.mjs → provider-runtime-CT50mNIX-CC3WVtfL.mjs} +1 -1
  60. package/dist/{provider-stream-COLujAAo-Dpq1DSIk.mjs → provider-stream-COLujAAo-BtNcIBP4.mjs} +1 -1
  61. package/dist/{providers.runtime-Ba7tOlq7-B4t6ywCr.mjs → providers.runtime-Ba7tOlq7-CX4GoaJL.mjs} +1 -1
  62. package/dist/{public-surface-loader-BVl0NQAE-TfJ3izj1.mjs → public-surface-loader-BVl0NQAE-CTXfgfHE.mjs} +1 -1
  63. package/dist/{resolve-C33B7eeu-DZM_z6Wr.mjs → resolve-C33B7eeu-DhMVJCKm.mjs} +1 -1
  64. package/dist/{runtime-Cym-fqI8-1GOIuRRQ.mjs → runtime-Cym-fqI8-BuiEWXF-.mjs} +1 -1
  65. package/dist/{runtime-snapshot-C54O1-gI-DxusscPf.mjs → runtime-snapshot-C54O1-gI-0r2omPvJ.mjs} +1 -1
  66. package/dist/{runtime-web-tools-fallback.runtime-Ca-qn1mj-BsYE2gOd.mjs → runtime-web-tools-fallback.runtime-Ca-qn1mj-C5hD_aI-.mjs} +1 -1
  67. package/dist/runtime-web-tools-manifest.runtime-BgxQTjmq-BTi3YQxK.mjs +1 -0
  68. package/dist/runtime-web-tools-public-artifacts.runtime-D9qcoWIX-DNaDY4zG.mjs +1 -0
  69. package/dist/{session-archive.runtime-B52_5vs4-cU2tYbBz.mjs → session-archive.runtime-B52_5vs4-CUKEEsvr.mjs} +1 -1
  70. package/dist/{session-key-Cn2QoOyX-QZeYmbxd.mjs → session-key-Cn2QoOyX-BIh-9Y77.mjs} +1 -1
  71. package/dist/{session-transcript-files.fs-DEeFXruQ-CXIAFSsr.mjs → session-transcript-files.fs-DEeFXruQ-Dh_OJado.mjs} +1 -1
  72. package/dist/{src-CCDx_C-U.mjs → src-C9CsRdwI.mjs} +1 -1
  73. package/dist/{subagent-announce-L5WsQatW--rMn240x.mjs → subagent-announce-L5WsQatW-DyZFJvpK.mjs} +1 -1
  74. package/dist/{subagent-announce.registry.runtime-DiqZyeTs-DNfNHsls.mjs → subagent-announce.registry.runtime-DiqZyeTs-WCL-itg8.mjs} +1 -1
  75. package/dist/{subagent-registry-steer-runtime-DFgZFC0j-XYS1_qwl.mjs → subagent-registry-steer-runtime-DFgZFC0j-BlxUMPcM.mjs} +1 -1
  76. package/dist/{subagent-system-prompt-C1qnN--K-CsU4f97T.mjs → subagent-system-prompt-C1qnN--K-bhNPmt0u.mjs} +1 -1
  77. package/dist/{target-parsing-loaded-DKkb6jJY-B830OA1a.mjs → target-parsing-loaded-DKkb6jJY-Bx7-SykE.mjs} +1 -1
  78. package/dist/{task-registry-delivery-runtime-Dd1CUkZF-B2Hj2k8C.mjs → task-registry-delivery-runtime-Dd1CUkZF-xNioBd-k.mjs} +2 -2
  79. package/dist/task-registry-delivery-runtime-ragbeVx5-BXczubuw.mjs +1 -0
  80. package/dist/{transcript-E_-ISOkD-VTwb782D.mjs → transcript-E_-ISOkD-STFNoSGx.mjs} +2 -2
  81. package/dist/transcript.runtime-BqhvZZdl-BLeKq_RO.mjs +1 -0
  82. package/dist/{web-provider-public-artifacts-BlpRwIUS-DbVhDOrY.mjs → web-provider-public-artifacts-BlpRwIUS-CjacPoGF.mjs} +1 -1
  83. package/dist/{web-search-providers.runtime--0aUtC3b-Bjh4Bmrz.mjs → web-search-providers.runtime--0aUtC3b-EcJfEKJo.mjs} +1 -1
  84. package/package.json +1 -1
  85. package/dist/channel-bootstrap.runtime-BVclcGv1-CEZ0-JP9.mjs +0 -1
  86. package/dist/config-Bim2pi8a-03N-28sw.mjs +0 -1
  87. package/dist/interactive-init-C5MFL5MW.mjs +0 -8
  88. package/dist/load-context-mb7uvLSn-3xYwSnOZ.mjs +0 -1
  89. package/dist/message.config.runtime-K-k4XOyq-F_h0Cgkl.mjs +0 -1
  90. package/dist/message.gateway.runtime-DqHOHRTQ-ge4c5p4s.mjs +0 -1
  91. package/dist/models-config.runtime-SOhLEw-f.mjs +0 -1
  92. package/dist/runtime-web-tools-manifest.runtime-BgxQTjmq-P6MKP9gQ.mjs +0 -1
  93. package/dist/runtime-web-tools-public-artifacts.runtime-D9qcoWIX-5VoyjouO.mjs +0 -1
  94. package/dist/task-registry-delivery-runtime-ragbeVx5-Bdvo2Q5u.mjs +0 -1
  95. package/dist/transcript.runtime-BqhvZZdl-B4E0TiX5.mjs +0 -1
  96. /package/dist/{build-Bkj0hOS2.mjs → build-DSSm_dj2.mjs} +0 -0
  97. /package/dist/{env-api-keys-Cuz5irWW.mjs → env-api-keys-qlOAYu08.mjs} +0 -0
  98. /package/dist/{event-stream-B7Ei41Bu.mjs → event-stream-JP51qlT7.mjs} +0 -0
  99. /package/dist/{from-Ba69_5cR.mjs → from-BmSefSMV.mjs} +0 -0
  100. /package/dist/{gateway-method-policy-C7rf0SeV-CTJcMQCE.mjs → gateway-method-policy-C7rf0SeV-DXbYlbpG.mjs} +0 -0
  101. /package/dist/{github-copilot-headers-BfhryVuU.mjs → github-copilot-headers-BQ2T2OVX.mjs} +0 -0
  102. /package/dist/{hash-Dw-N8Y9l.mjs → hash-DtceYjXb.mjs} +0 -0
  103. /package/dist/{headers-Bpsp70B9.mjs → headers-KsIWdB9S.mjs} +0 -0
  104. /package/dist/{home-dir-C44RaPME-B5iLWwCq.mjs → home-dir-C44RaPME-BqOMy1pu.mjs} +0 -0
  105. /package/dist/{json-file-BQRNuxmK-hRjIgOXI.mjs → json-file-BQRNuxmK-DQHpAzI5.mjs} +0 -0
  106. /package/dist/{json-parse-BESd8UAM.mjs → json-parse-BJPqxncf.mjs} +0 -0
  107. /package/dist/{jws-YaZ38F_i.mjs → jws-EKtyH_je.mjs} +0 -0
  108. /package/dist/{lark-cli-provider-BLMxH6CN.mjs → lark-cli-provider-DrGmcwiB.mjs} +0 -0
  109. /package/dist/{openai-C-rgGb7X.mjs → openai-D-MIrxrj.mjs} +0 -0
  110. /package/dist/{process-scoped-map-B2cWkYET-Co-i-MXA.mjs → process-scoped-map-B2cWkYET-Bc7DvrUZ.mjs} +0 -0
  111. /package/dist/{runtime-channel-state-CohMybAh-BBzhl07Q.mjs → runtime-channel-state-CohMybAh-DfCjeyJq.mjs} +0 -0
  112. /package/dist/{runtime-state-IBOIXKOx-Cw1GA1td.mjs → runtime-state-IBOIXKOx-Cr97WVOr.mjs} +0 -0
  113. /package/dist/{src-DACmA9V6.mjs → src-5lm1WxWm.mjs} +0 -0
  114. /package/dist/{thinking-Bh-7MqXz-uApNUe6g.mjs → thinking-Bh-7MqXz-BB7ZJReA.mjs} +0 -0
  115. /package/dist/{transform-messages-BTA3xbAI.mjs → transform-messages-B6RF0Czv.mjs} +0 -0
@@ -0,0 +1 @@
1
+ import"./io-CH2g3vsv-BevbMdi6.mjs";import{St as e}from"./bundled-compat-BpaDaAAu-DElY7pj-.mjs";import"./runtime-snapshot-C54O1-gI-0r2omPvJ.mjs";import"./loader-708jrx4Y-eFvaGnCt.mjs";import"./config-Bim2pi8a-xbw-saVR.mjs";import"./plugin-auto-enable-DdH3n9V8-Dd9H4luQ.mjs";const t=e(`plugins`);function n(){return{info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e)}}function r(e,t){return{config:e.config,activationSourceConfig:e.activationSourceConfig,autoEnabledReasons:e.autoEnabledReasons,workspaceDir:e.workspaceDir,env:e.env,logger:e.logger,...t}}export{n,r as t};
@@ -1,4 +1,4 @@
1
- import{c as e,o as t,s as n,u as r}from"./home-dir-C44RaPME-B5iLWwCq.mjs";import{l as i,s as a}from"./bundled-dir-U738ay4K-BxbzrJOo.mjs";import{C as o,It as s,Mt as c,S as l,St as u,T as d,_ as f,b as p,p as m,v as ee,w as h,x as g,y as _}from"./bundled-compat-BpaDaAAu-DJtrIX6i.mjs";import{C as v,N as y,S as b,T as x,_ as S,b as C,g as te,h as w,m as T,o as E,v as D,w as O,x as k,y as A}from"./manifest-registry-_hxKCS2K-OL8KK_o4.mjs";import{n as j,r as M}from"./boundary-file-read-BSd9MXPy-gnNVhPKT.mjs";import{a as N,o as P,t as ne}from"./jiti-loader-cache-Bat69wam-DNIteTtO.mjs";import{a as re,l as F,n as ie,s as ae,t as I,y as L}from"./runtime-snapshot-C54O1-gI-DxusscPf.mjs";import{c as R,i as oe,l as z,o as B,r as se,s as ce}from"./runtime-Cym-fqI8-1GOIuRRQ.mjs";import{t as V}from"./gateway-method-policy-C7rf0SeV-CTJcMQCE.mjs";import{_ as le,g as ue,h as de,m as fe,v as pe,y as me}from"./plugin-auto-enable-DdH3n9V8-Dr_bUXkG.mjs";import{Module as he}from"node:module";import H from"node:fs";import U from"node:path";import{AsyncLocalStorage as ge}from"node:async_hooks";import{createHash as W}from"node:crypto";function G(e,t){let n=globalThis;if(Object.prototype.hasOwnProperty.call(n,e))return n[e];let r=t();return n[e]=r,r}function _e(e){return G(e,()=>new Map)}function ve(e){let t=e.separator??`
1
+ import{c as e,o as t,s as n,u as r}from"./home-dir-C44RaPME-BqOMy1pu.mjs";import{l as i,s as a}from"./bundled-dir-U738ay4K-DxHVp4u1.mjs";import{C as o,It as s,Mt as c,S as l,St as u,T as d,_ as f,b as p,p as m,v as ee,w as h,x as g,y as _}from"./bundled-compat-BpaDaAAu-DElY7pj-.mjs";import{C as v,N as y,S as b,T as x,_ as S,b as C,g as te,h as w,m as T,o as E,v as D,w as O,x as k,y as A}from"./manifest-registry-_hxKCS2K-ezh_x2Cu.mjs";import{n as j,r as M}from"./boundary-file-read-BSd9MXPy-Tpd4W7aA.mjs";import{a as N,o as P,t as ne}from"./jiti-loader-cache-Bat69wam-Cq2EONsH.mjs";import{a as re,l as F,n as ie,s as ae,t as I,y as L}from"./runtime-snapshot-C54O1-gI-0r2omPvJ.mjs";import{c as R,i as oe,l as z,o as B,r as se,s as ce}from"./runtime-Cym-fqI8-BuiEWXF-.mjs";import{t as V}from"./gateway-method-policy-C7rf0SeV-DXbYlbpG.mjs";import{_ as le,g as ue,h as de,m as fe,v as pe,y as me}from"./plugin-auto-enable-DdH3n9V8-Dd9H4luQ.mjs";import{Module as he}from"node:module";import H from"node:fs";import U from"node:path";import{AsyncLocalStorage as ge}from"node:async_hooks";import{createHash as W}from"node:crypto";function G(e,t){let n=globalThis;if(Object.prototype.hasOwnProperty.call(n,e))return n[e];let r=t();return n[e]=r,r}function _e(e){return G(e,()=>new Map)}function ve(e){let t=e.separator??`
2
2
 
3
3
  `;return e.left&&e.right?`${e.left}${t}${e.right}`:e.right??e.left}function K(e,t){return e.typedHooks.filter(e=>e.hookName===t).toSorted((e,t)=>(t.priority??0)-(e.priority??0))}function ye(e,t,n){return K(e,t).filter(e=>e.pluginId===n)}function be(e,t={}){let n=t.logger,r=t.catchErrors??!0,i=t.failurePolicyByHook??{},a=e=>r&&(i[e]??`fail-open`)===`fail-open`,o=(e,t)=>e??t,s=(e,t)=>t??e,l=(e,t)=>e===!0||t===!0?!0:void 0,u=(e,t)=>({modelOverride:o(e?.modelOverride,t.modelOverride),providerOverride:o(e?.providerOverride,t.providerOverride)}),d=(e,t)=>({systemPrompt:o(e?.systemPrompt,t.systemPrompt),prependContext:ve({left:e?.prependContext,right:t.prependContext}),prependSystemContext:ve({left:e?.prependSystemContext,right:t.prependSystemContext}),appendSystemContext:ve({left:e?.appendSystemContext,right:t.appendSystemContext})}),f=(e,t)=>{if(e?.status===`error`)return e;if(t.status===`error`)return t;let n=e?.deliveryOrigin??t.deliveryOrigin;return{status:`ok`,threadBindingReady:!!(e?.threadBindingReady||t.threadBindingReady),...n?{deliveryOrigin:n}:{}}},p=(e,t)=>e?.origin?e:t,m=e=>{let t=`[hooks] ${e.hookName} handler from ${e.pluginId} failed: ${String(e.error)}`;if(a(e.hookName)){n?.error(t);return}throw Error(t,{cause:e.error})},ee=e=>c(e).split(`
4
4
  `)[0]?.trim()||`unknown error`,h=e=>typeof e!=`object`&&typeof e!=`function`||e===null?!1:typeof e.then==`function`,g=(e,t,n)=>{let r=e.handler;return r(t,n)};async function _(t,r,i){let a=K(e,t);if(a.length===0)return;n?.debug?.(`[hooks] running ${t} (${a.length} handlers)`);let o=a.map(async e=>{try{await e.handler(r,i)}catch(n){m({hookName:t,pluginId:e.pluginId,error:n})}});await Promise.all(o)}async function v(t,r,i,a={}){let o=K(e,t);if(o.length===0)return;n?.debug?.(`[hooks] running ${t} (${o.length} handlers, sequential)`);let s;for(let e of o)try{let o=await e.handler(r,i);if(o!=null&&(s=a.mergeResults?a.mergeResults(s,o,e):o,s&&a.shouldStop?.(s))){let r=a.terminalLabel?` ${a.terminalLabel}`:``,i=e.priority??0;n?.debug?.(`[hooks] ${t}${r} decided by ${e.pluginId} (priority=${i}); skipping remaining handlers`),a.onTerminal?.({hookName:t,pluginId:e.pluginId,result:s});break}}catch(n){m({hookName:t,pluginId:e.pluginId,error:n})}return s}async function y(t,r,i){let a=K(e,t);if(a.length!==0)return n?.debug?.(`[hooks] running ${t} (${a.length} handlers, first-claim wins)`),await x(a,t,r,i)}async function b(t,r,i,a){let o=ye(e,t,r);if(o.length!==0)return n?.debug?.(`[hooks] running ${t} for ${r} (${o.length} handlers, targeted)`),await x(o,t,i,a)}async function x(e,t,n,r){for(let i of e)try{let e=await i.handler(n,r);if(e?.handled)return e}catch(e){m({hookName:t,pluginId:i.pluginId,error:e})}}async function S(t,r,i,a){if(!e.plugins.some(e=>e.id===r&&e.status===`loaded`))return{status:`missing_plugin`};let o=ye(e,t,r);if(o.length===0)return{status:`no_handler`};n?.debug?.(`[hooks] running ${t} for ${r} (${o.length} handlers, targeted outcome)`);let s=null;for(let e of o)try{let t=await e.handler(i,a);if(t?.handled)return{status:`handled`,result:t}}catch(n){s??=ee(n),m({hookName:t,pluginId:e.pluginId,error:n})}return s?{status:`error`,error:s}:{status:`declined`}}async function C(e,t){return v(`before_model_resolve`,e,t,{mergeResults:u})}async function te(e,t){return v(`before_prompt_build`,e,t,{mergeResults:d})}async function w(e,t){return v(`before_agent_start`,e,t,{mergeResults:(e,t)=>({...d(e,t),...u(e,t)})})}async function T(e,t){return y(`before_agent_reply`,e,t)}async function E(e,t){return _(`agent_end`,e,t)}async function D(e,t){return _(`llm_input`,e,t)}async function O(e,t){return _(`llm_output`,e,t)}async function k(e,t){return _(`before_compaction`,e,t)}async function A(e,t){return _(`after_compaction`,e,t)}async function j(e,t){return _(`before_reset`,e,t)}async function M(e,t){return y(`inbound_claim`,e,t)}async function N(e,t,n){return b(`inbound_claim`,e,t,n)}async function P(e,t,n){return S(`inbound_claim`,e,t,n)}async function ne(e,t){return _(`message_received`,e,t)}async function re(e,t){return y(`before_dispatch`,e,t)}async function F(e,t){return y(`reply_dispatch`,e,t)}async function ie(e,t){return v(`message_sending`,e,t,{mergeResults:(e,t)=>e?.cancel===!0?e:{content:s(e?.content,t.content),cancel:l(e?.cancel,t.cancel)},shouldStop:e=>e.cancel===!0,terminalLabel:`cancel=true`})}async function ae(e,t){return _(`message_sent`,e,t)}async function I(e,t){return v(`before_tool_call`,e,t,{mergeResults:(e,t,n)=>{if(e?.block===!0)return e;let r=e?.requireApproval?.pluginId;return{params:r&&r!==n.pluginId?e?.params:s(e?.params,t.params),block:l(e?.block,t.block),blockReason:s(e?.blockReason,t.blockReason),requireApproval:e?.requireApproval??(t.requireApproval?{...t.requireApproval,pluginId:n.pluginId}:void 0)}},shouldStop:e=>e.block===!0,terminalLabel:`block=true`})}async function L(e,t){return _(`after_tool_call`,e,t)}function R(t,r){let i=K(e,`tool_result_persist`);if(i.length===0)return;let o=t.message;for(let e of i)try{let i=g(e,{...t,message:o},r);if(h(i)){let t=`[hooks] tool_result_persist handler from ${e.pluginId} returned a Promise; this hook is synchronous and the result was ignored.`;if(a(`tool_result_persist`)){n?.warn?.(t);continue}throw Error(t)}let s=i?.message;s&&(o=s)}catch(t){let r=`[hooks] tool_result_persist handler from ${e.pluginId} failed: ${String(t)}`;if(a(`tool_result_persist`))n?.error(r);else throw Error(r,{cause:t})}return{message:o}}function oe(t,r){let i=K(e,`before_message_write`);if(i.length===0)return;let o=t.message;for(let e of i)try{let i=g(e,{...t,message:o},r);if(h(i)){let t=`[hooks] before_message_write handler from ${e.pluginId} returned a Promise; this hook is synchronous and the result was ignored.`;if(a(`before_message_write`)){n?.warn?.(t);continue}throw Error(t)}let s=i;if(s?.block)return{block:!0};s?.message&&(o=s.message)}catch(t){let r=`[hooks] before_message_write handler from ${e.pluginId} failed: ${String(t)}`;if(a(`before_message_write`))n?.error(r);else throw Error(r,{cause:t})}if(o!==t.message)return{message:o}}async function z(e,t){return _(`session_start`,e,t)}async function B(e,t){return _(`session_end`,e,t)}async function se(e,t){return v(`subagent_spawning`,e,t,{mergeResults:f})}async function ce(e,t){return v(`subagent_delivery_target`,e,t,{mergeResults:p})}async function V(e,t){return _(`subagent_spawned`,e,t)}async function le(e,t){return _(`subagent_ended`,e,t)}async function ue(e,t){return _(`gateway_start`,e,t)}async function de(e,t){return _(`gateway_stop`,e,t)}async function fe(e,t){return v(`before_install`,e,t,{mergeResults:(e,t)=>{if(e?.block===!0)return e;let n=[...e?.findings??[],...t.findings??[]];return{findings:n.length>0?n:void 0,block:l(e?.block,t.block),blockReason:s(e?.blockReason,t.blockReason)}},shouldStop:e=>e.block===!0,terminalLabel:`block=true`})}function pe(t){return e.typedHooks.some(e=>e.hookName===t)}function me(t){return e.typedHooks.filter(e=>e.hookName===t).length}return{runBeforeModelResolve:C,runBeforePromptBuild:te,runBeforeAgentStart:w,runBeforeAgentReply:T,runLlmInput:D,runLlmOutput:O,runAgentEnd:E,runBeforeCompaction:k,runAfterCompaction:A,runBeforeReset:j,runInboundClaim:M,runInboundClaimForPlugin:N,runInboundClaimForPluginOutcome:P,runMessageReceived:ne,runBeforeDispatch:re,runReplyDispatch:F,runMessageSending:ie,runMessageSent:ae,runBeforeToolCall:I,runAfterToolCall:L,runToolResultPersist:R,runBeforeMessageWrite:oe,runSessionStart:z,runSessionEnd:B,runSubagentSpawning:se,runSubagentDeliveryTarget:ce,runSubagentSpawned:V,runSubagentEnded:le,runGatewayStart:ue,runGatewayStop:de,runBeforeInstall:fe,hasHooks:pe,getHookCount:me}}const xe=Symbol.for(`openclaw.plugins.hook-runner-global-state`),Se=()=>G(xe,()=>({hookRunner:null,registry:null})),Ce=()=>u(`plugins`);function we(e){let t=Se(),n=Ce();t.registry=e,t.hookRunner=be(e,{logger:{debug:e=>n.debug(e),warn:e=>n.warn(e),error:e=>n.error(e)},catchErrors:!0,failurePolicyByHook:{before_tool_call:`fail-closed`}});let r=e.hooks.length;r>0&&n.debug(`hook runner initialized with ${r} registered hooks`)}function Te(){return Se().hookRunner}function Ee(e,t){let n=Math.max(0,Math.floor(t));if(n<=0){e.clear();return}for(;e.size>n;){let t=e.keys().next();if(t.done)break;e.delete(t.value)}}function De(e){let t=Math.max(0,e.ttlMs),n=Math.max(0,Math.floor(e.maxSize)),r=new Map,i=(e,t)=>{r.delete(e),r.set(e,t)},a=e=>{let i=t>0?e-t:void 0;if(i!==void 0)for(let[e,t]of r)t<i&&r.delete(e);if(n<=0){r.clear();return}Ee(r,n)},o=(e,n,a)=>{let o=r.get(e);return o===void 0?!1:t>0&&n-o>=t?(r.delete(e),!1):(a&&i(e,n),!0)};return{check:(e,t=Date.now())=>e?o(e,t,!0)?!0:(i(e,t),a(t),!1):!1,peek:(e,t=Date.now())=>e?o(e,t,!1):!1,delete:e=>{e&&r.delete(e)},clear:()=>{r.clear()},size:()=>r.size}}function Oe(e,t){return G(e,()=>De(t))}const q=G(Symbol.for(`openclaw.internalHookHandlers`),()=>new Map),ke=G(Symbol.for(`openclaw.internalHooksEnabled`),()=>({enabled:!0})),Ae=u(`internal-hooks`);function je(e,t){q.has(e)||q.set(e,[]),q.get(e).push(t)}function Me(e,t){let n=q.get(e);if(!n)return;let r=n.indexOf(t);r!==-1&&n.splice(r,1),n.length===0&&q.delete(e)}function Ne(e,t){return(q.get(e)?.length??0)>0||(q.get(`${e}:${t}`)?.length??0)>0}async function Pe(e){if(!ke.enabled||!Ne(e.type,e.action))return;let t=q.get(e.type)??[],n=q.get(`${e.type}:${e.action}`)??[],r=[...t,...n];for(let t of r)try{await t(e)}catch(t){let n=c(t);Ae.error(`Hook error [${e.type}:${e.action}]: ${n}`)}}function Fe(e,t,n,r={}){return{type:e,action:t,sessionKey:n,context:r,timestamp:new Date,messages:[]}}const Ie=`memory-core`,Le=[`daily`,`sessions`,`recall`],Re=[`daily`,`memory`,`sessions`,`logs`,`recall`],ze=[`memory`,`daily`,`deep`];function Be(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function J(e,t){let n=r(e);if(typeof e==`string`&&!n)return t;let i=Number(typeof e==`string`?n:e);if(!Number.isFinite(i))return t;let a=Math.floor(i);return a<0?t:a}function Ve(e){if(e==null)return;let t=r(e);if(typeof e==`string`&&!t)return;let n=Number(typeof e==`string`?t:e);if(!Number.isFinite(n))return;let i=Math.floor(n);if(!(i<=0))return i}function Y(e,n){if(typeof e==`boolean`)return e;if(typeof e==`string`){let n=t(e);if(n===`true`)return!0;if(n===`false`)return!1}return n}function He(e,t){let n=r(e);if(typeof e==`string`&&!n)return t;let i=Number(typeof e==`string`?n:e);return!Number.isFinite(i)||i<0||i>1?t:i}function Ue(e,t){return He(e,t)}function We(e,t,r){if(!Array.isArray(e))return[...r];let i=new Set(t),a=[];for(let t of e){let e=n(t);!e||!i.has(e)||a.includes(e)||a.push(e)}return a.length>0?a:[...r]}function Ge(e){let t=n(e);return t===`inline`||t===`separate`||t===`both`?t:`separate`}function Ke(e){let t=n(e);if(t===`fast`||t===`balanced`||t===`slow`)return t}function qe(e){let t=n(e);if(t===`low`||t===`medium`||t===`high`)return t}function Je(e){let t=n(e);if(t===`cheap`||t===`medium`||t===`expensive`)return t}function Ye(e,t){let n=F(e),r=Ve(n?.maxOutputTokens),i=Ve(n?.timeoutMs),a=n?.temperature,o=typeof a==`number`&&Number.isFinite(a)&&a>=0?Math.min(2,a):void 0;return{speed:Ke(n?.speed)??t.speed,thinking:qe(n?.thinking)??t.thinking,budget:Je(n?.budget)??t.budget,...Be(n?.model)?{model:Be(n?.model)}:{},...typeof r==`number`?{maxOutputTokens:r}:{},...typeof o==`number`?{temperature:o}:{},...typeof i==`number`?{timeoutMs:i}:{}}}function Xe(e){let n=Be(F(F(F(e)?.plugins)?.slots)?.memory);return n&&t(n)!==`none`?n:Ie}function Ze(e){let t=F(F(F(e)?.plugins)?.entries),n=Xe(e);return F(F(t?.[n])?.config)??void 0}function Qe(e){let t=F(e.pluginConfig?.dreaming),n=Be(t?.frequency)??`0 3 * * *`,r=Be(t?.timezone)??Be(e.cfg?.agents?.defaults?.userTimezone)??void 0,i=F(t?.storage),a=F(t?.execution),o=F(t?.phases),s=Ye(a?.defaults,{speed:`balanced`,thinking:`medium`,budget:`medium`}),c=F(o?.light),l=F(o?.deep),u=F(o?.rem),d=F(l?.recovery),f=Ve(l?.maxAgeDays);return{enabled:Y(t?.enabled,!1),frequency:n,...r?{timezone:r}:{},verboseLogging:Y(t?.verboseLogging,!1),storage:{mode:Ge(i?.mode),separateReports:Y(i?.separateReports,!1)},execution:{defaults:s},phases:{light:{enabled:Y(c?.enabled,!0),cron:n,lookbackDays:J(c?.lookbackDays,2),limit:J(c?.limit,100),dedupeSimilarity:Ue(c?.dedupeSimilarity,.9),sources:We(c?.sources,[`daily`,`sessions`,`recall`],Le),execution:Ye(c?.execution,{...s,speed:`fast`,thinking:`low`,budget:`cheap`})},deep:{enabled:Y(l?.enabled,!0),cron:n,limit:J(l?.limit,10),minScore:He(l?.minScore,.8),minRecallCount:J(l?.minRecallCount,3),minUniqueQueries:J(l?.minUniqueQueries,3),recencyHalfLifeDays:J(l?.recencyHalfLifeDays,14),...typeof f==`number`?{maxAgeDays:f}:{maxAgeDays:30},sources:We(l?.sources,[`daily`,`memory`,`sessions`,`logs`,`recall`],Re),recovery:{enabled:Y(d?.enabled,!0),triggerBelowHealth:He(d?.triggerBelowHealth,.35),lookbackDays:J(d?.lookbackDays,30),maxRecoveredCandidates:J(d?.maxRecoveredCandidates,20),minRecoveryConfidence:He(d?.minRecoveryConfidence,.9),autoWriteMinConfidence:He(d?.autoWriteMinConfidence,.97)},execution:Ye(l?.execution,{...s,speed:`balanced`,thinking:`high`,budget:`medium`})},rem:{enabled:Y(u?.enabled,!0),cron:n,lookbackDays:J(u?.lookbackDays,7),limit:J(u?.limit,10),minPatternStrength:He(u?.minPatternStrength,.75),sources:We(u?.sources,[`memory`,`daily`,`deep`],ze),execution:Ye(u?.execution,{...s,speed:`slow`,thinking:`high`,budget:`expensive`})}}}}let $e;function et(e,t){$e={pluginId:e,runtime:t}}function tt(){if($e)return{pluginId:$e.pluginId,runtime:$e.runtime}}function nt(){return $e?.runtime}function rt(e){$e=e?{pluginId:e.pluginId,runtime:e.runtime}:void 0}function it(){$e=void 0}function at(e){let t=M({absolutePath:U.join(e.rootDir,e.relativePath),rootPath:e.rootDir,boundaryLabel:`plugin root`,rejectHardlinks:!0});if(!t.ok)return e.onOpenFailure?.(t)??{ok:!0,raw:{}};try{let n=JSON.parse(H.readFileSync(t.fd,`utf-8`));return a(n)?{ok:!0,raw:n}:{ok:!1,error:`${e.relativePath} must contain a JSON object`}}catch(t){return{ok:!1,error:`failed to parse ${e.relativePath}: ${String(t)}`}}finally{H.closeSync(t.fd)}}function ot(e){return j(e.failure,{path:()=>e.allowMissing?{ok:!0,raw:{}}:{ok:!1,error:`unable to read ${e.relativePath}: path`},fallback:t=>({ok:!1,error:`unable to read ${e.relativePath}: ${t.reason}`})})}function st(e){let t=[],n=[],r=!1;for(let[i,a]of Object.entries(e.resolveServers(e.loaded.config))){if(typeof a.command==`string`&&a.command.trim().length>0){r=!0,t.push(i);continue}n.push(i)}return{hasSupportedServer:r,supportedServerNames:t,unsupportedServerNames:n,diagnostics:e.loaded.diagnostics}}function ct(e){let t=l(e.cfg?.plugins);if(!t.enabled)return{config:e.createEmptyConfig(),diagnostics:[]};let n=E({workspaceDir:e.workspaceDir,config:e.cfg}),r=[],i=e.createEmptyConfig();for(let a of n.plugins){if(a.format!==`bundle`||!a.bundleFormat||!h({id:a.id,origin:a.origin,config:t,rootConfig:e.cfg}).activated)continue;let n=e.loadBundleConfig({pluginId:a.id,rootDir:a.rootDir,bundleFormat:a.bundleFormat});i=re(i,n.config);for(let t of n.diagnostics)r.push(e.createDiagnostic(a.id,t))}return{config:i,diagnostics:r}}const lt={claude:A,codex:C,cursor:k},ut="${CLAUDE_PLUGIN_ROOT}";function dt(e){let t=O(e.raw.mcpServers),n=H.existsSync(U.join(e.rootDir,`.mcp.json`))?[`.mcp.json`]:[];return e.bundleFormat,v(n,t)}function ft(e){if(!a(e))return{};let t=a(e.mcpServers)?e.mcpServers:a(e.servers)?e.servers:e;if(!a(t))return{};let n={};for(let[e,r]of Object.entries(t))a(r)&&(n[e]={...r});return n}function pt(e){return e===`.`||e===`..`||e.startsWith(`./`)||e.startsWith(`../`)}function mt(e,t){return e.includes(ut)?e.split(ut).join(t):e}function ht(e){return U.normalize(U.resolve(e))}function gt(e){return U.isAbsolute(e)?U.normalize(e):e}function _t(e){let t={...e.server};typeof t.cwd!=`string`&&typeof t.workingDirectory!=`string`&&(t.cwd=e.baseDir);let n=t.command;if(typeof n==`string`){let r=mt(n,e.rootDir);t.command=pt(r)?U.resolve(e.baseDir,r):gt(r)}let r=t.cwd;if(typeof r==`string`){let n=mt(r,e.rootDir);t.cwd=U.isAbsolute(n)?n:U.resolve(e.baseDir,n)}let i=t.workingDirectory;if(typeof i==`string`){let n=mt(i,e.rootDir);t.workingDirectory=U.isAbsolute(n)?U.normalize(n):U.resolve(e.baseDir,n)}return Array.isArray(t.args)&&(t.args=t.args.map(t=>{if(typeof t!=`string`)return t;let n=mt(t,e.rootDir);return pt(n)?U.resolve(e.baseDir,n):gt(n)})),a(t.env)&&(t.env=Object.fromEntries(Object.entries(t.env).map(([t,n])=>[t,typeof n==`string`?gt(mt(n,e.rootDir)):n]))),t}function vt(e){let t=ht(e.rootDir),n=U.resolve(t,e.relativePath),r=M({absolutePath:n,rootPath:t,boundaryLabel:`plugin root`,rejectHardlinks:!0});if(!r.ok)return{mcpServers:{}};try{if(!H.fstatSync(r.fd).isFile())return{mcpServers:{}};let e=ft(JSON.parse(H.readFileSync(r.fd,`utf-8`))),i=ht(U.dirname(n));return{mcpServers:Object.fromEntries(Object.entries(e).map(([e,n])=>[e,_t({rootDir:t,baseDir:i,server:n})]))}}finally{H.closeSync(r.fd)}}function yt(e){if(!a(e.raw.mcpServers))return{mcpServers:{}};let t=ht(e.baseDir),n=ft(e.raw.mcpServers);return{mcpServers:Object.fromEntries(Object.entries(n).map(([e,n])=>[e,_t({rootDir:t,baseDir:t,server:n})]))}}function bt(e){let t=lt[e.bundleFormat],n=at({rootDir:e.rootDir,relativePath:t,onOpenFailure:n=>ot({failure:n,relativePath:t,allowMissing:e.bundleFormat===`claude`})});if(!n.ok)return{config:{mcpServers:{}},diagnostics:[n.error]};let r={mcpServers:{}},i=dt({raw:n.raw,rootDir:e.rootDir,bundleFormat:e.bundleFormat});for(let t of i)r=re(r,vt({rootDir:e.rootDir,relativePath:t}));return r=re(r,yt({raw:n.raw,baseDir:e.rootDir})),{config:r,diagnostics:[]}}function xt(e){let t=st({loaded:bt(e),resolveServers:e=>e.mcpServers});return{hasSupportedStdioServer:t.hasSupportedServer,supportedServerNames:t.supportedServerNames,unsupportedServerNames:t.unsupportedServerNames,diagnostics:t.diagnostics}}function St(e){return ct({workspaceDir:e.workspaceDir,cfg:e.cfg,createEmptyConfig:()=>({mcpServers:{}}),loadBundleConfig:bt,createDiagnostic:(e,t)=>({pluginId:e,message:t})})}const Ct=Symbol.for(`openclaw.pluginCommandsState`),wt=()=>G(Ct,()=>({pluginCommands:new Map,registryLocked:!1})),Tt=()=>wt().pluginCommands,Et=new Proxy(new Map,{get(e,t){let n=Reflect.get(Tt(),t,Tt());return typeof n==`function`?n.bind(Tt()):n}});function Dt(){return wt().registryLocked}function Ot(){Et.clear()}function kt(e){for(let[t,n]of Et.entries())n.pluginId===e&&Et.delete(t)}let At;function jt(e){let t=n(e)??``;return t?/^[a-z][a-z0-9_-]*$/.test(t)?(At??=new Set(`help.commands.status.whoami.context.btw.stop.restart.reset.new.compact.config.debug.allowlist.activation.skill.subagents.kill.steer.tell.model.models.queue.send.bash.exec.think.verbose.reasoning.elevated.usage`.split(`.`)),At.has(t)?`Command name "${t}" is reserved by a built-in command`:null):`Command name must start with a letter and contain only letters, numbers, hyphens, and underscores`:`Command name cannot be empty`}function Mt(e){if(typeof e.handler!=`function`)return`Command handler must be a function`;if(typeof e.name!=`string`)return`Command name must be a string`;if(typeof e.description!=`string`)return`Command description must be a string`;if(!e.description.trim())return`Command description cannot be empty`;let t=jt(e.name.trim());if(t)return t;for(let[t,n]of Object.entries(e.nativeNames??{})){if(typeof n!=`string`)continue;let e=jt(n.trim());if(e)return`Native command alias "${t}" invalid: ${e}`}for(let[t,n]of Object.entries(e.nativeProgressMessages??{})){if(typeof n!=`string`)return`Native progress message "${t}" must be a string`;if(!n.trim())return`Native progress message "${t}" cannot be empty`}return null}function Nt(e){let t=new Set,r=e=>{let r=n(e);r&&t.add(`/${r}`)};r(e.name);for(let t of Object.values(e.nativeNames??{}))typeof t==`string`&&r(t);return[...t]}function Pt(e,n,r){if(Dt())return{ok:!1,error:`Cannot register commands while processing is in progress`};let i=Mt(n);if(i)return{ok:!1,error:i};let a=n.name.trim(),o=n.description.trim(),s={...n,name:a,description:o},c=Nt(s),l=`/${t(a)}`;for(let e of c){let t=Et.get(e)??Array.from(Et.values()).find(t=>Nt(t).includes(e));if(t)return{ok:!1,error:`Command "${e.slice(1)}" already registered by plugin "${t.pluginId}"`}}return Et.set(l,{...s,pluginId:e,pluginName:r?.pluginName,pluginRoot:r?.pluginRoot}),L(`Registered plugin command: ${l} (plugin: ${e})`),{ok:!0}}function Ft(e,t){return`${n(e)??``}:${t.trim()}`}function It(e){return e.trim()}function Lt(e){return e.trim()?/^[A-Za-z0-9._-]+$/.test(e.trim())?null:`Interactive handler namespace must contain only letters, numbers, dots, underscores, and hyphens`:`Interactive handler namespace cannot be empty`}const Rt=Symbol.for(`openclaw.pluginInteractiveState`),zt=Symbol.for(`openclaw.pluginInteractiveCallbackDedupe`);function Bt(){return Oe(zt,{ttlMs:5*6e4,maxSize:4096})}function Vt(){return{interactiveHandlers:new Map,callbackDedupe:Bt(),inflightCallbackDedupe:new Set}}function Ht(e){let t=typeof e==`object`&&e?e:{};return{interactiveHandlers:t.interactiveHandlers instanceof Map?t.interactiveHandlers:new Map,callbackDedupe:Bt(),inflightCallbackDedupe:t.inflightCallbackDedupe instanceof Set?t.inflightCallbackDedupe:new Set}}function Ut(){let e=globalThis,t=e[Rt];if(t!==void 0){let n=Ht(t);return e[Rt]=n,n}let n=Vt();return e[Rt]=n,n}function Wt(){return Ut().interactiveHandlers}function Gt(){return Ut().callbackDedupe}function Kt(){Wt().clear(),Gt().clear(),Ut().inflightCallbackDedupe.clear()}function qt(e,t,r){let i=Wt(),a=It(t.namespace),o=Lt(a);if(o)return{ok:!1,error:o};let s=Ft(t.channel,a),c=i.get(s);return c?{ok:!1,error:`Interactive handler namespace "${a}" already registered by plugin "${c.pluginId}"`}:(i.set(s,{...t,namespace:a,channel:n(t.channel)??``,pluginId:e,pluginName:r?.pluginName,pluginRoot:r?.pluginRoot}),{ok:!0})}function Jt(){Kt()}function Yt(e){let t=Wt();for(let[n,r]of t.entries())r.pluginId===e&&t.delete(n)}const Xt=[`systemPrompt`,`prependContext`,`prependSystemContext`,`appendSystemContext`],Zt=e=>{if(!e||typeof e!=`object`)return e;let t={...e};for(let e of Xt)delete t[e];return Object.keys(t).length>0?t:void 0},Qt=new Set(`before_model_resolve.before_prompt_build.before_agent_start.before_agent_reply.llm_input.llm_output.agent_end.before_compaction.after_compaction.before_reset.inbound_claim.message_received.message_sending.message_sent.before_tool_call.after_tool_call.tool_result_persist.before_message_write.session_start.session_end.subagent_spawning.subagent_delivery_target.subagent_spawned.subagent_ended.gateway_start.gateway_stop.before_dispatch.reply_dispatch.before_install`.split(`.`)),$t=e=>typeof e==`string`&&Qt.has(e),en=new Set([`before_prompt_build`,`before_agent_start`]),tn=e=>en.has(e),nn=Symbol.for(`openclaw.memoryEmbeddingProviders`);function rn(){let e=globalThis,t=e[nn];if(t instanceof Map)return t;let n=new Map;return e[nn]=n,n}function an(e,t){rn().set(e.id,{adapter:e,ownerPluginId:t?.ownerPluginId})}function on(e){return rn().get(e)}function sn(){return Array.from(rn().values())}function cn(e){rn().clear();for(let t of e)an(t.adapter,{ownerPluginId:t.ownerPluginId})}const X={corpusSupplements:[],promptSupplements:[]};function ln(e,t){let n=X.corpusSupplements.filter(t=>t.pluginId!==e);n.push({pluginId:e,supplement:t}),X.corpusSupplements=n}function un(e,t){X.capability={pluginId:e,capability:{...t}}}function dn(){return X.capability?{pluginId:X.capability.pluginId,capability:{...X.capability.capability}}:void 0}function fn(){return[...X.corpusSupplements]}function pn(e){X.promptBuilder=e}function mn(e,t){let n=X.promptSupplements.filter(t=>t.pluginId!==e);n.push({pluginId:e,builder:t}),X.promptSupplements=n}function hn(){return X.capability?.capability.promptBuilder??X.promptBuilder}function gn(){return[...X.promptSupplements]}function _n(e){X.flushPlanResolver=e}function vn(){return X.capability?.capability.flushPlanResolver??X.flushPlanResolver}function yn(e){X.runtime=e}function bn(){return X.capability?.capability.runtime??X.runtime}function xn(e){X.capability=e.capability?{pluginId:e.capability.pluginId,capability:{...e.capability.capability}}:void 0,X.corpusSupplements=[...e.corpusSupplements],X.promptBuilder=e.promptBuilder,X.promptSupplements=[...e.promptSupplements],X.flushPlanResolver=e.flushPlanResolver,X.runtime=e.runtime}function Sn(){X.capability=void 0,X.corpusSupplements=[],X.promptBuilder=void 0,X.promptSupplements=[],X.flushPlanResolver=void 0,X.runtime=void 0}function Cn(){return process.env.OPENCLAW_PLUGIN_LOAD_PROFILE===`1`}function wn(e){let t=(e.extras??[]).map(([e,t])=>`${e}=${typeof t==`number`?t.toFixed(1):t}`).join(` `),n=t?` ${t}`:``;return`[plugin-load-profile] phase=${e.phase} plugin=${e.pluginId??`(core)`} elapsedMs=${e.elapsedMs.toFixed(1)}${n} source=${e.source}`}function Tn(e,t,n,r){if(!Cn())return n();let i=performance.now();try{return n()}finally{let n=performance.now()-i;console.error(wn({phase:t,pluginId:e.pluginId,source:e.source,elapsedMs:n,extras:r}))}}const En=Symbol.for(`openclaw.contextEngineRegistryState`),Dn=`core`,On=G(En,()=>({engines:new Map}));function kn(){return On}function An(e){let t=e.trim();if(!t)throw Error(`registerContextEngineForOwner: owner must be a non-empty string, got ${JSON.stringify(e)}`);return t}function jn(e,t,n,r){let i=An(n),a=kn().engines,o=a.get(e);return e===T(`contextEngine`)&&i!==Dn?{ok:!1,existingOwner:Dn}:o&&o.owner!==i||o&&r?.allowSameOwnerRefresh!==!0?{ok:!1,existingOwner:o.owner}:(a.set(e,{factory:t,owner:i}),{ok:!0})}function Mn(e){let t=An(e),n=kn().engines;for(let[e,r]of n.entries())r.owner===t&&n.delete(e)}const Nn=[`system.run.prepare`,`system.run`,`system.which`],Pn=[`system.execApprovals.get`,`system.execApprovals.set`];function Fn(t,n){let r=e(t);if(!r){let t=e(n);return t?t.startsWith(`/`)?t:`/${t}`:null}return r.startsWith(`/`)?r:`/${r}`}function In(e){let t=e.replace(/\/{2,}/g,`/`);return t.length<=1?t:t.replace(/\/+$/,``)}function Ln(e){try{return new URL(e,`http://localhost`).pathname}catch{return e}}function Rn(e){return In(t(Ln(e)))||`/`}function zn(e,t,n){let r=Rn(n);t.has(r)||(t.add(r),e.push(r))}function Bn(e,t=32){let n=[],r=new Set;zn(n,r,e);let i=e,a=!1,o=0;for(let e=0;e<t;e++){let e=i;try{e=decodeURIComponent(i)}catch{a=!0;break}if(e===i)break;o+=1,i=e,zn(n,r,i)}let s=!1;if(!a)try{s=decodeURIComponent(i)!==i}catch{a=!0}return{candidates:n,decodePasses:o,decodePassLimitReached:s,malformedEncoding:a}}function Vn(e){let{candidates:t}=Bn(e);return t[t.length-1]??`/`}function Hn(e,t){return e===t||e.startsWith(`${t}/`)||e.startsWith(`${t}%`)}function Un(e,t){let n=Vn(e.path),r=Vn(t.path);if(e.match===`exact`&&t.match===`exact`)return n===r;if(e.match===`prefix`&&t.match===`prefix`)return Hn(n,r)||Hn(r,n);let i=e.match===`prefix`?e:t;return Hn(Vn((e.match===`exact`?e:t).path),Vn(i.path))}function Wn(e,t){return e.find(e=>Un(e,t))}const Gn=G(Symbol.for(`openclaw.pluginRuntimeGatewayRequestScope`),()=>new ge);function Kn(e,t){let n=Gn.getStore(),r=n?{...n,pluginId:e}:{pluginId:e,isWebchatConnect:()=>!1};return Gn.run(r,t)}const qn=Symbol.for(`openclaw.agentHarnessRegistryState`);u(`agents/harness`);function Jn(){let e=globalThis;return e[qn]??={harnesses:new Map},e[qn]}function Yn(e,t){let n=e.id.trim();Jn().harnesses.set(n,{harness:{...e,id:n,pluginId:e.pluginId??t?.ownerPluginId},ownerPluginId:t?.ownerPluginId})}function Xn(e){return Jn().harnesses.get(e.trim())}function Zn(){return Array.from(Jn().harnesses.values())}function Qn(){Jn().harnesses.clear()}function $n(e){let t=Jn().harnesses;t.clear();for(let n of e)t.set(n.harness.id,n)}function er(e){if(e.activationSourceConfig!==void 0)return e.activationSourceConfig;let t=ie();return t&&e.config===I()?t:e.config??{}}const tr=Symbol.for(`openclaw.compactionProviderRegistryState`);function nr(){let e=globalThis;return e[tr]||(e[tr]={providers:new Map}),e[tr]}function rr(e,t){nr().providers.set(e.id,{provider:e,ownerPluginId:t?.ownerPluginId})}function ir(e){return nr().providers.get(e)}function ar(){return Array.from(nr().providers.values())}function or(e){let t=nr().providers;t.clear();for(let n of e)t.set(n.provider.id,n)}function Z(e){e.pushDiagnostic({level:e.level,pluginId:e.pluginId,source:e.source,message:e.message})}function sr(e){return s().find(t=>t.id===e)}function cr(t){let n=[];return e(t?.label)||n.push(`label`),e(t?.selectionLabel)||n.push(`selectionLabel`),e(t?.docsPath)||n.push(`docsPath`),typeof t?.blurb!=`string`&&n.push(`blurb`),n}function lr(t){let n=e(t.plugin?.id)??r(t.plugin?.id)??``;if(!n)return Z({level:`error`,pluginId:t.pluginId,source:t.source,message:`channel registration missing id`,pushDiagnostic:t.pushDiagnostic}),null;let i=t.plugin.meta,a=e(i?.id);a&&a!==n&&Z({level:`warn`,pluginId:t.pluginId,source:t.source,message:`channel "${n}" meta.id mismatch ("${a}"); using registered channel id`,pushDiagnostic:t.pushDiagnostic});let o=cr(i);return o.length>0&&Z({level:`warn`,pluginId:t.pluginId,source:t.source,message:`channel "${n}" registered incomplete metadata; filled missing ${o.join(`, `)}`,pushDiagnostic:t.pushDiagnostic}),{...t.plugin,id:n,meta:m({id:n,meta:i,existing:sr(n)})}}function ur(e){let t=Array.from(new Set(y(e)));return t.length>0?t:void 0}function dr(e){let t=Array.from(new Set((e??[]).filter(e=>e===`text-inference`||e===`image-generation`)));return t.length>0?t:void 0}function fr(t){if(!Array.isArray(t))return;let n=t.map(t=>{let n=e(t?.legacyProfileId),r=e(t?.promptLabel);return!n&&!r?null:{...n?{legacyProfileId:n}:{},...r?{promptLabel:r}:{}}}).filter(e=>e!==null);return n.length>0?n:void 0}function pr(e){if(e.methodId){if(e.auth.some(t=>t.id===e.methodId))return e.methodId;Z({level:`warn`,pluginId:e.pluginId,source:e.source,message:`provider "${e.providerId}" ${e.metadataKind} method "${e.methodId}" not found; falling back to available methods`,pushDiagnostic:e.pushDiagnostic})}}function mr(t){if(!t)return;let n=ur(t.allowedKeys),r=ur(t.initialSelections),i=e(t.message);if(!(!n&&!r&&!i))return{...n?{allowedKeys:n}:{},...r?{initialSelections:r}:{},...i?{message:i}:{}}}function hr(t){let n=e(t.setup.choiceId),r=e(t.setup.choiceLabel),i=e(t.setup.choiceHint),a=e(t.setup.groupId),o=e(t.setup.groupLabel),s=e(t.setup.groupHint),c=dr(t.setup.onboardingScopes),l=mr(t.setup.modelAllowlist);return{...n?{choiceId:n}:{},...r?{choiceLabel:r}:{},...i?{choiceHint:i}:{},...typeof t.setup.assistantPriority==`number`&&Number.isFinite(t.setup.assistantPriority)?{assistantPriority:t.setup.assistantPriority}:{},...t.setup.assistantVisibility===`manual-only`||t.setup.assistantVisibility===`visible`?{assistantVisibility:t.setup.assistantVisibility}:{},...a?{groupId:a}:{},...o?{groupLabel:o}:{},...s?{groupHint:s}:{},...t.methodId?{methodId:t.methodId}:{},...c?{onboardingScopes:c}:{},...l?{modelAllowlist:l}:{}}}function gr(t,n){let r=e(t.label),i=e(t.hint);return{...r?{label:r}:{},...i?{hint:i}:{},...n?{methodId:n}:{}}}function _r(t){let n=t.auth.length>0;if(!t.setup)return;if(!n){Z({level:`warn`,pluginId:t.pluginId,source:t.source,message:`provider "${t.providerId}" setup metadata ignored because it has no auth methods`,pushDiagnostic:t.pushDiagnostic});return}let r=pr({providerId:t.providerId,pluginId:t.pluginId,source:t.source,auth:t.auth,methodId:e(t.setup.methodId),metadataKind:`setup`,pushDiagnostic:t.pushDiagnostic});return hr({setup:t.setup,methodId:r})}function vr(t){let n=new Set,r=[];for(let i of t.auth){let a=e(i.id);if(!a){Z({level:`error`,pluginId:t.pluginId,source:t.source,message:`provider "${t.providerId}" auth method missing id`,pushDiagnostic:t.pushDiagnostic});continue}if(n.has(a)){Z({level:`error`,pluginId:t.pluginId,source:t.source,message:`provider "${t.providerId}" auth method duplicated id "${a}"`,pushDiagnostic:t.pushDiagnostic});continue}n.add(a);let o=i.wizard,s=o?_r({providerId:t.providerId,pluginId:t.pluginId,source:t.source,auth:[{...i,id:a}],setup:o,pushDiagnostic:t.pushDiagnostic}):void 0;r.push({...i,id:a,label:e(i.label)??a,...e(i.hint)?{hint:e(i.hint)}:{},...s?{wizard:s}:{}})}return r}function yr(t){if(!t.wizard)return;let n=t.auth.length>0,r=()=>{let e=t.wizard?.setup;if(e)return _r({providerId:t.providerId,pluginId:t.pluginId,source:t.source,auth:t.auth,setup:e,pushDiagnostic:t.pushDiagnostic})},i=()=>{let r=t.wizard?.modelPicker;if(r){if(!n){Z({level:`warn`,pluginId:t.pluginId,source:t.source,message:`provider "${t.providerId}" model-picker metadata ignored because it has no auth methods`,pushDiagnostic:t.pushDiagnostic});return}return gr(r,pr({providerId:t.providerId,pluginId:t.pluginId,source:t.source,auth:t.auth,methodId:e(r.methodId),metadataKind:`model-picker`,pushDiagnostic:t.pushDiagnostic}))}},a=r(),o=i();if(!(!a&&!o))return{...a?{setup:a}:{},...o?{modelPicker:o}:{}}}function br(t){let n=e(t.provider.id);if(!n)return Z({level:`error`,pluginId:t.pluginId,source:t.source,message:`provider registration missing id`,pushDiagnostic:t.pushDiagnostic}),null;let r=vr({providerId:n,pluginId:t.pluginId,source:t.source,auth:t.provider.auth??[],pushDiagnostic:t.pushDiagnostic}),i=e(t.provider.docsPath),a=ur(t.provider.aliases),o=ur(t.provider.deprecatedProfileIds),s=fr(t.provider.oauthProfileIdRepairs),c=ur(t.provider.envVars),l=yr({providerId:n,pluginId:t.pluginId,source:t.source,auth:r,wizard:t.provider.wizard,pushDiagnostic:t.pushDiagnostic}),u=t.provider.catalog,d=t.provider.discovery;u&&d&&Z({level:`warn`,pluginId:t.pluginId,source:t.source,message:`provider "${n}" registered both catalog and discovery; using catalog`,pushDiagnostic:t.pushDiagnostic});let{wizard:f,docsPath:p,aliases:m,envVars:ee,catalog:h,discovery:g,..._}=t.provider;return{..._,id:n,label:e(t.provider.label)??n,...i?{docsPath:i}:{},...a?{aliases:a}:{},...o?{deprecatedProfileIds:o}:{},...s?{oauthProfileIdRepairs:s}:{},...c?{envVars:c}:{},auth:r,...u?{catalog:u}:{},...!u&&d?{discovery:d}:{},...l?{wizard:l}:{}}}const xr=e=>(t,n)=>{let r=e(t,n);return r&&typeof r==`object`&&`then`in r?Promise.resolve(r).then(e=>Zt(e)):Zt(r)},Sr=G(Symbol.for(`openclaw.activePluginHookRegistrations`),()=>new Map);function Cr(t){let n=z(),r=new Set(Object.keys(t.coreGatewayHandlers??{})),a=new Map,o=e=>{n.diagnostics.push(e)},s=(e,r)=>{if(e.origin!==`bundled`){o({level:`error`,pluginId:e.id,source:e.source,message:`only bundled plugins can register Pi embedded extension factories`});return}if(!(e.contracts?.embeddedExtensionFactories??[]).includes(`pi`)){o({level:`error`,pluginId:e.id,source:e.source,message:`plugin must declare contracts.embeddedExtensionFactories: ["pi"] to register Pi embedded extension factories`});return}if(typeof r!=`function`){o({level:`error`,pluginId:e.id,source:e.source,message:`embedded extension factory must be a function`});return}n.embeddedExtensionFactories.some(t=>t.pluginId===e.id&&t.rawFactory===r)||n.embeddedExtensionFactories.push({pluginId:e.id,pluginName:e.name,rawFactory:r,factory:async n=>{try{await r(n)}catch(n){let r=n instanceof Error?n.message:String(n);t.logger.warn(`[plugins] embedded extension factory failed for ${e.id}: ${r}`)}},source:e.source,rootDir:e.rootDir})},c=(e,r)=>{if(e.origin!==`bundled`){o({level:`error`,pluginId:e.id,source:e.source,message:`only bundled plugins can register Codex app-server extension factories`});return}if(!(e.contracts?.embeddedExtensionFactories??[]).includes(`codex-app-server`)){o({level:`error`,pluginId:e.id,source:e.source,message:`plugin must declare contracts.embeddedExtensionFactories: ["codex-app-server"] to register Codex app-server extension factories`});return}if(typeof r!=`function`){o({level:`error`,pluginId:e.id,source:e.source,message:`codex app-server extension factory must be a function`});return}n.codexAppServerExtensionFactories.some(t=>t.pluginId===e.id&&t.rawFactory===r)||n.codexAppServerExtensionFactories.push({pluginId:e.id,pluginName:e.name,rawFactory:r,factory:async n=>{try{await r(n)}catch(n){let r=n instanceof Error?n.message:String(n);t.logger.warn(`[plugins] codex app-server extension factory failed for ${e.id}: ${r}`)}},source:e.source,rootDir:e.rootDir})},l=(e,t,r)=>{let i=r?.names??(r?.name?[r.name]:[]),a=r?.optional===!0,o=typeof t==`function`?t:e=>t;typeof t!=`function`&&i.push(t.name);let s=i.map(e=>e.trim()).filter(Boolean);s.length>0&&e.toolNames.push(...s),n.tools.push({pluginId:e.id,pluginName:e.name,factory:o,names:s,optional:a,source:e.source,rootDir:e.rootDir})},u=(e,r,i,s,c)=>{let l=(Array.isArray(r)?r:[r]).map(e=>e.trim()).filter(Boolean),u=s?.entry??null,d=u?.hook.name??s?.name?.trim();if(!d){o({level:`warn`,pluginId:e.id,source:e.source,message:`hook registration missing name`});return}let f=n.hooks.find(e=>e.entry.hook.name===d);if(f){o({level:`error`,pluginId:e.id,source:e.source,message:`hook already registered: ${d} (${f.pluginId})`});return}let p=u?.hook.description??s?.description??``,m=u?{...u,hook:{...u.hook,name:d,description:p,source:`openclaw-plugin`,pluginId:e.id},metadata:{...u.metadata,events:l}}:{hook:{name:d,description:p,source:`openclaw-plugin`,pluginId:e.id,filePath:e.source,baseDir:U.dirname(e.source),handlerPath:e.source},frontmatter:{},metadata:{events:l},invocation:{enabled:!0}};e.hookNames.push(d),n.hooks.push({pluginId:e.id,entry:m,events:l,source:e.source});let ee=c?.hooks?.internal?.enabled!==!1;if(!t.activateGlobalSideEffects||!ee||s?.register===!1)return;let h=Sr.get(d)??[];for(let e of h)Me(e.event,e.handler);let g=[];for(let e of l)je(e,i),g.push({event:e,handler:i});Sr.set(d,g);let _=a.get(e.id)??[];_.push({name:d,previousRegistrations:[...h]}),a.set(e.id,_)},d=(e,t,i,a)=>{let s=t.trim();if(!s)return;if(r.has(s)||n.gatewayHandlers[s]){o({level:`error`,pluginId:e.id,source:e.source,message:`gateway method already registered: ${s}`});return}n.gatewayHandlers[s]=i;let c=V(s,a?.scope);c.coercedToReservedAdmin&&o({level:`warn`,pluginId:e.id,source:e.source,message:`gateway method scope coerced to operator.admin for reserved core namespace: ${s}`});let l=c.scope;l&&(n.gatewayMethodScopes??={},n.gatewayMethodScopes[s]=l),e.gatewayMethods.push(s)},f=t=>`${e(t.pluginId)||`unknown-plugin`} (${e(t.source)||`unknown-source`})`,p=(e,t)=>{let r=Fn(t.path);if(!r){o({level:`warn`,pluginId:e.id,source:e.source,message:`http route registration missing path`});return}if(t.auth!==`gateway`&&t.auth!==`plugin`){o({level:`error`,pluginId:e.id,source:e.source,message:`http route registration missing or invalid auth: ${r}`});return}let i=t.match??`exact`,a=Wn(n.httpRoutes,{path:r,match:i});if(a&&a.auth!==t.auth){o({level:`error`,pluginId:e.id,source:e.source,message:`http route overlap rejected: ${r} (${i}, ${t.auth}) overlaps ${a.path} (${a.match}, ${a.auth}) owned by ${f(a)}`});return}let s=n.httpRoutes.findIndex(e=>e.path===r&&e.match===i);if(s>=0){let a=n.httpRoutes[s];if(!a)return;if(!t.replaceExisting){o({level:`error`,pluginId:e.id,source:e.source,message:`http route already registered: ${r} (${i}) by ${f(a)}`});return}if(a.pluginId&&a.pluginId!==e.id){o({level:`error`,pluginId:e.id,source:e.source,message:`http route replacement rejected: ${r} (${i}) owned by ${f(a)}`});return}n.httpRoutes[s]={pluginId:e.id,path:r,handler:t.handler,auth:t.auth,match:i,...t.gatewayRuntimeScopeSurface?{gatewayRuntimeScopeSurface:t.gatewayRuntimeScopeSurface}:{},source:e.source};return}e.httpRoutes+=1,n.httpRoutes.push({pluginId:e.id,path:r,handler:t.handler,auth:t.auth,match:i,...t.gatewayRuntimeScopeSurface?{gatewayRuntimeScopeSurface:t.gatewayRuntimeScopeSurface}:{},source:e.source})},m=(e,t,r=`full`)=>{let i=typeof t.plugin==`object`?t:{plugin:t},a=lr({pluginId:e.id,source:e.source,plugin:i.plugin,pushDiagnostic:o});if(!a)return;let s=a.id,c=n.channels.find(e=>e.plugin.id===s);if(r!==`setup-only`&&c){o({level:`error`,pluginId:e.id,source:e.source,message:`channel already registered: ${s} (${c.pluginId})`});return}let l=n.channelSetups.find(e=>e.plugin.id===s);if(l){o({level:`error`,pluginId:e.id,source:e.source,message:`channel setup already registered: ${s} (${l.pluginId})`});return}e.channelIds.push(s),n.channelSetups.push({pluginId:e.id,pluginName:e.name,plugin:a,source:e.source,enabled:e.enabled,rootDir:e.rootDir}),r!==`setup-only`&&n.channels.push({pluginId:e.id,pluginName:e.name,plugin:a,source:e.source,rootDir:e.rootDir})},ee=(e,t)=>{let r=br({pluginId:e.id,source:e.source,provider:t,pushDiagnostic:o});if(!r)return;let i=r.id,a=n.providers.find(e=>e.provider.id===i);if(a){o({level:`error`,pluginId:e.id,source:e.source,message:`provider already registered: ${i} (${a.pluginId})`});return}e.providerIds.push(i),n.providers.push({pluginId:e.id,pluginName:e.name,provider:r,source:e.source,rootDir:e.rootDir})},h=(e,r)=>{let i=r.id.trim();if(!i){o({level:`error`,pluginId:e.id,source:e.source,message:`agent harness registration missing id`});return}let a=t.activateGlobalSideEffects===!1?n.agentHarnesses.find(e=>e.harness.id===i):Xn(i);if(a){let t=`ownerPluginId`in a?a.ownerPluginId:`pluginId`in a?a.pluginId:void 0,n=t?` (owner: ${t})`:``;o({level:`error`,pluginId:e.id,source:e.source,message:`agent harness already registered: ${i}${n}`});return}let s={...r,id:i,pluginId:r.pluginId??e.id};t.activateGlobalSideEffects!==!1&&Yn(s,{ownerPluginId:e.id}),e.agentHarnessIds.push(i),n.agentHarnesses.push({pluginId:e.id,pluginName:e.name,harness:s,source:e.source,rootDir:e.rootDir})},g=(e,t)=>{let r=t.id.trim();if(!r){o({level:`error`,pluginId:e.id,source:e.source,message:`cli backend registration missing id`});return}let i=(n.cliBackends??[]).find(e=>e.backend.id===r);if(i){o({level:`error`,pluginId:e.id,source:e.source,message:`cli backend already registered: ${r} (${i.pluginId})`});return}(n.cliBackends??=[]).push({pluginId:e.id,pluginName:e.name,backend:{...t,id:r},source:e.source,rootDir:e.rootDir}),e.cliBackendIds.push(r)},_=(e,t)=>{if((!t.input||t.input.length===0)&&(!t.output||t.output.length===0)){o({level:`warn`,pluginId:e.id,source:e.source,message:`text transform registration has no input or output replacements`});return}n.textTransforms.push({pluginId:e.id,pluginName:e.name,transforms:t,source:e.source,rootDir:e.rootDir})},v=e=>{let t=e.provider.id.trim(),{record:n,kindLabel:r}=e,i=`${r} registration missing id`,a=`${r} already registered: ${t}`;if(!t){o({level:`error`,pluginId:n.id,source:n.source,message:i});return}let s=e.registrations.find(e=>e.provider.id===t);if(s){o({level:`error`,pluginId:n.id,source:n.source,message:`${a} (${s.pluginId})`});return}e.ownedIds.push(t),e.registrations.push({pluginId:n.id,pluginName:n.name,provider:e.provider,source:n.source,rootDir:n.rootDir})},y=(e,t)=>{v({record:e,provider:t,kindLabel:`speech provider`,registrations:n.speechProviders,ownedIds:e.speechProviderIds})},b=(e,t)=>{v({record:e,provider:t,kindLabel:`realtime transcription provider`,registrations:n.realtimeTranscriptionProviders,ownedIds:e.realtimeTranscriptionProviderIds})},x=(e,t)=>{v({record:e,provider:t,kindLabel:`realtime voice provider`,registrations:n.realtimeVoiceProviders,ownedIds:e.realtimeVoiceProviderIds})},S=(e,t)=>{v({record:e,provider:t,kindLabel:`media provider`,registrations:n.mediaUnderstandingProviders,ownedIds:e.mediaUnderstandingProviderIds})},C=(e,t)=>{v({record:e,provider:t,kindLabel:`image-generation provider`,registrations:n.imageGenerationProviders,ownedIds:e.imageGenerationProviderIds})},te=(e,t)=>{v({record:e,provider:t,kindLabel:`video-generation provider`,registrations:n.videoGenerationProviders,ownedIds:e.videoGenerationProviderIds})},E=(e,t)=>{v({record:e,provider:t,kindLabel:`music-generation provider`,registrations:n.musicGenerationProviders,ownedIds:e.musicGenerationProviderIds})},D=(e,t)=>{v({record:e,provider:t,kindLabel:`web fetch provider`,registrations:n.webFetchProviders,ownedIds:e.webFetchProviderIds})},O=(e,t)=>{v({record:e,provider:t,kindLabel:`web search provider`,registrations:n.webSearchProviders,ownedIds:e.webSearchProviderIds})},k=(e,t,r)=>{let i=(r?.descriptors??[]).map(e=>({name:e.name.trim(),description:e.description.trim(),hasSubcommands:e.hasSubcommands})).filter(e=>e.name&&e.description),a=[...r?.commands??[],...i.map(e=>e.name)].map(e=>e.trim()).filter(Boolean);if(a.length===0){o({level:`error`,pluginId:e.id,source:e.source,message:`cli registration missing explicit commands metadata`});return}let s=n.cliRegistrars.find(e=>e.commands.some(e=>a.includes(e)));if(s){let t=a.find(e=>s.commands.includes(e));o({level:`error`,pluginId:e.id,source:e.source,message:`cli command already registered: ${t??a[0]} (${s.pluginId})`});return}e.cliCommands.push(...a),n.cliRegistrars.push({pluginId:e.id,pluginName:e.name,register:t,commands:a,descriptors:i,source:e.source,rootDir:e.rootDir})},A=new Set([...Nn,...Pn,`system.notify`]),j=(e,t)=>{let r=e=>(e??[]).map(e=>e.trim()).filter(Boolean),i={restartPrefixes:r(t.restartPrefixes),hotPrefixes:r(t.hotPrefixes),noopPrefixes:r(t.noopPrefixes)};if((i.restartPrefixes?.length??0)===0&&(i.hotPrefixes?.length??0)===0&&(i.noopPrefixes?.length??0)===0){o({level:`warn`,pluginId:e.id,source:e.source,message:`reload registration missing prefixes`});return}n.reloads??=[],n.reloads.push({pluginId:e.id,pluginName:e.name,registration:i,source:e.source,rootDir:e.rootDir})},M=(t,r)=>{let i=r.command.trim();if(!i){o({level:`error`,pluginId:t.id,source:t.source,message:`node host command registration missing command`});return}if(A.has(i)){o({level:`error`,pluginId:t.id,source:t.source,message:`node host command reserved by core: ${i}`});return}n.nodeHostCommands??=[];let a=n.nodeHostCommands.find(e=>e.command.command===i);if(a){o({level:`error`,pluginId:t.id,source:t.source,message:`node host command already registered: ${i} (${a.pluginId})`});return}n.nodeHostCommands.push({pluginId:t.id,pluginName:t.name,command:{...r,command:i,cap:e(r.cap)},source:t.source,rootDir:t.rootDir})},N=(e,t)=>{n.securityAuditCollectors??=[],n.securityAuditCollectors.push({pluginId:e.id,pluginName:e.name,collector:t,source:e.source,rootDir:e.rootDir})},P=(e,t)=>{let r=t.id.trim();if(!r)return;let i=n.services.find(e=>e.service.id===r);if(i){if(i.pluginId===e.id)return;o({level:`error`,pluginId:e.id,source:e.source,message:`service already registered: ${r} (${i.pluginId})`});return}e.services.push(r),n.services.push({pluginId:e.id,pluginName:e.name,service:t,source:e.source,rootDir:e.rootDir})},ne=(e,r)=>{let i=r.name.trim();if(!i){o({level:`error`,pluginId:e.id,source:e.source,message:`command registration missing name`});return}if(t.activateGlobalSideEffects){let t=Pt(e.id,r,{pluginName:e.name,pluginRoot:e.rootDir});if(!t.ok){o({level:`error`,pluginId:e.id,source:e.source,message:`command registration failed: ${t.error}`});return}}else{let t=Mt(r);if(t){o({level:`error`,pluginId:e.id,source:e.source,message:`command registration failed: ${t}`});return}}e.commands.push(i),n.commands.push({pluginId:e.id,pluginName:e.name,command:r,source:e.source,rootDir:e.rootDir})},re=(e,t,r,i,a)=>{if(!$t(t)){o({level:`warn`,pluginId:e.id,source:e.source,message:`unknown typed hook "${String(t)}" ignored`});return}let s=r;if(a?.allowPromptInjection===!1&&tn(t)){if(t===`before_prompt_build`){o({level:`warn`,pluginId:e.id,source:e.source,message:`typed hook "${t}" blocked by plugins.entries.${e.id}.hooks.allowPromptInjection=false`});return}t===`before_agent_start`&&(o({level:`warn`,pluginId:e.id,source:e.source,message:`typed hook "${t}" prompt fields constrained by plugins.entries.${e.id}.hooks.allowPromptInjection=false`}),s=xr(r))}e.hookCount+=1,n.typedHooks.push({pluginId:e.id,hookName:t,handler:s,priority:i?.priority,source:e.source})},F=(e,t)=>{n.conversationBindingResolvedHandlers.push({pluginId:e.id,pluginName:e.name,pluginRoot:e.rootDir,handler:t,source:e.source,rootDir:e.rootDir})},ie=e=>({info:e.info,warn:e.warn,error:e.error,debug:e.debug}),ae=new Map,I=e=>{let n=ae.get(e);if(n)return n;let r=new Proxy(t.runtime,{get(t,n,r){if(n!==`subagent`)return Reflect.get(t,n,r);let i=Reflect.get(t,n,r);return{run:t=>Kn(e,()=>i.run(t)),waitForRun:t=>Kn(e,()=>i.waitForRun(t)),getSessionMessages:t=>Kn(e,()=>i.getSessionMessages(t)),getSession:t=>Kn(e,()=>i.getSession(t)),deleteSession:t=>Kn(e,()=>i.deleteSession(t))}}});return ae.set(e,r),r};return{registry:n,createApi:(e,r)=>{let a=r.registrationMode??`full`;return de({id:e.id,name:e.name,version:e.version,description:e.description,source:e.source,rootDir:e.rootDir,registrationMode:a,config:r.config,pluginConfig:r.pluginConfig,runtime:I(e.id),logger:ie(t.logger),resolvePath:e=>i(e),handlers:{...a===`full`?{registerTool:(t,n)=>l(e,t,n),registerHook:(t,n,i)=>u(e,t,n,i,r.config),registerHttpRoute:t=>p(e,t),registerProvider:t=>ee(e,t),registerAgentHarness:t=>h(e,t),registerDetachedTaskRuntime:t=>{let n=tt();if(n&&n.pluginId!==e.id){o({level:`error`,pluginId:e.id,source:e.source,message:`detached task runtime already registered by ${n.pluginId}`});return}et(e.id,t)},registerSpeechProvider:t=>y(e,t),registerRealtimeTranscriptionProvider:t=>b(e,t),registerRealtimeVoiceProvider:t=>x(e,t),registerMediaUnderstandingProvider:t=>S(e,t),registerImageGenerationProvider:t=>C(e,t),registerVideoGenerationProvider:t=>te(e,t),registerMusicGenerationProvider:t=>E(e,t),registerWebFetchProvider:t=>D(e,t),registerWebSearchProvider:t=>O(e,t),registerGatewayMethod:(t,n,r)=>d(e,t,n,r),registerService:t=>P(e,t),registerCliBackend:t=>g(e,t),registerTextTransforms:t=>_(e,t),registerReload:t=>j(e,t),registerNodeHostCommand:t=>M(e,t),registerSecurityAuditCollector:t=>N(e,t),registerInteractiveHandler:t=>{let n=qt(e.id,t,{pluginName:e.name,pluginRoot:e.rootDir});n.ok||o({level:`warn`,pluginId:e.id,source:e.source,message:n.error??`interactive handler registration failed`})},onConversationBindingResolved:t=>F(e,t),registerCommand:t=>ne(e,t),registerContextEngine:(t,n)=>{if(t===T(`contextEngine`)){o({level:`error`,pluginId:e.id,source:e.source,message:`context engine id reserved by core: ${t}`});return}let r=jn(t,n,`plugin:${e.id}`,{allowSameOwnerRefresh:!0});if(!r.ok){o({level:`error`,pluginId:e.id,source:e.source,message:`context engine already registered: ${t} (${r.existingOwner})`});return}e.contextEngineIds?.includes(t)||(e.contextEngineIds=[...e.contextEngineIds??[],t])},registerCompactionProvider:t=>{let n=ir(t.id);if(n){let r=n.ownerPluginId?` (owner: ${n.ownerPluginId})`:``;o({level:`error`,pluginId:e.id,source:e.source,message:`compaction provider already registered: ${t.id}${r}`});return}rr(t,{ownerPluginId:e.id})},registerEmbeddedExtensionFactory:t=>{s(e,t)},registerCodexAppServerExtensionFactory:t=>{c(e,t)},registerMemoryCapability:t=>{if(!w(e.kind,`memory`)){o({level:`error`,pluginId:e.id,source:e.source,message:`only memory plugins can register a memory capability`});return}if(Array.isArray(e.kind)&&e.kind.length>1&&!e.memorySlotSelected){o({level:`warn`,pluginId:e.id,source:e.source,message:`dual-kind plugin not selected for memory slot; skipping memory capability registration`});return}un(e.id,t)},registerMemoryPromptSection:t=>{if(!w(e.kind,`memory`)){o({level:`error`,pluginId:e.id,source:e.source,message:`only memory plugins can register a memory prompt section`});return}if(Array.isArray(e.kind)&&e.kind.length>1&&!e.memorySlotSelected){o({level:`warn`,pluginId:e.id,source:e.source,message:`dual-kind plugin not selected for memory slot; skipping memory prompt section registration`});return}pn(t)},registerMemoryPromptSupplement:t=>{mn(e.id,t)},registerMemoryCorpusSupplement:t=>{ln(e.id,t)},registerMemoryFlushPlan:t=>{if(!w(e.kind,`memory`)){o({level:`error`,pluginId:e.id,source:e.source,message:`only memory plugins can register a memory flush plan`});return}if(Array.isArray(e.kind)&&e.kind.length>1&&!e.memorySlotSelected){o({level:`warn`,pluginId:e.id,source:e.source,message:`dual-kind plugin not selected for memory slot; skipping memory flush plan registration`});return}_n(t)},registerMemoryRuntime:t=>{if(!w(e.kind,`memory`)){o({level:`error`,pluginId:e.id,source:e.source,message:`only memory plugins can register a memory runtime`});return}if(Array.isArray(e.kind)&&e.kind.length>1&&!e.memorySlotSelected){o({level:`warn`,pluginId:e.id,source:e.source,message:`dual-kind plugin not selected for memory slot; skipping memory runtime registration`});return}yn(t)},registerMemoryEmbeddingProvider:t=>{if(w(e.kind,`memory`)){if(Array.isArray(e.kind)&&e.kind.length>1&&!e.memorySlotSelected){o({level:`warn`,pluginId:e.id,source:e.source,message:`dual-kind plugin not selected for memory slot; skipping memory embedding provider registration`});return}}else if(!(e.contracts?.memoryEmbeddingProviders??[]).includes(t.id)){o({level:`error`,pluginId:e.id,source:e.source,message:`plugin must own memory slot or declare contracts.memoryEmbeddingProviders for adapter: ${t.id}`});return}let r=on(t.id);if(r){let n=r.ownerPluginId?` (owner: ${r.ownerPluginId})`:``;o({level:`error`,pluginId:e.id,source:e.source,message:`memory embedding provider already registered: ${t.id}${n}`});return}an(t,{ownerPluginId:e.id}),n.memoryEmbeddingProviders.push({pluginId:e.id,pluginName:e.name,provider:t,source:e.source,rootDir:e.rootDir})},on:(t,n,i)=>re(e,t,n,i,r.hookPolicy)}:{},registerCli:(t,n)=>k(e,t,n),registerChannel:t=>m(e,t,a)}})},rollbackPluginGlobalSideEffects:e=>{if(t.activateGlobalSideEffects===!1)return;kt(e),Yt(e),Mn(`plugin:${e}`);let n=a.get(e)??[];for(let e of n.toReversed()){let t=Sr.get(e.name)??[];for(let e of t)Me(e.event,e.handler);if(e.previousRegistrations.length===0){Sr.delete(e.name);continue}for(let t of e.previousRegistrations)je(t.event,t.handler);Sr.set(e.name,[...e.previousRegistrations])}a.delete(e)},pushDiagnostic:o,registerTool:l,registerChannel:m,registerProvider:ee,registerAgentHarness:h,registerCliBackend:g,registerTextTransforms:_,registerSpeechProvider:y,registerRealtimeTranscriptionProvider:b,registerRealtimeVoiceProvider:x,registerMediaUnderstandingProvider:S,registerImageGenerationProvider:C,registerVideoGenerationProvider:te,registerMusicGenerationProvider:E,registerWebSearchProvider:O,registerGatewayMethod:d,registerCli:k,registerReload:j,registerNodeHostCommand:M,registerSecurityAuditCollector:N,registerService:P,registerCommand:ne,registerHook:u,registerTypedHook:re}}function wr(e){let n=t(e.memorySlot);return!n||n===`none`||n===`memory-core`?null:Qe({pluginConfig:Ze(e.cfg),cfg:e.cfg}).enabled?Ie:null}var Tr=class extends Error{constructor(e){let t=e.plugins.filter(e=>e.status===`error`),n=t.map(e=>`${e.id}: ${e.error??`unknown plugin load error`}`).join(`; `);super(`plugin load failed: ${n}`),this.name=`PluginLoadFailureError`,this.pluginIds=t.map(e=>e.id),this.registry=e}},Er=class extends Error{constructor(e){super(`plugin load reentry detected for cache key: ${e}`),this.name=`PluginLoadReentryError`,this.cacheKey=e}};const Q=new Map,Dr=new Set,Or=new Set,kr=[`version`,`config`,`agent`,`subagent`,`system`,`media`,`tts`,`stt`,`channel`,`events`,`logging`,`state`,`modelAuth`],Ar=()=>u(`plugins`);function jr(e){return(typeof e==`object`||typeof e==`function`)&&e!==null&&typeof e.then==`function`}function Mr(e){return{arrays:{tools:[...e.tools],hooks:[...e.hooks],typedHooks:[...e.typedHooks],channels:[...e.channels],channelSetups:[...e.channelSetups],providers:[...e.providers],cliBackends:[...e.cliBackends??[]],textTransforms:[...e.textTransforms],speechProviders:[...e.speechProviders],realtimeTranscriptionProviders:[...e.realtimeTranscriptionProviders],realtimeVoiceProviders:[...e.realtimeVoiceProviders],mediaUnderstandingProviders:[...e.mediaUnderstandingProviders],imageGenerationProviders:[...e.imageGenerationProviders],videoGenerationProviders:[...e.videoGenerationProviders],musicGenerationProviders:[...e.musicGenerationProviders],webFetchProviders:[...e.webFetchProviders],webSearchProviders:[...e.webSearchProviders],embeddedExtensionFactories:[...e.embeddedExtensionFactories],codexAppServerExtensionFactories:[...e.codexAppServerExtensionFactories],memoryEmbeddingProviders:[...e.memoryEmbeddingProviders],agentHarnesses:[...e.agentHarnesses],httpRoutes:[...e.httpRoutes],cliRegistrars:[...e.cliRegistrars],reloads:[...e.reloads??[]],nodeHostCommands:[...e.nodeHostCommands??[]],securityAuditCollectors:[...e.securityAuditCollectors??[]],services:[...e.services],commands:[...e.commands],conversationBindingResolvedHandlers:[...e.conversationBindingResolvedHandlers],diagnostics:[...e.diagnostics]},gatewayHandlers:{...e.gatewayHandlers},gatewayMethodScopes:{...e.gatewayMethodScopes}}}function Nr(e,t){e.tools=t.arrays.tools,e.hooks=t.arrays.hooks,e.typedHooks=t.arrays.typedHooks,e.channels=t.arrays.channels,e.channelSetups=t.arrays.channelSetups,e.providers=t.arrays.providers,e.cliBackends=t.arrays.cliBackends,e.textTransforms=t.arrays.textTransforms,e.speechProviders=t.arrays.speechProviders,e.realtimeTranscriptionProviders=t.arrays.realtimeTranscriptionProviders,e.realtimeVoiceProviders=t.arrays.realtimeVoiceProviders,e.mediaUnderstandingProviders=t.arrays.mediaUnderstandingProviders,e.imageGenerationProviders=t.arrays.imageGenerationProviders,e.videoGenerationProviders=t.arrays.videoGenerationProviders,e.musicGenerationProviders=t.arrays.musicGenerationProviders,e.webFetchProviders=t.arrays.webFetchProviders,e.webSearchProviders=t.arrays.webSearchProviders,e.embeddedExtensionFactories=t.arrays.embeddedExtensionFactories,e.codexAppServerExtensionFactories=t.arrays.codexAppServerExtensionFactories,e.memoryEmbeddingProviders=t.arrays.memoryEmbeddingProviders,e.agentHarnesses=t.arrays.agentHarnesses,e.httpRoutes=t.arrays.httpRoutes,e.cliRegistrars=t.arrays.cliRegistrars,e.reloads=t.arrays.reloads,e.nodeHostCommands=t.arrays.nodeHostCommands,e.securityAuditCollectors=t.arrays.securityAuditCollectors,e.services=t.arrays.services,e.commands=t.arrays.commands,e.conversationBindingResolvedHandlers=t.arrays.conversationBindingResolvedHandlers,e.diagnostics=t.arrays.diagnostics,e.gatewayHandlers=t.gatewayHandlers,e.gatewayMethodScopes=t.gatewayMethodScopes}function Pr(e){let t=!1;return{api:new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,r);return typeof i==`function`?(...n)=>{if(!t)return Reflect.apply(i,e,n)}:i}}),close:()=>{t=!0}}}function Fr(e,t){let n=Pr(t);try{let t=e(n.api);if(jr(t))throw Promise.resolve(t).catch(()=>{}),Error(`plugin register must be synchronous`)}finally{n.close()}}function Ir(e){if(process.platform!==`win32`||e.startsWith(`file://`))return e;if(U.win32.isAbsolute(e)){let t=e.replaceAll(`\\`,`/`);return t.startsWith(`//`)?new URL(`file:${encodeURI(t)}`).href:new URL(`file:///${encodeURI(t)}`).href}return e}function Lr(e){let t=new Map;return n=>{let r=P(n)&&!Br(n);return ne({cache:t,modulePath:n,importerUrl:import.meta.url,jitiFilename:import.meta.url,pluginSdkResolution:e.pluginSdkResolution,tryNative:r})}}function Rr(e){let t=`${U.sep}dist-runtime${U.sep}extensions${U.sep}`,n=e.indexOf(t);if(n===-1)return e;let r=`${e.slice(0,n)}${U.sep}dist${U.sep}extensions${U.sep}${e.slice(n+t.length)}`;return H.existsSync(r)?r:e}const zr=new Set;function Br(e){let t=U.resolve(e);for(let e of zr){let n=U.dirname(e);if(t===n||t.startsWith(`${n}${U.sep}`))return!0}return!1}function Vr(e){let t=U.join(e,`node_modules`);if(zr.has(t)||!H.existsSync(t))return;let n=(process.env.NODE_PATH??``).split(U.delimiter).map(e=>e.trim()).filter(e=>e.length>0);process.env.NODE_PATH=[t,...n.filter(e=>e!==t)].join(U.delimiter),he._initPaths?.(),zr.add(t)}function Hr(e){let t=Ur({installRoot:e.installRoot,pluginRoot:e.pluginRoot}),n=U.join(t,e.pluginId);H.mkdirSync(e.installRoot,{recursive:!0});try{H.chmodSync(e.installRoot,493)}catch{}H.mkdirSync(t,{recursive:!0});try{H.chmodSync(t,493)}catch{}H.accessSync(t,H.constants.W_OK);let r=H.mkdtempSync(U.join(t,`.plugin-${e.pluginId}-`)),i=U.join(r,`plugin`);try{Wr(e.pluginRoot,i),H.rmSync(n,{recursive:!0,force:!0}),H.renameSync(i,n)}finally{H.rmSync(r,{recursive:!0,force:!0})}return n}function Ur(e){let t=U.dirname(e.pluginRoot),n=U.dirname(t),r=U.basename(n),i=U.join(e.installRoot,r),a=U.join(i,`extensions`);H.mkdirSync(a,{recursive:!0,mode:493});for(let e of H.readdirSync(n,{withFileTypes:!0})){if(e.name===`extensions`)continue;let t=U.join(n,e.name),r=U.join(i,e.name);if(!H.existsSync(r))try{H.symlinkSync(t,r,e.isDirectory()?`junction`:`file`)}catch{e.isDirectory()?Wr(t,r):e.isFile()&&H.copyFileSync(t,r)}}if(r===`dist-runtime`){let t=U.join(U.dirname(n),`dist`),r=U.join(e.installRoot,`dist`);if(H.existsSync(t)&&!(H.existsSync(r)&&Li(r)===Li(t))){H.rmSync(r,{recursive:!0,force:!0});try{H.symlinkSync(t,r,`junction`)}catch{Wr(t,r)}}}return a}function Wr(e,t){H.mkdirSync(t,{recursive:!0,mode:493});for(let n of H.readdirSync(e,{withFileTypes:!0})){if(n.name===`node_modules`)continue;let r=U.join(e,n.name),i=U.join(t,n.name);if(n.isDirectory()){Wr(r,i);continue}if(n.isSymbolicLink()){H.symlinkSync(H.readlinkSync(r),i);continue}if(n.isFile()){H.copyFileSync(r,i);try{let e=H.statSync(r).mode;H.chmodSync(i,e|384)}catch{}}}}function Gr(e){if(!e.source)return;let t=U.relative(e.pluginRoot,e.source);return t.startsWith(`..`)||U.isAbsolute(t)?e.source:U.join(e.mirroredRoot,t)}function Kr(e){let t=Q.get(e);if(t)return Q.delete(e),Q.set(e,t),t}function qr(e,t){for(Q.has(e)&&Q.delete(e),Q.set(e,t);Q.size>128;){let e=Q.keys().next().value;if(!e)break;Q.delete(e)}}function Jr(e){let{roots:t,loadPaths:n}=D({workspaceDir:e.workspaceDir,loadPaths:e.plugins.loadPaths,env:e.env}),r=Object.fromEntries(Object.entries(e.installs??{}).map(([t,n])=>[t,{...n,installPath:typeof n.installPath==`string`?i(n.installPath,e.env):n.installPath,sourcePath:typeof n.sourcePath==`string`?i(n.sourcePath,e.env):n.sourcePath}])),a=me(e.onlyPluginIds),o=e.includeSetupOnlyChannelPlugins===!0?`setup-only`:`runtime`,s=e.forceSetupOnlyChannelPlugins===!0?`force-setup`:`normal-setup`,c=e.requireSetupEntryForSetupOnlyChannelPlugins===!0?`require-setup-entry`:`allow-full-fallback`,l=e.preferSetupRuntimeForChannelPlugins===!0?`prefer-setup`:`full`,u=e.loadModules===!1?`manifest-only`:`load-modules`,d=e.runtimeSubagentMode??`default`,f=JSON.stringify(e.coreGatewayMethodNames??[]);return`${t.workspace??``}::${t.global??``}::${t.stock??``}::${JSON.stringify({...e.plugins,installs:r,loadPaths:n,activationMetadataKey:e.activationMetadataKey??``})}::${a}::${o}::${s}::${c}::${l}::${u}::${d}::${e.pluginSdkResolution??`auto`}::${f}`}function Yr(e){let t=e.onlyPluginIdSet;return t?t.has(e.pluginId):!0}function Xr(e){return e?.allowGatewaySubagentBinding===!0?`gateway-bindable`:e?.subagent?`explicit`:`default`}function Zr(e){let t=Object.entries(e.activationSource.rootConfig?.channels??{}).filter(([,e])=>!e||typeof e!=`object`||Array.isArray(e)?!1:e.enabled===!0).map(([e])=>e).toSorted((e,t)=>e.localeCompare(t)),n=Object.entries(e.activationSource.plugins.entries).map(([e,t])=>[e,t?.enabled??null]).toSorted(([e],[t])=>e.localeCompare(t)),r=Object.entries(e.autoEnabledReasons).map(([e,t])=>[e,[...t]]).toSorted(([e],[t])=>e.localeCompare(t));return W(`sha256`).update(JSON.stringify({enabled:e.activationSource.plugins.enabled,allow:e.activationSource.plugins.allow,deny:e.activationSource.plugins.deny,memorySlot:e.activationSource.plugins.slots.memory,entries:n,enabledChannels:t,autoEnabledReasons:r})).digest(`hex`)}function Qr(e){return e.config!==void 0||e.activationSourceConfig!==void 0||e.autoEnabledReasons!==void 0||e.workspaceDir!==void 0||e.env!==void 0||le(e.onlyPluginIds)||e.runtimeOptions!==void 0||e.pluginSdkResolution!==void 0||e.coreGatewayHandlers!==void 0||e.includeSetupOnlyChannelPlugins===!0||e.forceSetupOnlyChannelPlugins===!0||e.requireSetupEntryForSetupOnlyChannelPlugins===!0||e.preferSetupRuntimeForChannelPlugins===!0||e.loadModules===!1}function $r(e={}){let t=e.env??process.env,n=p(e.config??{},t),r=er({config:e.config,activationSourceConfig:e.activationSourceConfig}),i=l(n.plugins),a=g({config:r}),o=ei({normalized:i,activationSource:a}),s=pe(e.onlyPluginIds),c=e.includeSetupOnlyChannelPlugins===!0,u=e.forceSetupOnlyChannelPlugins===!0,d=e.requireSetupEntryForSetupOnlyChannelPlugins===!0,f=e.preferSetupRuntimeForChannelPlugins===!0,m=Xr(e.runtimeOptions),ee=Object.keys(e.coreGatewayHandlers??{}).toSorted(),h=Jr({workspaceDir:e.workspaceDir,plugins:o,activationMetadataKey:Zr({activationSource:a,autoEnabledReasons:e.autoEnabledReasons??{}}),installs:n.plugins?.installs,env:t,onlyPluginIds:s,includeSetupOnlyChannelPlugins:c,forceSetupOnlyChannelPlugins:u,requireSetupEntryForSetupOnlyChannelPlugins:d,preferSetupRuntimeForChannelPlugins:f,loadModules:e.loadModules,runtimeSubagentMode:m,pluginSdkResolution:e.pluginSdkResolution,coreGatewayMethodNames:ee});return{env:t,cfg:n,normalized:o,activationSourceConfig:r,activationSource:a,autoEnabledReasons:e.autoEnabledReasons??{},onlyPluginIds:s,includeSetupOnlyChannelPlugins:c,forceSetupOnlyChannelPlugins:u,requireSetupEntryForSetupOnlyChannelPlugins:d,preferSetupRuntimeForChannelPlugins:f,shouldActivate:e.activate!==!1,shouldLoadModules:e.loadModules!==!1,runtimeSubagentMode:m,cacheKey:h}}function ei(e){let t=e.activationSource.plugins,n=ti(e.normalized.allow,t.allow),r=ti(e.normalized.deny,t.deny),i=ti(e.normalized.loadPaths,t.loadPaths);return n===e.normalized.allow&&r===e.normalized.deny&&i===e.normalized.loadPaths?e.normalized:{...e.normalized,allow:n,deny:r,loadPaths:i}}function ti(e,t){if(t.length===0)return e;let n=[...e],r=new Set(n);for(let e of t)r.has(e)||(n.push(e),r.add(e));return n.length===e.length?e:n}function ni(e={}){let t=se()??void 0;if(!t)return;if(!Qr(e))return t;let n=oe();if(!n)return;let r=$r(e);if(r.cacheKey===n||r.runtimeSubagentMode===`default`&&B()===`gateway-bindable`&&$r({...e,runtimeOptions:{...e.runtimeOptions,allowGatewaySubagentBinding:!0}}).cacheKey===n)return t}function ri(e){if(!e||!Qr(e))return ni();let t=ni(e);if(t)return t;if(!ai(e))return Ii(e)}function ii(e={}){return $r(e).cacheKey}function ai(e={}){return Dr.has(ii(e))}function oi(e){return ni(e)}function si(e){let t=e.schema;if(!t)return{ok:!0,value:e.value};let n=ae({schema:t,cacheKey:e.cacheKey??JSON.stringify(t),value:e.value??{},applyDefaults:!0});return n.ok?{ok:!0,value:n.value}:{ok:!1,errors:n.errors.map(e=>e.text)}}function ci(e){let t=new Set,n=[f(e),e];for(let e=0;e<n.length&&e<12;e+=1){let r=n[e];if(!t.has(r)){if(t.add(r),typeof r==`function`)return{register:r};if(r&&typeof r==`object`){let e=r,t=e.register??e.activate;if(typeof t==`function`)return{definition:e,register:t};for(let t of[`default`,`module`])t in e&&n.push(e[t])}}}let r=n[0];if(typeof r==`function`)return{register:r};if(r&&typeof r==`object`){let e=r;return{definition:e,register:e.register??e.activate}}return{}}function li(e){let n=t(e.OPENCLAW_PLUGIN_LOAD_DEBUG);return n===`1`||n===`true`||n===`yes`||n===`on`}function ui(e,t=`export`,n=new Set){if(e===null)return[`${t}:null`];if(typeof e!=`object`)return[`${t}:${typeof e}`];if(n.has(e))return[`${t}:circular`];n.add(e);let r=e,i=Object.keys(r).toSorted(),a=i.slice(0,8),o=i.length-a.length,s=[`${t}:object keys=${a.length>0?`${a.join(`,`)}${o>0?`,+${o}`:``}`:`none`}`];for(let e of[`default`,`module`,`register`,`activate`])Object.prototype.hasOwnProperty.call(r,e)&&s.push(...ui(r[e],`${t}.${e}`,n));return s}function di(e,t){let n=`plugin export missing register/activate`;return li(t)?`${n} (module shape: ${ui(e).join(`; `)})`:n}function $(e,t){if(e&&t&&typeof e==`object`&&typeof t==`object`){let n={...e};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return{...n}}return t??e}function fi(e,t){return{...e,...t,meta:$(e.meta,t.meta),capabilities:$(e.capabilities,t.capabilities),commands:$(e.commands,t.commands),doctor:$(e.doctor,t.doctor),reload:$(e.reload,t.reload),config:$(e.config,t.config),setup:$(e.setup,t.setup),messaging:$(e.messaging,t.messaging),actions:$(e.actions,t.actions),secrets:$(e.secrets,t.secrets)}}function pi(e){let t=f(e);if(!t||typeof t!=`object`)return{};let n=t;return n.kind!==`bundled-channel-entry`||typeof n.id!=`string`||typeof n.loadChannelPlugin!=`function`?{}:{id:n.id,loadChannelPlugin:n.loadChannelPlugin,...typeof n.loadChannelSecrets==`function`?{loadChannelSecrets:n.loadChannelSecrets}:{},...typeof n.setChannelRuntime==`function`?{setChannelRuntime:n.setChannelRuntime}:{}}}function mi(e){if(typeof e.registration.loadChannelPlugin!=`function`)return{};try{let t=e.registration.loadChannelPlugin(),n=e.registration.loadChannelSecrets?.();if(!t||typeof t!=`object`)return{};let r=$(t.secrets,n);return{plugin:{...t,...r===void 0?{}:{secrets:r}}}}catch(e){return{loadError:e}}}function hi(e,t={}){let n=f(e);if(!n||typeof n!=`object`)return{};let r=n;if(r.kind===`bundled-channel-setup-entry`&&typeof r.loadSetupPlugin==`function`)try{let e=t.installRuntimeDeps===!1?{installRuntimeDeps:!1}:void 0,n=r.loadSetupPlugin(e),i=typeof r.loadSetupSecrets==`function`?r.loadSetupSecrets(e):void 0;if(n&&typeof n==`object`){let e=$(n.secrets,i);return{plugin:{...n,...e===void 0?{}:{secrets:e}},usesBundledSetupContract:!0,...typeof r.setChannelRuntime==`function`?{setChannelRuntime:r.setChannelRuntime}:{}}}}catch(e){return{loadError:e}}let i=n;return!i.plugin||typeof i.plugin!=`object`?{}:{plugin:i.plugin}}function gi(e){return!e.setupSource||e.manifestChannels.length===0?!1:e.preferSetupRuntimeForChannelPlugins&&e.startupDeferConfiguredChannelFullLoadUntilAfterListen===!0?!0:!e.manifestChannels.some(t=>fe(e.cfg,t,e.env))}function _i(e){return e.channelId?e.channelId===e.pluginId||e.manifestChannels.includes(e.channelId):!0}function vi(e){return{id:e.id,name:e.name??e.id,description:e.description,version:e.version,format:e.format??`openclaw`,bundleFormat:e.bundleFormat,bundleCapabilities:e.bundleCapabilities,source:e.source,rootDir:e.rootDir,origin:e.origin,workspaceDir:e.workspaceDir,enabled:e.enabled,explicitlyEnabled:e.activationState?.explicitlyEnabled,activated:e.activationState?.activated,activationSource:e.activationState?.source,activationReason:e.activationState?.reason,status:e.enabled?`loaded`:`disabled`,toolNames:[],hookNames:[],channelIds:[],cliBackendIds:[],providerIds:[],speechProviderIds:[],realtimeTranscriptionProviderIds:[],realtimeVoiceProviderIds:[],mediaUnderstandingProviderIds:[],imageGenerationProviderIds:[],videoGenerationProviderIds:[],musicGenerationProviderIds:[],webFetchProviderIds:[],webSearchProviderIds:[],contextEngineIds:[],memoryEmbeddingProviderIds:[],agentHarnessIds:[],gatewayMethods:[],cliCommands:[],services:[],commands:[],httpRoutes:0,hookCount:0,configSchema:e.configSchema,configUiHints:void 0,configJsonSchema:void 0,contracts:e.contracts}}function yi(e,t){e.activated=!1,e.activationSource=`disabled`,e.activationReason=t}function bi(e){if(!(!e||e.length===0))return e.join(`; `)}function xi(e){let t=process.env.OPENCLAW_PLUGIN_LOADER_DEBUG_STACKS===`1`&&e.error instanceof Error&&typeof e.error.stack==`string`?e.error.stack:String(e.error),n=t.includes(`api.registerHttpHandler`)&&t.includes(`is not a function`)?`deprecated api.registerHttpHandler(...) was removed; use api.registerHttpRoute(...) for plugin-owned routes or registerPluginHttpRoute(...) for dynamic lifecycle routes`:null,r=n?`${n} (${t})`:t;e.logger.error(`${e.logPrefix}${r}`),e.record.status=`error`,e.record.error=r,e.record.failedAt=new Date,e.record.failurePhase=e.phase,e.registry.plugins.push(e.record),e.seenIds.set(e.pluginId,e.origin),e.registry.diagnostics.push({level:`error`,pluginId:e.record.id,source:e.record.source,message:`${e.diagnosticMessagePrefix}${r}`})}function Si(e){let t=new Map;for(let n of e){let e=n.failurePhase??`load`,r=t.get(e);if(r){r.push(n.id);continue}t.set(e,[n.id])}return[...t.entries()].map(([e,t])=>`${e}: ${t.join(`, `)}`).join(`; `)}function Ci(e,t){e.push(...t)}function wi(e,t){if(t&&e.plugins.some(e=>e.status===`error`))throw new Tr(e)}function Ti(){return{exact:new Set,dirs:[]}}function Ei(e,t,n=process.env){let r=t.trim();if(!r)return;let a=i(r,n);if(a&&!(e.exact.has(a)||e.dirs.includes(a))){if(x(a)?.isDirectory()){e.dirs.push(a);return}e.exact.add(a)}}function Di(e,t){return e.exact.has(t)?!0:e.dirs.some(e=>b(e,t))}function Oi(t){let n=Ti();for(let e of t.normalizedLoadPaths)Ei(n,e,t.env);let r=new Map,i=t.config.plugins?.installs??{};for(let[n,a]of Object.entries(i)){let i={trackedWithoutPaths:!1,matcher:Ti()},o=[a.installPath,a.sourcePath].map(t=>e(t)).filter(e=>!!e);if(o.length===0)i.trackedWithoutPaths=!0;else for(let e of o)Ei(i.matcher,e,t.env);r.set(n,i)}return{loadPathMatcher:n,installRules:r}}function ki(e){let t=i(e.source,e.env),n=e.index.installRules.get(e.pluginId);return n&&(n.trackedWithoutPaths||Di(n.matcher,t))?!0:Di(e.index.loadPathMatcher,t)}function Ai(e){let t=i(e.source,e.env),n=e.index.installRules.get(e.pluginId);return!n||n.trackedWithoutPaths?!1:Di(n.matcher,t)}function ji(e){let t=e.manifestByRoot.get(e.candidate.rootDir)?.id,n=e.candidate.origin===`global`&&t!==void 0&&Ai({pluginId:t,source:e.candidate.source,index:e.provenance,env:e.env});return e.candidate.origin===`config`?0:e.candidate.origin===`global`&&n?1:e.candidate.origin===`bundled`?2:e.candidate.origin===`workspace`?3:4}function Mi(e){let t=e.manifestByRoot.get(e.left.rootDir)?.id,n=e.manifestByRoot.get(e.right.rootDir)?.id;return!t||t!==n?0:ji({candidate:e.left,manifestByRoot:e.manifestByRoot,provenance:e.provenance,env:e.env})-ji({candidate:e.right,manifestByRoot:e.manifestByRoot,provenance:e.provenance,env:e.env})}function Ni(e){if(!e.emitWarning||!e.pluginsEnabled||e.allow.length>0)return;let t=e.discoverablePlugins.filter(e=>e.origin===`workspace`||e.origin===`global`);if(t.length===0||Or.has(e.warningCacheKey))return;let n=t.slice(0,6).map(e=>`${e.id} (${e.source})`).join(`, `),r=t.length>6?` (+${t.length-6} more)`:``;Or.add(e.warningCacheKey),e.logger.warn(`[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: ${n}${r}. Set plugins.allow to explicit trusted ids.`)}function Pi(e){let t=new Set(e.allowlist);for(let n of e.registry.plugins){if(n.status!==`loaded`||n.origin===`bundled`||t.has(n.id)||ki({pluginId:n.id,source:n.source,index:e.provenance,env:e.env}))continue;let r=`loaded without install/load-path provenance; treat as untracked local code and pin trust via plugins.allow or install records`;e.registry.diagnostics.push({level:`warn`,pluginId:n.id,source:n.source,message:r}),e.emitWarning&&e.logger.warn(`[plugins] ${n.id}: ${r} (${n.source})`)}}function Fi(e,t,n,r){R(e,t,n,r),we(e)}function Ii(e={}){if(e.activate===!1&&e.cache!==!1)throw Error(`loadOpenClawPlugins: activate:false requires cache:false to prevent command registry divergence`);let{env:t,cfg:n,normalized:r,activationSource:i,autoEnabledReasons:a,onlyPluginIds:s,includeSetupOnlyChannelPlugins:c,forceSetupOnlyChannelPlugins:l,requireSetupEntryForSetupOnlyChannelPlugins:u,preferSetupRuntimeForChannelPlugins:f,shouldActivate:p,shouldLoadModules:m,cacheKey:g,runtimeSubagentMode:v}=$r(e),y=e.logger??Ar(),b=e.mode===`validate`,x=ue(s),C=e.cache!==!1;if(C){let t=Kr(g);if(t)return $n(t.agentHarnesses),or(t.compactionProviders),rt(t.detachedTaskRuntimeRegistration),cn(t.memoryEmbeddingProviders),xn({capability:t.memoryCapability,corpusSupplements:t.memoryCorpusSupplements,promptBuilder:t.memoryPromptBuilder,promptSupplements:t.memoryPromptSupplements,flushPlanResolver:t.memoryFlushPlanResolver,runtime:t.memoryRuntime}),p&&Fi(t.registry,g,v,e.workspaceDir),t.registry}if(Dr.has(g))throw new Er(g);Dr.add(g);try{p&&(Qn(),Ot(),Jt(),it(),Sn());let s=Lr(e),T=null,D=()=>{if(T)return T;let t=N({pluginSdkResolution:e.pluginSdkResolution});if(!t)throw Error(`Unable to resolve plugin runtime module`);let n=Ir(t),r=Tn({source:t},`runtime-module`,()=>s(t)(n));if(typeof r.createPluginRuntime!=`function`)throw Error(`Plugin runtime module missing createPluginRuntime export`);return T=r.createPluginRuntime,T},O=null,k=()=>(O??=D()(e.runtimeOptions),O),A=new Set(kr),j=e=>A.has(e)?{configurable:!0,enumerable:!0,get(){return Reflect.get(k(),e)},set(t){Reflect.set(k(),e,t)}}:Reflect.getOwnPropertyDescriptor(k(),e),{registry:P,createApi:ne,rollbackPluginGlobalSideEffects:re,registerReload:F,registerNodeHostCommand:ie,registerSecurityAuditCollector:ae}=Cr({logger:y,runtime:new Proxy({},{get(e,t,n){return Reflect.get(k(),t,n)},set(e,t,n,r){return Reflect.set(k(),t,n,r)},has(e,t){return A.has(t)||Reflect.has(k(),t)},ownKeys(){return[...kr]},getOwnPropertyDescriptor(e,t){return j(t)},defineProperty(e,t,n){return Reflect.defineProperty(k(),t,n)},deleteProperty(e,t){return Reflect.deleteProperty(k(),t)},getPrototypeOf(){return Reflect.getPrototypeOf(k())}}),coreGatewayHandlers:e.coreGatewayHandlers,activateGlobalSideEffects:p}),I=S({workspaceDir:e.workspaceDir,extraPaths:r.loadPaths,cache:e.cache,env:t}),L=E({config:n,workspaceDir:e.workspaceDir,cache:e.cache,env:t,candidates:I.candidates,diagnostics:I.diagnostics});Ci(P.diagnostics,L.diagnostics),Ni({emitWarning:p,logger:y,pluginsEnabled:r.enabled,allow:r.allow,warningCacheKey:g,discoverablePlugins:L.plugins.filter(e=>!x||x.has(e.id)).map(e=>({id:e.id,source:e.source,origin:e.origin}))});let R=Oi({config:n,normalizedLoadPaths:r.loadPaths,env:t}),oe=new Map(L.plugins.map(e=>[e.rootDir,e])),z=[...I.candidates].toSorted((e,n)=>Mi({left:e,right:n,manifestByRoot:oe,provenance:R,env:t})),B=new Map,se=new Map,V=r.slots.memory,le=null,ue=!1,de=wr({cfg:n,memorySlot:V});for(let g of z){let v=oe.get(g.rootDir);if(!v)continue;let S=v.id;if(!Yr({onlyPluginIdSet:x,pluginId:S}))continue;let C=h({id:S,origin:g.origin,config:r,rootConfig:n,enabledByDefault:v.enabledByDefault,activationSource:i,autoEnabledReason:bi(a[S])}),T=B.get(S);if(T){let e=vi({id:S,name:v.name??S,description:v.description,version:v.version,format:v.format,bundleFormat:v.bundleFormat,bundleCapabilities:v.bundleCapabilities,source:g.source,rootDir:g.rootDir,origin:g.origin,workspaceDir:g.workspaceDir,enabled:!1,activationState:C,configSchema:!!v.configSchema,contracts:v.contracts});e.status=`disabled`,e.error=`overridden by ${T} plugin`,yi(e,e.error),P.plugins.push(e);continue}let E=o({id:S,origin:g.origin,config:r,rootConfig:n,enabledByDefault:v.enabledByDefault,activationSource:i}),D=r.entries[S],O=vi({id:S,name:v.name??S,description:v.description,version:v.version,format:v.format,bundleFormat:v.bundleFormat,bundleCapabilities:v.bundleCapabilities,source:g.source,rootDir:g.rootDir,origin:g.origin,workspaceDir:g.workspaceDir,enabled:E.enabled,activationState:C,configSchema:!!v.configSchema,contracts:v.contracts});O.kind=v.kind,O.configUiHints=v.configUiHints,O.configJsonSchema=v.configSchema;let k=e=>{O.status=`error`,O.error=e,O.failedAt=new Date,O.failurePhase=`validation`,P.plugins.push(O),B.set(S,g.origin),P.diagnostics.push({level:`error`,pluginId:O.id,source:O.source,message:O.error})},A=Li(g.rootDir),j=A,N=g.source,I=v.setupSource,L=c&&!b&&x&&v.channels.length>0&&(!E.enabled||l),R=L&&(!u||v.setupSource)?`setup-only`:L&&u?null:E.enabled?m&&!b&&gi({manifestChannels:v.channels,setupSource:v.setupSource,startupDeferConfiguredChannelFullLoadUntilAfterListen:v.startupDeferConfiguredChannelFullLoadUntilAfterListen,cfg:n,env:t,preferSetupRuntimeForChannelPlugins:f})?`setup-runtime`:`full`:null;if(!R){O.status=`disabled`,O.error=E.reason,yi(O,E.reason),P.plugins.push(O),B.set(S,g.origin);continue}if(E.enabled||(O.status=`disabled`,O.error=E.reason,yi(O,E.reason)),m&&g.origin===`bundled`&&E.enabled)try{let r=_(A,{env:t}),i=se.get(r)??[],a=ee({pluginId:O.id,pluginRoot:A,env:t,config:n,retainSpecs:i,installDeps:e.bundledRuntimeDepsInstaller});a.installedSpecs.length>0&&(se.set(r,[...new Set([...i,...a.retainSpecs])].toSorted((e,t)=>e.localeCompare(t))),p&&y.info(`[plugins] ${O.id} installed bundled runtime deps: ${a.installedSpecs.join(`, `)}`)),U.resolve(r)!==U.resolve(A)&&(Vr(r),j=Hr({pluginId:O.id,pluginRoot:A,installRoot:r}),N=Gr({source:g.source,pluginRoot:A,mirroredRoot:j})??g.source,I=Gr({source:v.setupSource,pluginRoot:A,mirroredRoot:j}))}catch(e){k(`failed to install bundled runtime deps: ${String(e)}`);continue}if(O.format===`bundle`){let e=(O.bundleCapabilities??[]).filter(e=>e!==`skills`&&e!==`mcpServers`&&e!==`settings`&&!((e===`commands`||e===`agents`||e===`outputStyles`||e===`lspServers`)&&(O.bundleFormat===`claude`||O.bundleFormat===`cursor`))&&!(e===`hooks`&&(O.bundleFormat===`codex`||O.bundleFormat===`claude`)));for(let t of e)P.diagnostics.push({level:`warn`,pluginId:O.id,source:O.source,message:`bundle capability detected but not wired into OpenClaw yet: ${t}`});if(E.enabled&&O.rootDir&&O.bundleFormat&&(O.bundleCapabilities??[]).includes(`mcpServers`)){let e=xt({pluginId:O.id,rootDir:O.rootDir,bundleFormat:O.bundleFormat});for(let t of e.diagnostics)P.diagnostics.push({level:`warn`,pluginId:O.id,source:O.source,message:t});e.unsupportedServerNames.length>0&&P.diagnostics.push({level:`warn`,pluginId:O.id,source:O.source,message:`bundle MCP servers use unsupported transports or incomplete configs (stdio only today): ${e.unsupportedServerNames.join(`, `)}`})}P.plugins.push(O),B.set(S,g.origin);continue}if(R===`full`&&g.origin===`bundled`&&w(v.kind,`memory`)&&S!==de){let e=d({id:O.id,kind:v.kind,slot:V,selectedId:le});if(!e.enabled){O.enabled=!1,O.status=`disabled`,O.error=e.reason,yi(O,e.reason),P.plugins.push(O),B.set(S,g.origin);continue}}if(!v.configSchema){k(`missing config schema`);continue}if(!m&&R===`full`){let e=d({id:O.id,kind:O.kind,slot:V,selectedId:le});if(!e.enabled&&S!==de){O.enabled=!1,O.status=`disabled`,O.error=e.reason,yi(O,e.reason),P.plugins.push(O),B.set(S,g.origin);continue}e.selected&&w(O.kind,`memory`)&&(le=O.id,ue=!0,O.memorySlotSelected=!0)}let z=si({schema:v.configSchema,cacheKey:v.schemaCacheKey,value:D?.config});if(!z.ok){y.error(`[plugins] ${O.id} invalid config: ${z.errors?.join(`, `)}`),k(`invalid config: ${z.errors?.join(`, `)}`);continue}if(!m){P.plugins.push(O),B.set(S,g.origin);continue}let fe=M({absolutePath:Rr((R===`setup-only`||R===`setup-runtime`)&&I?I:N),rootPath:Rr(j),boundaryLabel:`plugin root`,rejectHardlinks:g.origin!==`bundled`,skipLexicalRootCheck:!0});if(!fe.ok){k(`plugin entry path escapes plugin root or fails alias checks`);continue}let pe=fe.path;H.closeSync(fe.fd);let me=Ir(pe),he=null;try{ce(O.id),he=Tn({pluginId:O.id,source:pe},R,()=>s(pe)(me))}catch(e){xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`load`,error:e,logPrefix:`[plugins] ${O.id} failed to load from ${O.source}: `,diagnosticMessagePrefix:`failed to load plugin: `});continue}if((R===`setup-only`||R===`setup-runtime`)&&v.setupSource){let e=hi(he,{installRuntimeDeps:E.enabled});if(e.loadError){xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`load`,error:e.loadError,logPrefix:`[plugins] ${O.id} failed to load setup entry from ${O.source}: `,diagnosticMessagePrefix:`failed to load setup entry: `});continue}if(e.plugin){if(!_i({channelId:e.plugin.id,pluginId:O.id,manifestChannels:v.channels})){k(`plugin id mismatch (config uses "${O.id}", setup export uses "${e.plugin.id}")`);continue}let t=ne(O,{config:n,pluginConfig:{},hookPolicy:D?.hooks,registrationMode:R}),r=e,i=!1;if(R===`setup-runtime`&&e.usesBundledSetupContract&&N!==pe){let n=M({absolutePath:N,rootPath:j,boundaryLabel:`plugin root`,rejectHardlinks:g.origin!==`bundled`,skipLexicalRootCheck:!0});if(!n.ok){k(`plugin entry path escapes plugin root or fails alias checks`);continue}let a=n.path;H.closeSync(n.fd);let o=Ir(a),c=null;try{c=Tn({pluginId:O.id,source:a},`load-setup-runtime-entry`,()=>s(a)(o))}catch(e){xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`load`,error:e,logPrefix:`[plugins] ${O.id} failed to load setup-runtime entry from ${O.source}: `,diagnosticMessagePrefix:`failed to load setup-runtime entry: `});continue}let l=pi(c);if(l.id&&l.id!==O.id){k(`plugin id mismatch (config uses "${O.id}", runtime entry uses "${l.id}")`);continue}if(l.setChannelRuntime)try{l.setChannelRuntime(t.runtime),i=!0}catch(e){xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`load`,error:e,logPrefix:`[plugins] ${O.id} failed to apply setup-runtime channel runtime from ${O.source}: `,diagnosticMessagePrefix:`failed to apply setup-runtime channel runtime: `});continue}let u=mi({registration:l});if(u.loadError){xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`load`,error:u.loadError,logPrefix:`[plugins] ${O.id} failed to load setup-runtime channel entry from ${O.source}: `,diagnosticMessagePrefix:`failed to load setup-runtime channel entry: `});continue}if(u.plugin){if(u.plugin.id&&u.plugin.id!==O.id){k(`plugin id mismatch (config uses "${O.id}", runtime export uses "${u.plugin.id}")`);continue}r={...e,plugin:fi(u.plugin,e.plugin),setChannelRuntime:l.setChannelRuntime??e.setChannelRuntime}}}let a=r.plugin;if(!a)continue;if(!_i({channelId:a.id,pluginId:O.id,manifestChannels:v.channels})){k(`plugin id mismatch (config uses "${O.id}", setup export uses "${a.id}")`);continue}if(!i)try{r.setChannelRuntime?.(t.runtime)}catch(e){xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`load`,error:e,logPrefix:`[plugins] ${O.id} failed to apply setup channel runtime from ${O.source}: `,diagnosticMessagePrefix:`failed to apply setup channel runtime: `});continue}t.registerChannel(a),P.plugins.push(O),B.set(S,g.origin);continue}}let ge=ci(he),W=ge.definition,G=ge.register;if(W?.id&&W.id!==O.id){k(`plugin id mismatch (config uses "${O.id}", export uses "${W.id}")`);continue}O.name=W?.name??O.name,O.description=W?.description??O.description,O.version=W?.version??O.version;let _e=O.kind,ve=W?.kind;if(_e&&ve&&!te(_e,ve)&&P.diagnostics.push({level:`warn`,pluginId:O.id,source:O.source,message:`plugin kind mismatch (manifest uses "${String(_e)}", export uses "${String(ve)}")`}),O.kind=W?.kind??O.kind,w(O.kind,`memory`)&&V===O.id&&(ue=!0),R===`full`&&S!==de){let e=d({id:O.id,kind:O.kind,slot:V,selectedId:le});if(!e.enabled){O.enabled=!1,O.status=`disabled`,O.error=e.reason,yi(O,e.reason),P.plugins.push(O),B.set(S,g.origin);continue}e.selected&&w(O.kind,`memory`)&&(le=O.id,O.memorySlotSelected=!0)}if(R===`full`){W?.reload&&F(O,W.reload);for(let e of W?.nodeHostCommands??[])ie(O,e);for(let e of W?.securityAuditCollectors??[])ae(O,e)}if(b){P.plugins.push(O),B.set(S,g.origin);continue}if(typeof G!=`function`){y.error(`[plugins] ${O.id} missing register/activate export`),k(di(he,t));continue}let K=ne(O,{config:n,pluginConfig:z.value,hookPolicy:D?.hooks,registrationMode:R}),ye=Mr(P),be=Zn(),xe=ar(),Se=tt(),Ce=dn(),we=sn(),Te=vn(),Ee=hn(),De=fn(),Oe=gn(),q=bn();try{Tn({pluginId:O.id,source:O.source},`${R}:register`,()=>Fr(G,K)),p||($n(be),or(xe),rt(Se),cn(we),xn({capability:Ce,corpusSupplements:De,promptBuilder:Ee,promptSupplements:Oe,flushPlanResolver:Te,runtime:q})),P.plugins.push(O),B.set(S,g.origin)}catch(e){re(O.id),Nr(P,ye),$n(be),or(xe),rt(Se),cn(we),xn({capability:Ce,corpusSupplements:De,promptBuilder:Ee,promptSupplements:Oe,flushPlanResolver:Te,runtime:q}),xi({logger:y,registry:P,record:O,seenIds:B,pluginId:S,origin:g.origin,phase:`register`,error:e,logPrefix:`[plugins] ${O.id} failed during register from ${O.source}: `,diagnosticMessagePrefix:`plugin failed during register: `})}}if(!x&&typeof V==`string`&&!ue&&P.diagnostics.push({level:`warn`,message:`memory slot plugin not found or not marked as memory: ${V}`}),Pi({registry:P,provenance:R,allowlist:r.allow,emitWarning:p,logger:y,env:t}),wi(P,e.throwOnLoadError),p&&e.mode!==`validate`){let e=P.plugins.filter(e=>e.failedAt!=null);e.length>0&&y.warn(`[plugins] ${e.length} plugin(s) failed to initialize (${Si(e)}). Run 'openclaw plugins list' for details.`)}return C&&qr(g,{detachedTaskRuntimeRegistration:tt(),memoryCapability:dn(),memoryCorpusSupplements:fn(),registry:P,agentHarnesses:Zn(),compactionProviders:ar(),memoryEmbeddingProviders:sn(),memoryFlushPlanResolver:vn(),memoryPromptBuilder:hn(),memoryPromptSupplements:gn(),memoryRuntime:bn()}),p&&Fi(P,g,v,e.workspaceDir),P}finally{Dr.delete(g)}}function Li(e){try{return H.realpathSync(e)}catch{return U.resolve(e)}}export{Tn as a,Fe as c,Te as d,_e as f,ri as i,Pe as l,Ii as n,St as o,G as p,oi as r,nt as s,ai as t,Oe as u};