@vibecontrols/agent 2026.602.1 → 2026.602.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/{agent-config-85pskv43.js → agent-config-4ppenhqp.js} +1 -1
  2. package/dist/{agent-ready-tracker-zp6p8e6f.js → agent-ready-tracker-kgs7td6t.js} +1 -1
  3. package/dist/app-9j2t5geq.js +2 -0
  4. package/dist/bootstrap-workspace-qgs6d5f0.js +2 -0
  5. package/dist/bootstrap.service-vg72w8pa.js +2 -0
  6. package/dist/{bridge-client-341r9rry.js → bridge-client-1fxza4p7.js} +1 -1
  7. package/dist/cli.js +1 -1
  8. package/dist/daemon-profile-gwdcqx0q.js +2 -0
  9. package/dist/esm-6f3dfn6v.js +2 -0
  10. package/dist/{finalize-retry-handle-registry-vv241fsq.js → finalize-retry-handle-registry-xnm9kxry.js} +1 -1
  11. package/dist/{finalize-retry-worker-xp1nhv3c.js → finalize-retry-worker-dvykrzed.js} +1 -1
  12. package/dist/gateway-client-9kwnmk89.js +2 -0
  13. package/dist/{getMachineId-bsd-a56s0v8c.js → getMachineId-bsd-753751sw.js} +1 -1
  14. package/dist/{getMachineId-darwin-w9k0yw9r.js → getMachineId-darwin-na1pranq.js} +1 -1
  15. package/dist/{getMachineId-linux-anh31jbf.js → getMachineId-linux-dmn0ncdm.js} +1 -1
  16. package/dist/{getMachineId-unsupported-5hv3pwca.js → getMachineId-unsupported-yv77j894.js} +1 -1
  17. package/dist/{getMachineId-win-njb8tery.js → getMachineId-win-9hmyqmm0.js} +1 -1
  18. package/dist/highlights-00fcgwwq.js +2 -0
  19. package/dist/highlights-23bc8zge.js +2 -0
  20. package/dist/highlights-4mhb2pb0.js +2 -0
  21. package/dist/highlights-q7w64nwb.js +2 -0
  22. package/dist/highlights-xwdw5xay.js +2 -0
  23. package/dist/{index-678rwfc0.js → index-0924jp9m.js} +1 -1
  24. package/dist/{index-c4xqp05z.js → index-11grwjm1.js} +41 -41
  25. package/dist/index-1evqt03m.js +11 -0
  26. package/dist/{index-z5a4yxzz.js → index-1mppacnx.js} +3 -3
  27. package/dist/{index-jw1k4vbk.js → index-4qq083yd.js} +1 -1
  28. package/dist/{index-d5ysy1yn.js → index-5dysvvjv.js} +1 -1
  29. package/dist/{index-n7qyrdr1.js → index-5wpck4aw.js} +1 -1
  30. package/dist/{index-mtm8cfyt.js → index-8053zege.js} +2 -2
  31. package/dist/{index-5mw3eshk.js → index-8nqp3a4d.js} +1 -1
  32. package/dist/{index-2xs9cvjn.js → index-8sdrhr3q.js} +2 -2
  33. package/dist/{index-6mprnf7p.js → index-97mq40rr.js} +1 -1
  34. package/dist/{index-1hnw0rhc.js → index-9f52em7g.js} +29 -29
  35. package/dist/{index-0cn9bv8z.js → index-a4854mwz.js} +1 -1
  36. package/dist/{index-g8zv1gta.js → index-atp2ayra.js} +1 -1
  37. package/dist/{index-xjzmb1pn.js → index-b6x6a4xp.js} +2 -2
  38. package/dist/{index-yy1mm8zs.js → index-c7554sg7.js} +1 -1
  39. package/dist/{index-2gsarrbn.js → index-d1xjj001.js} +1 -1
  40. package/dist/{index-h8a8s8sn.js → index-ebwwtwwc.js} +1 -1
  41. package/dist/{index-8sm0nkh8.js → index-ep3zb271.js} +1 -1
  42. package/dist/index-gxgftnbh.js +26 -0
  43. package/dist/{index-g2raeeh4.js → index-h74va4wd.js} +2 -2
  44. package/dist/{index-v9fx5wab.js → index-hvjqgb97.js} +1 -1
  45. package/dist/{index-g3ap3xpr.js → index-jdh30t6c.js} +4 -4
  46. package/dist/{index-9bqd8veb.js → index-js1xn4sq.js} +3 -3
  47. package/dist/{index-x1h8r7pr.js → index-kt5zxp42.js} +1 -1
  48. package/dist/{index-ssjmzqcz.js → index-n6bdbgb9.js} +1 -1
  49. package/dist/{index-rdp5xq4r.js → index-nrsqzcfc.js} +1 -1
  50. package/dist/index-p23tet7a.js +2 -0
  51. package/dist/{index-04n4qgvd.js → index-pgew6sge.js} +3 -3
  52. package/dist/{index-1zw3kea7.js → index-qwtspxw8.js} +1 -1
  53. package/dist/index-rqq0k5fc.js +16 -0
  54. package/dist/{index-6jq17k9s.js → index-rv6h14n8.js} +1 -1
  55. package/dist/{index-qfz9fy56.js → index-rw9x93zb.js} +1 -1
  56. package/dist/{index-dm6yjmgq.js → index-rzpaqrhx.js} +2 -2
  57. package/dist/{index-vdahdt49.js → index-tgrt61qr.js} +1 -1
  58. package/dist/{index-ef95xr4z.js → index-thammzct.js} +2 -2
  59. package/dist/{index-tp4y9jde.js → index-wccxsz72.js} +1 -1
  60. package/dist/{index-scsjyj4m.js → index-x649afed.js} +2 -2
  61. package/dist/{index-8kvc8ttn.js → index-xrs52f2c.js} +1 -1
  62. package/dist/{index-yrgm89r8.js → index-ydc0tk17.js} +1 -1
  63. package/dist/{index-0248afsn.js → index-z5s398n0.js} +1 -1
  64. package/dist/index.js +2 -2
  65. package/dist/injections-x3xya90r.js +2 -0
  66. package/dist/interactive-qc1j66mq.js +2 -0
  67. package/dist/key.cmd-972133dv.js +2 -0
  68. package/dist/log-shipper-hjnn1d5p.js +2 -0
  69. package/dist/{path-utils-35re7qf9.js → path-utils-hxdyv2zn.js} +1 -1
  70. package/dist/{plugin-system-c916v9an.js → plugin-system-8hby8x1m.js} +1 -1
  71. package/dist/prereqs-runner-27x3j1md.js +2 -0
  72. package/dist/profile-mount-8dc9jwt5.js +2 -0
  73. package/dist/prune-stale-shims-23y0stm8.js +2 -0
  74. package/dist/register-core-qcj272qh.js +2 -0
  75. package/dist/secondary-profile-attach-xkvpmm08.js +2 -0
  76. package/dist/subprocess-1nna3d3x.js +2 -0
  77. package/dist/telemetry-8jfdyt51.js +2 -0
  78. package/dist/tree-sitter-javascript-q22gvtms.js +2 -0
  79. package/dist/tree-sitter-markdown-pntsjzm3.js +2 -0
  80. package/dist/tree-sitter-markdown_inline-g1wzqf7k.js +2 -0
  81. package/dist/tree-sitter-typescript-m9yfes10.js +2 -0
  82. package/dist/tree-sitter-zig-jmh62j90.js +2 -0
  83. package/dist/tunnel-bootstrap-5wgt9a1h.js +2 -0
  84. package/package.json +1 -1
  85. package/dist/app-jeyyhz7s.js +0 -2
  86. package/dist/bootstrap-workspace-zpm20zez.js +0 -2
  87. package/dist/bootstrap.service-pjmnpxha.js +0 -2
  88. package/dist/daemon-profile-vas1vf2t.js +0 -2
  89. package/dist/esm-9fpye77x.js +0 -2
  90. package/dist/gateway-client-43gzvj5s.js +0 -2
  91. package/dist/highlights-8d9mgr01.js +0 -2
  92. package/dist/highlights-jwvdxm9x.js +0 -2
  93. package/dist/highlights-qbx2vnme.js +0 -2
  94. package/dist/highlights-r3m83kn9.js +0 -2
  95. package/dist/highlights-s7mqapt6.js +0 -2
  96. package/dist/index-01qzsnwd.js +0 -16
  97. package/dist/index-5t4t0avg.js +0 -26
  98. package/dist/index-hrdamx5j.js +0 -2
  99. package/dist/index-tmrbs96r.js +0 -11
  100. package/dist/injections-srewsjcz.js +0 -2
  101. package/dist/interactive-22ta89hc.js +0 -2
  102. package/dist/key.cmd-wgcq6kt8.js +0 -2
  103. package/dist/log-shipper-k24m8yw5.js +0 -2
  104. package/dist/prereqs-runner-ca4kt803.js +0 -2
  105. package/dist/profile-mount-npcknw6v.js +0 -2
  106. package/dist/prune-stale-shims-nkx9vq5m.js +0 -2
  107. package/dist/register-core-mbv4hrbv.js +0 -2
  108. package/dist/secondary-profile-attach-db5cr3e1.js +0 -2
  109. package/dist/subprocess-g9sk1ep9.js +0 -2
  110. package/dist/telemetry-tnq47dcs.js +0 -2
  111. package/dist/tree-sitter-javascript-3h25c6bs.js +0 -2
  112. package/dist/tree-sitter-markdown-3nemcjhe.js +0 -2
  113. package/dist/tree-sitter-markdown_inline-16ftwa53.js +0 -2
  114. package/dist/tree-sitter-typescript-f6mq6ze6.js +0 -2
  115. package/dist/tree-sitter-zig-s2trkm2d.js +0 -2
  116. package/dist/tunnel-bootstrap-2kg79ng8.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Xa as QQ}from"./index-0ckffygp.js";import{Ad as ZQ,Ld as k,Nd as Y}from"./index-9bqd8veb.js";import{_d as G,ce as d}from"./index-0cn9bv8z.js";import{he as w}from"./index-yy1mm8zs.js";import{existsSync as U,mkdirSync as n,readdirSync as GQ,readFileSync as v,renameSync as bQ,realpathSync as t,rmSync as j,statSync as _Q,writeFileSync as g}from"fs";import{homedir as RQ}from"os";import{dirname as R,isAbsolute as xQ,join as V,relative as EQ,sep as r}from"path";import{fileURLToPath as P}from"url";import{existsSync as XQ,readFileSync as qQ}from"fs";import{dirname as L,join as BQ}from"path";import{fileURLToPath as YQ}from"url";var WQ="@vibecontrols/agent",_;function N(){if(_)return _;try{let Q=L(YQ(import.meta.url));for(let Z=0;Z<10&&Q&&Q!==L(Q);Z++){let $=BQ(Q,"package.json");if(XQ($))try{let z=JSON.parse(qQ($,"utf8"));if(z.name===WQ&&typeof z.version==="string")return _=z.version,_}catch{}Q=L(Q)}}catch{}return _??"0.0.0"}function u(){let Q=process.env.VIBECONTROLS_PLUGIN_CONTRACT_V2_ENFORCE;return Q==="1"||Q==="true"||Q==="on"}var m={storage:"rw",secrets:"rw",gateway:!0,broadcast:!0,subprocess:!0,audit:!0,telemetry:!0,singletonOnly:!1,requiresIsolation:!1},c={storage:"none",secrets:"none",gateway:!1,broadcast:!1,subprocess:!1,audit:!1,telemetry:!1,singletonOnly:!1,requiresIsolation:!1};function s(){let Q=process.env.VIBECONTROLS_STRICT_PLUGIN_CAPS;return Q==="1"||Q==="true"||Q==="on"}function o(Q,Z,$,z,H=!1){return new Proxy(Q,{get(q,X,B){if(X==="plugins"){if(!H)return;return Reflect.get(q,X,B)}if(X==="storage")return JQ(q.storage,$.storage??"none",Z,z);if(X==="broadcast"&&!$.broadcast)return E(Z,"broadcast",z);if(X==="workspaceQuery"&&!$.gateway)return E(Z,"workspaceQuery",z);if(X==="getAgentRecordId"&&!$.gateway)return E(Z,"getAgentRecordId",z);if(X==="getWorkspaceId"&&!$.gateway)return E(Z,"getWorkspaceId",z);if(X==="telemetry"){if(!$.telemetry)return;return Reflect.get(q,X,B)}return Reflect.get(q,X,B)}})}function JQ(Q,Z,$,z){if(Z==="rw")return Q;return new Proxy(Q,{get(H,q,X){let B=String(q),J=B==="set"||B==="delete"||B==="deleteAll";if(Z==="none"||Z==="read"&&J)return(...M)=>{throw z("plugin.capability.denied",{pluginName:$,surface:"storage",op:B,mode:Z}),Error(`plugin '${$}' lacks storage:${J?"rw":"read"} capability (op=${B})`)};return Reflect.get(H,q,X)}})}function E(Q,Z,$){return(...z)=>{throw $("plugin.capability.denied",{pluginName:Q,op:Z}),Error(`plugin '${Q}' lacks capability for ${Z}`)}}import{Worker as KQ}from"worker_threads";import{fileURLToPath as MQ}from"url";import{randomUUID as VQ}from"crypto";function OQ(){let Q=MQ(import.meta.url),Z=Q.lastIndexOf("/"),$=Z>=0?Q.slice(0,Z):Q,z=`${$}/plugin-worker-runtime.ts`,H=`${$}/plugin-worker-runtime.js`;if(Q.endsWith(".ts"))return z;return H}class A{worker;pending=new Map;spec;initPromise;terminated=!1;constructor(Q){this.spec=Q}async start(){if(this.initPromise)return this.initPromise;return this.initPromise=this.spawn(),this.initPromise}async spawn(){let Q=this.spec.runtimeEntry??OQ(),Z=["PATH","HOME","USERPROFILE","TMPDIR","TMP","TEMP","LANG","LC_ALL","LC_CTYPE","TZ","SystemRoot","SystemDrive","ComSpec","PATHEXT","windir"],$={};for(let H of Z){let q=process.env[H];if(typeof q==="string")$[H]=q}let z=new KQ(Q,{env:$});this.worker=z,z.on("message",(H)=>this.onMessage(H)),z.on("error",(H)=>this.onWorkerError(H instanceof Error?H:Error(String(H)))),z.on("exit",(H)=>this.onWorkerExit(H)),await this.call("init",{modulePath:this.spec.modulePath,ctxStub:{name:this.spec.ctx.name,dataDir:this.spec.ctx.dataDir}})}async dispatch(Q,Z=[]){if(this.terminated)throw Error("PluginWorkerHost terminated");if(!this.worker)await this.start();return this.call("dispatch",{method:Q,params:Z})}call(Q,Z){if(!this.worker)return Promise.reject(Error("worker not spawned"));let $=VQ();return new Promise((z,H)=>{this.pending.set($,{resolve:z,reject:H});try{this.worker?.postMessage({id:$,op:Q,args:Z})}catch(q){this.pending.delete($),H(q instanceof Error?q:Error(String(q)))}})}onMessage(Q){let Z=this.pending.get(Q.id);if(!Z)return;if(this.pending.delete(Q.id),Q.ok)Z.resolve(Q.result);else{let $=Error(Q.error?.message??"worker error");if(Q.error?.stack)$.stack=Q.error.stack;Z.reject($)}}onWorkerError(Q){for(let[,Z]of this.pending)Z.reject(Q);this.pending.clear()}onWorkerExit(Q){if(this.pending.size>0){let Z=Error(`worker exited (code=${Q}) with pending calls`);for(let[,$]of this.pending)$.reject(Z);this.pending.clear()}this.terminated=!0}async terminate(){if(this.terminated=!0,!this.worker)return;try{await this.worker.terminate()}catch{}this.worker=void 0}}var FQ=[{packageName:"@vibecontrols/vibe-plugin-storage",pluginName:"storage",label:"Storage facade",description:"Storage provider registry \u2014 owns AgentDatabase contract. Bundled with the agent; the storage meta lazy-loads the configured provider by name.",category:"storage",trusted:!0,isCore:!0,isDefault:!0,isCritical:!0,removable:!1,integrity:"sha512-E0agrBuSwO7R5z7dBA6Jb0Mq5zibhkFzvEh0lcb4N+byt25yStrDcsJqJ3bJpVdavw/OkAjB+MAC06zkTtHraQ=="},...["agent","task","config","git","plugin-mgr","log"].map((Q)=>({packageName:`@vibecontrols/vibe-plugin-${Q}`,pluginName:Q,label:`${Q} (built-in)`,description:`Built-in ${Q} plugin bundled with the agent.`,category:"core",trusted:!0,isCore:!0,removable:!1}))],CQ=[{packageName:"@vibecontrols/vibe-plugin-tunnel",pluginName:"tunnel",label:"Tunnel manager",description:"Owns TunnelProvider interface. Routes to a registered tunnel provider.",category:"tunnel",trusted:!0,isDefault:!0,isCritical:!0,cliCommand:"tunnel",apiPrefix:"/api/tunnel",integrity:"sha512-drBtmSC7rcv8lNB0Xco47Y1D0NJ9qwSct/K7lJNySSH8MwAHPFDfhHxLLmZ+F/NE854cgEE3wb+a2qN4rDXm4w=="},{packageName:"@vibecontrols/vibe-plugin-session-manager",pluginName:"session-manager",label:"Session manager",description:"Owns SessionProvider interface. Routes to a registered session backend.",category:"session",trusted:!0,isCore:!0,isDefault:!0,isCritical:!0,cliCommand:"session",apiPrefix:"/api/sessions",integrity:"sha512-HjF5jxAFwQFMLRlC7N4OMraGC9V9f1u+aGlab4Yr8EkPjbrECYbcBHtD6IwfIe+jcgYSAJMrESCHFHa3EcxyHg=="},{packageName:"@vibecontrols/vibe-plugin-ai",pluginName:"ai",label:"AI orchestration",description:"Owns AIAgentProvider interface. Prompts, contexts, sessions, dispatch, logs.",category:"ai",trusted:!0,isDefault:!0,isCritical:!0,cliCommand:"ai",apiPrefix:"/api/ai",integrity:"sha512-T8UJQ7AP/4fim7ggNuACgo9uKaoO9Ji6+DVFm8A/A7C/7uqNbeJwgbCMVUi3qIdNNhnrwzTQffF7chV8aozdMw=="},{packageName:"@vibecontrols/vibe-plugin-plan",pluginName:"plan",label:"Plan orchestration",description:"Owns PlanProvider interface. Routes plan sessions to a registered provider.",category:"plan",trusted:!0,isDefault:!1,cliCommand:"plan",apiPrefix:"/api/plan",integrity:"sha512-FDoMr2aDBIJ7mpqdWgfSyfwOYc1Q3JhsiNqIXHCMb8yThA7Y1939wlkG4JHmgyPxRj+1zwdg1/MiZYYFzne/pg=="},{packageName:"@vibecontrols/vibe-plugin-gitops",pluginName:"gitops",label:"GitOps orchestrator",description:"Owns GitOpsProvider interface. Routes repo / PR / CI / security queries to a registered provider.",category:"gitops",trusted:!0,isDefault:!1,cliCommand:"gitops",apiPrefix:"/api/gitops",integrity:"sha512-kUw3KIvznHQ2C9hz/K9vi1CWt4IHq0adHDcoJjvoaPumfJ8nXNJcPlqm0hVoZIAF38Hju1DlpXlsFWmYT7Y95Q=="},{packageName:"@vibecontrols/vibe-plugin-security",pluginName:"security",label:"Security lifecycle",description:"Security lifecycle orchestrator \u2014 owns /api/security and dispatches to per-stage providers.",category:"security",trusted:!0,isDefault:!1,cliCommand:"security",apiPrefix:"/api/security",integrity:"sha512-yvNuRIRpvKZzF03h0o9dv9im454r2qSLB61GiGiAnzKM3InjCyl/fYvwyQUDxKZCZIkHtGKBTmmAm669U1Q/+Q=="}],UQ=[{packageName:"@vibecontrols/vibe-plugin-agent-backup",pluginName:"agent-backup",label:"Agent backup",description:"Backup and restore agent state.",category:"agent",trusted:!0,isDefault:!0,integrity:"sha512-AzbuYGO66WHNbdJZsfODKJZVqLs18b8ocGPw1jnRZbs3rl1Z4JCDhWxtVuv/yiVIclPaFtEbSQz5sTZf2/TrEQ=="}],O=[...FQ,...CQ,...UQ],wQ=[{key:"storage",label:"Storage",description:"Encrypted local state for the agent.",categories:["storage"],mandatory:!0,defaultSelected:!0},{key:"tunnel",label:"Tunnels",description:"Expose the agent for remote access + share links.",categories:["tunnel"],mandatory:!0,defaultSelected:!0},{key:"backup",label:"Backup",description:"Backup + restore agent state.",categories:["agent"],mandatory:!0,defaultSelected:!0},{key:"session",label:"Terminal sessions",description:"Long-lived terminal / AI agent sessions.",categories:["session"],mandatory:!1,defaultSelected:!0},{key:"ai",label:"AI orchestration",description:"AI agent harnesses, prompts + dispatch.",categories:["ai"],mandatory:!1,defaultSelected:!0},{key:"plan",label:"Plan review",description:"Review / approve AI-proposed plans.",categories:["plan"],mandatory:!1,defaultSelected:!1},{key:"gitops",label:"GitOps",description:"Repo / PR / CI / security integration.",categories:["gitops"],mandatory:!1,defaultSelected:!1},{key:"security",label:"Security",description:"Security scanning lifecycle.",categories:["security"],mandatory:!1,defaultSelected:!1}],D=O.filter((Q)=>Q.isCore&&Q.category==="core").map((Q)=>Q.pluginName),f=O.filter((Q)=>Q.isDefault===!0);function S(Q){return f}function h(Q,Z){let $=Z instanceof Set?Z:new Set(Z),z=new Set;for(let H of wQ)if(H.mandatory||$.has(H.key))for(let q of H.categories)z.add(q);return O.filter((H)=>z.has(H.category))}var l=new Set(O.filter((Q)=>Q.trusted).map((Q)=>Q.packageName));function jQ(){let Q=O.filter(($)=>$.isCritical).flatMap(($)=>[$.packageName,$.pluginName]),Z=process.env.VIBECONTROLS_CRITICAL_PLUGINS;if(Z){let $=Z.split(",").map((z)=>z.trim()).filter(Boolean);return new Set([...Q,...$])}return new Set(Q)}function gQ(Q){return jQ().has(Q)}var rQ=O.filter((Q)=>!Q.isCore||Q.category!=="core");function pQ(Q){return O.find((Z)=>Z.packageName===Q)}function iQ(Q){return new Set}function I(Q){return Q.startsWith("@vibecontrols/vibe-plugin-")||l.has(Q)}function TQ(Q){let Z=Q.trim();if(!Z)return;if(Z.startsWith("@vibecontrols/"))return O.find((z)=>z.packageName===Z);if(Z.startsWith("vibe-plugin-"))return O.find((z)=>z.packageName===`@vibecontrols/${Z}`);let $=O.find((z)=>z.pluginName===Z);if($)return $;return O.find((z)=>z.packageName===`@vibecontrols/vibe-plugin-${Z}`)}function aQ(Q){let Z=Q.trim();if(!Z)return;let $=TQ(Z);if($)return $.packageName;if(Z.startsWith("@vibecontrols/"))return Z;if(Z.startsWith("vibe-plugin-"))return`@vibecontrols/${Z}`;return`@vibecontrols/vibe-plugin-${Z}`}function p(Q){return O.find((Z)=>Z.pluginName===Q)}function IQ(Q){return O.find((Z)=>Z.packageName===Q)}function LQ(Q,Z){if(Q.length!==Z.length)return!1;let $=0;for(let z=0;z<Q.length;z++)$|=Q.charCodeAt(z)^Z.charCodeAt(z);return $===0}async function AQ(Q,Z,$){let z=IQ(Q),H=process.env.VIBECONTROLS_REQUIRE_PLUGIN_INTEGRITY==="1";if(!z?.integrity){if(H)throw Error(`Refusing to install ${Q}: catalog has no pinned integrity and VIBECONTROLS_REQUIRE_PLUGIN_INTEGRITY=1`);return}let q=$,X;try{let J=`${Z.replace(/\/+$/,"")}/${Q.replace("/","%2F")}`,W=await fetch(J,{headers:{accept:"application/json"},signal:AbortSignal.timeout(20000)});if(!W.ok)throw Error(`registry packument fetch failed (HTTP ${W.status})`);let M=await W.json();if(q=q??M["dist-tags"]?.latest,!q)throw Error("could not resolve version from registry");if(X=M.versions?.[q]?.dist?.integrity,typeof X!=="string"||X.length===0)throw Error(`registry did not return dist.integrity for ${Q}@${q}`)}catch(B){let J=B instanceof Error?B.message:String(B);throw Error(`Pre-install integrity gate refused ${Q}: ${J}`,{cause:B})}if(!LQ(z.integrity,X)){let B=process.env.VIBECONTROLS_STRICT_PLUGIN_INTEGRITY==="1";if(I(Q)&&!B){Y().logger.warn("plugin-manager",`Integrity pin for ${Q} is stale \u2014 catalog expects ${z.integrity}, the allowlisted registry has ${X} for ${q}. Proceeding (first-party package, registry allowlisted). Re-pin plugins.config.ts to silence this.`);return}throw Error(`Pre-install integrity gate refused ${Q}: integrity mismatch for ${q}: expected ${z.integrity}, got ${X}`)}}var DQ=["https://registry.npmjs.org/","https://registry.npmjs.org"];function fQ(){let Q=process.env.VIBECONTROLS_REGISTRY_ALLOWLIST,Z=[...DQ];if(typeof Q==="string"&&Q.length>0)for(let $ of Q.split(",").map((z)=>z.trim()).filter(Boolean))Z.push($);return Z}function SQ(Q){let Z=fQ(),$;try{$=new URL(Q).origin}catch{throw Error(`Invalid plugin registry URL: ${Q}`)}for(let z of Z)try{if(new URL(z).origin===$)return}catch{}throw Error(`Plugin registry '${Q}' is not in the allow-list. Add it to VIBECONTROLS_REGISTRY_ALLOWLIST at daemon start.`)}var i="plugins.json",hQ=/^@vibecontrols\/vibe-plugin-[a-z0-9][a-z0-9-]{0,80}$/,a=/^[a-z0-9][a-z0-9-]{0,63}$/,vQ=/^\/api\/[A-Za-z0-9][A-Za-z0-9/_-]{0,127}$/,PQ=/^\/[A-Za-z0-9][A-Za-z0-9/_-]{0,159}$/,$Q=Symbol.for("vibecontrols.pluginPackageRoot");function MZ(Q){return Q[$Q]}function b(Q){let Z=Q.trim();if(!hQ.test(Z))throw Error("Plugin package must be a @vibecontrols/vibe-plugin-* package name.");if(!I(Z)&&process.env.VIBECONTROLS_ALLOW_UNTRUSTED_PLUGINS!=="1")throw Error("Plugin package is not in the trusted VibeControls catalog.");return Z}function yQ(Q,Z){let $=EQ(Q,Z);return $===""||!!$&&!$.startsWith("..")&&!xQ($)}function zQ(){return V(G(),"agent-plugins","node_modules")}function dQ(){try{let Q=zQ();return U(Q)&&GQ(Q).length>0}catch{return!1}}function y(){let Q=(process.env.VIBECONTROLS_PLUGIN_INSTALL_SCOPE??process.env.VIBECONTROLS_PLUGIN_INSTALL_MODE??"").toLowerCase();if(Q==="local")return"local";if(Q==="global")return"global";return dQ()?"local":"global"}var e="provider:default:";function kQ(Q){if(!Q||typeof Q!=="object")return!1;let Z=Q;return typeof Z.packageName==="string"&&typeof Z.version==="string"&&typeof Z.pluginName==="string"&&typeof Z.installedAt==="string"}var VZ=f;class HQ{registry=[];loaded=new Map;corePlugins=new Map;db;forcedIsolation=new Set;workerHosts=new Map;lifecycleChain=Promise.resolve();withLifecycleLock(Q){let $=this.lifecycleChain.then(Q,Q);return this.lifecycleChain=$.then(()=>{return},()=>{return}),$}async terminateWorkerHost(Q){let Z=this.workerHosts.get(Q);if(!Z)return;try{await Z.terminate()}catch($){Y().logger.warn("plugin-manager",`Failed to terminate worker for '${Q}': ${$ instanceof Error?$.message:String($)}`)}finally{this.workerHosts.delete(Q)}}async terminateAllWorkerHosts(){let Q=Array.from(this.workerHosts.keys());await Promise.all(Q.map((Z)=>this.terminateWorkerHost(Z)))}constructor(Q){this.db=Q,this.ensureDir(),this.loadRegistry();let Z=process.env.VIBE_ISOLATE_PLUGINS;if(typeof Z==="string"&&Z.length>0)this.setForcedIsolation(Z.split(",").map(($)=>$.trim()).filter(($)=>$.length>0))}setForcedIsolation(Q){this.forcedIsolation=new Set(Q.filter((Z)=>Z.length>0))}shouldIsolate(Q){if(this.forcedIsolation.has(Q.name))return!0;return Q.capabilities?.requiresIsolation===!0}getWorkerHost(Q){return this.workerHosts.get(Q)}registerWorkerHost(Q,Z){this.workerHosts.set(Q,Z)}auditSink=(Q,Z)=>{Y().logger.warn("plugin-capability",Q,Z)};static resolveEffectiveCapabilities(Q,Z){if(Q.capabilities)return Q.capabilities;return Z?m:c}wrapHostServices(Q,Z){let $=this.corePlugins.has(Q.name),z=HQ.resolveEffectiveCapabilities(Q,$),H=$||this.isTrustedLoadedPlugin(Q);return o(Z,Q.name,z,this.auditSink,H)}isTrustedLoadedPlugin(Q){for(let[Z,$]of this.loaded)if($===Q)return I(Z);return!1}acceptCapabilities(Q,Z){if(Q.capabilities?.singletonOnly===!0&&k.size()>1)return Y().logger.error("plugin-manager",`[plugin] '${Q.name}' refused to load: singletonOnly capability incompatible with multi-profile daemon (profiles=${k.size()}, source=${Z})`),!1;if(Q.capabilities)return!0;if(s())return Y().logger.error("plugin-manager",`[plugin] '${Q.name}' refused to load: missing required capabilities declaration (source=${Z})`),!1;if(Z.startsWith("core:"))Y().logger.warn("plugin-manager",`[plugin] '${Q.name}' loaded without a capabilities declaration \u2014 granting full trust (core plugin). Declare capabilities explicitly. (source=${Z})`);else Y().logger.warn("plugin-manager",`[plugin] '${Q.name}' loaded without a capabilities declaration \u2014 defaulting to EMPTY capability set (deny by default). External plugins MUST declare capabilities explicitly to access host services. (source=${Z})`);return!0}ensureDir(){let Q=G();if(!U(Q))n(Q,{recursive:!0})}loadRegistry(){let Q=V(G(),i);try{if(U(Q)){let Z=v(Q,"utf-8"),$=JSON.parse(Z);if(Array.isArray($)&&$.every(kQ))this.registry=$.filter((z)=>{try{return b(z.packageName),!0}catch(H){return Y().logger.warn("plugin-manager","Ignoring invalid plugin entry",{packageName:z.packageName,error:String(H)}),!1}});else throw Error("plugins.json has an invalid schema")}}catch(Z){Y().logger.warn("plugin-manager","Failed to load plugin registry",{path:Q,error:String(Z)}),this.registry=[]}}saveRegistry(){this.ensureDir();let Q=V(G(),i),Z=`${Q}.${process.pid}.tmp`;g(Z,`${JSON.stringify(this.registry,null,2)}
3
- `,{encoding:"utf-8",mode:384}),bQ(Z,Q)}async loadCorePlugins(){let Q=await Promise.allSettled([import("./index-tmrbs96r.js"),import("./index-678rwfc0.js"),import("./index-vdahdt49.js"),import("./index-h8a8s8sn.js"),import("./index-mtm8cfyt.js"),import("./index-rdp5xq4r.js")]),Z=Y();for(let $=0;$<Q.length;$++){let z=Q[$],H=D[$];if(z.status==="fulfilled"){let q=z.value,X;try{X=this.extractPlugin(q,`core:${H}`,Z)}catch(B){Y().logger.error("plugin-manager",`Core plugin '${H}' refused to load: ${B instanceof Error?B.message:String(B)}`);continue}if(X?.name){if(!this.acceptCapabilities(X,`core:${H}`))continue;this.corePlugins.set(X.name,X),Y().logger.info("plugin-manager",`Core plugin loaded: ${X.name} v${X.version}`)}else Y().logger.warn("plugin-manager",`Core plugin '${H}' did not export a valid createPlugin(ctx) factory`)}else Y().logger.warn("plugin-manager",`Failed to load core plugin '${H}': ${z.reason}`)}Y().logger.info("plugin-manager",`Core plugins loaded: ${this.corePlugins.size}/${D.length}`)}async resolveConcreteLatest(Q,Z){try{let z=`${Z.replace(/\/+$/,"")}/${Q.replace("/","%2F")}`,H=await fetch(z,{headers:{accept:"application/json"},signal:AbortSignal.timeout(20000)});if(!H.ok)return;let X=(await H.json())["dist-tags"]?.latest;if(typeof X==="string"&&/^\d+\.\d+\.\d+/.test(X))return X}catch{}return}async install(Q,Z={}){return this.withLifecycleLock(()=>this.installLocked(Q,Z))}async installLocked(Q,Z={}){Q=b(Q);let $=Z.version?.trim()||void 0,z=Z.refreshLatest===!0||!!$;Y().logger.info("plugin-manager",`Installing ${Q}${z?"@latest (refresh)":""}...`);let H=d();if(SQ(H),await AQ(Q,H,void 0),!z)try{await import(Q),Y().logger.info("plugin-manager",`${Q} already resolvable \u2014 skipping global install`);let K=await this.importPlugin(Q),F={packageName:Q,version:K.version,pluginName:K.name,installedAt:new Date().toISOString()};return this.registry=this.registry.filter((T)=>T.packageName!==Q),this.registry.push(F),this.saveRegistry(),F}catch{}let q=d(),X=y(),B=$?$:z?await this.resolveConcreteLatest(Q,q):void 0,J=z?`${Q}@${B??"latest"}`:Q;try{if(X==="local"){let K=V(G(),"agent-plugins");if(!U(K))n(K,{recursive:!0});let F=V(K,"package.json");if(!U(F))g(F,JSON.stringify({name:"vibecontrols-agent-plugins",private:!0,version:"0.0.0",dependencies:{}},null,2)+`
4
- `);if(z&&B){let C=this.readInstalledVersion(V(K,"node_modules"),Q);if(C&&C!==B){Y().logger.info("plugin-manager",`Pre-clean ${Q}: on-disk v${C} != target v${B} \u2014 removing stale copy + lockfile to force fresh resolve`);try{j(V(K,"node_modules",Q),{recursive:!0,force:!0})}catch{}try{j(V(K,"bun.lock"),{force:!0}),j(V(K,"bun.lockb"),{force:!0})}catch{}}try{j(V(K,"bun.lock"),{force:!0}),j(V(K,"bun.lockb"),{force:!0})}catch{}}if(Bun.spawnSync(["bun","add",J,"--registry",q],{cwd:K,timeout:120000,stdout:"pipe",stderr:"pipe"}).exitCode!==0){let C=Bun.spawnSync(["npm","install",J,"--registry",q],{cwd:K,timeout:120000,stdout:"pipe",stderr:"pipe"});if(C.exitCode!==0)throw Error(C.stderr.toString().trim())}if(z&&B){let C=this.readInstalledVersion(V(K,"node_modules"),Q);if(C!==B){Y().logger.warn("plugin-manager",`bun kept ${Q}@${C??"missing"} after requesting ${B}; retrying with npm after removing stale local copy`);try{j(V(K,"node_modules",Q),{recursive:!0,force:!0}),j(V(K,"bun.lock"),{force:!0}),j(V(K,"bun.lockb"),{force:!0}),j(V(K,"package-lock.json"),{force:!0})}catch{}let x=Bun.spawnSync(["npm","install",J,"--registry",q,"--save-exact"],{cwd:K,timeout:120000,stdout:"pipe",stderr:"pipe"});if(x.exitCode!==0)throw Error(x.stderr.toString().trim())}}}else if(Bun.spawnSync(["bun","install","-g",J,"--registry",q],{timeout:120000,stdout:"pipe",stderr:"pipe"}).exitCode!==0){let F=Bun.spawnSync(["npm","install","-g",J,"--registry",q],{timeout:120000,stdout:"pipe",stderr:"pipe"});if(F.exitCode!==0)throw Error(F.stderr.toString().trim())}this.pluginRoots=void 0}catch(K){let F=K instanceof Error?K.message:String(K);if(z)try{await import(Q),Y().logger.warn("plugin-manager",`Could not refresh ${Q} to @latest (${F}); using the already-installed copy`),this.pluginRoots=void 0;let T=await this.importPlugin(Q),C={packageName:Q,version:T.version,pluginName:T.name,installedAt:new Date().toISOString()};return this.registry=this.registry.filter((x)=>x.packageName!==Q),this.registry.push(C),this.saveRegistry(),C}catch{}throw Error(`Failed to install ${Q}: ${F}`,{cause:K})}let W=await this.importPlugin(Q);if(z&&B&&W.version!==B)Y().logger.warn("plugin-manager",`${Q} refreshed to ${W.version} but registry latest is ${B} \u2014 a stale resolver/cache may still be in play`);if(this.corePlugins.has(W.name))Y().logger.info("plugin-manager",`External plugin '${Q}' overrides core plugin '${W.name}'`);let M={packageName:Q,version:W.version,pluginName:W.name,installedAt:new Date().toISOString()};return this.registry=this.registry.filter((K)=>K.packageName!==Q),this.registry.push(M),this.saveRegistry(),Y().logger.info("plugin-manager",`Installed ${Q}@${W.version} (${W.name})`),M}async ensureDefaultPlugins(Q,Z=[],$){let z=[],H=new Set(Z),q=$?h(process.platform,$):S(process.platform);for(let X of q){if(H.has(X.packageName)||H.has(X.pluginName)){Y().logger.info("plugin-manager",`${X.packageName} skipped by --skip-plugin`);continue}if(X.isCore&&X.category==="core"){Y().logger.info("plugin-manager",`${X.packageName} is bundled with the agent \u2014 skipping auto-install`);continue}if(this.registry.some((J)=>J.packageName===X.packageName)){Y().logger.info("plugin-manager",`${X.packageName} already installed, skipping auto-install`);continue}Q?.(`Installing ${X.label} (${X.packageName})...`);try{await this.install(X.packageName,{refreshLatest:!0}),z.push(X),Q?.(`Installed ${X.label} (${X.packageName})`)}catch(J){let W=J instanceof Error?J.message:String(J);Y().logger.error("plugin-manager",`Failed to auto-install ${X.packageName}: ${W}`),Q?.(`Failed to install ${X.label}: ${W}`)}}if(z.length>0)this.loadRegistry();return z}async installAndLoad(Q,Z,$){let z=await this.install(Q),H=this.loaded.get(z.packageName);if(H){this.registerPluginProviders(H,$);let q=this.wrapHostServices(H,$);if(H.onServerStart)await H.onServerStart(Z,q);if(H.onServerReady)await H.onServerReady(Z,q)}return z}async update(Q,Z){return this.withLifecycleLock(()=>this.updateLocked(Q,Z))}async updateLocked(Q,Z){if(Q=b(Q),Y().logger.info("plugin-manager",`Updating ${Q}${Z?`@${Z}`:""}...`),!this.registry.find((q)=>q.packageName===Q))throw Error(`Plugin ${Q} is not installed. Use 'install' first.`);let z=this.loaded.get(Q);if(z)await this.terminateWorkerHost(z.name);this.loaded.delete(Q);let H=await this.installLocked(Q,{refreshLatest:!0,version:Z});return Y().logger.info("plugin-manager",`Updated ${Q} to v${H.version}`),H}async updateAll(){let Q=[];for(let Z of[...this.registry])try{let $=await this.update(Z.packageName);Q.push({packageName:Z.packageName,success:!0,version:$.version})}catch($){Q.push({packageName:Z.packageName,success:!1,error:$ instanceof Error?$.message:String($)})}return Q}async removeAll(Q){let Z=[],$=[...this.registry];for(let z of $)try{await this.remove(z.packageName,Q),Z.push({packageName:z.packageName,success:!0})}catch(H){Z.push({packageName:z.packageName,success:!1,error:H instanceof Error?H.message:String(H)})}return Z}async remove(Q,Z){return this.withLifecycleLock(()=>this.removeLocked(Q,Z))}async removeLocked(Q,Z){Q=b(Q),Y().logger.info("plugin-manager",`Removing ${Q}...`);let $=this.loaded.get(Q);if($?.onServerStop)try{await $.onServerStop()}catch(q){Y().logger.warn("plugin-manager",`Error stopping ${Q}: ${q}`)}if($)await this.terminateWorkerHost($.name),Z?.serviceRegistry.unregisterPlugin($.name),this.loaded.delete(Q);let z=this.registry.find((q)=>q.packageName===Q);if(!$&&z)Z?.serviceRegistry.unregisterPlugin(z.pluginName);let H=V(G(),"agent-plugins");try{if(U(V(H,"package.json")))Bun.spawnSync(["bun","remove",Q],{cwd:H,timeout:60000,stdout:"pipe",stderr:"pipe"})}catch{}try{Bun.spawnSync(["bun","remove","-g",Q],{timeout:60000,stdout:"pipe",stderr:"pipe"})}catch{try{Bun.spawnSync(["npm","uninstall","-g",Q],{timeout:60000,stdout:"pipe",stderr:"pipe"})}catch{}}this.pluginRoots=void 0,this.registry=this.registry.filter((q)=>q.packageName!==Q),this.saveRegistry(),Y().logger.info("plugin-manager",`Removed ${Q}`)}async loadAll(){this.loaded.clear();let Q=[];for(let Z of this.registry)try{b(Z.packageName),await this.importPlugin(Z.packageName),Y().logger.info("plugin-manager",`Loaded ${Z.packageName} (${Z.pluginName})`)}catch($){let z=$.code;if(z==="ENOENT_PLUGIN")Y().logger.info("plugin-manager",`${Z.packageName} not present on disk \u2014 dropping from registry`),Q.push(Z.packageName);else if(z==="EPLUGIN_LEGACY_SINGLETON")Y().logger.warn("plugin-manager",`Skipping ${Z.packageName}: ${$ instanceof Error?$.message:String($)}`);else Y().logger.warn("plugin-manager",`Failed to load ${Z.packageName} \u2014 dropping from registry: ${$}`),Q.push(Z.packageName)}if(Q.length>0){this.registry=this.registry.filter((Z)=>!Q.includes(Z.packageName));try{this.saveRegistry()}catch(Z){Y().logger.warn("plugin-manager",`Failed to persist pruned registry: ${Z}`)}}}async importPlugin(Q){Q=b(Q);let Z={},$;{let H=this.getGlobalRoots(),q=!1,X=[],B=!0;for(let J of H){let W=V(J,Q);if(!U(W)){X.push({path:W,error:"directory missing"});continue}B=!1;try{$=W,Z=await import(W),q=!0;break}catch(M){X.push({path:W,error:M instanceof Error?M.message:String(M)})}try{let M=V(W,"package.json");if(!U(M)){X.push({path:M,error:"package.json missing"});continue}let K=JSON.parse(v(M,"utf8")),F=K.module??K.main??"./index.js",T=V(W,F);$=W,Z=await import(T),q=!0;break}catch(M){X.push({path:W,error:M instanceof Error?M.message:String(M)})}}if(!q)try{$=this.resolvePackageRoot(Q)??$,Z=await import(Q),q=!0}catch(J){X.push({path:`bare:${Q}`,error:J instanceof Error?J.message:String(J)})}if(!q){let J=X.map((M)=>`${M.path} (${M.error})`).join("; "),W=Error(`Cannot find module '${Q}': explicit root attempts and bare import failed: ${J||"(no roots probed)"}`);if(B&&H.length>0)W.code="ENOENT_PLUGIN";throw W}}let z=this.extractPlugin(Z,`external:${Q}`,Y());if(!z){if(this.hasLegacySingleton(Z)){let H=Error(`${Q} uses removed singleton contract; upgrade to createPlugin(ctx) factory (set VIBECONTROLS_PLUGIN_CONTRACT_V2_ENFORCE=1 to refuse strictly)`);throw H.code="EPLUGIN_LEGACY_SINGLETON",H}throw Error(`${Q} does not export a valid createPlugin(ctx) factory`)}if(this.validatePluginExport(z,Q,$),!this.acceptCapabilities(z,`external:${Q}`))throw Error(`${Q} refused to load: missing required capabilities declaration`);if($)Object.defineProperty(z,$Q,{value:$,enumerable:!1,configurable:!1});if(this.logResolvedPlugin(Q,z.version,$),this.loaded.set(Q,z),this.shouldIsolate(z)){let H=Y(),q=new A({modulePath:Q,pluginName:z.name,ctx:{name:H.name,dataDir:H.dataDir}});try{await q.start(),this.workerHosts.set(z.name,q),H.logger.info("plugin-manager",`Isolated plugin '${z.name}' running in worker_threads`)}catch(X){try{await q.terminate()}catch{}this.loaded.delete(Q);let B=X instanceof Error?X.message:String(X);throw H.logger.error("plugin-manager",`Isolation required for '${z.name}' but worker failed to start (${B}); refusing to load in host process`),Error(`Plugin '${z.name}' requires isolation but the worker failed to start: ${B}`,{cause:X})}}return z}resolvePackageRoot(Q){let Z=import.meta;if(typeof Z.resolve!=="function")return;try{let $=Z.resolve(Q);if(!$.startsWith("file:"))return;let z=R(P($));while(z&&z!==R(z)){if(U(V(z,"package.json")))return z;z=R(z)}}catch{return}return}validatePluginExport(Q,Z,$){if(!a.test(Q.name))throw Error(`${Z} exports an invalid plugin name`);if(!Q.version||Q.version.length>64)throw Error(`${Z} exports an invalid plugin version`);if(Q.description&&Q.description.length>500)throw Error(`${Z} description is too long`);if(Q.cliCommand&&!a.test(Q.cliCommand))throw Error(`${Z} exports an invalid CLI command`);if(Q.apiPrefix){if(!vQ.test(Q.apiPrefix)||Q.apiPrefix.includes("..")||Q.apiPrefix.includes("//"))throw Error(`${Z} exports an invalid API prefix`)}if(Q.publicPaths){if(Q.publicPaths.length>20)throw Error(`${Z} exports too many public paths`);for(let z of Q.publicPaths)if(!PQ.test(z)||z.includes("..")||z.includes("//"))throw Error(`${Z} exports an invalid public path`)}if(Q.dependencies&&Q.dependencies.length>20)throw Error(`${Z} exports too many dependencies`);if(Q.tags){let z=new Set(["backend","frontend","cli","provider","adapter","integration"]);if(Q.tags.length>z.size)throw Error(`${Z} exports too many tags`);for(let H of Q.tags)if(!z.has(H))throw Error(`${Z} exports an invalid tag`)}if(Q.ui){if(Q.ui.title&&Q.ui.title.length>120)throw Error(`${Z} UI title is too long`);if(Q.ui.staticDir){if(!$)throw Error(`${Z} UI staticDir requires a package root`);let z=t($),H=t(Q.ui.staticDir);if(!_Q(H).isDirectory()||!yQ(z,H))throw Error(`${Z} UI staticDir must be inside the plugin package`)}}}pluginRoots;getPluginRoots(){if(this.pluginRoots!==void 0)return this.pluginRoots;let Q=QQ(),Z=[],$=new Set,z=(q)=>{if(!q||$.has(q)||!U(q))return;$.add(q),Z.push(q)},H=process.env.VIBECONTROLS_PLUGIN_ROOTS;if(H)for(let q of H.split(Q.pathSep).map((X)=>X.trim()).filter(Boolean))z(q);if(y()==="local")z(zQ());else z(V(RQ(),".bun","install","global","node_modules")),z(Q.npmGlobalRoot());if(this.isRunningFromSource())z(this.agentOwnNodeModules());return this.pluginRoots=Z,Z}isRunningFromSource(){try{let Q=P(import.meta.url);return Q.includes(`${r}src${r}`)||Q.includes("/src/")}catch{return!1}}agentOwnNodeModules(){try{let Q=R(P(import.meta.url)),Z="";while(Q&&Q!==Z){if(U(V(Q,"package.json")))return V(Q,"node_modules");Z=Q,Q=R(Q)}}catch{}return null}getGlobalRoots(){return this.getPluginRoots()}readInstalledVersion(Q,Z){try{let $=V(Q,Z,"package.json");if(!U($))return;let z=JSON.parse(v($,"utf8"));return typeof z.version==="string"?z.version:void 0}catch{return}}logResolvedPlugin(Q,Z,$){let z=Y().logger;z.debug("plugin-manager",`Resolved ${Q}@${Z}`,{from:$??"(bare import)"});try{let H=[];for(let q of this.getPluginRoots()){let X=V(q,Q);if($&&X===$)continue;let B=this.readInstalledVersion(q,Q);if(B&&B!==Z)H.push(`${X} (v${B})`)}if(H.length>0)z.warn("plugin-manager",`${Q}: loaded v${Z} but stale duplicate copy(ies) exist at a different version \u2014 these shadow the active copy across reinstalls. Run \`vibe nuke --all\` to purge them.`,{loadedVersion:Z,loadedFrom:$??"(bare import)",shadows:H})}catch{}}extractPlugin(Q,Z,$){let z=this.findFactory(Q);if(z){let H=z($);if(!this.isVibePlugin(H))throw Error(`plugin '${Z}' createPlugin(ctx) factory returned an invalid VibePlugin`);return H}if(this.hasLegacySingleton(Q)){let H=`plugin '${Z}' uses removed singleton contract; upgrade to createPlugin(ctx) factory`;if(u())throw Error(H);Y().logger.warn("plugin-manager",H);return}return}findFactory(Q){if(typeof Q.createPlugin==="function")return Q.createPlugin;let Z=Q.default;if(Z&&typeof Z.createPlugin==="function")return Z.createPlugin;return}hasLegacySingleton(Q){if(this.isVibePlugin(Q.vibePlugin))return!0;let Z=Q.default;if(Z&&this.isVibePlugin(Z.vibePlugin))return!0;if(this.isVibePlugin(Z))return!0;return!1}isVibePlugin(Q){if(!Q||typeof Q!=="object")return!1;let Z=Q;return typeof Z.name==="string"&&typeof Z.version==="string"}registerProviders(Q,Z){this.registerPluginProviders(Q,Z)}registerPluginProviders(Q,Z){let z=p(Q.name)?.isDefault===!0,H=(q)=>{if(!z)return;Z.serviceRegistry.setProviderDefault(q,Q.name)};if(Q.providers?.tunnel){if(Z.serviceRegistry.registerProvider("tunnel",Q.providers.tunnel,Q.name),H("tunnel"),Q.tunnelDomainSuffixes)for(let q of Q.tunnelDomainSuffixes)ZQ(q)}if(Q.providers?.session)Z.serviceRegistry.registerProvider("session",Q.providers.session,Q.name),H("session");if(Q.providers?.ai)Z.serviceRegistry.registerProvider("ai",Q.providers.ai,Q.name),H("ai")}async dispatchCliSetup(Q,Z){for(let $ of this.getAllPlugins())if($.onCliSetup)try{await $.onCliSetup(Q,this.wrapHostServices($,Z))}catch(z){Y().logger.warn("plugin-manager",`onCliSetup failed for ${$.name}: ${z}`)}}async dispatchServerStart(Q,Z){let $=this.sortAllByDependencies(),z=[];for(let H of $){if(this.registerPluginProviders(H,Z),H.onServerStart){let q=Date.now();try{await H.onServerStart(Q,this.wrapHostServices(H,Z)),(async()=>{try{let{telemetryService:X}=await import("./telemetry-tnq47dcs.js");X.emit("plugin.activated",{plugin_name:H.name,version:H.version,duration_ms:Date.now()-q})}catch{}})()}catch(X){let B=X instanceof Error?X.message:String(X);Y().logger.error("plugin-manager",`onServerStart failed for ${H.name}: ${B}`),(async()=>{try{let{telemetryService:W}=await import("./telemetry-tnq47dcs.js");W.emit("plugin.failed",{plugin_name:H.name,error_class:X instanceof Error?X.constructor.name:"Error"})}catch{}})();let J=this.registry.find((W)=>W.pluginName===H.name);z.push({plugin:H.name,packageName:J?.packageName,error:B})}}this.registerPluginProviders(H,Z)}return{failures:z}}async dispatchServerReady(Q,Z){for(let $ of this.getAllPlugins())if($.onServerReady)try{await $.onServerReady(Q,this.wrapHostServices($,Z))}catch(z){Y().logger.warn("plugin-manager",`onServerReady failed for ${$.name}: ${z}`)}}async provisionDefaultPrereqs(Q,Z,$,z){let H=process.env.VIBE_SKIP_PREREQ_INSTALL==="1",q=process.platform;Y().logger.info("plugin-manager",`Provisioning default providers \u2014 agent build v${N()}, platform=${q}, pluginInstallScope=${y()}, skipInstall=${H}`);let X=(z?h(process.platform,z):S(process.platform)).map((W)=>W.packageName);if(!H)for(let W of X){if(this.loaded.has(W))continue;try{Y().logger.info("plugin-manager",`Installing default meta ${W}`),await this.install(W,{refreshLatest:!0})}catch(M){Y().logger.warn("plugin-manager",`Failed to install default meta ${W}: ${M}`)}}let B=this.buildHostPluginsFacade(Q,Z,$),J=this.attachPluginsFacade(Z,B);for(let[W,M]of this.getAllLoaded()){if(!M.provisionProviders)continue;try{await M.provisionProviders(this.wrapHostServices(M,J)),Y().logger.info("plugin-manager",`${W}: providers provisioned`)}catch(K){Y().logger.warn("plugin-manager",`${W}: provisionProviders failed: ${K}`)}}}buildHostPluginsFacade(Q,Z,$){return{install:async(z,H)=>{await this.install(z,H??{})},loadProvider:async(z)=>{await this.loadAndStartProvider(z,Q,Z,$)},runPrereqs:async(z,H)=>{let{runPluginPrereqs:q}=await import("./prereqs-runner-ca4kt803.js"),X=this.loaded.get(z);if(!X)return{satisfied:!1};let B=await q(X,z,Q,this.db??null,{skipInstall:H?.skipInstall===!0});return{satisfied:B.noProtocol?!0:B.satisfied}},electDefault:async(z,H)=>{await this.electProviderDefault(z,H,Z)},isProviderRegistered:(z,H)=>Z.serviceRegistry.listProvidersForType(z).some((q)=>q.pluginName===H),skipInstall:()=>process.env.VIBE_SKIP_PREREQ_INSTALL==="1"}}attachPluginsFacade(Q,Z){return new Proxy(Q,{get($,z,H){if(z==="plugins")return Z;return Reflect.get($,z,H)}})}async loadAndStartProvider(Q,Z,$,z){let H=this.loaded.get(Q);if(!H)H=await this.importPlugin(Q);if(H.createRoutes&&z?.(H))Y().logger.info("plugin-manager",`${Q}: mounted routes after provisioning`);this.registerPluginProviders(H,$);let q=this.wrapHostServices(H,$);if(H.onServerStart)await H.onServerStart(Z,q);if(H.onServerReady)await H.onServerReady(Z,q)}async electProviderDefault(Q,Z,$){if(!$.serviceRegistry.listProvidersForType(Q).some((H)=>H.pluginName===Z))return;try{let H=await this.getDefaultProvider(Q);if(H&&H!==Z)return;if($.serviceRegistry.setProviderDefault(Q,Z),!H)await this.setDefaultProvider(Q,Z).catch(()=>{});Y().logger.info("plugin-manager",`Elected platform-default '${Q}' provider '${Z}'`)}catch(H){Y().logger.warn("plugin-manager",`Failed to elect default '${Q}' provider '${Z}': ${H}`)}}async dispatchServerStop(Q){for(let Z of this.getAllPlugins())if(Z.onServerStop)try{await Z.onServerStop(Q)}catch($){Y().logger.warn("plugin-manager",`onServerStop failed for ${Z.name}: ${$}`)}if(Q?.reason==="shutdown")await this.terminateAllWorkerHosts()}async runPluginNuke(Q,Z,$){let z=Q?this.loaded.has(Q)?[[Q,this.loaded.get(Q)]]:[]:Array.from(this.loaded.entries()),H=[];for(let[q,X]of z){if(!X.onNuke)continue;try{let B=this.wrapHostServices(X,Z),J=await X.onNuke(B,$);H.push({plugin:q,ok:!0,reaped:J?.reaped??[],notes:J?.notes??[]}),Y().logger.info("plugin-manager",`onNuke ${$.dryRun?"(dry-run) ":""}completed for ${q}`,{reaped:J?.reaped??[]})}catch(B){let J=B instanceof Error?B.message:String(B);H.push({plugin:q,ok:!1,reaped:[],notes:[],error:J}),Y().logger.warn("plugin-manager",`onNuke failed for ${q}: ${J}`)}}return{results:H}}async reloadAll(Q,Z){await this.dispatchServerStop({reason:"reload"}),await this.terminateAllWorkerHosts();for(let $ of this.loaded.values())Z.serviceRegistry.unregisterPlugin($.name);this.loaded.clear(),this.corePlugins.clear(),this.loadRegistry(),await this.loadCorePlugins(),await this.loadAll(),await this.dispatchServerStart(Q,Z),await this.dispatchServerReady(Q,Z)}sortAllByDependencies(){let Q=this.getAllPlugins(),Z=new Map;for(let X of Q)Z.set(X.name,X);let $=new Set,z=new Set,H=[],q=(X)=>{if($.has(X))return;if(z.has(X))throw Error(`Plugin dependency cycle detected at '${X}'`);let B=Z.get(X);if(!B)return;if(z.add(X),B.dependencies)for(let J of B.dependencies){if(!Z.has(J)){Y().logger.warn("plugin-manager",`Plugin '${B.name}' depends on missing plugin '${J}'`);continue}q(J)}z.delete(X),$.add(X),H.push(B)};for(let X of Q)q(X.name);return H}sortByDependencies(){let Q=Array.from(this.loaded.entries()),Z=new Map;for(let[q,X]of Q)Z.set(X.name,q);let $=new Set,z=[],H=(q)=>{if($.has(q))return;$.add(q);let X=this.loaded.get(q);if(X?.dependencies)for(let J of X.dependencies){let W=Z.get(J);if(W&&this.loaded.has(W))H(W)}let B=this.loaded.get(q);if(B)z.push([q,B])};for(let[q]of Q)H(q);return z}getPluginByKey(Q){for(let[,Z]of this.loaded)if(Z.name===Q)return Z;return this.corePlugins.get(Q)}getAllPlugins(){let Q=new Map;for(let[Z,$]of this.corePlugins)Q.set(Z,$);for(let[,Z]of this.loaded)Q.set(Z.name,Z);return Array.from(Q.values())}getAllPluginsByTag(Q){return this.getAllPlugins().filter((Z)=>Z.tags?.includes(Q)??!1)}resolvePluginChain(Q){let Z=new Set;for(let H of this.getAllPlugins())Z.add(H.name);let $=[],z=-1;for(let H=0;H<Q.length;H++){if(Q[H].startsWith("-")){z=H;break}if(Z.has(Q[H]))$.push(Q[H]);else{z=H;break}}if(z===-1)return{chain:$,command:"",args:[]};return{chain:$,command:Q[z],args:Q.slice(z+1)}}async getDefaultProvider(Q){if(!this.db)return null;return await this.db.getConfig(`${e}${Q}`)??null}async setDefaultProvider(Q,Z){if(!this.db)throw Error("Cannot set default provider: PluginManager was constructed without a database reference");if(!this.getPluginByKey(Z))throw Error(`Plugin '${Z}' not found`);await this.db.setConfig(`${e}${Q}`,Z),Y().logger.info("plugin-manager",`Set default '${Q}' provider to '${Z}'`)}getPluginDetails(){let Q=this.getCorePluginDetails(),Z=this.getExternalPluginDetails(),$=new Map;for(let z of Q)$.set(z.pluginName,z);for(let z of Z)$.set(z.pluginName,z);return Array.from($.values())}getCorePluginDetails(){let Q=[];for(let[Z,$]of this.corePlugins)Q.push({packageName:`@vibecontrols/plugin-${Z}`,pluginName:Z,version:$.version,description:$.description,tags:$.tags,cliCommand:$.cliCommand,apiPrefix:$.apiPrefix,dependencies:$.dependencies,installedAt:"",loaded:!0,isCore:!0,hasUI:!!$.ui,uiUrl:$.ui?`/ui/${Z}`:void 0,hasCliSetup:!!$.onCliSetup,hasServerStart:!!$.onServerStart,hasServerStop:!!$.onServerStop,hasServerReady:!!$.onServerReady,hasProviders:!!($.providers?.tunnel||$.providers?.session||$.providers?.ai)});return Q}getExternalPluginDetails(){return this.registry.map((Q)=>{let Z=this.loaded.get(Q.packageName),$=p(Q.pluginName);return{packageName:Q.packageName,pluginName:Q.pluginName,version:Z?.version??Q.version,description:Z?.description,tags:Z?.tags,cliCommand:Z?.cliCommand,apiPrefix:Z?.apiPrefix,dependencies:Z?.dependencies,installedAt:Q.installedAt,loaded:!!Z,isCore:$?.isCore===!0,hasUI:!!Z?.ui,uiUrl:Z?.ui?`/ui/${Q.pluginName}`:void 0,hasCliSetup:!!Z?.onCliSetup,hasServerStart:!!Z?.onServerStart,hasServerStop:!!Z?.onServerStop,hasServerReady:!!Z?.onServerReady,hasProviders:!!(Z?.providers?.tunnel||Z?.providers?.session||Z?.providers?.ai)}})}getRegistry(){return[...this.registry]}getLoaded(Q){return this.loaded.get(Q)}getAllLoaded(){return new Map(this.loaded)}isInstalled(Q){return this.registry.some((Z)=>Z.packageName===Q)}isLoaded(Q){return this.loaded.has(Q)}}
5
- export{N as Da,O as Ea,wQ as Fa,D as Ga,h as Ha,l as Ia,gQ as Ja,rQ as Ka,pQ as La,iQ as Ma,I as Na,TQ as Oa,aQ as Pa,fQ as Qa,SQ as Ra,MZ as Sa,b as Ta,y as Ua,VZ as Va,HQ as Wa};
2
+ import{Xa as QQ}from"./index-0ckffygp.js";import{Bd as ZQ,Md as k,Od as Y}from"./index-js1xn4sq.js";import{$d as b,de as d}from"./index-a4854mwz.js";import{ie as w}from"./index-c7554sg7.js";import{existsSync as U,mkdirSync as n,readdirSync as GQ,readFileSync as v,renameSync as _Q,realpathSync as t,rmSync as j,statSync as RQ,writeFileSync as g}from"fs";import{homedir as xQ}from"os";import{dirname as R,isAbsolute as EQ,join as V,relative as IQ,sep as r}from"path";import{fileURLToPath as P}from"url";import{existsSync as XQ,readFileSync as qQ}from"fs";import{dirname as A,join as BQ}from"path";import{fileURLToPath as YQ}from"url";var WQ="@vibecontrols/agent",_;function N(){if(_)return _;try{let Q=A(YQ(import.meta.url));for(let Z=0;Z<10&&Q&&Q!==A(Q);Z++){let $=BQ(Q,"package.json");if(XQ($))try{let z=JSON.parse(qQ($,"utf8"));if(z.name===WQ&&typeof z.version==="string")return _=z.version,_}catch{}Q=A(Q)}}catch{}return _??"0.0.0"}function u(){let Q=process.env.VIBECONTROLS_PLUGIN_CONTRACT_V2_ENFORCE;return Q==="1"||Q==="true"||Q==="on"}var m={storage:"rw",secrets:"rw",gateway:!0,broadcast:!0,subprocess:!0,audit:!0,telemetry:!0,singletonOnly:!1,requiresIsolation:!1},c={storage:"none",secrets:"none",gateway:!1,broadcast:!1,subprocess:!1,audit:!1,telemetry:!1,singletonOnly:!1,requiresIsolation:!1};function s(){let Q=process.env.VIBECONTROLS_STRICT_PLUGIN_CAPS;return Q==="1"||Q==="true"||Q==="on"}function o(Q,Z,$,z,H=!1){return new Proxy(Q,{get(q,X,B){if(X==="plugins"){if(!H)return;return Reflect.get(q,X,B)}if(X==="storage")return JQ(q.storage,$.storage??"none",Z,z);if(X==="broadcast"&&!$.broadcast)return E(Z,"broadcast",z);if(X==="workspaceQuery"&&!$.gateway)return E(Z,"workspaceQuery",z);if(X==="getAgentRecordId"&&!$.gateway)return E(Z,"getAgentRecordId",z);if(X==="getWorkspaceId"&&!$.gateway)return E(Z,"getWorkspaceId",z);if(X==="telemetry"){if(!$.telemetry)return;return Reflect.get(q,X,B)}return Reflect.get(q,X,B)}})}function JQ(Q,Z,$,z){if(Z==="rw")return Q;return new Proxy(Q,{get(H,q,X){let B=String(q),J=B==="set"||B==="delete"||B==="deleteAll";if(Z==="none"||Z==="read"&&J)return(...M)=>{throw z("plugin.capability.denied",{pluginName:$,surface:"storage",op:B,mode:Z}),Error(`plugin '${$}' lacks storage:${J?"rw":"read"} capability (op=${B})`)};return Reflect.get(H,q,X)}})}function E(Q,Z,$){return(...z)=>{throw $("plugin.capability.denied",{pluginName:Q,op:Z}),Error(`plugin '${Q}' lacks capability for ${Z}`)}}import{Worker as KQ}from"worker_threads";import{fileURLToPath as MQ}from"url";import{randomUUID as VQ}from"crypto";function OQ(){let Q=MQ(import.meta.url),Z=Q.lastIndexOf("/"),$=Z>=0?Q.slice(0,Z):Q,z=`${$}/plugin-worker-runtime.ts`,H=`${$}/plugin-worker-runtime.js`;if(Q.endsWith(".ts"))return z;return H}class L{worker;pending=new Map;spec;initPromise;terminated=!1;constructor(Q){this.spec=Q}async start(){if(this.initPromise)return this.initPromise;return this.initPromise=this.spawn(),this.initPromise}async spawn(){let Q=this.spec.runtimeEntry??OQ(),Z=["PATH","HOME","USERPROFILE","TMPDIR","TMP","TEMP","LANG","LC_ALL","LC_CTYPE","TZ","SystemRoot","SystemDrive","ComSpec","PATHEXT","windir"],$={};for(let H of Z){let q=process.env[H];if(typeof q==="string")$[H]=q}let z=new KQ(Q,{env:$});this.worker=z,z.on("message",(H)=>this.onMessage(H)),z.on("error",(H)=>this.onWorkerError(H instanceof Error?H:Error(String(H)))),z.on("exit",(H)=>this.onWorkerExit(H)),await this.call("init",{modulePath:this.spec.modulePath,ctxStub:{name:this.spec.ctx.name,dataDir:this.spec.ctx.dataDir}})}async dispatch(Q,Z=[]){if(this.terminated)throw Error("PluginWorkerHost terminated");if(!this.worker)await this.start();return this.call("dispatch",{method:Q,params:Z})}call(Q,Z){if(!this.worker)return Promise.reject(Error("worker not spawned"));let $=VQ();return new Promise((z,H)=>{this.pending.set($,{resolve:z,reject:H});try{this.worker?.postMessage({id:$,op:Q,args:Z})}catch(q){this.pending.delete($),H(q instanceof Error?q:Error(String(q)))}})}onMessage(Q){let Z=this.pending.get(Q.id);if(!Z)return;if(this.pending.delete(Q.id),Q.ok)Z.resolve(Q.result);else{let $=Error(Q.error?.message??"worker error");if(Q.error?.stack)$.stack=Q.error.stack;Z.reject($)}}onWorkerError(Q){for(let[,Z]of this.pending)Z.reject(Q);this.pending.clear()}onWorkerExit(Q){if(this.pending.size>0){let Z=Error(`worker exited (code=${Q}) with pending calls`);for(let[,$]of this.pending)$.reject(Z);this.pending.clear()}this.terminated=!0}async terminate(){if(this.terminated=!0,!this.worker)return;try{await this.worker.terminate()}catch{}this.worker=void 0}}var FQ=[{packageName:"@vibecontrols/vibe-plugin-storage",pluginName:"storage",label:"Storage facade",description:"Storage provider registry \u2014 owns AgentDatabase contract. Bundled with the agent; the storage meta lazy-loads the configured provider by name.",category:"storage",trusted:!0,isCore:!0,isDefault:!0,isCritical:!0,removable:!1,integrity:"sha512-E0agrBuSwO7R5z7dBA6Jb0Mq5zibhkFzvEh0lcb4N+byt25yStrDcsJqJ3bJpVdavw/OkAjB+MAC06zkTtHraQ=="},...["agent","task","config","git","plugin-mgr","log"].map((Q)=>({packageName:`@vibecontrols/vibe-plugin-${Q}`,pluginName:Q,label:`${Q} (built-in)`,description:`Built-in ${Q} plugin bundled with the agent.`,category:"core",trusted:!0,isCore:!0,removable:!1}))],CQ=[{packageName:"@vibecontrols/vibe-plugin-tunnel",pluginName:"tunnel",label:"Tunnel manager",description:"Owns TunnelProvider interface. Routes to a registered tunnel provider.",category:"tunnel",trusted:!0,isDefault:!0,isCritical:!0,cliCommand:"tunnel",apiPrefix:"/api/tunnel",integrity:"sha512-drBtmSC7rcv8lNB0Xco47Y1D0NJ9qwSct/K7lJNySSH8MwAHPFDfhHxLLmZ+F/NE854cgEE3wb+a2qN4rDXm4w=="},{packageName:"@vibecontrols/vibe-plugin-session-manager",pluginName:"session-manager",label:"Session manager",description:"Owns SessionProvider interface. Routes to a registered session backend.",category:"session",trusted:!0,isCore:!0,isDefault:!0,isCritical:!0,cliCommand:"session",apiPrefix:"/api/sessions",integrity:"sha512-HjF5jxAFwQFMLRlC7N4OMraGC9V9f1u+aGlab4Yr8EkPjbrECYbcBHtD6IwfIe+jcgYSAJMrESCHFHa3EcxyHg=="},{packageName:"@vibecontrols/vibe-plugin-ai",pluginName:"ai",label:"AI orchestration",description:"Owns AIAgentProvider interface. Prompts, contexts, sessions, dispatch, logs.",category:"ai",trusted:!0,isDefault:!0,isCritical:!0,cliCommand:"ai",apiPrefix:"/api/ai",integrity:"sha512-T8UJQ7AP/4fim7ggNuACgo9uKaoO9Ji6+DVFm8A/A7C/7uqNbeJwgbCMVUi3qIdNNhnrwzTQffF7chV8aozdMw=="},{packageName:"@vibecontrols/vibe-plugin-plan",pluginName:"plan",label:"Plan orchestration",description:"Owns PlanProvider interface. Routes plan sessions to a registered provider.",category:"plan",trusted:!0,isDefault:!1,cliCommand:"plan",apiPrefix:"/api/plan",integrity:"sha512-FDoMr2aDBIJ7mpqdWgfSyfwOYc1Q3JhsiNqIXHCMb8yThA7Y1939wlkG4JHmgyPxRj+1zwdg1/MiZYYFzne/pg=="},{packageName:"@vibecontrols/vibe-plugin-gitops",pluginName:"gitops",label:"GitOps orchestrator",description:"Owns GitOpsProvider interface. Routes repo / PR / CI / security queries to a registered provider.",category:"gitops",trusted:!0,isDefault:!1,cliCommand:"gitops",apiPrefix:"/api/gitops",integrity:"sha512-kUw3KIvznHQ2C9hz/K9vi1CWt4IHq0adHDcoJjvoaPumfJ8nXNJcPlqm0hVoZIAF38Hju1DlpXlsFWmYT7Y95Q=="},{packageName:"@vibecontrols/vibe-plugin-security",pluginName:"security",label:"Security lifecycle",description:"Security lifecycle orchestrator \u2014 owns /api/security and dispatches to per-stage providers.",category:"security",trusted:!0,isDefault:!1,cliCommand:"security",apiPrefix:"/api/security",integrity:"sha512-yvNuRIRpvKZzF03h0o9dv9im454r2qSLB61GiGiAnzKM3InjCyl/fYvwyQUDxKZCZIkHtGKBTmmAm669U1Q/+Q=="}],UQ=[{packageName:"@vibecontrols/vibe-plugin-tool-code-server",pluginName:"code-server",label:"Browser code editor",description:"Browser-based VS Code via code-server \u2014 open any Vibe in an in-browser editor.",category:"tool",trusted:!0,isDefault:!1,cliCommand:"code-server",apiPrefix:"/api/code-server"}],wQ=[{packageName:"@vibecontrols/vibe-plugin-agent-backup",pluginName:"agent-backup",label:"Agent backup",description:"Backup and restore agent state.",category:"agent",trusted:!0,isDefault:!0,integrity:"sha512-AzbuYGO66WHNbdJZsfODKJZVqLs18b8ocGPw1jnRZbs3rl1Z4JCDhWxtVuv/yiVIclPaFtEbSQz5sTZf2/TrEQ=="}],O=[...FQ,...CQ,...UQ,...wQ],jQ=[{key:"storage",label:"Storage",description:"Encrypted local state for the agent.",categories:["storage"],mandatory:!0,defaultSelected:!0},{key:"tunnel",label:"Tunnels",description:"Expose the agent for remote access + share links.",categories:["tunnel"],mandatory:!0,defaultSelected:!0},{key:"backup",label:"Backup",description:"Backup + restore agent state.",categories:["agent"],mandatory:!0,defaultSelected:!0},{key:"session",label:"Terminal sessions",description:"Long-lived terminal / AI agent sessions.",categories:["session"],mandatory:!1,defaultSelected:!0},{key:"editor",label:"Browser code editor",description:"Open any Vibe in an in-browser VS Code editor (code-server).",categories:["tool"],mandatory:!1,defaultSelected:!0},{key:"ai",label:"AI orchestration",description:"AI agent harnesses, prompts + dispatch.",categories:["ai"],mandatory:!1,defaultSelected:!0},{key:"plan",label:"Plan review",description:"Review / approve AI-proposed plans.",categories:["plan"],mandatory:!1,defaultSelected:!1},{key:"gitops",label:"GitOps",description:"Repo / PR / CI / security integration.",categories:["gitops"],mandatory:!1,defaultSelected:!1},{key:"security",label:"Security",description:"Security scanning lifecycle.",categories:["security"],mandatory:!1,defaultSelected:!1}],D=O.filter((Q)=>Q.isCore&&Q.category==="core").map((Q)=>Q.pluginName),f=O.filter((Q)=>Q.isDefault===!0);function S(Q){return f}function h(Q,Z){let $=Z instanceof Set?Z:new Set(Z),z=new Set;for(let H of jQ)if(H.mandatory||$.has(H.key))for(let q of H.categories)z.add(q);return O.filter((H)=>z.has(H.category))}var l=new Set(O.filter((Q)=>Q.trusted).map((Q)=>Q.packageName));function TQ(){let Q=O.filter(($)=>$.isCritical).flatMap(($)=>[$.packageName,$.pluginName]),Z=process.env.VIBECONTROLS_CRITICAL_PLUGINS;if(Z){let $=Z.split(",").map((z)=>z.trim()).filter(Boolean);return new Set([...Q,...$])}return new Set(Q)}function rQ(Q){return TQ().has(Q)}var pQ=O.filter((Q)=>!Q.isCore||Q.category!=="core");function iQ(Q){return O.find((Z)=>Z.packageName===Q)}function aQ(Q){return new Set}function I(Q){return Q.startsWith("@vibecontrols/vibe-plugin-")||l.has(Q)}function bQ(Q){let Z=Q.trim();if(!Z)return;if(Z.startsWith("@vibecontrols/"))return O.find((z)=>z.packageName===Z);if(Z.startsWith("vibe-plugin-"))return O.find((z)=>z.packageName===`@vibecontrols/${Z}`);let $=O.find((z)=>z.pluginName===Z);if($)return $;return O.find((z)=>z.packageName===`@vibecontrols/vibe-plugin-${Z}`)}function eQ(Q){let Z=Q.trim();if(!Z)return;let $=bQ(Z);if($)return $.packageName;if(Z.startsWith("@vibecontrols/"))return Z;if(Z.startsWith("vibe-plugin-"))return`@vibecontrols/${Z}`;return`@vibecontrols/vibe-plugin-${Z}`}function p(Q){return O.find((Z)=>Z.pluginName===Q)}function AQ(Q){return O.find((Z)=>Z.packageName===Q)}function LQ(Q,Z){if(Q.length!==Z.length)return!1;let $=0;for(let z=0;z<Q.length;z++)$|=Q.charCodeAt(z)^Z.charCodeAt(z);return $===0}async function DQ(Q,Z,$){let z=AQ(Q),H=process.env.VIBECONTROLS_REQUIRE_PLUGIN_INTEGRITY==="1";if(!z?.integrity){if(H)throw Error(`Refusing to install ${Q}: catalog has no pinned integrity and VIBECONTROLS_REQUIRE_PLUGIN_INTEGRITY=1`);return}let q=$,X;try{let J=`${Z.replace(/\/+$/,"")}/${Q.replace("/","%2F")}`,W=await fetch(J,{headers:{accept:"application/json"},signal:AbortSignal.timeout(20000)});if(!W.ok)throw Error(`registry packument fetch failed (HTTP ${W.status})`);let M=await W.json();if(q=q??M["dist-tags"]?.latest,!q)throw Error("could not resolve version from registry");if(X=M.versions?.[q]?.dist?.integrity,typeof X!=="string"||X.length===0)throw Error(`registry did not return dist.integrity for ${Q}@${q}`)}catch(B){let J=B instanceof Error?B.message:String(B);throw Error(`Pre-install integrity gate refused ${Q}: ${J}`,{cause:B})}if(!LQ(z.integrity,X)){let B=process.env.VIBECONTROLS_STRICT_PLUGIN_INTEGRITY==="1";if(I(Q)&&!B){Y().logger.warn("plugin-manager",`Integrity pin for ${Q} is stale \u2014 catalog expects ${z.integrity}, the allowlisted registry has ${X} for ${q}. Proceeding (first-party package, registry allowlisted). Re-pin plugins.config.ts to silence this.`);return}throw Error(`Pre-install integrity gate refused ${Q}: integrity mismatch for ${q}: expected ${z.integrity}, got ${X}`)}}var fQ=["https://registry.npmjs.org/","https://registry.npmjs.org"];function SQ(){let Q=process.env.VIBECONTROLS_REGISTRY_ALLOWLIST,Z=[...fQ];if(typeof Q==="string"&&Q.length>0)for(let $ of Q.split(",").map((z)=>z.trim()).filter(Boolean))Z.push($);return Z}function hQ(Q){let Z=SQ(),$;try{$=new URL(Q).origin}catch{throw Error(`Invalid plugin registry URL: ${Q}`)}for(let z of Z)try{if(new URL(z).origin===$)return}catch{}throw Error(`Plugin registry '${Q}' is not in the allow-list. Add it to VIBECONTROLS_REGISTRY_ALLOWLIST at daemon start.`)}var i="plugins.json",vQ=/^@vibecontrols\/vibe-plugin-[a-z0-9][a-z0-9-]{0,80}$/,a=/^[a-z0-9][a-z0-9-]{0,63}$/,PQ=/^\/api\/[A-Za-z0-9][A-Za-z0-9/_-]{0,127}$/,yQ=/^\/[A-Za-z0-9][A-Za-z0-9/_-]{0,159}$/,$Q=Symbol.for("vibecontrols.pluginPackageRoot");function VZ(Q){return Q[$Q]}function G(Q){let Z=Q.trim();if(!vQ.test(Z))throw Error("Plugin package must be a @vibecontrols/vibe-plugin-* package name.");if(!I(Z)&&process.env.VIBECONTROLS_ALLOW_UNTRUSTED_PLUGINS!=="1")throw Error("Plugin package is not in the trusted VibeControls catalog.");return Z}function dQ(Q,Z){let $=IQ(Q,Z);return $===""||!!$&&!$.startsWith("..")&&!EQ($)}function zQ(){return V(b(),"agent-plugins","node_modules")}function kQ(){try{let Q=zQ();return U(Q)&&GQ(Q).length>0}catch{return!1}}function y(){let Q=(process.env.VIBECONTROLS_PLUGIN_INSTALL_SCOPE??process.env.VIBECONTROLS_PLUGIN_INSTALL_MODE??"").toLowerCase();if(Q==="local")return"local";if(Q==="global")return"global";return kQ()?"local":"global"}var e="provider:default:";function NQ(Q){if(!Q||typeof Q!=="object")return!1;let Z=Q;return typeof Z.packageName==="string"&&typeof Z.version==="string"&&typeof Z.pluginName==="string"&&typeof Z.installedAt==="string"}var OZ=f;class HQ{registry=[];loaded=new Map;corePlugins=new Map;db;forcedIsolation=new Set;workerHosts=new Map;lifecycleChain=Promise.resolve();withLifecycleLock(Q){let $=this.lifecycleChain.then(Q,Q);return this.lifecycleChain=$.then(()=>{return},()=>{return}),$}async terminateWorkerHost(Q){let Z=this.workerHosts.get(Q);if(!Z)return;try{await Z.terminate()}catch($){Y().logger.warn("plugin-manager",`Failed to terminate worker for '${Q}': ${$ instanceof Error?$.message:String($)}`)}finally{this.workerHosts.delete(Q)}}async terminateAllWorkerHosts(){let Q=Array.from(this.workerHosts.keys());await Promise.all(Q.map((Z)=>this.terminateWorkerHost(Z)))}constructor(Q){this.db=Q,this.ensureDir(),this.loadRegistry();let Z=process.env.VIBE_ISOLATE_PLUGINS;if(typeof Z==="string"&&Z.length>0)this.setForcedIsolation(Z.split(",").map(($)=>$.trim()).filter(($)=>$.length>0))}setForcedIsolation(Q){this.forcedIsolation=new Set(Q.filter((Z)=>Z.length>0))}shouldIsolate(Q){if(this.forcedIsolation.has(Q.name))return!0;return Q.capabilities?.requiresIsolation===!0}getWorkerHost(Q){return this.workerHosts.get(Q)}registerWorkerHost(Q,Z){this.workerHosts.set(Q,Z)}auditSink=(Q,Z)=>{Y().logger.warn("plugin-capability",Q,Z)};static resolveEffectiveCapabilities(Q,Z){if(Q.capabilities)return Q.capabilities;return Z?m:c}wrapHostServices(Q,Z){let $=this.corePlugins.has(Q.name),z=HQ.resolveEffectiveCapabilities(Q,$),H=$||this.isTrustedLoadedPlugin(Q);return o(Z,Q.name,z,this.auditSink,H)}isTrustedLoadedPlugin(Q){for(let[Z,$]of this.loaded)if($===Q)return I(Z);return!1}acceptCapabilities(Q,Z){if(Q.capabilities?.singletonOnly===!0&&k.size()>1)return Y().logger.error("plugin-manager",`[plugin] '${Q.name}' refused to load: singletonOnly capability incompatible with multi-profile daemon (profiles=${k.size()}, source=${Z})`),!1;if(Q.capabilities)return!0;if(s())return Y().logger.error("plugin-manager",`[plugin] '${Q.name}' refused to load: missing required capabilities declaration (source=${Z})`),!1;if(Z.startsWith("core:"))Y().logger.warn("plugin-manager",`[plugin] '${Q.name}' loaded without a capabilities declaration \u2014 granting full trust (core plugin). Declare capabilities explicitly. (source=${Z})`);else Y().logger.warn("plugin-manager",`[plugin] '${Q.name}' loaded without a capabilities declaration \u2014 defaulting to EMPTY capability set (deny by default). External plugins MUST declare capabilities explicitly to access host services. (source=${Z})`);return!0}ensureDir(){let Q=b();if(!U(Q))n(Q,{recursive:!0})}loadRegistry(){let Q=V(b(),i);try{if(U(Q)){let Z=v(Q,"utf-8"),$=JSON.parse(Z);if(Array.isArray($)&&$.every(NQ))this.registry=$.filter((z)=>{try{return G(z.packageName),!0}catch(H){return Y().logger.warn("plugin-manager","Ignoring invalid plugin entry",{packageName:z.packageName,error:String(H)}),!1}});else throw Error("plugins.json has an invalid schema")}}catch(Z){Y().logger.warn("plugin-manager","Failed to load plugin registry",{path:Q,error:String(Z)}),this.registry=[]}}saveRegistry(){this.ensureDir();let Q=V(b(),i),Z=`${Q}.${process.pid}.tmp`;g(Z,`${JSON.stringify(this.registry,null,2)}
3
+ `,{encoding:"utf-8",mode:384}),_Q(Z,Q)}async loadCorePlugins(){let Q=await Promise.allSettled([import("./index-1evqt03m.js"),import("./index-0924jp9m.js"),import("./index-tgrt61qr.js"),import("./index-ebwwtwwc.js"),import("./index-8053zege.js"),import("./index-nrsqzcfc.js")]),Z=Y();for(let $=0;$<Q.length;$++){let z=Q[$],H=D[$];if(z.status==="fulfilled"){let q=z.value,X;try{X=this.extractPlugin(q,`core:${H}`,Z)}catch(B){Y().logger.error("plugin-manager",`Core plugin '${H}' refused to load: ${B instanceof Error?B.message:String(B)}`);continue}if(X?.name){if(!this.acceptCapabilities(X,`core:${H}`))continue;this.corePlugins.set(X.name,X),Y().logger.info("plugin-manager",`Core plugin loaded: ${X.name} v${X.version}`)}else Y().logger.warn("plugin-manager",`Core plugin '${H}' did not export a valid createPlugin(ctx) factory`)}else Y().logger.warn("plugin-manager",`Failed to load core plugin '${H}': ${z.reason}`)}Y().logger.info("plugin-manager",`Core plugins loaded: ${this.corePlugins.size}/${D.length}`)}async resolveConcreteLatest(Q,Z){try{let z=`${Z.replace(/\/+$/,"")}/${Q.replace("/","%2F")}`,H=await fetch(z,{headers:{accept:"application/json"},signal:AbortSignal.timeout(20000)});if(!H.ok)return;let X=(await H.json())["dist-tags"]?.latest;if(typeof X==="string"&&/^\d+\.\d+\.\d+/.test(X))return X}catch{}return}async install(Q,Z={}){return this.withLifecycleLock(()=>this.installLocked(Q,Z))}async installLocked(Q,Z={}){Q=G(Q);let $=Z.version?.trim()||void 0,z=Z.refreshLatest===!0||!!$;Y().logger.info("plugin-manager",`Installing ${Q}${z?"@latest (refresh)":""}...`);let H=d();if(hQ(H),await DQ(Q,H,void 0),!z)try{await import(Q),Y().logger.info("plugin-manager",`${Q} already resolvable \u2014 skipping global install`);let K=await this.importPlugin(Q),F={packageName:Q,version:K.version,pluginName:K.name,installedAt:new Date().toISOString()};return this.registry=this.registry.filter((T)=>T.packageName!==Q),this.registry.push(F),this.saveRegistry(),F}catch{}let q=d(),X=y(),B=$?$:z?await this.resolveConcreteLatest(Q,q):void 0,J=z?`${Q}@${B??"latest"}`:Q;try{if(X==="local"){let K=V(b(),"agent-plugins");if(!U(K))n(K,{recursive:!0});let F=V(K,"package.json");if(!U(F))g(F,JSON.stringify({name:"vibecontrols-agent-plugins",private:!0,version:"0.0.0",dependencies:{}},null,2)+`
4
+ `);if(z&&B){let C=this.readInstalledVersion(V(K,"node_modules"),Q);if(C&&C!==B){Y().logger.info("plugin-manager",`Pre-clean ${Q}: on-disk v${C} != target v${B} \u2014 removing stale copy + lockfile to force fresh resolve`);try{j(V(K,"node_modules",Q),{recursive:!0,force:!0})}catch{}try{j(V(K,"bun.lock"),{force:!0}),j(V(K,"bun.lockb"),{force:!0})}catch{}}try{j(V(K,"bun.lock"),{force:!0}),j(V(K,"bun.lockb"),{force:!0})}catch{}}if(Bun.spawnSync(["bun","add",J,"--registry",q],{cwd:K,timeout:120000,stdout:"pipe",stderr:"pipe"}).exitCode!==0){let C=Bun.spawnSync(["npm","install",J,"--registry",q],{cwd:K,timeout:120000,stdout:"pipe",stderr:"pipe"});if(C.exitCode!==0)throw Error(C.stderr.toString().trim())}if(z&&B){let C=this.readInstalledVersion(V(K,"node_modules"),Q);if(C!==B){Y().logger.warn("plugin-manager",`bun kept ${Q}@${C??"missing"} after requesting ${B}; retrying with npm after removing stale local copy`);try{j(V(K,"node_modules",Q),{recursive:!0,force:!0}),j(V(K,"bun.lock"),{force:!0}),j(V(K,"bun.lockb"),{force:!0}),j(V(K,"package-lock.json"),{force:!0})}catch{}let x=Bun.spawnSync(["npm","install",J,"--registry",q,"--save-exact"],{cwd:K,timeout:120000,stdout:"pipe",stderr:"pipe"});if(x.exitCode!==0)throw Error(x.stderr.toString().trim())}}}else if(Bun.spawnSync(["bun","install","-g",J,"--registry",q],{timeout:120000,stdout:"pipe",stderr:"pipe"}).exitCode!==0){let F=Bun.spawnSync(["npm","install","-g",J,"--registry",q],{timeout:120000,stdout:"pipe",stderr:"pipe"});if(F.exitCode!==0)throw Error(F.stderr.toString().trim())}this.pluginRoots=void 0}catch(K){let F=K instanceof Error?K.message:String(K);if(z)try{await import(Q),Y().logger.warn("plugin-manager",`Could not refresh ${Q} to @latest (${F}); using the already-installed copy`),this.pluginRoots=void 0;let T=await this.importPlugin(Q),C={packageName:Q,version:T.version,pluginName:T.name,installedAt:new Date().toISOString()};return this.registry=this.registry.filter((x)=>x.packageName!==Q),this.registry.push(C),this.saveRegistry(),C}catch{}throw Error(`Failed to install ${Q}: ${F}`,{cause:K})}let W=await this.importPlugin(Q);if(z&&B&&W.version!==B)Y().logger.warn("plugin-manager",`${Q} refreshed to ${W.version} but registry latest is ${B} \u2014 a stale resolver/cache may still be in play`);if(this.corePlugins.has(W.name))Y().logger.info("plugin-manager",`External plugin '${Q}' overrides core plugin '${W.name}'`);let M={packageName:Q,version:W.version,pluginName:W.name,installedAt:new Date().toISOString()};return this.registry=this.registry.filter((K)=>K.packageName!==Q),this.registry.push(M),this.saveRegistry(),Y().logger.info("plugin-manager",`Installed ${Q}@${W.version} (${W.name})`),M}async ensureDefaultPlugins(Q,Z=[],$){let z=[],H=new Set(Z),q=$?h(process.platform,$):S(process.platform);for(let X of q){if(H.has(X.packageName)||H.has(X.pluginName)){Y().logger.info("plugin-manager",`${X.packageName} skipped by --skip-plugin`);continue}if(X.isCore&&X.category==="core"){Y().logger.info("plugin-manager",`${X.packageName} is bundled with the agent \u2014 skipping auto-install`);continue}if(this.registry.some((J)=>J.packageName===X.packageName)){Y().logger.info("plugin-manager",`${X.packageName} already installed, skipping auto-install`);continue}Q?.(`Installing ${X.label} (${X.packageName})...`);try{await this.install(X.packageName,{refreshLatest:!0}),z.push(X),Q?.(`Installed ${X.label} (${X.packageName})`)}catch(J){let W=J instanceof Error?J.message:String(J);Y().logger.error("plugin-manager",`Failed to auto-install ${X.packageName}: ${W}`),Q?.(`Failed to install ${X.label}: ${W}`)}}if(z.length>0)this.loadRegistry();return z}async installAndLoad(Q,Z,$){let z=await this.install(Q),H=this.loaded.get(z.packageName);if(H){this.registerPluginProviders(H,$);let q=this.wrapHostServices(H,$);if(H.onServerStart)await H.onServerStart(Z,q);if(H.onServerReady)await H.onServerReady(Z,q)}return z}async update(Q,Z){return this.withLifecycleLock(()=>this.updateLocked(Q,Z))}async updateLocked(Q,Z){if(Q=G(Q),Y().logger.info("plugin-manager",`Updating ${Q}${Z?`@${Z}`:""}...`),!this.registry.find((q)=>q.packageName===Q))throw Error(`Plugin ${Q} is not installed. Use 'install' first.`);let z=this.loaded.get(Q);if(z)await this.terminateWorkerHost(z.name);this.loaded.delete(Q);let H=await this.installLocked(Q,{refreshLatest:!0,version:Z});return Y().logger.info("plugin-manager",`Updated ${Q} to v${H.version}`),H}async updateAll(){let Q=[];for(let Z of[...this.registry])try{let $=await this.update(Z.packageName);Q.push({packageName:Z.packageName,success:!0,version:$.version})}catch($){Q.push({packageName:Z.packageName,success:!1,error:$ instanceof Error?$.message:String($)})}return Q}async removeAll(Q){let Z=[],$=[...this.registry];for(let z of $)try{await this.remove(z.packageName,Q),Z.push({packageName:z.packageName,success:!0})}catch(H){Z.push({packageName:z.packageName,success:!1,error:H instanceof Error?H.message:String(H)})}return Z}async remove(Q,Z){return this.withLifecycleLock(()=>this.removeLocked(Q,Z))}async removeLocked(Q,Z){Q=G(Q),Y().logger.info("plugin-manager",`Removing ${Q}...`);let $=this.loaded.get(Q);if($?.onServerStop)try{await $.onServerStop()}catch(q){Y().logger.warn("plugin-manager",`Error stopping ${Q}: ${q}`)}if($)await this.terminateWorkerHost($.name),Z?.serviceRegistry.unregisterPlugin($.name),this.loaded.delete(Q);let z=this.registry.find((q)=>q.packageName===Q);if(!$&&z)Z?.serviceRegistry.unregisterPlugin(z.pluginName);let H=V(b(),"agent-plugins");try{if(U(V(H,"package.json")))Bun.spawnSync(["bun","remove",Q],{cwd:H,timeout:60000,stdout:"pipe",stderr:"pipe"})}catch{}try{Bun.spawnSync(["bun","remove","-g",Q],{timeout:60000,stdout:"pipe",stderr:"pipe"})}catch{try{Bun.spawnSync(["npm","uninstall","-g",Q],{timeout:60000,stdout:"pipe",stderr:"pipe"})}catch{}}this.pluginRoots=void 0,this.registry=this.registry.filter((q)=>q.packageName!==Q),this.saveRegistry(),Y().logger.info("plugin-manager",`Removed ${Q}`)}async loadAll(){this.loaded.clear();let Q=[];for(let Z of this.registry)try{G(Z.packageName),await this.importPlugin(Z.packageName),Y().logger.info("plugin-manager",`Loaded ${Z.packageName} (${Z.pluginName})`)}catch($){let z=$.code;if(z==="ENOENT_PLUGIN")Y().logger.info("plugin-manager",`${Z.packageName} not present on disk \u2014 dropping from registry`),Q.push(Z.packageName);else if(z==="EPLUGIN_LEGACY_SINGLETON")Y().logger.warn("plugin-manager",`Skipping ${Z.packageName}: ${$ instanceof Error?$.message:String($)}`);else Y().logger.warn("plugin-manager",`Failed to load ${Z.packageName} \u2014 dropping from registry: ${$}`),Q.push(Z.packageName)}if(Q.length>0){this.registry=this.registry.filter((Z)=>!Q.includes(Z.packageName));try{this.saveRegistry()}catch(Z){Y().logger.warn("plugin-manager",`Failed to persist pruned registry: ${Z}`)}}}async importPlugin(Q){Q=G(Q);let Z={},$;{let H=this.getGlobalRoots(),q=!1,X=[],B=!0;for(let J of H){let W=V(J,Q);if(!U(W)){X.push({path:W,error:"directory missing"});continue}B=!1;try{$=W,Z=await import(W),q=!0;break}catch(M){X.push({path:W,error:M instanceof Error?M.message:String(M)})}try{let M=V(W,"package.json");if(!U(M)){X.push({path:M,error:"package.json missing"});continue}let K=JSON.parse(v(M,"utf8")),F=K.module??K.main??"./index.js",T=V(W,F);$=W,Z=await import(T),q=!0;break}catch(M){X.push({path:W,error:M instanceof Error?M.message:String(M)})}}if(!q)try{$=this.resolvePackageRoot(Q)??$,Z=await import(Q),q=!0}catch(J){X.push({path:`bare:${Q}`,error:J instanceof Error?J.message:String(J)})}if(!q){let J=X.map((M)=>`${M.path} (${M.error})`).join("; "),W=Error(`Cannot find module '${Q}': explicit root attempts and bare import failed: ${J||"(no roots probed)"}`);if(B&&H.length>0)W.code="ENOENT_PLUGIN";throw W}}let z=this.extractPlugin(Z,`external:${Q}`,Y());if(!z){if(this.hasLegacySingleton(Z)){let H=Error(`${Q} uses removed singleton contract; upgrade to createPlugin(ctx) factory (set VIBECONTROLS_PLUGIN_CONTRACT_V2_ENFORCE=1 to refuse strictly)`);throw H.code="EPLUGIN_LEGACY_SINGLETON",H}throw Error(`${Q} does not export a valid createPlugin(ctx) factory`)}if(this.validatePluginExport(z,Q,$),!this.acceptCapabilities(z,`external:${Q}`))throw Error(`${Q} refused to load: missing required capabilities declaration`);if($)Object.defineProperty(z,$Q,{value:$,enumerable:!1,configurable:!1});if(this.logResolvedPlugin(Q,z.version,$),this.loaded.set(Q,z),this.shouldIsolate(z)){let H=Y(),q=new L({modulePath:Q,pluginName:z.name,ctx:{name:H.name,dataDir:H.dataDir}});try{await q.start(),this.workerHosts.set(z.name,q),H.logger.info("plugin-manager",`Isolated plugin '${z.name}' running in worker_threads`)}catch(X){try{await q.terminate()}catch{}this.loaded.delete(Q);let B=X instanceof Error?X.message:String(X);throw H.logger.error("plugin-manager",`Isolation required for '${z.name}' but worker failed to start (${B}); refusing to load in host process`),Error(`Plugin '${z.name}' requires isolation but the worker failed to start: ${B}`,{cause:X})}}return z}resolvePackageRoot(Q){let Z=import.meta;if(typeof Z.resolve!=="function")return;try{let $=Z.resolve(Q);if(!$.startsWith("file:"))return;let z=R(P($));while(z&&z!==R(z)){if(U(V(z,"package.json")))return z;z=R(z)}}catch{return}return}validatePluginExport(Q,Z,$){if(!a.test(Q.name))throw Error(`${Z} exports an invalid plugin name`);if(!Q.version||Q.version.length>64)throw Error(`${Z} exports an invalid plugin version`);if(Q.description&&Q.description.length>500)throw Error(`${Z} description is too long`);if(Q.cliCommand&&!a.test(Q.cliCommand))throw Error(`${Z} exports an invalid CLI command`);if(Q.apiPrefix){if(!PQ.test(Q.apiPrefix)||Q.apiPrefix.includes("..")||Q.apiPrefix.includes("//"))throw Error(`${Z} exports an invalid API prefix`)}if(Q.publicPaths){if(Q.publicPaths.length>20)throw Error(`${Z} exports too many public paths`);for(let z of Q.publicPaths)if(!yQ.test(z)||z.includes("..")||z.includes("//"))throw Error(`${Z} exports an invalid public path`)}if(Q.dependencies&&Q.dependencies.length>20)throw Error(`${Z} exports too many dependencies`);if(Q.tags){let z=new Set(["backend","frontend","cli","provider","adapter","integration"]);if(Q.tags.length>z.size)throw Error(`${Z} exports too many tags`);for(let H of Q.tags)if(!z.has(H))throw Error(`${Z} exports an invalid tag`)}if(Q.ui){if(Q.ui.title&&Q.ui.title.length>120)throw Error(`${Z} UI title is too long`);if(Q.ui.staticDir){if(!$)throw Error(`${Z} UI staticDir requires a package root`);let z=t($),H=t(Q.ui.staticDir);if(!RQ(H).isDirectory()||!dQ(z,H))throw Error(`${Z} UI staticDir must be inside the plugin package`)}}}pluginRoots;getPluginRoots(){if(this.pluginRoots!==void 0)return this.pluginRoots;let Q=QQ(),Z=[],$=new Set,z=(q)=>{if(!q||$.has(q)||!U(q))return;$.add(q),Z.push(q)},H=process.env.VIBECONTROLS_PLUGIN_ROOTS;if(H)for(let q of H.split(Q.pathSep).map((X)=>X.trim()).filter(Boolean))z(q);if(y()==="local")z(zQ());else z(V(xQ(),".bun","install","global","node_modules")),z(Q.npmGlobalRoot());if(this.isRunningFromSource())z(this.agentOwnNodeModules());return this.pluginRoots=Z,Z}isRunningFromSource(){try{let Q=P(import.meta.url);return Q.includes(`${r}src${r}`)||Q.includes("/src/")}catch{return!1}}agentOwnNodeModules(){try{let Q=R(P(import.meta.url)),Z="";while(Q&&Q!==Z){if(U(V(Q,"package.json")))return V(Q,"node_modules");Z=Q,Q=R(Q)}}catch{}return null}getGlobalRoots(){return this.getPluginRoots()}readInstalledVersion(Q,Z){try{let $=V(Q,Z,"package.json");if(!U($))return;let z=JSON.parse(v($,"utf8"));return typeof z.version==="string"?z.version:void 0}catch{return}}logResolvedPlugin(Q,Z,$){let z=Y().logger;z.debug("plugin-manager",`Resolved ${Q}@${Z}`,{from:$??"(bare import)"});try{let H=[];for(let q of this.getPluginRoots()){let X=V(q,Q);if($&&X===$)continue;let B=this.readInstalledVersion(q,Q);if(B&&B!==Z)H.push(`${X} (v${B})`)}if(H.length>0)z.warn("plugin-manager",`${Q}: loaded v${Z} but stale duplicate copy(ies) exist at a different version \u2014 these shadow the active copy across reinstalls. Run \`vibe nuke --all\` to purge them.`,{loadedVersion:Z,loadedFrom:$??"(bare import)",shadows:H})}catch{}}extractPlugin(Q,Z,$){let z=this.findFactory(Q);if(z){let H=z($);if(!this.isVibePlugin(H))throw Error(`plugin '${Z}' createPlugin(ctx) factory returned an invalid VibePlugin`);return H}if(this.hasLegacySingleton(Q)){let H=`plugin '${Z}' uses removed singleton contract; upgrade to createPlugin(ctx) factory`;if(u())throw Error(H);Y().logger.warn("plugin-manager",H);return}return}findFactory(Q){if(typeof Q.createPlugin==="function")return Q.createPlugin;let Z=Q.default;if(Z&&typeof Z.createPlugin==="function")return Z.createPlugin;return}hasLegacySingleton(Q){if(this.isVibePlugin(Q.vibePlugin))return!0;let Z=Q.default;if(Z&&this.isVibePlugin(Z.vibePlugin))return!0;if(this.isVibePlugin(Z))return!0;return!1}isVibePlugin(Q){if(!Q||typeof Q!=="object")return!1;let Z=Q;return typeof Z.name==="string"&&typeof Z.version==="string"}registerProviders(Q,Z){this.registerPluginProviders(Q,Z)}registerPluginProviders(Q,Z){let z=p(Q.name)?.isDefault===!0,H=(q)=>{if(!z)return;Z.serviceRegistry.setProviderDefault(q,Q.name)};if(Q.providers?.tunnel){if(Z.serviceRegistry.registerProvider("tunnel",Q.providers.tunnel,Q.name),H("tunnel"),Q.tunnelDomainSuffixes)for(let q of Q.tunnelDomainSuffixes)ZQ(q)}if(Q.providers?.session)Z.serviceRegistry.registerProvider("session",Q.providers.session,Q.name),H("session");if(Q.providers?.ai)Z.serviceRegistry.registerProvider("ai",Q.providers.ai,Q.name),H("ai")}async dispatchCliSetup(Q,Z){for(let $ of this.getAllPlugins())if($.onCliSetup)try{await $.onCliSetup(Q,this.wrapHostServices($,Z))}catch(z){Y().logger.warn("plugin-manager",`onCliSetup failed for ${$.name}: ${z}`)}}async dispatchServerStart(Q,Z){let $=this.sortAllByDependencies(),z=[];for(let H of $){if(this.registerPluginProviders(H,Z),H.onServerStart){let q=Date.now();try{await H.onServerStart(Q,this.wrapHostServices(H,Z)),(async()=>{try{let{telemetryService:X}=await import("./telemetry-8jfdyt51.js");X.emit("plugin.activated",{plugin_name:H.name,version:H.version,duration_ms:Date.now()-q})}catch{}})()}catch(X){let B=X instanceof Error?X.message:String(X);Y().logger.error("plugin-manager",`onServerStart failed for ${H.name}: ${B}`),(async()=>{try{let{telemetryService:W}=await import("./telemetry-8jfdyt51.js");W.emit("plugin.failed",{plugin_name:H.name,error_class:X instanceof Error?X.constructor.name:"Error"})}catch{}})();let J=this.registry.find((W)=>W.pluginName===H.name);z.push({plugin:H.name,packageName:J?.packageName,error:B})}}this.registerPluginProviders(H,Z)}return{failures:z}}async dispatchServerReady(Q,Z){for(let $ of this.getAllPlugins())if($.onServerReady)try{await $.onServerReady(Q,this.wrapHostServices($,Z))}catch(z){Y().logger.warn("plugin-manager",`onServerReady failed for ${$.name}: ${z}`)}}async provisionDefaultPrereqs(Q,Z,$,z){let H=process.env.VIBE_SKIP_PREREQ_INSTALL==="1",q=process.platform;Y().logger.info("plugin-manager",`Provisioning default providers \u2014 agent build v${N()}, platform=${q}, pluginInstallScope=${y()}, skipInstall=${H}`);let X=(z?h(process.platform,z):S(process.platform)).map((W)=>W.packageName);if(!H)for(let W of X){if(this.loaded.has(W))continue;try{Y().logger.info("plugin-manager",`Installing default meta ${W}`),await this.install(W,{refreshLatest:!0})}catch(M){Y().logger.warn("plugin-manager",`Failed to install default meta ${W}: ${M}`)}}let B=this.buildHostPluginsFacade(Q,Z,$),J=this.attachPluginsFacade(Z,B);for(let[W,M]of this.getAllLoaded()){if(!M.provisionProviders)continue;try{await M.provisionProviders(this.wrapHostServices(M,J)),Y().logger.info("plugin-manager",`${W}: providers provisioned`)}catch(K){Y().logger.warn("plugin-manager",`${W}: provisionProviders failed: ${K}`)}}}buildHostPluginsFacade(Q,Z,$){return{install:async(z,H)=>{await this.install(z,H??{})},loadProvider:async(z)=>{await this.loadAndStartProvider(z,Q,Z,$)},runPrereqs:async(z,H)=>{let{runPluginPrereqs:q}=await import("./prereqs-runner-27x3j1md.js"),X=this.loaded.get(z);if(!X)return{satisfied:!1};let B=await q(X,z,Q,this.db??null,{skipInstall:H?.skipInstall===!0});return{satisfied:B.noProtocol?!0:B.satisfied}},electDefault:async(z,H)=>{await this.electProviderDefault(z,H,Z)},isProviderRegistered:(z,H)=>Z.serviceRegistry.listProvidersForType(z).some((q)=>q.pluginName===H),skipInstall:()=>process.env.VIBE_SKIP_PREREQ_INSTALL==="1"}}attachPluginsFacade(Q,Z){return new Proxy(Q,{get($,z,H){if(z==="plugins")return Z;return Reflect.get($,z,H)}})}async loadAndStartProvider(Q,Z,$,z){let H=this.loaded.get(Q);if(!H)H=await this.importPlugin(Q);if(H.createRoutes&&z?.(H))Y().logger.info("plugin-manager",`${Q}: mounted routes after provisioning`);this.registerPluginProviders(H,$);let q=this.wrapHostServices(H,$);if(H.onServerStart)await H.onServerStart(Z,q);if(H.onServerReady)await H.onServerReady(Z,q)}async electProviderDefault(Q,Z,$){if(!$.serviceRegistry.listProvidersForType(Q).some((H)=>H.pluginName===Z))return;try{let H=await this.getDefaultProvider(Q);if(H&&H!==Z)return;if($.serviceRegistry.setProviderDefault(Q,Z),!H)await this.setDefaultProvider(Q,Z).catch(()=>{});Y().logger.info("plugin-manager",`Elected platform-default '${Q}' provider '${Z}'`)}catch(H){Y().logger.warn("plugin-manager",`Failed to elect default '${Q}' provider '${Z}': ${H}`)}}async dispatchServerStop(Q){for(let Z of this.getAllPlugins())if(Z.onServerStop)try{await Z.onServerStop(Q)}catch($){Y().logger.warn("plugin-manager",`onServerStop failed for ${Z.name}: ${$}`)}if(Q?.reason==="shutdown")await this.terminateAllWorkerHosts()}async runPluginNuke(Q,Z,$){let z=Q?this.loaded.has(Q)?[[Q,this.loaded.get(Q)]]:[]:Array.from(this.loaded.entries()),H=[];for(let[q,X]of z){if(!X.onNuke)continue;try{let B=this.wrapHostServices(X,Z),J=await X.onNuke(B,$);H.push({plugin:q,ok:!0,reaped:J?.reaped??[],notes:J?.notes??[]}),Y().logger.info("plugin-manager",`onNuke ${$.dryRun?"(dry-run) ":""}completed for ${q}`,{reaped:J?.reaped??[]})}catch(B){let J=B instanceof Error?B.message:String(B);H.push({plugin:q,ok:!1,reaped:[],notes:[],error:J}),Y().logger.warn("plugin-manager",`onNuke failed for ${q}: ${J}`)}}return{results:H}}async reloadAll(Q,Z){await this.dispatchServerStop({reason:"reload"}),await this.terminateAllWorkerHosts();for(let $ of this.loaded.values())Z.serviceRegistry.unregisterPlugin($.name);this.loaded.clear(),this.corePlugins.clear(),this.loadRegistry(),await this.loadCorePlugins(),await this.loadAll(),await this.dispatchServerStart(Q,Z),await this.dispatchServerReady(Q,Z)}sortAllByDependencies(){let Q=this.getAllPlugins(),Z=new Map;for(let X of Q)Z.set(X.name,X);let $=new Set,z=new Set,H=[],q=(X)=>{if($.has(X))return;if(z.has(X))throw Error(`Plugin dependency cycle detected at '${X}'`);let B=Z.get(X);if(!B)return;if(z.add(X),B.dependencies)for(let J of B.dependencies){if(!Z.has(J)){Y().logger.warn("plugin-manager",`Plugin '${B.name}' depends on missing plugin '${J}'`);continue}q(J)}z.delete(X),$.add(X),H.push(B)};for(let X of Q)q(X.name);return H}sortByDependencies(){let Q=Array.from(this.loaded.entries()),Z=new Map;for(let[q,X]of Q)Z.set(X.name,q);let $=new Set,z=[],H=(q)=>{if($.has(q))return;$.add(q);let X=this.loaded.get(q);if(X?.dependencies)for(let J of X.dependencies){let W=Z.get(J);if(W&&this.loaded.has(W))H(W)}let B=this.loaded.get(q);if(B)z.push([q,B])};for(let[q]of Q)H(q);return z}getPluginByKey(Q){for(let[,Z]of this.loaded)if(Z.name===Q)return Z;return this.corePlugins.get(Q)}getAllPlugins(){let Q=new Map;for(let[Z,$]of this.corePlugins)Q.set(Z,$);for(let[,Z]of this.loaded)Q.set(Z.name,Z);return Array.from(Q.values())}getAllPluginsByTag(Q){return this.getAllPlugins().filter((Z)=>Z.tags?.includes(Q)??!1)}resolvePluginChain(Q){let Z=new Set;for(let H of this.getAllPlugins())Z.add(H.name);let $=[],z=-1;for(let H=0;H<Q.length;H++){if(Q[H].startsWith("-")){z=H;break}if(Z.has(Q[H]))$.push(Q[H]);else{z=H;break}}if(z===-1)return{chain:$,command:"",args:[]};return{chain:$,command:Q[z],args:Q.slice(z+1)}}async getDefaultProvider(Q){if(!this.db)return null;return await this.db.getConfig(`${e}${Q}`)??null}async setDefaultProvider(Q,Z){if(!this.db)throw Error("Cannot set default provider: PluginManager was constructed without a database reference");if(!this.getPluginByKey(Z))throw Error(`Plugin '${Z}' not found`);await this.db.setConfig(`${e}${Q}`,Z),Y().logger.info("plugin-manager",`Set default '${Q}' provider to '${Z}'`)}getPluginDetails(){let Q=this.getCorePluginDetails(),Z=this.getExternalPluginDetails(),$=new Map;for(let z of Q)$.set(z.pluginName,z);for(let z of Z)$.set(z.pluginName,z);return Array.from($.values())}getCorePluginDetails(){let Q=[];for(let[Z,$]of this.corePlugins)Q.push({packageName:`@vibecontrols/plugin-${Z}`,pluginName:Z,version:$.version,description:$.description,tags:$.tags,cliCommand:$.cliCommand,apiPrefix:$.apiPrefix,dependencies:$.dependencies,installedAt:"",loaded:!0,isCore:!0,hasUI:!!$.ui,uiUrl:$.ui?`/ui/${Z}`:void 0,hasCliSetup:!!$.onCliSetup,hasServerStart:!!$.onServerStart,hasServerStop:!!$.onServerStop,hasServerReady:!!$.onServerReady,hasProviders:!!($.providers?.tunnel||$.providers?.session||$.providers?.ai)});return Q}getExternalPluginDetails(){return this.registry.map((Q)=>{let Z=this.loaded.get(Q.packageName),$=p(Q.pluginName);return{packageName:Q.packageName,pluginName:Q.pluginName,version:Z?.version??Q.version,description:Z?.description,tags:Z?.tags,cliCommand:Z?.cliCommand,apiPrefix:Z?.apiPrefix,dependencies:Z?.dependencies,installedAt:Q.installedAt,loaded:!!Z,isCore:$?.isCore===!0,hasUI:!!Z?.ui,uiUrl:Z?.ui?`/ui/${Q.pluginName}`:void 0,hasCliSetup:!!Z?.onCliSetup,hasServerStart:!!Z?.onServerStart,hasServerStop:!!Z?.onServerStop,hasServerReady:!!Z?.onServerReady,hasProviders:!!(Z?.providers?.tunnel||Z?.providers?.session||Z?.providers?.ai)}})}getRegistry(){return[...this.registry]}getLoaded(Q){return this.loaded.get(Q)}getAllLoaded(){return new Map(this.loaded)}isInstalled(Q){return this.registry.some((Z)=>Z.packageName===Q)}isLoaded(Q){return this.loaded.has(Q)}}
5
+ export{N as Da,O as Ea,jQ as Fa,D as Ga,h as Ha,l as Ia,rQ as Ja,pQ as Ka,iQ as La,aQ as Ma,I as Na,bQ as Oa,eQ as Pa,SQ as Qa,hQ as Ra,VZ as Sa,G as Ta,y as Ua,OZ as Va,HQ as Wa};
@@ -1,9 +1,9 @@
1
1
  // @bun
2
- import{Xd as c,Yd as i,_d as l,be as n}from"./index-0cn9bv8z.js";import{de as g}from"./index-jw1k4vbk.js";import{he as p}from"./index-yy1mm8zs.js";import{join as UJ}from"path";import{AsyncLocalStorage as IJ}from"async_hooks";import{mkdirSync as _J}from"fs";import{join as u}from"path";import{appendFileSync as r,existsSync as P,mkdirSync as e,readFileSync as JJ,readdirSync as ZJ,statSync as $J,unlinkSync as v}from"fs";import{join as F}from"path";var QJ=30,XJ=104857600,WJ=/secret|password|token|key|email/i,h=/^audit-(\d{4}-\d{2}-\d{2})\.log$/;function y(J=new Date){let Z=J.getUTCFullYear(),$=String(J.getUTCMonth()+1).padStart(2,"0"),Q=String(J.getUTCDate()).padStart(2,"0");return`${Z}-${$}-${Q}`}function k(J){if(Array.isArray(J))return J.map(k);if(J&&typeof J==="object"){let Z={};for(let[$,Q]of Object.entries(J)){if(WJ.test($)){Z[$]="[redacted]";continue}Z[$]=k(Q)}return Z}return J}function KJ(J,Z){if(!Z)return!0;if(Z.includes("*"))return new RegExp(`^${Z.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")}$`).test(J);return J.includes(Z)}class I{profile;auditDir;constructor(J,Z){this.profile=J,this.auditDir=F(Z,"audit")}ensureDir(){if(!P(this.auditDir))e(this.auditDir,{recursive:!0});return this.auditDir}activeFilePath(){return F(this.ensureDir(),`audit-${y()}.log`)}emit(J,Z,$={}){let Q=k($),X={timestamp:new Date().toISOString(),source:J,event:Z,payload:{...Q,profile:this.profile}};try{r(this.activeFilePath(),`${JSON.stringify(X)}
2
+ import{$d as l,Yd as c,Zd as i,ce as n}from"./index-a4854mwz.js";import{ee as g}from"./index-4qq083yd.js";import{ie as p}from"./index-c7554sg7.js";import{join as UJ}from"path";import{AsyncLocalStorage as IJ}from"async_hooks";import{mkdirSync as _J}from"fs";import{join as u}from"path";import{appendFileSync as r,existsSync as P,mkdirSync as e,readFileSync as JJ,readdirSync as ZJ,statSync as $J,unlinkSync as v}from"fs";import{join as F}from"path";var QJ=30,XJ=104857600,WJ=/secret|password|token|key|email/i,h=/^audit-(\d{4}-\d{2}-\d{2})\.log$/;function y(J=new Date){let Z=J.getUTCFullYear(),$=String(J.getUTCMonth()+1).padStart(2,"0"),Q=String(J.getUTCDate()).padStart(2,"0");return`${Z}-${$}-${Q}`}function k(J){if(Array.isArray(J))return J.map(k);if(J&&typeof J==="object"){let Z={};for(let[$,Q]of Object.entries(J)){if(WJ.test($)){Z[$]="[redacted]";continue}Z[$]=k(Q)}return Z}return J}function KJ(J,Z){if(!Z)return!0;if(Z.includes("*"))return new RegExp(`^${Z.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")}$`).test(J);return J.includes(Z)}class I{profile;auditDir;constructor(J,Z){this.profile=J,this.auditDir=F(Z,"audit")}ensureDir(){if(!P(this.auditDir))e(this.auditDir,{recursive:!0});return this.auditDir}activeFilePath(){return F(this.ensureDir(),`audit-${y()}.log`)}emit(J,Z,$={}){let Q=k($),X={timestamp:new Date().toISOString(),source:J,event:Z,payload:{...Q,profile:this.profile}};try{r(this.activeFilePath(),`${JSON.stringify(X)}
3
3
  `,{mode:384})}catch{}}listLogFiles(){if(!P(this.auditDir))return[];return ZJ(this.auditDir).filter((J)=>h.test(J)).sort()}listEvents(J={}){let Z=Math.max(1,Math.min(J.limit??200,5000)),$=J.since?Date.parse(J.since):null,Q=J.event??"",X=this.listLogFiles(),W=[];for(let K=X.length-1;K>=0&&W.length<Z;K--){let V=X[K],z;try{z=JJ(F(this.auditDir,V),"utf8")}catch{continue}let Y=z.split(`
4
4
  `);for(let M=Y.length-1;M>=0&&W.length<Z;M--){let q=Y[M];if(!q)continue;let H;try{H=JSON.parse(q)}catch{continue}if($!==null&&Number.isFinite($)&&Date.parse(H.timestamp)<$)continue;if(!KJ(H.event,Q))continue;W.push(H)}}return W}runRetention(J=new Date){if(!P(this.auditDir))return;let Z=J.getTime()-QJ*24*60*60*1000,$=this.listLogFiles(),Q=[];for(let K of $){let V=h.exec(K);if(!V)continue;let z=Date.parse(`${V[1]}T00:00:00Z`),Y=F(this.auditDir,K);try{let M=$J(Y);if(Number.isFinite(z)&&z<Z){v(Y);continue}Q.push({name:K,size:M.size,mtime:M.mtimeMs})}catch{}}let X=Q.reduce((K,V)=>K+V.size,0),W=`audit-${y(J)}.log`;Q.sort((K,V)=>K.name.localeCompare(V.name));for(let K of Q){if(X<=XJ)break;if(K.name===W)continue;try{v(F(this.auditDir,K.name)),X-=K.size}catch{}}}__getAuditDirForTests(){return this.auditDir}}class _{profile;cryptoKey=null;apiKeyHash=null;constructor(J){this.profile=J}async load(J){if(J.byteLength!==32)throw Error(`KeyVault expects 32-byte key, got ${J.byteLength}`);let Z=new Uint8Array(J);try{this.cryptoKey=await crypto.subtle.importKey("raw",Z,{name:"AES-GCM"},!1,["encrypt","decrypt"])}finally{J.fill(0),Z.fill(0)}}async bindApiKey(J){let Z=new TextEncoder().encode(J);this.apiKeyHash=await crypto.subtle.digest("SHA-256",Z),Z.fill(0)}async match(J){if(!this.apiKeyHash)return!1;let Z=new TextEncoder().encode(J),$=await crypto.subtle.digest("SHA-256",Z);return Z.fill(0),VJ(this.apiKeyHash,$)}hasKey(){return this.cryptoKey!==null}getCryptoKey(){return this.cryptoKey}shutdown(){this.cryptoKey=null,this.apiKeyHash=null}}function VJ(J,Z){if(J.byteLength!==Z.byteLength)return!1;let $=new Uint8Array(J),Q=new Uint8Array(Z),X=0;for(let W=0;W<$.length;W++)X|=($[W]??0)^(Q[W]??0);return X===0}import{existsSync as N,mkdirSync as MJ,statSync as HJ,copyFileSync as BJ,truncateSync as CJ,renameSync as qJ,unlinkSync as NJ,createReadStream as DJ}from"fs";import{join as FJ}from"path";import{EventEmitter as jJ}from"events";import{createInterface as GJ}from"readline";import{AsyncLocalStorage as zJ}from"async_hooks";var f=new zJ,YJ=/^[A-Za-z0-9._:-]{8,128}$/;function lJ(){let J=globalThis.crypto;if(J?.randomUUID)return J.randomUUID();let Z=new Uint8Array(16);return J?.getRandomValues?.(Z),[...Z].map(($)=>$.toString(16).padStart(2,"0")).join("")}function nJ(J){let Z=(Q)=>{if(J instanceof Headers)return J.get(Q)??void 0;return J[Q]??J[Q.toLowerCase()]??J[Q.toUpperCase()]},$=Z("x-request-id")??Z("X-Request-Id");if(!$)return;return YJ.test($)?$:void 0}function oJ(J){f.enterWith(J)}function G(){return f.getStore()?.requestId}var bJ=10485760,m=7,OJ=60000,b={debug:0,info:1,warn:2,error:3},PJ={debug:"\x1B[90m",info:"\x1B[36m",warn:"\x1B[33m",error:"\x1B[31m"},kJ="\x1B[0m";class L extends jJ{logDir;logFile;currentDay="";minLevel;isDaemon;emitOutput;prettyOutput;rotationTimer=null;constructor(J){super();this.setMaxListeners(100),this.logDir=J.logDir;let Z=process.env.AGENT_LOG_FILE;this.logFile=Z&&Z.length>0?Z:J.logFile??FJ(this.logDir,"default.log"),this.minLevel=process.env.LOG_LEVEL??"info",this.isDaemon=Boolean(process.env.AGENT_LOG_FILE);let $=process.env.VIBE_FOREGROUND==="1"||process.argv.some((Q)=>Q==="-f"||Q==="--foreground");if(this.emitOutput=this.isDaemon||$||process.env.LOG_CONSOLE==="true"||!1,this.prettyOutput=this.emitOutput&&!this.isDaemon&&Boolean(process.stdout.isTTY),this.ensureLogDir(),this.currentDay=new Date().toISOString().split("T")[0]??"",this.isDaemon)this.rotationTimer=setInterval(()=>this.checkRotation(),OJ),this.rotationTimer.unref?.()}debug(J,Z,$){this.log("debug",J,Z,$)}info(J,Z,$){this.log("info",J,Z,$)}warn(J,Z,$){this.log("warn",J,Z,$)}error(J,Z,$){this.log("error",J,Z,$)}setLevel(J){this.minLevel=J}async readHistory(J){let{level:Z,source:$,from:Q,to:X,limit:W=200,offset:K=0}=J??{},V=[];if(!N(this.logFile))return V;return new Promise((z)=>{let Y=GJ({input:DJ(this.logFile,"utf8")}),M=0;Y.on("line",(q)=>{if(V.length>=W){Y.close();return}try{let H=JSON.parse(q);if(Z&&b[H.level]<b[Z])return;if($&&!H.source.includes($))return;if(Q&&H.timestamp<Q)return;if(X&&H.timestamp>X)return;if(M<K){M++;return}V.push(H)}catch{}}),Y.on("close",()=>z(V)),Y.on("error",()=>z(V))})}close(){if(this.rotationTimer)clearInterval(this.rotationTimer),this.rotationTimer=null}log(J,Z,$,Q){if(b[J]<b[this.minLevel])return;let X=G(),W=X!==void 0?{requestId:X,...Q??{}}:Q,K={timestamp:new Date().toISOString(),level:J,source:Z,message:$,...W&&Object.keys(W).length>0?{metadata:W}:{}};if(this.emitOutput)if(this.prettyOutput){let V=PJ[J],z=J.toUpperCase().padEnd(5),Y=Z?` [${Z}]`:"",M=W&&Object.keys(W).length>0?` ${JSON.stringify(W)}`:"",q=K.timestamp.split("T")[1]?.slice(0,12)??K.timestamp;process.stdout.write(`${V}${q} ${z}${kJ}${Y} ${$}${M}
5
5
  `)}else process.stdout.write(JSON.stringify(K)+`
6
- `);this.emit("log",K),g.enqueue(K)}checkRotation(){let J=new Date().toISOString().split("T")[0];if(this.currentDay&&this.currentDay!==J){this.rotate(),this.currentDay=J;return}this.currentDay=J;try{if(N(this.logFile)){if(HJ(this.logFile).size>=bJ)this.rotate()}}catch{}}rotate(){try{for(let J=m-1;J>=1;J--){let Z=`${this.logFile}.${J}`,$=`${this.logFile}.${J+1}`;if(N(Z)){if(J+1>m&&N($))NJ($);qJ(Z,$)}}if(N(this.logFile))BJ(this.logFile,`${this.logFile}.1`),CJ(this.logFile,0)}catch{}}ensureLogDir(){if(!N(this.logDir))MJ(this.logDir,{recursive:!0})}}var LJ={maxFileDescriptors:4096,maxChildProcesses:256,maxMemoryMB:4096},U=new IJ;function M2(J){U.enterWith(J)}class x{name;dataDir;spawnOwnerKey;keyVault;audit;logger;budget;db=null;serviceRegistry=null;pluginManager=null;lifecycle=null;hostServices=null;tunnel={url:null,child:null,externalUrl:!1};_gatewayClient=null;state="awaiting-config";degradedReasons=[];listeners=new Set;lastFinalizeError=null;constructor(J){this.name=J.name,this.dataDir=J.dataDir,this.spawnOwnerKey=`profile/${J.name}`,this.budget=J.budget??LJ,_J(this.dataDir,{recursive:!0}),this.keyVault=new _(J.name),this.audit=new I(J.name,J.dataDir),this.logger=new L({logDir:u(J.dataDir,"logs")})}run(J){return U.run(this,J)}get gatewayClient(){if(!this._gatewayClient)this._gatewayClient=new R;return this._gatewayClient}attachServices(J){this.db=J.db,this.serviceRegistry=J.serviceRegistry,this.pluginManager=J.pluginManager,this.lifecycle=J.lifecycle,this.hostServices=J.hostServices}getBootState(){return this.state}setBootState(J){if(this.state===J)return;if(this.state=J,J!=="degraded")this.degradedReasons.length=0;for(let Z of this.listeners)try{Z(J)}catch{}}recordDegradedReason(J,Z){if(this.degradedReasons.push({plugin:J,message:Z}),this.state==="ready")this.setBootState("degraded");(async()=>{try{let{telemetryService:$}=await import("./telemetry-tnq47dcs.js");$.emit("health.degraded",{reason_class:RJ(Z)})}catch{}})()}getDegradedReasons(){return this.degradedReasons.slice()}recordFinalizeError(J,Z){this.lastFinalizeError={message:J,at:new Date().toISOString(),attempt:Z}}clearFinalizeError(){this.lastFinalizeError=null}getLastFinalizeError(){return this.lastFinalizeError}onBootStateChange(J){return this.listeners.add(J),()=>this.listeners.delete(J)}async shutdown(){this.setBootState("shutting-down");try{let{unmountProfileRoutes:J}=await import("./profile-mount-npcknw6v.js");J(this.name)}catch{}try{if(this.pluginManager)await this.pluginManager.dispatchServerStop({reason:"shutdown"})}catch{}try{if(this.db)await this.db.close()}catch{}this.lifecycle=null,this.pluginManager=null,this.hostServices=null,this.serviceRegistry=null,this.db=null,this._gatewayClient=null,this.tunnel={url:null,child:null,externalUrl:!1},this.keyVault.shutdown(),this.listeners.clear()}subdir(J){return u(this.dataDir,J)}}function d(){return U.getStore()??null}function RJ(J){let Z=J.toLowerCase();if(Z.includes("timeout"))return"timeout";if(Z.includes("econn")||Z.includes("network"))return"network";if(Z.includes("permission")||Z.includes("eacces"))return"permission";if(Z.includes("not found")||Z.includes("enoent"))return"not_found";if(Z.includes("plugin"))return"plugin";return"other"}class A{profiles=new Map;create(J){if(this.profiles.has(J.name))throw Error(`profile already registered: ${J.name}`);let Z=new x(J);return this.profiles.set(J.name,Z),this.refreshProcessTitle(),Z}refreshProcessTitle(){try{let Z=[...this.profiles.keys()].sort().join(","),$=Z.length>96?`${Z.slice(0,93)}...`:Z;process.title=`vibe-daemon[${$}]`}catch{}}get(J){return this.profiles.get(J)}list(){return[...this.profiles.values()]}names(){return[...this.profiles.keys()]}has(J){return this.profiles.has(J)}size(){return this.profiles.size}async destroy(J){let Z=this.profiles.get(J);if(!Z)return;await Z.shutdown(),this.profiles.delete(J),this.refreshProcessTitle()}async destroyAll(){let J=[...this.profiles.keys()];for(let Z of J)await this.destroy(Z)}}var j=new A,D=null;function xJ(){if(D)return D;let J=c(),Z=j.get(J);if(Z)return D=Z,Z;return D=j.create({name:J,dataDir:l()}),D}function B(){return xJ()}function F2(J){let Z=i(J),$=j.get(Z);if($)return $;return j.create({name:Z,dataDir:UJ(n(),"agents",Z)})}async function j2(){D=null,await j.destroyAll()}var O=new Set(["localhost","127.0.0.1","0.0.0.0","::1","[::1]","host.docker.internal"]),AJ=new Set(["4000","4001","4002","4003"]),TJ=new Set(["gw-global.local.burdenoff.com","gw-global-int.local.burdenoff.com","gw-wspace.local.burdenoff.com","gw-wspace-int.local.burdenoff.com"]),EJ=new Set(["graphql.burdenoff.com","graphqlworkspaces.burdenoff.com","alphagraphql.burdenoff.com","alphagraphqlworkspaces.burdenoff.com"]);function C(J){return J.toLowerCase().replace(/^\[|\]$/g,"")}function o(J){let Z=C(J.hostname);if(!O.has(Z))return!1;if(process.env.VIBECONTROLS_ALLOW_UNTRUSTED_GATEWAYS==="1")return!0;return AJ.has(J.port)}function s(J){try{let Z=new URL(J.trim());if(Z.protocol!=="https:"&&Z.protocol!=="http:")return!1;if(o(Z))return!0;let $=C(Z.hostname);if(TJ.has($))return Z.protocol==="https:";if(Z.protocol!=="https:")return!1;return EJ.has($)}catch{return!1}}function T(J,Z){let $=J.trim();if(!s($))throw Error(`${Z} is not an allowed gateway URL. Use a trusted Burdenoff gateway, approved gw-*.local.burdenoff.com host, or localhost gateway ports 4000-4003.`);return $.replace(/\/+$/,"")}var E=new Set([".vibecontrols.com"]);function b2(J){let Z=J.trim().toLowerCase();if(!Z)return;E.add(Z.startsWith(".")?Z:`.${Z}`)}function SJ(J){try{let Z=new URL(J.trim()),$=C(Z.hostname);if(O.has($))return Z.protocol==="http:"||Z.protocol==="https:";if(Z.protocol!=="https:")return!1;for(let Q of E)if($.endsWith(Q))return!0;return!1}catch{return!1}}function O2(J){if(!J)return null;let Z=J.trim().replace(/\/+$/,"");return SJ(Z)?Z:null}var wJ=new Set([".trycloudflare.com"]);function vJ(J){try{let Z=new URL(J.trim()),$=C(Z.hostname);if(O.has($))return Z.protocol==="http:"||Z.protocol==="https:";if(Z.protocol!=="https:")return!1;for(let Q of E)if($.endsWith(Q))return!0;for(let Q of wJ)if($.endsWith(Q))return!0;return!1}catch{return!1}}function P2(J){if(!J)return null;let Z=J.trim().replace(/\/+$/,"");return vJ(Z)?Z:null}function hJ(J){try{let Z=new URL(J.trim()),$=C(Z.hostname);if(O.has($))return Z.protocol==="http:"||Z.protocol==="https:";return Z.protocol==="https:"}catch{return!1}}function k2(J){if(!J)return null;let Z=J.trim().replace(/\/+$/,"");return hJ(Z)?Z:null}function I2(J,Z){try{let $=new URL(J.trim());if($.protocol!=="https:"&&!o($))return!1;let Q=C($.hostname);for(let X of Z){if(!X)continue;let W=new URL(X);if(Q===C(W.hostname))return!0}return s(J)}catch{return!1}}var yJ=/(?:\/(?:global|workspaces))?\/graphql$/i,fJ=1048576;function w(J){return J.trim().replace(/\/+$/,"").replace(yJ,"")}function a(J,Z){return`${w(J)}/${Z}/graphql`}function t(J){return J instanceof Error?J.message:String(J)}async function mJ(J,Z){let $=J.headers.get("content-length");if($){let z=Number.parseInt($,10);if(Number.isInteger(z)&&z>Z)throw Error(`Gateway response is too large (${z} bytes)`)}if(!J.body)return"";let Q=J.body.getReader(),X=[],W=0;try{while(!0){let{done:z,value:Y}=await Q.read();if(z)break;if(!Y)continue;if(W+=Y.byteLength,W>Z)throw await Q.cancel().catch(()=>{return}),Error(`Gateway response exceeds ${Z} bytes`);X.push(Y)}}finally{Q.releaseLock()}let K=new Uint8Array(W),V=0;for(let z of X)K.set(z,V),V+=z.byteLength;return new TextDecoder().decode(K)}class R{config=null;token=null;authInFlight=null;configGeneration=0;configure(J){let Z=w(T(J.globalGatewayUrl,"globalGatewayUrl")),$=J.workspaceGatewayUrl?w(T(J.workspaceGatewayUrl,"workspaceGatewayUrl")):void 0,Q=J.clientId.trim(),X=J.clientSecret.trim();if(!Z)throw Error("globalGatewayUrl is required");if(!Q)throw Error("clientId is required");if(!X)throw Error("clientSecret is required");this.configGeneration+=1,this.config={...J,globalGatewayUrl:Z,workspaceGatewayUrl:$,clientId:Q,clientSecret:X,scopes:J.scopes?.map((W)=>W.trim()).filter(Boolean),workspaceId:J.workspaceId?.trim()||void 0,organizationId:J.organizationId?.trim()||void 0},this.token=null,this.authInFlight=null,B().logger.info("gateway-client","Gateway client configured",{globalGatewayUrl:this.config.globalGatewayUrl,workspaceGatewayUrl:this.config.workspaceGatewayUrl,clientId:this.config.clientId})}isConfigured(){return this.config!==null}getConfig(){if(!this.config)return null;let{clientSecret:J,...Z}=this.config;return Z}async getAccessToken(){let{token:J,config:Z}=await this.ensureToken();return{token:J,workspaceGatewayUrl:Z.workspaceGatewayUrl??"",globalGatewayUrl:Z.globalGatewayUrl??"",workspaceId:Z.workspaceId??""}}async globalQuery(J,Z){return this.executeQuery("global",J,Z)}async workspaceQuery(J,Z){return this.executeQuery("workspaces",J,Z)}async lookupPeerAgent(J,Z){if(!this.isConfigured())return null;try{let Q=(await this.workspaceQuery(`query AgentNetworkLookup($targetAgentRecordId: ID!, $operation: String!) {
6
+ `);this.emit("log",K),g.enqueue(K)}checkRotation(){let J=new Date().toISOString().split("T")[0];if(this.currentDay&&this.currentDay!==J){this.rotate(),this.currentDay=J;return}this.currentDay=J;try{if(N(this.logFile)){if(HJ(this.logFile).size>=bJ)this.rotate()}}catch{}}rotate(){try{for(let J=m-1;J>=1;J--){let Z=`${this.logFile}.${J}`,$=`${this.logFile}.${J+1}`;if(N(Z)){if(J+1>m&&N($))NJ($);qJ(Z,$)}}if(N(this.logFile))BJ(this.logFile,`${this.logFile}.1`),CJ(this.logFile,0)}catch{}}ensureLogDir(){if(!N(this.logDir))MJ(this.logDir,{recursive:!0})}}var LJ={maxFileDescriptors:4096,maxChildProcesses:256,maxMemoryMB:4096},U=new IJ;function M2(J){U.enterWith(J)}class x{name;dataDir;spawnOwnerKey;keyVault;audit;logger;budget;db=null;serviceRegistry=null;pluginManager=null;lifecycle=null;hostServices=null;tunnel={url:null,child:null,externalUrl:!1};_gatewayClient=null;state="awaiting-config";degradedReasons=[];listeners=new Set;lastFinalizeError=null;constructor(J){this.name=J.name,this.dataDir=J.dataDir,this.spawnOwnerKey=`profile/${J.name}`,this.budget=J.budget??LJ,_J(this.dataDir,{recursive:!0}),this.keyVault=new _(J.name),this.audit=new I(J.name,J.dataDir),this.logger=new L({logDir:u(J.dataDir,"logs")})}run(J){return U.run(this,J)}get gatewayClient(){if(!this._gatewayClient)this._gatewayClient=new R;return this._gatewayClient}attachServices(J){this.db=J.db,this.serviceRegistry=J.serviceRegistry,this.pluginManager=J.pluginManager,this.lifecycle=J.lifecycle,this.hostServices=J.hostServices}getBootState(){return this.state}setBootState(J){if(this.state===J)return;if(this.state=J,J!=="degraded")this.degradedReasons.length=0;for(let Z of this.listeners)try{Z(J)}catch{}}recordDegradedReason(J,Z){if(this.degradedReasons.push({plugin:J,message:Z}),this.state==="ready")this.setBootState("degraded");(async()=>{try{let{telemetryService:$}=await import("./telemetry-8jfdyt51.js");$.emit("health.degraded",{reason_class:RJ(Z)})}catch{}})()}getDegradedReasons(){return this.degradedReasons.slice()}recordFinalizeError(J,Z){this.lastFinalizeError={message:J,at:new Date().toISOString(),attempt:Z}}clearFinalizeError(){this.lastFinalizeError=null}getLastFinalizeError(){return this.lastFinalizeError}onBootStateChange(J){return this.listeners.add(J),()=>this.listeners.delete(J)}async shutdown(){this.setBootState("shutting-down");try{let{unmountProfileRoutes:J}=await import("./profile-mount-8dc9jwt5.js");J(this.name)}catch{}try{if(this.pluginManager)await this.pluginManager.dispatchServerStop({reason:"shutdown"})}catch{}try{if(this.db)await this.db.close()}catch{}this.lifecycle=null,this.pluginManager=null,this.hostServices=null,this.serviceRegistry=null,this.db=null,this._gatewayClient=null,this.tunnel={url:null,child:null,externalUrl:!1},this.keyVault.shutdown(),this.listeners.clear()}subdir(J){return u(this.dataDir,J)}}function d(){return U.getStore()??null}function RJ(J){let Z=J.toLowerCase();if(Z.includes("timeout"))return"timeout";if(Z.includes("econn")||Z.includes("network"))return"network";if(Z.includes("permission")||Z.includes("eacces"))return"permission";if(Z.includes("not found")||Z.includes("enoent"))return"not_found";if(Z.includes("plugin"))return"plugin";return"other"}class A{profiles=new Map;create(J){if(this.profiles.has(J.name))throw Error(`profile already registered: ${J.name}`);let Z=new x(J);return this.profiles.set(J.name,Z),this.refreshProcessTitle(),Z}refreshProcessTitle(){try{let Z=[...this.profiles.keys()].sort().join(","),$=Z.length>96?`${Z.slice(0,93)}...`:Z;process.title=`vibe-daemon[${$}]`}catch{}}get(J){return this.profiles.get(J)}list(){return[...this.profiles.values()]}names(){return[...this.profiles.keys()]}has(J){return this.profiles.has(J)}size(){return this.profiles.size}async destroy(J){let Z=this.profiles.get(J);if(!Z)return;await Z.shutdown(),this.profiles.delete(J),this.refreshProcessTitle()}async destroyAll(){let J=[...this.profiles.keys()];for(let Z of J)await this.destroy(Z)}}var j=new A,D=null;function xJ(){if(D)return D;let J=c(),Z=j.get(J);if(Z)return D=Z,Z;return D=j.create({name:J,dataDir:l()}),D}function B(){return xJ()}function F2(J){let Z=i(J),$=j.get(Z);if($)return $;return j.create({name:Z,dataDir:UJ(n(),"agents",Z)})}async function j2(){D=null,await j.destroyAll()}var O=new Set(["localhost","127.0.0.1","0.0.0.0","::1","[::1]","host.docker.internal"]),AJ=new Set(["4000","4001","4002","4003"]),TJ=new Set(["gw-global.local.burdenoff.com","gw-global-int.local.burdenoff.com","gw-wspace.local.burdenoff.com","gw-wspace-int.local.burdenoff.com"]),EJ=new Set(["graphql.burdenoff.com","graphqlworkspaces.burdenoff.com","alphagraphql.burdenoff.com","alphagraphqlworkspaces.burdenoff.com"]);function C(J){return J.toLowerCase().replace(/^\[|\]$/g,"")}function o(J){let Z=C(J.hostname);if(!O.has(Z))return!1;if(process.env.VIBECONTROLS_ALLOW_UNTRUSTED_GATEWAYS==="1")return!0;return AJ.has(J.port)}function s(J){try{let Z=new URL(J.trim());if(Z.protocol!=="https:"&&Z.protocol!=="http:")return!1;if(o(Z))return!0;let $=C(Z.hostname);if(TJ.has($))return Z.protocol==="https:";if(Z.protocol!=="https:")return!1;return EJ.has($)}catch{return!1}}function T(J,Z){let $=J.trim();if(!s($))throw Error(`${Z} is not an allowed gateway URL. Use a trusted Burdenoff gateway, approved gw-*.local.burdenoff.com host, or localhost gateway ports 4000-4003.`);return $.replace(/\/+$/,"")}var E=new Set([".vibecontrols.com"]);function b2(J){let Z=J.trim().toLowerCase();if(!Z)return;E.add(Z.startsWith(".")?Z:`.${Z}`)}function SJ(J){try{let Z=new URL(J.trim()),$=C(Z.hostname);if(O.has($))return Z.protocol==="http:"||Z.protocol==="https:";if(Z.protocol!=="https:")return!1;for(let Q of E)if($.endsWith(Q))return!0;return!1}catch{return!1}}function O2(J){if(!J)return null;let Z=J.trim().replace(/\/+$/,"");return SJ(Z)?Z:null}var wJ=new Set([".trycloudflare.com"]);function vJ(J){try{let Z=new URL(J.trim()),$=C(Z.hostname);if(O.has($))return Z.protocol==="http:"||Z.protocol==="https:";if(Z.protocol!=="https:")return!1;for(let Q of E)if($.endsWith(Q))return!0;for(let Q of wJ)if($.endsWith(Q))return!0;return!1}catch{return!1}}function P2(J){if(!J)return null;let Z=J.trim().replace(/\/+$/,"");return vJ(Z)?Z:null}function hJ(J){try{let Z=new URL(J.trim()),$=C(Z.hostname);if(O.has($))return Z.protocol==="http:"||Z.protocol==="https:";return Z.protocol==="https:"}catch{return!1}}function k2(J){if(!J)return null;let Z=J.trim().replace(/\/+$/,"");return hJ(Z)?Z:null}function I2(J,Z){try{let $=new URL(J.trim());if($.protocol!=="https:"&&!o($))return!1;let Q=C($.hostname);for(let X of Z){if(!X)continue;let W=new URL(X);if(Q===C(W.hostname))return!0}return s(J)}catch{return!1}}var yJ=/(?:\/(?:global|workspaces))?\/graphql$/i,fJ=1048576;function w(J){return J.trim().replace(/\/+$/,"").replace(yJ,"")}function a(J,Z){return`${w(J)}/${Z}/graphql`}function t(J){return J instanceof Error?J.message:String(J)}async function mJ(J,Z){let $=J.headers.get("content-length");if($){let z=Number.parseInt($,10);if(Number.isInteger(z)&&z>Z)throw Error(`Gateway response is too large (${z} bytes)`)}if(!J.body)return"";let Q=J.body.getReader(),X=[],W=0;try{while(!0){let{done:z,value:Y}=await Q.read();if(z)break;if(!Y)continue;if(W+=Y.byteLength,W>Z)throw await Q.cancel().catch(()=>{return}),Error(`Gateway response exceeds ${Z} bytes`);X.push(Y)}}finally{Q.releaseLock()}let K=new Uint8Array(W),V=0;for(let z of X)K.set(z,V),V+=z.byteLength;return new TextDecoder().decode(K)}class R{config=null;token=null;authInFlight=null;configGeneration=0;configure(J){let Z=w(T(J.globalGatewayUrl,"globalGatewayUrl")),$=J.workspaceGatewayUrl?w(T(J.workspaceGatewayUrl,"workspaceGatewayUrl")):void 0,Q=J.clientId.trim(),X=J.clientSecret.trim();if(!Z)throw Error("globalGatewayUrl is required");if(!Q)throw Error("clientId is required");if(!X)throw Error("clientSecret is required");this.configGeneration+=1,this.config={...J,globalGatewayUrl:Z,workspaceGatewayUrl:$,clientId:Q,clientSecret:X,scopes:J.scopes?.map((W)=>W.trim()).filter(Boolean),workspaceId:J.workspaceId?.trim()||void 0,organizationId:J.organizationId?.trim()||void 0},this.token=null,this.authInFlight=null,B().logger.info("gateway-client","Gateway client configured",{globalGatewayUrl:this.config.globalGatewayUrl,workspaceGatewayUrl:this.config.workspaceGatewayUrl,clientId:this.config.clientId})}isConfigured(){return this.config!==null}getConfig(){if(!this.config)return null;let{clientSecret:J,...Z}=this.config;return Z}async getAccessToken(){let{token:J,config:Z}=await this.ensureToken();return{token:J,workspaceGatewayUrl:Z.workspaceGatewayUrl??"",globalGatewayUrl:Z.globalGatewayUrl??"",workspaceId:Z.workspaceId??""}}async globalQuery(J,Z){return this.executeQuery("global",J,Z)}async workspaceQuery(J,Z){return this.executeQuery("workspaces",J,Z)}async lookupPeerAgent(J,Z){if(!this.isConfigured())return null;try{let Q=(await this.workspaceQuery(`query AgentNetworkLookup($targetAgentRecordId: ID!, $operation: String!) {
7
7
  vibecontrolsAgentNetworkLookup(targetAgentRecordId: $targetAgentRecordId, operation: $operation) {
8
8
  tunnelUrl
9
9
  peerApiKey
@@ -18,4 +18,4 @@ import{Xd as c,Yd as i,_d as l,be as n}from"./index-0cn9bv8z.js";import{de as g}
18
18
  }
19
19
  }
20
20
  `,variables:{input:{clientId:J.clientId,clientSecret:J.clientSecret,scopes:J.scopes??[]}}});if(Q.errors?.length||!Q.data?.authenticateApp){let K=Q.errors?.[0]?.message??"Authentication failed";throw B().logger.error("gateway-client",`Authentication failed: ${K}`),Error(`Gateway authentication failed: ${K}`)}let X=Q.data.authenticateApp,W={accessToken:X.accessToken,expiresAt:Date.now()+X.expiresIn*1000,scopes:X.scopes};if(Z!==this.configGeneration||J!==this.config)throw Error("Gateway configuration changed during authentication");return this.token=W,B().logger.info("gateway-client","Authenticated successfully",{expiresIn:X.expiresIn,scopes:X.scopes}),W.accessToken}async postGraphQL(J,Z,$){let Q;try{Q=await fetch(J,{method:"POST",headers:Z,body:JSON.stringify($),signal:AbortSignal.timeout(15000)})}catch(X){throw Error(`Could not reach gateway at ${J}: ${t(X)}`,{cause:X})}try{let X=await mJ(Q,fJ),W={};if(X)try{W=JSON.parse(X)}catch{let K=X.slice(0,240).replace(/\s+/g," ");throw Error(`Gateway returned a non-JSON response (${Q.status} ${Q.statusText}) from ${J}${K?`: ${K}`:""}`)}if(!Q.ok){let K=W.errors?.[0]?.message??`${Q.status} ${Q.statusText}`;throw Error(`Gateway request failed at ${J}: ${K} (${Q.status})`)}return W}catch(X){if(X instanceof Error)throw X;throw Error(`Failed to process gateway response from ${J}: ${t(X)}`,{cause:X})}}}function S(){let J=d();if(J)return J.gatewayClient;return B().gatewayClient}var gJ=new Proxy({},{get(J,Z,$){let Q=S(),X=Q[Z];return typeof X==="function"?X.bind(Q):X},set(J,Z,$){let Q=S();return Q[Z]=$,!0},has(J,Z){return Z in S()}}),T2=gJ;
21
- export{lJ as vd,nJ as wd,oJ as xd,G as yd,T as zd,b2 as Ad,O2 as Bd,P2 as Cd,k2 as Dd,I2 as Ed,w as Fd,R as Gd,gJ as Hd,T2 as Id,M2 as Jd,d as Kd,j as Ld,xJ as Md,B as Nd,F2 as Od,j2 as Pd};
21
+ export{lJ as wd,nJ as xd,oJ as yd,G as zd,T as Ad,b2 as Bd,O2 as Cd,P2 as Dd,k2 as Ed,I2 as Fd,w as Gd,R as Hd,gJ as Id,T2 as Jd,M2 as Kd,d as Ld,j as Md,xJ as Nd,B as Od,F2 as Pd,j2 as Qd};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{fe as $}from"./index-yy1mm8zs.js";var v=$((Eq)=>{Object.defineProperty(Eq,"__esModule",{value:!0});Eq.VERSION=void 0;Eq.VERSION="1.9.1"});var Sq=$((Pq)=>{Object.defineProperty(Pq,"__esModule",{value:!0});Pq.isCompatible=Pq._makeCompatibilityCheck=void 0;var jZ=v(),Tq=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function yq(q){let z=new Set([q]),J=new Set,Z=q.match(Tq);if(!Z)return()=>!1;let Q={major:+Z[1],minor:+Z[2],patch:+Z[3],prerelease:Z[4]};if(Q.prerelease!=null)return function(Y){return Y===q};function X(G){return J.add(G),!1}function H(G){return z.add(G),!0}return function(Y){if(z.has(Y))return!0;if(J.has(Y))return!1;let w=Y.match(Tq);if(!w)return X(Y);let F={major:+w[1],minor:+w[2],patch:+w[3],prerelease:w[4]};if(F.prerelease!=null)return X(Y);if(Q.major!==F.major)return X(Y);if(Q.major===0){if(Q.minor===F.minor&&Q.patch<=F.patch)return H(Y);return X(Y)}if(Q.minor<=F.minor)return H(Y);return X(Y)}}Pq._makeCompatibilityCheck=yq;Pq.isCompatible=yq(jZ.VERSION)});var O=$((vq)=>{Object.defineProperty(vq,"__esModule",{value:!0});vq.unregisterGlobal=vq.getGlobal=vq.registerGlobal=void 0;var K=v(),DZ=Sq(),IZ=K.VERSION.split(".")[0],k=Symbol.for(`opentelemetry.js.api.${IZ}`),D=typeof globalThis==="object"?globalThis:typeof self==="object"?self:typeof window==="object"?window:typeof global==="object"?global:{};function VZ(q,z,J,Z=!1){var Q;let X=D[k]=(Q=D[k])!==null&&Q!==void 0?Q:{version:K.VERSION};if(!Z&&X[q]){let H=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${q}`);return J.error(H.stack||H.message),!1}if(X.version!==K.VERSION){let H=Error(`@opentelemetry/api: Registration of version v${X.version} for ${q} does not match previously registered API v${K.VERSION}`);return J.error(H.stack||H.message),!1}return X[q]=z,J.debug(`@opentelemetry/api: Registered a global for ${q} v${K.VERSION}.`),!0}vq.registerGlobal=VZ;function NZ(q){var z,J;let Z=(z=D[k])===null||z===void 0?void 0:z.version;if(!Z||!(0,DZ.isCompatible)(Z))return;return(J=D[k])===null||J===void 0?void 0:J[q]}vq.getGlobal=NZ;function bZ(q,z){z.debug(`@opentelemetry/api: Unregistering a global for ${q} v${K.VERSION}.`);let J=D[k];if(J)delete J[q]}vq.unregisterGlobal=bZ});var _q=$((dq)=>{Object.defineProperty(dq,"__esModule",{value:!0});dq.DiagComponentLogger=void 0;var EZ=O();class uq{constructor(q){this._namespace=q.namespace||"DiagComponentLogger"}debug(...q){return I("debug",this._namespace,q)}error(...q){return I("error",this._namespace,q)}info(...q){return I("info",this._namespace,q)}warn(...q){return I("warn",this._namespace,q)}verbose(...q){return I("verbose",this._namespace,q)}}dq.DiagComponentLogger=uq;function I(q,z,J){let Z=(0,EZ.getGlobal)("diag");if(!Z)return;return Z[q](z,...J)}});var C=$((xq)=>{Object.defineProperty(xq,"__esModule",{value:!0});xq.DiagLogLevel=void 0;var AZ;(function(q){q[q.NONE=0]="NONE",q[q.ERROR=30]="ERROR",q[q.WARN=50]="WARN",q[q.INFO=60]="INFO",q[q.DEBUG=70]="DEBUG",q[q.VERBOSE=80]="VERBOSE",q[q.ALL=9999]="ALL"})(AZ=xq.DiagLogLevel||(xq.DiagLogLevel={}))});var gq=$((cq)=>{Object.defineProperty(cq,"__esModule",{value:!0});cq.createLogLevelDiagLogger=void 0;var h=C();function TZ(q,z){if(q<h.DiagLogLevel.NONE)q=h.DiagLogLevel.NONE;else if(q>h.DiagLogLevel.ALL)q=h.DiagLogLevel.ALL;z=z||{};function J(Z,Q){let X=z[Z];if(typeof X==="function"&&q>=Q)return X.bind(z);return function(){}}return{error:J("error",h.DiagLogLevel.ERROR),warn:J("warn",h.DiagLogLevel.WARN),info:J("info",h.DiagLogLevel.INFO),debug:J("debug",h.DiagLogLevel.DEBUG),verbose:J("verbose",h.DiagLogLevel.VERBOSE)}}cq.createLogLevelDiagLogger=TZ});var B=$((pq)=>{Object.defineProperty(pq,"__esModule",{value:!0});pq.DiagAPI=void 0;var yZ=_q(),PZ=gq(),iq=C(),R=O(),MZ="diag";class u{static instance(){if(!this._instance)this._instance=new u;return this._instance}constructor(){function q(Z){return function(...Q){let X=(0,R.getGlobal)("diag");if(!X)return;return X[Z](...Q)}}let z=this,J=(Z,Q={logLevel:iq.DiagLogLevel.INFO})=>{var X,H,G;if(Z===z){let F=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return z.error((X=F.stack)!==null&&X!==void 0?X:F.message),!1}if(typeof Q==="number")Q={logLevel:Q};let Y=(0,R.getGlobal)("diag"),w=(0,PZ.createLogLevelDiagLogger)((H=Q.logLevel)!==null&&H!==void 0?H:iq.DiagLogLevel.INFO,Z);if(Y&&!Q.suppressOverrideMessage){let F=(G=Error().stack)!==null&&G!==void 0?G:"<failed to generate stacktrace>";Y.warn(`Current logger will be overwritten from ${F}`),w.warn(`Current logger will overwrite one already registered from ${F}`)}return(0,R.registerGlobal)("diag",w,z,!0)};z.setLogger=J,z.disable=()=>{(0,R.unregisterGlobal)(MZ,z)},z.createComponentLogger=(Z)=>{return new yZ.DiagComponentLogger(Z)},z.verbose=q("verbose"),z.debug=q("debug"),z.info=q("info"),z.warn=q("warn"),z.error=q("error")}}pq.DiagAPI=u});var oq=$((sq)=>{Object.defineProperty(sq,"__esModule",{value:!0});sq.BaggageImpl=void 0;class f{constructor(q){this._entries=q?new Map(q):new Map}getEntry(q){let z=this._entries.get(q);if(!z)return;return Object.assign({},z)}getAllEntries(){return Array.from(this._entries.entries())}setEntry(q,z){let J=new f(this._entries);return J._entries.set(q,z),J}removeEntry(q){let z=new f(this._entries);return z._entries.delete(q),z}removeEntries(...q){let z=new f(this._entries);for(let J of q)z._entries.delete(J);return z}clear(){return new f}}sq.BaggageImpl=f});var eq=$((tq)=>{Object.defineProperty(tq,"__esModule",{value:!0});tq.baggageEntryMetadataSymbol=void 0;tq.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")});var d=$((qz)=>{Object.defineProperty(qz,"__esModule",{value:!0});qz.baggageEntryMetadataFromString=qz.createBaggage=void 0;var SZ=B(),vZ=oq(),mZ=eq(),uZ=SZ.DiagAPI.instance();function dZ(q={}){return new vZ.BaggageImpl(new Map(Object.entries(q)))}qz.createBaggage=dZ;function LZ(q){if(typeof q!=="string")uZ.error(`Cannot create baggage metadata from unknown type: ${typeof q}`),q="";return{__TYPE__:mZ.baggageEntryMetadataSymbol,toString(){return q}}}qz.baggageEntryMetadataFromString=LZ});var V=$((Jz)=>{Object.defineProperty(Jz,"__esModule",{value:!0});Jz.ROOT_CONTEXT=Jz.createContextKey=void 0;function xZ(q){return Symbol.for(q)}Jz.createContextKey=xZ;class E{constructor(q){let z=this;z._currentContext=q?new Map(q):new Map,z.getValue=(J)=>z._currentContext.get(J),z.setValue=(J,Z)=>{let Q=new E(z._currentContext);return Q._currentContext.set(J,Z),Q},z.deleteValue=(J)=>{let Z=new E(z._currentContext);return Z._currentContext.delete(J),Z}}}Jz.ROOT_CONTEXT=new E});var Xz=$((Qz)=>{Object.defineProperty(Qz,"__esModule",{value:!0});Qz.DiagConsoleLogger=Qz._originalConsoleMethods=void 0;var L=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];Qz._originalConsoleMethods={};if(typeof console<"u"){let q=["error","warn","info","debug","trace","log"];for(let z of q)if(typeof console[z]==="function")Qz._originalConsoleMethods[z]=console[z]}class $z{constructor(){function q(z){return function(...J){let Z=Qz._originalConsoleMethods[z];if(typeof Z!=="function")Z=Qz._originalConsoleMethods.log;if(typeof Z!=="function"&&console){if(Z=console[z],typeof Z!=="function")Z=console.log}if(typeof Z==="function")return Z.apply(console,J)}}for(let z=0;z<L.length;z++)this[L[z].n]=q(L[z].c)}}Qz.DiagConsoleLogger=$z});var s=$((Hz)=>{Object.defineProperty(Hz,"__esModule",{value:!0});Hz.createNoopMeter=Hz.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=Hz.NOOP_OBSERVABLE_GAUGE_METRIC=Hz.NOOP_OBSERVABLE_COUNTER_METRIC=Hz.NOOP_UP_DOWN_COUNTER_METRIC=Hz.NOOP_HISTOGRAM_METRIC=Hz.NOOP_GAUGE_METRIC=Hz.NOOP_COUNTER_METRIC=Hz.NOOP_METER=Hz.NoopObservableUpDownCounterMetric=Hz.NoopObservableGaugeMetric=Hz.NoopObservableCounterMetric=Hz.NoopObservableMetric=Hz.NoopHistogramMetric=Hz.NoopGaugeMetric=Hz.NoopUpDownCounterMetric=Hz.NoopCounterMetric=Hz.NoopMetric=Hz.NoopMeter=void 0;class _{constructor(){}createGauge(q,z){return Hz.NOOP_GAUGE_METRIC}createHistogram(q,z){return Hz.NOOP_HISTOGRAM_METRIC}createCounter(q,z){return Hz.NOOP_COUNTER_METRIC}createUpDownCounter(q,z){return Hz.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(q,z){return Hz.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(q,z){return Hz.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(q,z){return Hz.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(q,z){}removeBatchObservableCallback(q){}}Hz.NoopMeter=_;class U{}Hz.NoopMetric=U;class x extends U{add(q,z){}}Hz.NoopCounterMetric=x;class c extends U{add(q,z){}}Hz.NoopUpDownCounterMetric=c;class l extends U{record(q,z){}}Hz.NoopGaugeMetric=l;class g extends U{record(q,z){}}Hz.NoopHistogramMetric=g;class N{addCallback(q){}removeCallback(q){}}Hz.NoopObservableMetric=N;class i extends N{}Hz.NoopObservableCounterMetric=i;class p extends N{}Hz.NoopObservableGaugeMetric=p;class n extends N{}Hz.NoopObservableUpDownCounterMetric=n;Hz.NOOP_METER=new _;Hz.NOOP_COUNTER_METRIC=new x;Hz.NOOP_GAUGE_METRIC=new l;Hz.NOOP_HISTOGRAM_METRIC=new g;Hz.NOOP_UP_DOWN_COUNTER_METRIC=new c;Hz.NOOP_OBSERVABLE_COUNTER_METRIC=new i;Hz.NOOP_OBSERVABLE_GAUGE_METRIC=new p;Hz.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new n;function lZ(){return Hz.NOOP_METER}Hz.createNoopMeter=lZ});var jz=$((Uz)=>{Object.defineProperty(Uz,"__esModule",{value:!0});Uz.ValueType=void 0;var q0;(function(q){q[q.INT=0]="INT",q[q.DOUBLE=1]="DOUBLE"})(q0=Uz.ValueType||(Uz.ValueType={}))});var o=$((kz)=>{Object.defineProperty(kz,"__esModule",{value:!0});kz.defaultTextMapSetter=kz.defaultTextMapGetter=void 0;kz.defaultTextMapGetter={get(q,z){if(q==null)return;return q[z]},keys(q){if(q==null)return[];return Object.keys(q)}};kz.defaultTextMapSetter={set(q,z,J){if(q==null)return;q[z]=J}}});var bz=$((Vz)=>{Object.defineProperty(Vz,"__esModule",{value:!0});Vz.NoopContextManager=void 0;var J0=V();class Iz{active(){return J0.ROOT_CONTEXT}with(q,z,J,...Z){return z.call(J,...Z)}bind(q,z){return z}enable(){return this}disable(){return this}}Vz.NoopContextManager=Iz});var b=$((Rz)=>{Object.defineProperty(Rz,"__esModule",{value:!0});Rz.ContextAPI=void 0;var Z0=bz(),t=O(),Cz=B(),a="context",$0=new Z0.NoopContextManager;class e{constructor(){}static getInstance(){if(!this._instance)this._instance=new e;return this._instance}setGlobalContextManager(q){return(0,t.registerGlobal)(a,q,Cz.DiagAPI.instance())}active(){return this._getContextManager().active()}with(q,z,J,...Z){return this._getContextManager().with(q,z,J,...Z)}bind(q,z){return this._getContextManager().bind(q,z)}_getContextManager(){return(0,t.getGlobal)(a)||$0}disable(){this._getContextManager().disable(),(0,t.unregisterGlobal)(a,Cz.DiagAPI.instance())}}Rz.ContextAPI=e});var zq=$((Az)=>{Object.defineProperty(Az,"__esModule",{value:!0});Az.TraceFlags=void 0;var Q0;(function(q){q[q.NONE=0]="NONE",q[q.SAMPLED=1]="SAMPLED"})(Q0=Az.TraceFlags||(Az.TraceFlags={}))});var T=$((Tz)=>{Object.defineProperty(Tz,"__esModule",{value:!0});Tz.INVALID_SPAN_CONTEXT=Tz.INVALID_TRACEID=Tz.INVALID_SPANID=void 0;var W0=zq();Tz.INVALID_SPANID="0000000000000000";Tz.INVALID_TRACEID="00000000000000000000000000000000";Tz.INVALID_SPAN_CONTEXT={traceId:Tz.INVALID_TRACEID,spanId:Tz.INVALID_SPANID,traceFlags:W0.TraceFlags.NONE}});var y=$((vz)=>{Object.defineProperty(vz,"__esModule",{value:!0});vz.NonRecordingSpan=void 0;var X0=T();class Sz{constructor(q=X0.INVALID_SPAN_CONTEXT){this._spanContext=q}spanContext(){return this._spanContext}setAttribute(q,z){return this}setAttributes(q){return this}addEvent(q,z){return this}addLink(q){return this}addLinks(q){return this}setStatus(q){return this}updateName(q){return this}end(q){}isRecording(){return!1}recordException(q,z){}}vz.NonRecordingSpan=Sz});var $q=$((dz)=>{Object.defineProperty(dz,"__esModule",{value:!0});dz.getSpanContext=dz.setSpanContext=dz.deleteSpan=dz.setSpan=dz.getActiveSpan=dz.getSpan=void 0;var H0=V(),Y0=y(),G0=b(),Jq=(0,H0.createContextKey)("OpenTelemetry Context Key SPAN");function Zq(q){return q.getValue(Jq)||void 0}dz.getSpan=Zq;function F0(){return Zq(G0.ContextAPI.getInstance().active())}dz.getActiveSpan=F0;function uz(q,z){return q.setValue(Jq,z)}dz.setSpan=uz;function w0(q){return q.deleteValue(Jq)}dz.deleteSpan=w0;function h0(q,z){return uz(q,new Y0.NonRecordingSpan(z))}dz.setSpanContext=h0;function O0(q){var z;return(z=Zq(q))===null||z===void 0?void 0:z.spanContext()}dz.getSpanContext=O0});var M=$((gz)=>{Object.defineProperty(gz,"__esModule",{value:!0});gz.wrapSpanContext=gz.isSpanContextValid=gz.isValidSpanId=gz.isValidTraceId=void 0;var _z=T(),k0=y(),P=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function xz(q,z){if(typeof q!=="string"||q.length!==z)return!1;let J=0;for(let Z=0;Z<q.length;Z+=4)J+=(P[q.charCodeAt(Z)]|0)+(P[q.charCodeAt(Z+1)]|0)+(P[q.charCodeAt(Z+2)]|0)+(P[q.charCodeAt(Z+3)]|0);return J===z}function cz(q){return xz(q,32)&&q!==_z.INVALID_TRACEID}gz.isValidTraceId=cz;function lz(q){return xz(q,16)&&q!==_z.INVALID_SPANID}gz.isValidSpanId=lz;function D0(q){return cz(q.traceId)&&lz(q.spanId)}gz.isSpanContextValid=D0;function I0(q){return new k0.NonRecordingSpan(q)}gz.wrapSpanContext=I0});var Xq=$((sz)=>{Object.defineProperty(sz,"__esModule",{value:!0});sz.NoopTracer=void 0;var C0=b(),pz=$q(),Qq=y(),R0=M(),Wq=C0.ContextAPI.getInstance();class nz{startSpan(q,z,J=Wq.active()){if(Boolean(z===null||z===void 0?void 0:z.root))return new Qq.NonRecordingSpan;let Q=J&&(0,pz.getSpanContext)(J);if(E0(Q)&&(0,R0.isSpanContextValid)(Q))return new Qq.NonRecordingSpan(Q);else return new Qq.NonRecordingSpan}startActiveSpan(q,z,J,Z){let Q,X,H;if(arguments.length<2)return;else if(arguments.length===2)H=z;else if(arguments.length===3)Q=z,H=J;else Q=z,X=J,H=Z;let G=X!==null&&X!==void 0?X:Wq.active(),Y=this.startSpan(q,Q,G),w=(0,pz.setSpan)(G,Y);return Wq.with(w,H,void 0,Y)}}sz.NoopTracer=nz;function E0(q){return q!==null&&typeof q==="object"&&"spanId"in q&&typeof q.spanId==="string"&&"traceId"in q&&typeof q.traceId==="string"&&"traceFlags"in q&&typeof q.traceFlags==="number"}});var Hq=$((tz)=>{Object.defineProperty(tz,"__esModule",{value:!0});tz.ProxyTracer=void 0;var A0=Xq(),T0=new A0.NoopTracer;class oz{constructor(q,z,J,Z){this._provider=q,this.name=z,this.version=J,this.options=Z}startSpan(q,z,J){return this._getTracer().startSpan(q,z,J)}startActiveSpan(q,z,J,Z){let Q=this._getTracer();return Reflect.apply(Q.startActiveSpan,Q,arguments)}_getTracer(){if(this._delegate)return this._delegate;let q=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!q)return T0;return this._delegate=q,this._delegate}}tz.ProxyTracer=oz});var JJ=$((qJ)=>{Object.defineProperty(qJ,"__esModule",{value:!0});qJ.NoopTracerProvider=void 0;var y0=Xq();class ez{getTracer(q,z,J){return new y0.NoopTracer}}qJ.NoopTracerProvider=ez});var Yq=$(($J)=>{Object.defineProperty($J,"__esModule",{value:!0});$J.ProxyTracerProvider=void 0;var P0=Hq(),M0=JJ(),S0=new M0.NoopTracerProvider;class ZJ{getTracer(q,z,J){var Z;return(Z=this.getDelegateTracer(q,z,J))!==null&&Z!==void 0?Z:new P0.ProxyTracer(this,q,z,J)}getDelegate(){var q;return(q=this._delegate)!==null&&q!==void 0?q:S0}setDelegate(q){this._delegate=q}getDelegateTracer(q,z,J){var Z;return(Z=this._delegate)===null||Z===void 0?void 0:Z.getTracer(q,z,J)}}$J.ProxyTracerProvider=ZJ});var XJ=$((WJ)=>{Object.defineProperty(WJ,"__esModule",{value:!0});WJ.SamplingDecision=void 0;var v0;(function(q){q[q.NOT_RECORD=0]="NOT_RECORD",q[q.RECORD=1]="RECORD",q[q.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(v0=WJ.SamplingDecision||(WJ.SamplingDecision={}))});var YJ=$((HJ)=>{Object.defineProperty(HJ,"__esModule",{value:!0});HJ.SpanKind=void 0;var m0;(function(q){q[q.INTERNAL=0]="INTERNAL",q[q.SERVER=1]="SERVER",q[q.CLIENT=2]="CLIENT",q[q.PRODUCER=3]="PRODUCER",q[q.CONSUMER=4]="CONSUMER"})(m0=HJ.SpanKind||(HJ.SpanKind={}))});var FJ=$((GJ)=>{Object.defineProperty(GJ,"__esModule",{value:!0});GJ.SpanStatusCode=void 0;var u0;(function(q){q[q.UNSET=0]="UNSET",q[q.OK=1]="OK",q[q.ERROR=2]="ERROR"})(u0=GJ.SpanStatusCode||(GJ.SpanStatusCode={}))});var OJ=$((wJ)=>{Object.defineProperty(wJ,"__esModule",{value:!0});wJ.validateValue=wJ.validateKey=void 0;var hq="[_0-9a-z-*/]",d0=`[a-z]${hq}{0,255}`,L0=`[a-z0-9]${hq}{0,240}@[a-z]${hq}{0,13}`,_0=new RegExp(`^(?:${d0}|${L0})$`),x0=/^[ -~]{0,255}[!-~]$/,c0=/,|=/;function l0(q){return _0.test(q)}wJ.validateKey=l0;function g0(q){return x0.test(q)&&!c0.test(q)}wJ.validateValue=g0});var DJ=$((jJ)=>{Object.defineProperty(jJ,"__esModule",{value:!0});jJ.TraceStateImpl=void 0;var BJ=OJ(),KJ=32,p0=512,fJ=",",UJ="=";class Oq{constructor(q){if(this._internalState=new Map,q)this._parse(q)}set(q,z){let J=this._clone();if(J._internalState.has(q))J._internalState.delete(q);return J._internalState.set(q,z),J}unset(q){let z=this._clone();return z._internalState.delete(q),z}get(q){return this._internalState.get(q)}serialize(){return Array.from(this._internalState.keys()).reduceRight((q,z)=>{return q.push(z+UJ+this.get(z)),q},[]).join(fJ)}_parse(q){if(q.length>p0)return;if(this._internalState=q.split(fJ).reduceRight((z,J)=>{let Z=J.trim(),Q=Z.indexOf(UJ);if(Q!==-1){let X=Z.slice(0,Q),H=Z.slice(Q+1,J.length);if((0,BJ.validateKey)(X)&&(0,BJ.validateValue)(H))z.set(X,H)}return z},new Map),this._internalState.size>KJ)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,KJ))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let q=new Oq;return q._internalState=new Map(this._internalState),q}}jJ.TraceStateImpl=Oq});var NJ=$((IJ)=>{Object.defineProperty(IJ,"__esModule",{value:!0});IJ.createTraceState=void 0;var n0=DJ();function s0(q){return new n0.TraceStateImpl(q)}IJ.createTraceState=s0});var RJ=$((bJ)=>{Object.defineProperty(bJ,"__esModule",{value:!0});bJ.context=void 0;var r0=b();bJ.context=r0.ContextAPI.getInstance()});var TJ=$((EJ)=>{Object.defineProperty(EJ,"__esModule",{value:!0});EJ.diag=void 0;var o0=B();EJ.diag=o0.DiagAPI.instance()});var MJ=$((yJ)=>{Object.defineProperty(yJ,"__esModule",{value:!0});yJ.NOOP_METER_PROVIDER=yJ.NoopMeterProvider=void 0;var t0=s();class Bq{getMeter(q,z,J){return t0.NOOP_METER}}yJ.NoopMeterProvider=Bq;yJ.NOOP_METER_PROVIDER=new Bq});var uJ=$((vJ)=>{Object.defineProperty(vJ,"__esModule",{value:!0});vJ.MetricsAPI=void 0;var e0=MJ(),Kq=O(),SJ=B(),fq="metrics";class Uq{constructor(){}static getInstance(){if(!this._instance)this._instance=new Uq;return this._instance}setGlobalMeterProvider(q){return(0,Kq.registerGlobal)(fq,q,SJ.DiagAPI.instance())}getMeterProvider(){return(0,Kq.getGlobal)(fq)||e0.NOOP_METER_PROVIDER}getMeter(q,z,J){return this.getMeterProvider().getMeter(q,z,J)}disable(){(0,Kq.unregisterGlobal)(fq,SJ.DiagAPI.instance())}}vJ.MetricsAPI=Uq});var _J=$((dJ)=>{Object.defineProperty(dJ,"__esModule",{value:!0});dJ.metrics=void 0;var q1=uJ();dJ.metrics=q1.MetricsAPI.getInstance()});var gJ=$((cJ)=>{Object.defineProperty(cJ,"__esModule",{value:!0});cJ.NoopTextMapPropagator=void 0;class xJ{inject(q,z){}extract(q,z){return q}fields(){return[]}}cJ.NoopTextMapPropagator=xJ});var sJ=$((pJ)=>{Object.defineProperty(pJ,"__esModule",{value:!0});pJ.deleteBaggage=pJ.setBaggage=pJ.getActiveBaggage=pJ.getBaggage=void 0;var z1=b(),J1=V(),jq=(0,J1.createContextKey)("OpenTelemetry Baggage Key");function iJ(q){return q.getValue(jq)||void 0}pJ.getBaggage=iJ;function Z1(){return iJ(z1.ContextAPI.getInstance().active())}pJ.getActiveBaggage=Z1;function $1(q,z){return q.setValue(jq,z)}pJ.setBaggage=$1;function Q1(q){return q.deleteValue(jq)}pJ.deleteBaggage=Q1});var eJ=$((tJ)=>{Object.defineProperty(tJ,"__esModule",{value:!0});tJ.PropagationAPI=void 0;var kq=O(),Y1=gJ(),rJ=o(),S=sJ(),G1=d(),oJ=B(),Dq="propagation",F1=new Y1.NoopTextMapPropagator;class Iq{constructor(){this.createBaggage=G1.createBaggage,this.getBaggage=S.getBaggage,this.getActiveBaggage=S.getActiveBaggage,this.setBaggage=S.setBaggage,this.deleteBaggage=S.deleteBaggage}static getInstance(){if(!this._instance)this._instance=new Iq;return this._instance}setGlobalPropagator(q){return(0,kq.registerGlobal)(Dq,q,oJ.DiagAPI.instance())}inject(q,z,J=rJ.defaultTextMapSetter){return this._getGlobalPropagator().inject(q,z,J)}extract(q,z,J=rJ.defaultTextMapGetter){return this._getGlobalPropagator().extract(q,z,J)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,kq.unregisterGlobal)(Dq,oJ.DiagAPI.instance())}_getGlobalPropagator(){return(0,kq.getGlobal)(Dq)||F1}}tJ.PropagationAPI=Iq});var JZ=$((qZ)=>{Object.defineProperty(qZ,"__esModule",{value:!0});qZ.propagation=void 0;var w1=eJ();qZ.propagation=w1.PropagationAPI.getInstance()});var HZ=$((WZ)=>{Object.defineProperty(WZ,"__esModule",{value:!0});WZ.TraceAPI=void 0;var Vq=O(),ZZ=Yq(),$Z=M(),j=$q(),QZ=B(),Nq="trace";class bq{constructor(){this._proxyTracerProvider=new ZZ.ProxyTracerProvider,this.wrapSpanContext=$Z.wrapSpanContext,this.isSpanContextValid=$Z.isSpanContextValid,this.deleteSpan=j.deleteSpan,this.getSpan=j.getSpan,this.getActiveSpan=j.getActiveSpan,this.getSpanContext=j.getSpanContext,this.setSpan=j.setSpan,this.setSpanContext=j.setSpanContext}static getInstance(){if(!this._instance)this._instance=new bq;return this._instance}setGlobalTracerProvider(q){let z=(0,Vq.registerGlobal)(Nq,this._proxyTracerProvider,QZ.DiagAPI.instance());if(z)this._proxyTracerProvider.setDelegate(q);return z}getTracerProvider(){return(0,Vq.getGlobal)(Nq)||this._proxyTracerProvider}getTracer(q,z){return this.getTracerProvider().getTracer(q,z)}disable(){(0,Vq.unregisterGlobal)(Nq,QZ.DiagAPI.instance()),this._proxyTracerProvider=new ZZ.ProxyTracerProvider}}WZ.TraceAPI=bq});var FZ=$((YZ)=>{Object.defineProperty(YZ,"__esModule",{value:!0});YZ.trace=void 0;var h1=HZ();YZ.trace=h1.TraceAPI.getInstance()});var E1=$((W)=>{Object.defineProperty(W,"__esModule",{value:!0});W.trace=W.propagation=W.metrics=W.diag=W.context=W.INVALID_SPAN_CONTEXT=W.INVALID_TRACEID=W.INVALID_SPANID=W.isValidSpanId=W.isValidTraceId=W.isSpanContextValid=W.createTraceState=W.TraceFlags=W.SpanStatusCode=W.SpanKind=W.SamplingDecision=W.ProxyTracerProvider=W.ProxyTracer=W.defaultTextMapSetter=W.defaultTextMapGetter=W.ValueType=W.createNoopMeter=W.DiagLogLevel=W.DiagConsoleLogger=W.ROOT_CONTEXT=W.createContextKey=W.baggageEntryMetadataFromString=void 0;var O1=d();Object.defineProperty(W,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return O1.baggageEntryMetadataFromString}});var wZ=V();Object.defineProperty(W,"createContextKey",{enumerable:!0,get:function(){return wZ.createContextKey}});Object.defineProperty(W,"ROOT_CONTEXT",{enumerable:!0,get:function(){return wZ.ROOT_CONTEXT}});var B1=Xz();Object.defineProperty(W,"DiagConsoleLogger",{enumerable:!0,get:function(){return B1.DiagConsoleLogger}});var K1=C();Object.defineProperty(W,"DiagLogLevel",{enumerable:!0,get:function(){return K1.DiagLogLevel}});var f1=s();Object.defineProperty(W,"createNoopMeter",{enumerable:!0,get:function(){return f1.createNoopMeter}});var U1=jz();Object.defineProperty(W,"ValueType",{enumerable:!0,get:function(){return U1.ValueType}});var hZ=o();Object.defineProperty(W,"defaultTextMapGetter",{enumerable:!0,get:function(){return hZ.defaultTextMapGetter}});Object.defineProperty(W,"defaultTextMapSetter",{enumerable:!0,get:function(){return hZ.defaultTextMapSetter}});var j1=Hq();Object.defineProperty(W,"ProxyTracer",{enumerable:!0,get:function(){return j1.ProxyTracer}});var k1=Yq();Object.defineProperty(W,"ProxyTracerProvider",{enumerable:!0,get:function(){return k1.ProxyTracerProvider}});var D1=XJ();Object.defineProperty(W,"SamplingDecision",{enumerable:!0,get:function(){return D1.SamplingDecision}});var I1=YJ();Object.defineProperty(W,"SpanKind",{enumerable:!0,get:function(){return I1.SpanKind}});var V1=FJ();Object.defineProperty(W,"SpanStatusCode",{enumerable:!0,get:function(){return V1.SpanStatusCode}});var N1=zq();Object.defineProperty(W,"TraceFlags",{enumerable:!0,get:function(){return N1.TraceFlags}});var b1=NJ();Object.defineProperty(W,"createTraceState",{enumerable:!0,get:function(){return b1.createTraceState}});var Cq=M();Object.defineProperty(W,"isSpanContextValid",{enumerable:!0,get:function(){return Cq.isSpanContextValid}});Object.defineProperty(W,"isValidTraceId",{enumerable:!0,get:function(){return Cq.isValidTraceId}});Object.defineProperty(W,"isValidSpanId",{enumerable:!0,get:function(){return Cq.isValidSpanId}});var Rq=T();Object.defineProperty(W,"INVALID_SPANID",{enumerable:!0,get:function(){return Rq.INVALID_SPANID}});Object.defineProperty(W,"INVALID_TRACEID",{enumerable:!0,get:function(){return Rq.INVALID_TRACEID}});Object.defineProperty(W,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return Rq.INVALID_SPAN_CONTEXT}});var OZ=RJ();Object.defineProperty(W,"context",{enumerable:!0,get:function(){return OZ.context}});var BZ=TJ();Object.defineProperty(W,"diag",{enumerable:!0,get:function(){return BZ.diag}});var KZ=_J();Object.defineProperty(W,"metrics",{enumerable:!0,get:function(){return KZ.metrics}});var fZ=JZ();Object.defineProperty(W,"propagation",{enumerable:!0,get:function(){return fZ.propagation}});var UZ=FZ();Object.defineProperty(W,"trace",{enumerable:!0,get:function(){return UZ.trace}});W.default={context:OZ.context,diag:BZ.diag,metrics:KZ.metrics,propagation:fZ.propagation,trace:UZ.trace}});
2
+ import{ge as $}from"./index-c7554sg7.js";var v=$((Eq)=>{Object.defineProperty(Eq,"__esModule",{value:!0});Eq.VERSION=void 0;Eq.VERSION="1.9.1"});var Sq=$((Pq)=>{Object.defineProperty(Pq,"__esModule",{value:!0});Pq.isCompatible=Pq._makeCompatibilityCheck=void 0;var jZ=v(),Tq=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function yq(q){let z=new Set([q]),J=new Set,Z=q.match(Tq);if(!Z)return()=>!1;let Q={major:+Z[1],minor:+Z[2],patch:+Z[3],prerelease:Z[4]};if(Q.prerelease!=null)return function(Y){return Y===q};function X(G){return J.add(G),!1}function H(G){return z.add(G),!0}return function(Y){if(z.has(Y))return!0;if(J.has(Y))return!1;let w=Y.match(Tq);if(!w)return X(Y);let F={major:+w[1],minor:+w[2],patch:+w[3],prerelease:w[4]};if(F.prerelease!=null)return X(Y);if(Q.major!==F.major)return X(Y);if(Q.major===0){if(Q.minor===F.minor&&Q.patch<=F.patch)return H(Y);return X(Y)}if(Q.minor<=F.minor)return H(Y);return X(Y)}}Pq._makeCompatibilityCheck=yq;Pq.isCompatible=yq(jZ.VERSION)});var O=$((vq)=>{Object.defineProperty(vq,"__esModule",{value:!0});vq.unregisterGlobal=vq.getGlobal=vq.registerGlobal=void 0;var K=v(),DZ=Sq(),IZ=K.VERSION.split(".")[0],k=Symbol.for(`opentelemetry.js.api.${IZ}`),D=typeof globalThis==="object"?globalThis:typeof self==="object"?self:typeof window==="object"?window:typeof global==="object"?global:{};function VZ(q,z,J,Z=!1){var Q;let X=D[k]=(Q=D[k])!==null&&Q!==void 0?Q:{version:K.VERSION};if(!Z&&X[q]){let H=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${q}`);return J.error(H.stack||H.message),!1}if(X.version!==K.VERSION){let H=Error(`@opentelemetry/api: Registration of version v${X.version} for ${q} does not match previously registered API v${K.VERSION}`);return J.error(H.stack||H.message),!1}return X[q]=z,J.debug(`@opentelemetry/api: Registered a global for ${q} v${K.VERSION}.`),!0}vq.registerGlobal=VZ;function NZ(q){var z,J;let Z=(z=D[k])===null||z===void 0?void 0:z.version;if(!Z||!(0,DZ.isCompatible)(Z))return;return(J=D[k])===null||J===void 0?void 0:J[q]}vq.getGlobal=NZ;function bZ(q,z){z.debug(`@opentelemetry/api: Unregistering a global for ${q} v${K.VERSION}.`);let J=D[k];if(J)delete J[q]}vq.unregisterGlobal=bZ});var _q=$((dq)=>{Object.defineProperty(dq,"__esModule",{value:!0});dq.DiagComponentLogger=void 0;var EZ=O();class uq{constructor(q){this._namespace=q.namespace||"DiagComponentLogger"}debug(...q){return I("debug",this._namespace,q)}error(...q){return I("error",this._namespace,q)}info(...q){return I("info",this._namespace,q)}warn(...q){return I("warn",this._namespace,q)}verbose(...q){return I("verbose",this._namespace,q)}}dq.DiagComponentLogger=uq;function I(q,z,J){let Z=(0,EZ.getGlobal)("diag");if(!Z)return;return Z[q](z,...J)}});var C=$((xq)=>{Object.defineProperty(xq,"__esModule",{value:!0});xq.DiagLogLevel=void 0;var AZ;(function(q){q[q.NONE=0]="NONE",q[q.ERROR=30]="ERROR",q[q.WARN=50]="WARN",q[q.INFO=60]="INFO",q[q.DEBUG=70]="DEBUG",q[q.VERBOSE=80]="VERBOSE",q[q.ALL=9999]="ALL"})(AZ=xq.DiagLogLevel||(xq.DiagLogLevel={}))});var gq=$((cq)=>{Object.defineProperty(cq,"__esModule",{value:!0});cq.createLogLevelDiagLogger=void 0;var h=C();function TZ(q,z){if(q<h.DiagLogLevel.NONE)q=h.DiagLogLevel.NONE;else if(q>h.DiagLogLevel.ALL)q=h.DiagLogLevel.ALL;z=z||{};function J(Z,Q){let X=z[Z];if(typeof X==="function"&&q>=Q)return X.bind(z);return function(){}}return{error:J("error",h.DiagLogLevel.ERROR),warn:J("warn",h.DiagLogLevel.WARN),info:J("info",h.DiagLogLevel.INFO),debug:J("debug",h.DiagLogLevel.DEBUG),verbose:J("verbose",h.DiagLogLevel.VERBOSE)}}cq.createLogLevelDiagLogger=TZ});var B=$((pq)=>{Object.defineProperty(pq,"__esModule",{value:!0});pq.DiagAPI=void 0;var yZ=_q(),PZ=gq(),iq=C(),R=O(),MZ="diag";class u{static instance(){if(!this._instance)this._instance=new u;return this._instance}constructor(){function q(Z){return function(...Q){let X=(0,R.getGlobal)("diag");if(!X)return;return X[Z](...Q)}}let z=this,J=(Z,Q={logLevel:iq.DiagLogLevel.INFO})=>{var X,H,G;if(Z===z){let F=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return z.error((X=F.stack)!==null&&X!==void 0?X:F.message),!1}if(typeof Q==="number")Q={logLevel:Q};let Y=(0,R.getGlobal)("diag"),w=(0,PZ.createLogLevelDiagLogger)((H=Q.logLevel)!==null&&H!==void 0?H:iq.DiagLogLevel.INFO,Z);if(Y&&!Q.suppressOverrideMessage){let F=(G=Error().stack)!==null&&G!==void 0?G:"<failed to generate stacktrace>";Y.warn(`Current logger will be overwritten from ${F}`),w.warn(`Current logger will overwrite one already registered from ${F}`)}return(0,R.registerGlobal)("diag",w,z,!0)};z.setLogger=J,z.disable=()=>{(0,R.unregisterGlobal)(MZ,z)},z.createComponentLogger=(Z)=>{return new yZ.DiagComponentLogger(Z)},z.verbose=q("verbose"),z.debug=q("debug"),z.info=q("info"),z.warn=q("warn"),z.error=q("error")}}pq.DiagAPI=u});var oq=$((sq)=>{Object.defineProperty(sq,"__esModule",{value:!0});sq.BaggageImpl=void 0;class f{constructor(q){this._entries=q?new Map(q):new Map}getEntry(q){let z=this._entries.get(q);if(!z)return;return Object.assign({},z)}getAllEntries(){return Array.from(this._entries.entries())}setEntry(q,z){let J=new f(this._entries);return J._entries.set(q,z),J}removeEntry(q){let z=new f(this._entries);return z._entries.delete(q),z}removeEntries(...q){let z=new f(this._entries);for(let J of q)z._entries.delete(J);return z}clear(){return new f}}sq.BaggageImpl=f});var eq=$((tq)=>{Object.defineProperty(tq,"__esModule",{value:!0});tq.baggageEntryMetadataSymbol=void 0;tq.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")});var d=$((qz)=>{Object.defineProperty(qz,"__esModule",{value:!0});qz.baggageEntryMetadataFromString=qz.createBaggage=void 0;var SZ=B(),vZ=oq(),mZ=eq(),uZ=SZ.DiagAPI.instance();function dZ(q={}){return new vZ.BaggageImpl(new Map(Object.entries(q)))}qz.createBaggage=dZ;function LZ(q){if(typeof q!=="string")uZ.error(`Cannot create baggage metadata from unknown type: ${typeof q}`),q="";return{__TYPE__:mZ.baggageEntryMetadataSymbol,toString(){return q}}}qz.baggageEntryMetadataFromString=LZ});var V=$((Jz)=>{Object.defineProperty(Jz,"__esModule",{value:!0});Jz.ROOT_CONTEXT=Jz.createContextKey=void 0;function xZ(q){return Symbol.for(q)}Jz.createContextKey=xZ;class E{constructor(q){let z=this;z._currentContext=q?new Map(q):new Map,z.getValue=(J)=>z._currentContext.get(J),z.setValue=(J,Z)=>{let Q=new E(z._currentContext);return Q._currentContext.set(J,Z),Q},z.deleteValue=(J)=>{let Z=new E(z._currentContext);return Z._currentContext.delete(J),Z}}}Jz.ROOT_CONTEXT=new E});var Xz=$((Qz)=>{Object.defineProperty(Qz,"__esModule",{value:!0});Qz.DiagConsoleLogger=Qz._originalConsoleMethods=void 0;var L=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];Qz._originalConsoleMethods={};if(typeof console<"u"){let q=["error","warn","info","debug","trace","log"];for(let z of q)if(typeof console[z]==="function")Qz._originalConsoleMethods[z]=console[z]}class $z{constructor(){function q(z){return function(...J){let Z=Qz._originalConsoleMethods[z];if(typeof Z!=="function")Z=Qz._originalConsoleMethods.log;if(typeof Z!=="function"&&console){if(Z=console[z],typeof Z!=="function")Z=console.log}if(typeof Z==="function")return Z.apply(console,J)}}for(let z=0;z<L.length;z++)this[L[z].n]=q(L[z].c)}}Qz.DiagConsoleLogger=$z});var s=$((Hz)=>{Object.defineProperty(Hz,"__esModule",{value:!0});Hz.createNoopMeter=Hz.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=Hz.NOOP_OBSERVABLE_GAUGE_METRIC=Hz.NOOP_OBSERVABLE_COUNTER_METRIC=Hz.NOOP_UP_DOWN_COUNTER_METRIC=Hz.NOOP_HISTOGRAM_METRIC=Hz.NOOP_GAUGE_METRIC=Hz.NOOP_COUNTER_METRIC=Hz.NOOP_METER=Hz.NoopObservableUpDownCounterMetric=Hz.NoopObservableGaugeMetric=Hz.NoopObservableCounterMetric=Hz.NoopObservableMetric=Hz.NoopHistogramMetric=Hz.NoopGaugeMetric=Hz.NoopUpDownCounterMetric=Hz.NoopCounterMetric=Hz.NoopMetric=Hz.NoopMeter=void 0;class _{constructor(){}createGauge(q,z){return Hz.NOOP_GAUGE_METRIC}createHistogram(q,z){return Hz.NOOP_HISTOGRAM_METRIC}createCounter(q,z){return Hz.NOOP_COUNTER_METRIC}createUpDownCounter(q,z){return Hz.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(q,z){return Hz.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(q,z){return Hz.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(q,z){return Hz.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(q,z){}removeBatchObservableCallback(q){}}Hz.NoopMeter=_;class U{}Hz.NoopMetric=U;class x extends U{add(q,z){}}Hz.NoopCounterMetric=x;class c extends U{add(q,z){}}Hz.NoopUpDownCounterMetric=c;class l extends U{record(q,z){}}Hz.NoopGaugeMetric=l;class g extends U{record(q,z){}}Hz.NoopHistogramMetric=g;class N{addCallback(q){}removeCallback(q){}}Hz.NoopObservableMetric=N;class i extends N{}Hz.NoopObservableCounterMetric=i;class p extends N{}Hz.NoopObservableGaugeMetric=p;class n extends N{}Hz.NoopObservableUpDownCounterMetric=n;Hz.NOOP_METER=new _;Hz.NOOP_COUNTER_METRIC=new x;Hz.NOOP_GAUGE_METRIC=new l;Hz.NOOP_HISTOGRAM_METRIC=new g;Hz.NOOP_UP_DOWN_COUNTER_METRIC=new c;Hz.NOOP_OBSERVABLE_COUNTER_METRIC=new i;Hz.NOOP_OBSERVABLE_GAUGE_METRIC=new p;Hz.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new n;function lZ(){return Hz.NOOP_METER}Hz.createNoopMeter=lZ});var jz=$((Uz)=>{Object.defineProperty(Uz,"__esModule",{value:!0});Uz.ValueType=void 0;var q0;(function(q){q[q.INT=0]="INT",q[q.DOUBLE=1]="DOUBLE"})(q0=Uz.ValueType||(Uz.ValueType={}))});var o=$((kz)=>{Object.defineProperty(kz,"__esModule",{value:!0});kz.defaultTextMapSetter=kz.defaultTextMapGetter=void 0;kz.defaultTextMapGetter={get(q,z){if(q==null)return;return q[z]},keys(q){if(q==null)return[];return Object.keys(q)}};kz.defaultTextMapSetter={set(q,z,J){if(q==null)return;q[z]=J}}});var bz=$((Vz)=>{Object.defineProperty(Vz,"__esModule",{value:!0});Vz.NoopContextManager=void 0;var J0=V();class Iz{active(){return J0.ROOT_CONTEXT}with(q,z,J,...Z){return z.call(J,...Z)}bind(q,z){return z}enable(){return this}disable(){return this}}Vz.NoopContextManager=Iz});var b=$((Rz)=>{Object.defineProperty(Rz,"__esModule",{value:!0});Rz.ContextAPI=void 0;var Z0=bz(),t=O(),Cz=B(),a="context",$0=new Z0.NoopContextManager;class e{constructor(){}static getInstance(){if(!this._instance)this._instance=new e;return this._instance}setGlobalContextManager(q){return(0,t.registerGlobal)(a,q,Cz.DiagAPI.instance())}active(){return this._getContextManager().active()}with(q,z,J,...Z){return this._getContextManager().with(q,z,J,...Z)}bind(q,z){return this._getContextManager().bind(q,z)}_getContextManager(){return(0,t.getGlobal)(a)||$0}disable(){this._getContextManager().disable(),(0,t.unregisterGlobal)(a,Cz.DiagAPI.instance())}}Rz.ContextAPI=e});var zq=$((Az)=>{Object.defineProperty(Az,"__esModule",{value:!0});Az.TraceFlags=void 0;var Q0;(function(q){q[q.NONE=0]="NONE",q[q.SAMPLED=1]="SAMPLED"})(Q0=Az.TraceFlags||(Az.TraceFlags={}))});var T=$((Tz)=>{Object.defineProperty(Tz,"__esModule",{value:!0});Tz.INVALID_SPAN_CONTEXT=Tz.INVALID_TRACEID=Tz.INVALID_SPANID=void 0;var W0=zq();Tz.INVALID_SPANID="0000000000000000";Tz.INVALID_TRACEID="00000000000000000000000000000000";Tz.INVALID_SPAN_CONTEXT={traceId:Tz.INVALID_TRACEID,spanId:Tz.INVALID_SPANID,traceFlags:W0.TraceFlags.NONE}});var y=$((vz)=>{Object.defineProperty(vz,"__esModule",{value:!0});vz.NonRecordingSpan=void 0;var X0=T();class Sz{constructor(q=X0.INVALID_SPAN_CONTEXT){this._spanContext=q}spanContext(){return this._spanContext}setAttribute(q,z){return this}setAttributes(q){return this}addEvent(q,z){return this}addLink(q){return this}addLinks(q){return this}setStatus(q){return this}updateName(q){return this}end(q){}isRecording(){return!1}recordException(q,z){}}vz.NonRecordingSpan=Sz});var $q=$((dz)=>{Object.defineProperty(dz,"__esModule",{value:!0});dz.getSpanContext=dz.setSpanContext=dz.deleteSpan=dz.setSpan=dz.getActiveSpan=dz.getSpan=void 0;var H0=V(),Y0=y(),G0=b(),Jq=(0,H0.createContextKey)("OpenTelemetry Context Key SPAN");function Zq(q){return q.getValue(Jq)||void 0}dz.getSpan=Zq;function F0(){return Zq(G0.ContextAPI.getInstance().active())}dz.getActiveSpan=F0;function uz(q,z){return q.setValue(Jq,z)}dz.setSpan=uz;function w0(q){return q.deleteValue(Jq)}dz.deleteSpan=w0;function h0(q,z){return uz(q,new Y0.NonRecordingSpan(z))}dz.setSpanContext=h0;function O0(q){var z;return(z=Zq(q))===null||z===void 0?void 0:z.spanContext()}dz.getSpanContext=O0});var M=$((gz)=>{Object.defineProperty(gz,"__esModule",{value:!0});gz.wrapSpanContext=gz.isSpanContextValid=gz.isValidSpanId=gz.isValidTraceId=void 0;var _z=T(),k0=y(),P=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function xz(q,z){if(typeof q!=="string"||q.length!==z)return!1;let J=0;for(let Z=0;Z<q.length;Z+=4)J+=(P[q.charCodeAt(Z)]|0)+(P[q.charCodeAt(Z+1)]|0)+(P[q.charCodeAt(Z+2)]|0)+(P[q.charCodeAt(Z+3)]|0);return J===z}function cz(q){return xz(q,32)&&q!==_z.INVALID_TRACEID}gz.isValidTraceId=cz;function lz(q){return xz(q,16)&&q!==_z.INVALID_SPANID}gz.isValidSpanId=lz;function D0(q){return cz(q.traceId)&&lz(q.spanId)}gz.isSpanContextValid=D0;function I0(q){return new k0.NonRecordingSpan(q)}gz.wrapSpanContext=I0});var Xq=$((sz)=>{Object.defineProperty(sz,"__esModule",{value:!0});sz.NoopTracer=void 0;var C0=b(),pz=$q(),Qq=y(),R0=M(),Wq=C0.ContextAPI.getInstance();class nz{startSpan(q,z,J=Wq.active()){if(Boolean(z===null||z===void 0?void 0:z.root))return new Qq.NonRecordingSpan;let Q=J&&(0,pz.getSpanContext)(J);if(E0(Q)&&(0,R0.isSpanContextValid)(Q))return new Qq.NonRecordingSpan(Q);else return new Qq.NonRecordingSpan}startActiveSpan(q,z,J,Z){let Q,X,H;if(arguments.length<2)return;else if(arguments.length===2)H=z;else if(arguments.length===3)Q=z,H=J;else Q=z,X=J,H=Z;let G=X!==null&&X!==void 0?X:Wq.active(),Y=this.startSpan(q,Q,G),w=(0,pz.setSpan)(G,Y);return Wq.with(w,H,void 0,Y)}}sz.NoopTracer=nz;function E0(q){return q!==null&&typeof q==="object"&&"spanId"in q&&typeof q.spanId==="string"&&"traceId"in q&&typeof q.traceId==="string"&&"traceFlags"in q&&typeof q.traceFlags==="number"}});var Hq=$((tz)=>{Object.defineProperty(tz,"__esModule",{value:!0});tz.ProxyTracer=void 0;var A0=Xq(),T0=new A0.NoopTracer;class oz{constructor(q,z,J,Z){this._provider=q,this.name=z,this.version=J,this.options=Z}startSpan(q,z,J){return this._getTracer().startSpan(q,z,J)}startActiveSpan(q,z,J,Z){let Q=this._getTracer();return Reflect.apply(Q.startActiveSpan,Q,arguments)}_getTracer(){if(this._delegate)return this._delegate;let q=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!q)return T0;return this._delegate=q,this._delegate}}tz.ProxyTracer=oz});var JJ=$((qJ)=>{Object.defineProperty(qJ,"__esModule",{value:!0});qJ.NoopTracerProvider=void 0;var y0=Xq();class ez{getTracer(q,z,J){return new y0.NoopTracer}}qJ.NoopTracerProvider=ez});var Yq=$(($J)=>{Object.defineProperty($J,"__esModule",{value:!0});$J.ProxyTracerProvider=void 0;var P0=Hq(),M0=JJ(),S0=new M0.NoopTracerProvider;class ZJ{getTracer(q,z,J){var Z;return(Z=this.getDelegateTracer(q,z,J))!==null&&Z!==void 0?Z:new P0.ProxyTracer(this,q,z,J)}getDelegate(){var q;return(q=this._delegate)!==null&&q!==void 0?q:S0}setDelegate(q){this._delegate=q}getDelegateTracer(q,z,J){var Z;return(Z=this._delegate)===null||Z===void 0?void 0:Z.getTracer(q,z,J)}}$J.ProxyTracerProvider=ZJ});var XJ=$((WJ)=>{Object.defineProperty(WJ,"__esModule",{value:!0});WJ.SamplingDecision=void 0;var v0;(function(q){q[q.NOT_RECORD=0]="NOT_RECORD",q[q.RECORD=1]="RECORD",q[q.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(v0=WJ.SamplingDecision||(WJ.SamplingDecision={}))});var YJ=$((HJ)=>{Object.defineProperty(HJ,"__esModule",{value:!0});HJ.SpanKind=void 0;var m0;(function(q){q[q.INTERNAL=0]="INTERNAL",q[q.SERVER=1]="SERVER",q[q.CLIENT=2]="CLIENT",q[q.PRODUCER=3]="PRODUCER",q[q.CONSUMER=4]="CONSUMER"})(m0=HJ.SpanKind||(HJ.SpanKind={}))});var FJ=$((GJ)=>{Object.defineProperty(GJ,"__esModule",{value:!0});GJ.SpanStatusCode=void 0;var u0;(function(q){q[q.UNSET=0]="UNSET",q[q.OK=1]="OK",q[q.ERROR=2]="ERROR"})(u0=GJ.SpanStatusCode||(GJ.SpanStatusCode={}))});var OJ=$((wJ)=>{Object.defineProperty(wJ,"__esModule",{value:!0});wJ.validateValue=wJ.validateKey=void 0;var hq="[_0-9a-z-*/]",d0=`[a-z]${hq}{0,255}`,L0=`[a-z0-9]${hq}{0,240}@[a-z]${hq}{0,13}`,_0=new RegExp(`^(?:${d0}|${L0})$`),x0=/^[ -~]{0,255}[!-~]$/,c0=/,|=/;function l0(q){return _0.test(q)}wJ.validateKey=l0;function g0(q){return x0.test(q)&&!c0.test(q)}wJ.validateValue=g0});var DJ=$((jJ)=>{Object.defineProperty(jJ,"__esModule",{value:!0});jJ.TraceStateImpl=void 0;var BJ=OJ(),KJ=32,p0=512,fJ=",",UJ="=";class Oq{constructor(q){if(this._internalState=new Map,q)this._parse(q)}set(q,z){let J=this._clone();if(J._internalState.has(q))J._internalState.delete(q);return J._internalState.set(q,z),J}unset(q){let z=this._clone();return z._internalState.delete(q),z}get(q){return this._internalState.get(q)}serialize(){return Array.from(this._internalState.keys()).reduceRight((q,z)=>{return q.push(z+UJ+this.get(z)),q},[]).join(fJ)}_parse(q){if(q.length>p0)return;if(this._internalState=q.split(fJ).reduceRight((z,J)=>{let Z=J.trim(),Q=Z.indexOf(UJ);if(Q!==-1){let X=Z.slice(0,Q),H=Z.slice(Q+1,J.length);if((0,BJ.validateKey)(X)&&(0,BJ.validateValue)(H))z.set(X,H)}return z},new Map),this._internalState.size>KJ)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,KJ))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let q=new Oq;return q._internalState=new Map(this._internalState),q}}jJ.TraceStateImpl=Oq});var NJ=$((IJ)=>{Object.defineProperty(IJ,"__esModule",{value:!0});IJ.createTraceState=void 0;var n0=DJ();function s0(q){return new n0.TraceStateImpl(q)}IJ.createTraceState=s0});var RJ=$((bJ)=>{Object.defineProperty(bJ,"__esModule",{value:!0});bJ.context=void 0;var r0=b();bJ.context=r0.ContextAPI.getInstance()});var TJ=$((EJ)=>{Object.defineProperty(EJ,"__esModule",{value:!0});EJ.diag=void 0;var o0=B();EJ.diag=o0.DiagAPI.instance()});var MJ=$((yJ)=>{Object.defineProperty(yJ,"__esModule",{value:!0});yJ.NOOP_METER_PROVIDER=yJ.NoopMeterProvider=void 0;var t0=s();class Bq{getMeter(q,z,J){return t0.NOOP_METER}}yJ.NoopMeterProvider=Bq;yJ.NOOP_METER_PROVIDER=new Bq});var uJ=$((vJ)=>{Object.defineProperty(vJ,"__esModule",{value:!0});vJ.MetricsAPI=void 0;var e0=MJ(),Kq=O(),SJ=B(),fq="metrics";class Uq{constructor(){}static getInstance(){if(!this._instance)this._instance=new Uq;return this._instance}setGlobalMeterProvider(q){return(0,Kq.registerGlobal)(fq,q,SJ.DiagAPI.instance())}getMeterProvider(){return(0,Kq.getGlobal)(fq)||e0.NOOP_METER_PROVIDER}getMeter(q,z,J){return this.getMeterProvider().getMeter(q,z,J)}disable(){(0,Kq.unregisterGlobal)(fq,SJ.DiagAPI.instance())}}vJ.MetricsAPI=Uq});var _J=$((dJ)=>{Object.defineProperty(dJ,"__esModule",{value:!0});dJ.metrics=void 0;var q1=uJ();dJ.metrics=q1.MetricsAPI.getInstance()});var gJ=$((cJ)=>{Object.defineProperty(cJ,"__esModule",{value:!0});cJ.NoopTextMapPropagator=void 0;class xJ{inject(q,z){}extract(q,z){return q}fields(){return[]}}cJ.NoopTextMapPropagator=xJ});var sJ=$((pJ)=>{Object.defineProperty(pJ,"__esModule",{value:!0});pJ.deleteBaggage=pJ.setBaggage=pJ.getActiveBaggage=pJ.getBaggage=void 0;var z1=b(),J1=V(),jq=(0,J1.createContextKey)("OpenTelemetry Baggage Key");function iJ(q){return q.getValue(jq)||void 0}pJ.getBaggage=iJ;function Z1(){return iJ(z1.ContextAPI.getInstance().active())}pJ.getActiveBaggage=Z1;function $1(q,z){return q.setValue(jq,z)}pJ.setBaggage=$1;function Q1(q){return q.deleteValue(jq)}pJ.deleteBaggage=Q1});var eJ=$((tJ)=>{Object.defineProperty(tJ,"__esModule",{value:!0});tJ.PropagationAPI=void 0;var kq=O(),Y1=gJ(),rJ=o(),S=sJ(),G1=d(),oJ=B(),Dq="propagation",F1=new Y1.NoopTextMapPropagator;class Iq{constructor(){this.createBaggage=G1.createBaggage,this.getBaggage=S.getBaggage,this.getActiveBaggage=S.getActiveBaggage,this.setBaggage=S.setBaggage,this.deleteBaggage=S.deleteBaggage}static getInstance(){if(!this._instance)this._instance=new Iq;return this._instance}setGlobalPropagator(q){return(0,kq.registerGlobal)(Dq,q,oJ.DiagAPI.instance())}inject(q,z,J=rJ.defaultTextMapSetter){return this._getGlobalPropagator().inject(q,z,J)}extract(q,z,J=rJ.defaultTextMapGetter){return this._getGlobalPropagator().extract(q,z,J)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,kq.unregisterGlobal)(Dq,oJ.DiagAPI.instance())}_getGlobalPropagator(){return(0,kq.getGlobal)(Dq)||F1}}tJ.PropagationAPI=Iq});var JZ=$((qZ)=>{Object.defineProperty(qZ,"__esModule",{value:!0});qZ.propagation=void 0;var w1=eJ();qZ.propagation=w1.PropagationAPI.getInstance()});var HZ=$((WZ)=>{Object.defineProperty(WZ,"__esModule",{value:!0});WZ.TraceAPI=void 0;var Vq=O(),ZZ=Yq(),$Z=M(),j=$q(),QZ=B(),Nq="trace";class bq{constructor(){this._proxyTracerProvider=new ZZ.ProxyTracerProvider,this.wrapSpanContext=$Z.wrapSpanContext,this.isSpanContextValid=$Z.isSpanContextValid,this.deleteSpan=j.deleteSpan,this.getSpan=j.getSpan,this.getActiveSpan=j.getActiveSpan,this.getSpanContext=j.getSpanContext,this.setSpan=j.setSpan,this.setSpanContext=j.setSpanContext}static getInstance(){if(!this._instance)this._instance=new bq;return this._instance}setGlobalTracerProvider(q){let z=(0,Vq.registerGlobal)(Nq,this._proxyTracerProvider,QZ.DiagAPI.instance());if(z)this._proxyTracerProvider.setDelegate(q);return z}getTracerProvider(){return(0,Vq.getGlobal)(Nq)||this._proxyTracerProvider}getTracer(q,z){return this.getTracerProvider().getTracer(q,z)}disable(){(0,Vq.unregisterGlobal)(Nq,QZ.DiagAPI.instance()),this._proxyTracerProvider=new ZZ.ProxyTracerProvider}}WZ.TraceAPI=bq});var FZ=$((YZ)=>{Object.defineProperty(YZ,"__esModule",{value:!0});YZ.trace=void 0;var h1=HZ();YZ.trace=h1.TraceAPI.getInstance()});var E1=$((W)=>{Object.defineProperty(W,"__esModule",{value:!0});W.trace=W.propagation=W.metrics=W.diag=W.context=W.INVALID_SPAN_CONTEXT=W.INVALID_TRACEID=W.INVALID_SPANID=W.isValidSpanId=W.isValidTraceId=W.isSpanContextValid=W.createTraceState=W.TraceFlags=W.SpanStatusCode=W.SpanKind=W.SamplingDecision=W.ProxyTracerProvider=W.ProxyTracer=W.defaultTextMapSetter=W.defaultTextMapGetter=W.ValueType=W.createNoopMeter=W.DiagLogLevel=W.DiagConsoleLogger=W.ROOT_CONTEXT=W.createContextKey=W.baggageEntryMetadataFromString=void 0;var O1=d();Object.defineProperty(W,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return O1.baggageEntryMetadataFromString}});var wZ=V();Object.defineProperty(W,"createContextKey",{enumerable:!0,get:function(){return wZ.createContextKey}});Object.defineProperty(W,"ROOT_CONTEXT",{enumerable:!0,get:function(){return wZ.ROOT_CONTEXT}});var B1=Xz();Object.defineProperty(W,"DiagConsoleLogger",{enumerable:!0,get:function(){return B1.DiagConsoleLogger}});var K1=C();Object.defineProperty(W,"DiagLogLevel",{enumerable:!0,get:function(){return K1.DiagLogLevel}});var f1=s();Object.defineProperty(W,"createNoopMeter",{enumerable:!0,get:function(){return f1.createNoopMeter}});var U1=jz();Object.defineProperty(W,"ValueType",{enumerable:!0,get:function(){return U1.ValueType}});var hZ=o();Object.defineProperty(W,"defaultTextMapGetter",{enumerable:!0,get:function(){return hZ.defaultTextMapGetter}});Object.defineProperty(W,"defaultTextMapSetter",{enumerable:!0,get:function(){return hZ.defaultTextMapSetter}});var j1=Hq();Object.defineProperty(W,"ProxyTracer",{enumerable:!0,get:function(){return j1.ProxyTracer}});var k1=Yq();Object.defineProperty(W,"ProxyTracerProvider",{enumerable:!0,get:function(){return k1.ProxyTracerProvider}});var D1=XJ();Object.defineProperty(W,"SamplingDecision",{enumerable:!0,get:function(){return D1.SamplingDecision}});var I1=YJ();Object.defineProperty(W,"SpanKind",{enumerable:!0,get:function(){return I1.SpanKind}});var V1=FJ();Object.defineProperty(W,"SpanStatusCode",{enumerable:!0,get:function(){return V1.SpanStatusCode}});var N1=zq();Object.defineProperty(W,"TraceFlags",{enumerable:!0,get:function(){return N1.TraceFlags}});var b1=NJ();Object.defineProperty(W,"createTraceState",{enumerable:!0,get:function(){return b1.createTraceState}});var Cq=M();Object.defineProperty(W,"isSpanContextValid",{enumerable:!0,get:function(){return Cq.isSpanContextValid}});Object.defineProperty(W,"isValidTraceId",{enumerable:!0,get:function(){return Cq.isValidTraceId}});Object.defineProperty(W,"isValidSpanId",{enumerable:!0,get:function(){return Cq.isValidSpanId}});var Rq=T();Object.defineProperty(W,"INVALID_SPANID",{enumerable:!0,get:function(){return Rq.INVALID_SPANID}});Object.defineProperty(W,"INVALID_TRACEID",{enumerable:!0,get:function(){return Rq.INVALID_TRACEID}});Object.defineProperty(W,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return Rq.INVALID_SPAN_CONTEXT}});var OZ=RJ();Object.defineProperty(W,"context",{enumerable:!0,get:function(){return OZ.context}});var BZ=TJ();Object.defineProperty(W,"diag",{enumerable:!0,get:function(){return BZ.diag}});var KZ=_J();Object.defineProperty(W,"metrics",{enumerable:!0,get:function(){return KZ.metrics}});var fZ=JZ();Object.defineProperty(W,"propagation",{enumerable:!0,get:function(){return fZ.propagation}});var UZ=FZ();Object.defineProperty(W,"trace",{enumerable:!0,get:function(){return UZ.trace}});W.default={context:OZ.context,diag:BZ.diag,metrics:KZ.metrics,propagation:fZ.propagation,trace:UZ.trace}});
3
3
  export{E1 as g};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Da as D}from"./index-g3ap3xpr.js";import{Xa as V}from"./index-0ckffygp.js";import{Rd as _,Sd as w,Td as x,Ud as N,Vd as j,Yd as X,_d as A,be as I}from"./index-0cn9bv8z.js";import{he as S}from"./index-yy1mm8zs.js";import{existsSync as $,readdirSync as v,readFileSync as O,writeFileSync as M,mkdirSync as E,openSync as T,closeSync as b,unlinkSync as R}from"fs";import{join as Q}from"path";import{tmpdir as F}from"os";import{spawn as h}from"child_process";class P{registryPath;logsDir;productDir;constructor(){let q=I();this.productDir=q,this.registryPath=Q(q,"agents.json");let z=A();this.logsDir=Q(z,"logs"),E(q,{recursive:!0}),E(z,{recursive:!0}),E(this.logsDir,{recursive:!0})}async startDaemon(q){return X(q.name),this.withInstanceLock(q.name,async()=>{let z=await this.findProcessByName(q.name);if(z&&z.status==="running"){let U=z.version,W=D();if(U===W){console.log(`\u26A0\uFE0F Agent '${q.name}' is already running on port ${z.port}`);return}console.log(`\uD83D\uDD04 Agent '${q.name}' is running an older build (${U??"unknown"} \u2192 ${W}) \u2014 restarting to apply the update`);try{await this.stopInternal(q.name)}catch(Z){console.log(`\u26A0\uFE0F Could not cleanly stop the stale daemon (${Z instanceof Error?Z.message:String(Z)}); proceeding to start the new build`)}}let B=Q(this.logsDir,`${q.name}.log`),C=T(B,"a"),H=Q(import.meta.dir,"index.js"),G=Q(import.meta.dir,"..","index.ts"),L=$(H)?H:G,K=h(process.execPath,["run",L],{detached:!0,windowsHide:!0,stdio:["ignore",C,C],env:{...process.env,VIBECONTROLS_PROFILE:q.profile||"default",PORT:q.port.toString(),DB_PATH:q.dbPath,NODE_ENV:"production",AGENT_LOG_FILE:B}});K.on("error",()=>{}),b(C),await new Promise((U)=>setTimeout(U,2000));let J=K.pid;if(!(J!==void 0&&await this.isProcessRunning(J))){let U="";try{U=O(B,"utf8").split(/\r?\n/).filter((k)=>k.trim()).slice(-25).join(`
2
+ import{Da as D}from"./index-jdh30t6c.js";import{Xa as V}from"./index-0ckffygp.js";import{$d as A,Sd as _,Td as w,Ud as x,Vd as N,Wd as j,Zd as X,ce as I}from"./index-a4854mwz.js";import{ie as S}from"./index-c7554sg7.js";import{existsSync as $,readdirSync as v,readFileSync as O,writeFileSync as M,mkdirSync as E,openSync as T,closeSync as b,unlinkSync as R}from"fs";import{join as Q}from"path";import{tmpdir as F}from"os";import{spawn as h}from"child_process";class P{registryPath;logsDir;productDir;constructor(){let q=I();this.productDir=q,this.registryPath=Q(q,"agents.json");let z=A();this.logsDir=Q(z,"logs"),E(q,{recursive:!0}),E(z,{recursive:!0}),E(this.logsDir,{recursive:!0})}async startDaemon(q){return X(q.name),this.withInstanceLock(q.name,async()=>{let z=await this.findProcessByName(q.name);if(z&&z.status==="running"){let U=z.version,W=D();if(U===W){console.log(`\u26A0\uFE0F Agent '${q.name}' is already running on port ${z.port}`);return}console.log(`\uD83D\uDD04 Agent '${q.name}' is running an older build (${U??"unknown"} \u2192 ${W}) \u2014 restarting to apply the update`);try{await this.stopInternal(q.name)}catch(Z){console.log(`\u26A0\uFE0F Could not cleanly stop the stale daemon (${Z instanceof Error?Z.message:String(Z)}); proceeding to start the new build`)}}let B=Q(this.logsDir,`${q.name}.log`),C=T(B,"a"),H=Q(import.meta.dir,"index.js"),G=Q(import.meta.dir,"..","index.ts"),L=$(H)?H:G,K=h(process.execPath,["run",L],{detached:!0,windowsHide:!0,stdio:["ignore",C,C],env:{...process.env,VIBECONTROLS_PROFILE:q.profile||"default",PORT:q.port.toString(),DB_PATH:q.dbPath,NODE_ENV:"production",AGENT_LOG_FILE:B}});K.on("error",()=>{}),b(C),await new Promise((U)=>setTimeout(U,2000));let J=K.pid;if(!(J!==void 0&&await this.isProcessRunning(J))){let U="";try{U=O(B,"utf8").split(/\r?\n/).filter((k)=>k.trim()).slice(-25).join(`
3
3
  `)}catch{}let W=`See ${B}`;throw Error(U?`Failed to start agent '${q.name}'. ${W}
4
4
  --- last log lines ---
5
5
  ${U}`:`Failed to start agent '${q.name}'. ${W}`)}K.unref(),await this.saveProcessInfo(q.name,J,q),console.log(`\uD83D\uDE80 Agent '${q.name}' started (PID: ${J}, Port: ${q.port})`)})}async stop(q){return X(q),this.withInstanceLock(q,()=>this.stopInternal(q))}async stopInternal(q){let z=await this.findProcessByName(q);if(!z||z.status!=="running"){console.log(`\u26A0\uFE0F Agent '${q}' is not running`);return}try{if(process.kill(z.pid,"SIGTERM"),await new Promise((C)=>setTimeout(C,3000)),await this.isProcessRunning(z.pid))process.kill(z.pid,"SIGKILL");await this.updateProcessStatus(q,"stopped"),console.log(`\u2705 Agent '${q}' stopped (tunnel + API key preserved)`)}catch(B){throw Error(`Failed to stop agent '${q}': ${B}`,{cause:B})}}async restart(q,z){X(q),X(z.name);let B=await this.findProcessByName(q);if(B&&B.status==="running")await this.stop(q);await this.startDaemon(z),console.log(`\uD83D\uDD04 Agent '${q}' restarted (tunnel + API key preserved)`)}async kill(q){return X(q),this.withInstanceLock(q,async()=>{let z=await this.findProcessByName(q);if(!z||z.status!=="running"){console.log(`\u26A0\uFE0F Agent '${q}' is not running`);return}let B=Q(F(),`.boff-vibecontrols-kill-${z.pid}`);try{await Bun.write(B,"kill")}catch{}try{process.kill(z.pid,"SIGTERM"),await new Promise((H)=>setTimeout(H,5000))}catch{}if(await this.isProcessRunning(z.pid))await this.killProcessTree(z.pid);await this.updateProcessStatus(q,"stopped"),console.log(`\uD83D\uDC80 Agent '${q}' killed (tunnel + state torn down)`)})}async getStatus(q){return X(q),this.findProcessByName(q)}discoverRuntimeInstances(){let q=Q(this.productDir,"agents");if(!$(q))return[];let z;try{z=v(q,{withFileTypes:!0}).filter((C)=>C.isDirectory()).map((C)=>C.name)}catch{return[]}let B=[];for(let C of z){let H=Q(q,C,"runtime.json");if(!$(H))continue;try{let G=JSON.parse(O(H,"utf8"));if(typeof G.pid!=="number"||typeof G.port!=="number")continue;let L=G.profile||C;try{X(L)}catch{continue}B.push({name:L,pid:G.pid,port:G.port,config:{name:L,port:G.port,daemon:!0,dbPath:Q(q,C,"agent-db"),host:G.host,profile:L},startTime:G.startedAt??new Date(0).toISOString(),status:"unknown",version:G.version})}catch{}}return B}async getStatusAll(){let q=this.loadRegistry(),z=new Set(q.map((G)=>G.name)),B=[...q];for(let G of this.discoverRuntimeInstances())if(!z.has(G.name))B.push(G);let C=[];for(let G of B){let L=await this.isManagedProcessRunning(G);if(!z.has(G.name)&&!L)continue;C.push({...G,status:L?"running":"stopped"})}let H=C.filter((G)=>G.status==="running"&&!z.has(G.name));if(H.length>0)try{await _(()=>{let G=this.loadRegistry(),L=new Set(G.map((J)=>J.name)),K=H.filter((J)=>!L.has(J.name));if(K.length>0)this.saveRegistry([...G,...K.map((J)=>({...J,status:"running"}))])})}catch{}return C}async listInstances(){return this.getStatusAll()}getDefaultProfile(){return N()}setDefaultProfile(q){j(X(q))}async showLogs(q,z){X(q);let B=Q(this.logsDir,`${q}.log`);if(!$(B)){console.log(`No logs found for agent '${q}'`);return}if(z.follow)try{let C=async(J)=>{let Y=await Bun.file(B).text(),W=Y.split(`
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Ub as U}from"./index-04n4qgvd.js";import"./index-5mw3eshk.js";import{nc as i,pc as w,qc as C,tc as b,uc as v,wc as G,yc as J}from"./index-z5a4yxzz.js";import"./index-ef95xr4z.js";import{Kc as y,Lc as M,Mc as h,Nc as T}from"./index-xjzmb1pn.js";import"./index-g2raeeh4.js";import{Nd as $}from"./index-9bqd8veb.js";import"./index-0cn9bv8z.js";import"./index-jw1k4vbk.js";import"./index-yy1mm8zs.js";var x={debug:0,info:1,warn:2,error:3};function j(o){if(!o)return;return o==="debug"||o==="info"||o==="warn"||o==="error"?o:void 0}function A(o,n,e,t){if(!o)return n;let r=parseInt(o,10);if(!Number.isInteger(r))return n;return Math.min(t,Math.max(e,r))}function L(o){return new U().get("/",async({query:n,set:e})=>{let t=n,r=j(t.level);if(t.level&&!r)return e.status=400,{error:"Invalid log level"};let m=await $().logger.readHistory({level:r,source:t.source,from:t.from,to:t.to,limit:A(t.limit,200,1,1000),offset:A(t.offset,0,0,1e5)});return{entries:m,count:m.length}}).get("/stream",({query:n,set:e})=>{let t=n,r=j(t.level);if(t.level&&!r)return e.status=400,{error:"Invalid log level"};let m=r??"info",a=t.source??"";return e.headers["Content-Type"]="text/event-stream",e.headers["Cache-Control"]="no-cache",e.headers.Connection="keep-alive",e.headers["X-Accel-Buffering"]="no",new ReadableStream({start(u){let c=new TextEncoder;u.enqueue(c.encode(`: connected
2
+ import{Vb as U}from"./index-pgew6sge.js";import"./index-8nqp3a4d.js";import{oc as i,qc as w,rc as C,uc as b,vc as v,xc as G,zc as J}from"./index-1mppacnx.js";import"./index-thammzct.js";import{Lc as y,Mc as M,Nc as h,Oc as T}from"./index-b6x6a4xp.js";import"./index-h74va4wd.js";import{Od as $}from"./index-js1xn4sq.js";import"./index-a4854mwz.js";import"./index-4qq083yd.js";import"./index-c7554sg7.js";var x={debug:0,info:1,warn:2,error:3};function j(o){if(!o)return;return o==="debug"||o==="info"||o==="warn"||o==="error"?o:void 0}function A(o,n,e,t){if(!o)return n;let r=parseInt(o,10);if(!Number.isInteger(r))return n;return Math.min(t,Math.max(e,r))}function L(o){return new U().get("/",async({query:n,set:e})=>{let t=n,r=j(t.level);if(t.level&&!r)return e.status=400,{error:"Invalid log level"};let m=await $().logger.readHistory({level:r,source:t.source,from:t.from,to:t.to,limit:A(t.limit,200,1,1000),offset:A(t.offset,0,0,1e5)});return{entries:m,count:m.length}}).get("/stream",({query:n,set:e})=>{let t=n,r=j(t.level);if(t.level&&!r)return e.status=400,{error:"Invalid log level"};let m=r??"info",a=t.source??"";return e.headers["Content-Type"]="text/event-stream",e.headers["Cache-Control"]="no-cache",e.headers.Connection="keep-alive",e.headers["X-Accel-Buffering"]="no",new ReadableStream({start(u){let c=new TextEncoder;u.enqueue(c.encode(`: connected
3
3
 
4
4
  `));let s=(g)=>{if(x[g.level]<x[m])return;if(a&&!g.source.includes(a))return;try{u.enqueue(c.encode(`event: log
5
5
  data: ${JSON.stringify(g)}
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{c as a}from"./index-xrs52f2c.js";import"./index-kt5zxp42.js";import"./index-c7554sg7.js";export default a();