@agenthippo-ai/agenthippo 1.110.28 → 1.110.29

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 (2) hide show
  1. package/out/cli/index.js +2 -2
  2. package/package.json +2 -2
package/out/cli/index.js CHANGED
@@ -417,7 +417,7 @@ else {
417
417
  ${xe}`,ot.message=he)}return ot}onMaintenance(e){let n=Date.now();for(let[r,s]of this.activeSessions.entries())n-s.lastUsedAt>dP&&(this.activeSessions.delete(r),e.info(`[AgentIDE] Closed idle custom engine session (key=${r}, idleMs=${n-s.lastUsedAt})`));for(let{engine:r,manifest:s}of this.instances.values())try{r.onMaintenance?.(e)}catch(i){e.warn(`[AgentIDE] Custom engine "${s.id}" onMaintenance error: ${i}`)}this.workerPool.onMaintenance()}dispose(){this.clearInstances(),this.workerPool.disposeAll(),this.activeSessions.clear(),this.mtimeCache.clear()}};En.CustomEngine=Zu});var pi=T(ue=>{"use strict";var yP=ue&&ue.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),wP=ue&&ue.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),AP=ue&&ue.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&yP(n,e,r[s]);return wP(n,e),n}})();Object.defineProperty(ue,"__esModule",{value:!0});ue.resolveModelAlias=ue.getSessionDir=ue.createSessionDir=ue.computeSkillsSignature=ue.syncPackToWorkspace=ue.initSessionStoreWithStore=ue.CLIPermissionHandler=ue.AutoApprovePermissionHandler=ue.DirectorySessionStore=ue.FileSessionStore=ue.MemorySessionStore=ue.StaticConfigProvider=ue.NoOpEditTracker=ue.NoOpLogger=ue.ConsoleLogger=void 0;ue.createHeadlessRunner=nd;ue.createEvalRunner=$P;ue.createCLIRunner=DP;var Tm=AP(require("path")),SP=tm(),TP=im(),bP=si(),Lt=Ca();Object.defineProperty(ue,"ConsoleLogger",{enumerable:!0,get:function(){return Lt.ConsoleLogger}});Object.defineProperty(ue,"NoOpLogger",{enumerable:!0,get:function(){return Lt.NoOpLogger}});Object.defineProperty(ue,"NoOpEditTracker",{enumerable:!0,get:function(){return Lt.NoOpEditTracker}});Object.defineProperty(ue,"StaticConfigProvider",{enumerable:!0,get:function(){return Lt.StaticConfigProvider}});Object.defineProperty(ue,"MemorySessionStore",{enumerable:!0,get:function(){return Lt.MemorySessionStore}});Object.defineProperty(ue,"FileSessionStore",{enumerable:!0,get:function(){return Lt.FileSessionStore}});Object.defineProperty(ue,"DirectorySessionStore",{enumerable:!0,get:function(){return Lt.DirectorySessionStore}});Object.defineProperty(ue,"AutoApprovePermissionHandler",{enumerable:!0,get:function(){return Lt.AutoApprovePermissionHandler}});Object.defineProperty(ue,"CLIPermissionHandler",{enumerable:!0,get:function(){return Lt.CLIPermissionHandler}});var bm=ri(),vP=Wu(),vm=xi(),OP=Er(),IP=is(),PP=ti(),NP="AGENTHIPPO_TURN_NONCE";function RP(t,e){let n=t?.trim();if(n)return n;let r=e?.trim();if(r)return r;let s=process.env.AGENTHIPPO_ANALYTICS_USER_ID?.trim()||process.env.AGENTIDE_ANALYTICS_USER_ID?.trim();if(s)return s;let i=process.env.LOGNAME?.trim()||process.env.USER?.trim()||process.env.LNAME?.trim()||process.env.USERNAME?.trim();return i||"anonymous"}function nd(t){if(t.freshState){let E=new Lt.MemorySessionStore;(0,bm.initSessionStoreWithStore)(E)}else(0,bm.initSessionStoreWithStore)(new Lt.DirectorySessionStore(Tm.join(t.storagePath,"provider-sessions")));let e=!!(t.litellmApiKey||t.openaiApiKey||t.anthropicApiKey),n={storagePath:t.storagePath,codexHome:void 0,claudeConfigDir:void 0,litellmApiKey:t.litellmApiKey??(e?void 0:t.apiKey),litellmBaseUrl:t.baseUrl,openaiApiKey:t.openaiApiKey,anthropicApiKey:t.anthropicApiKey,claudeCodeExecutablePath:t.claudeCodeExecutablePath,codexExecutablePath:t.codexExecutablePath},r=t.logger??new Lt.ConsoleLogger("[AgentIDE]"),s=t.editTracker??new Lt.NoOpEditTracker,i=new Lt.StaticConfigProvider({},t.customProviders??{},t.engineSettings??{}),o=t.permissionHandler??new Lt.AutoApprovePermissionHandler,a={logger:r,editTracker:s,configProvider:i,permissionHandler:o,cliEnvPatch:t.cliEnvPatch},c=t.packId??"default",l=E=>(0,vP.computeSkillsSignature)(E,c),d=()=>t.bundledPromptsDir,u,f,p,g=()=>(u||(u=new TP.ClaudeEngine(n,async(E,w)=>l(E)??`headless-${c}`,d)),u),m=()=>(f||(f=new SP.CodexEngine(n,l,d)),f),h=async()=>{if(!p){let{CustomEngine:E}=await Promise.resolve().then(()=>bn(td()));p=new E(n,d)}return p},y=new vm.SessionEventWriter(t.analyticsSessionsDir??Tm.join((0,PP.getAgentideHome)(),"analytics","sessions"));return{async run(E){let w={success:!1,text:"",thinking:"",toolCalls:[]},v=E.emitter??{async thinking(L){w.thinking+=L},async text(L){w.text+=L},async toolStart(L,ee,q){w.toolCalls.push({name:L,input:ee})},async toolEnd(L,ee,q,ge){let ce=w.toolCalls.find(fe=>fe.name===L&&!fe.result);ce&&(ce.result=q,ce.isError=ge)},async progress(L){r.debug(`[Progress] ${L}`)},async question(L){return r.debug(`[Question] ${L.prompt}`),{selected:[],freeText:null,declined:!0}},async error(L){w.error=L},async done(){w.error||(w.success=!0)}},I=(0,bP.generateRequestId)(),b=E.sessionId??`headless-${Date.now()}`,A=t.provenance?.(),S=(0,vm.wrapEmitterWithObservability)(v,y,b,I,(0,IP.currentCredential)()?.userId,A&&{policy_version:A.policyVersion,pack_digest:A.packDigest,engine_version:A.engineVersion,tier:A.tier,instance_id:A.instanceId}),O={modelId:E.modelId,engineId:E.engineId,workspaceRoot:E.workspaceRoot,additionalDirectories:E.additionalDirectories,sessionId:b,analyticsUserId:RP(E.analyticsUserId,t.analyticsUserId),apiKey:E.modelToken??(e?void 0:t.apiKey),baseUrl:t.baseUrl,useLiteLLM:t.useLiteLLM,agentPackId:c,agentPackVersion:t.packVersion,policyVersion:A?.policyVersion,packDigest:A?.packDigest,engineVersion:A?.engineVersion,tier:A?.tier,instanceId:A?.instanceId,permissions:E.permissions,engineHomeUserKey:E.engineHomeUserKey,requestId:I};await S.emitTurnStart();let M=null;if(t.dataPlane&&!E.turnEnv?.[NP])try{M=await t.dataPlane.beginTurn({sessionKey:b})}catch(L){return w.error=`data-plane turn registration failed: ${L instanceof Error?L.message:String(L)}`,await S.error(w.error),await S.emitTurnEnd(!1),w}let N={...a,cliEnvPatch:{...a.cliEnvPatch??{},...(0,OP.buildSessionEnvPatch)({workspaceRoot:E.workspaceRoot,chatSessionId:b,gatewaySessionKey:E.gatewaySessionKey}),...E.turnEnv??{},...M?.env??{}}};try{let L=E.engineId.trim().toLowerCase();L==="claude"?await g().stream(E.message,O,S,N,E.signal):L==="codex"?await m().stream(E.message,O,S,N,E.signal):await(await h()).stream(E.message,O,S,N,E.signal)}catch(L){w.error=L instanceof Error?L.message:String(L),w.success=!1,await S.error(w.error)}finally{try{await M?.release()}catch{}}return await S.emitTurnEnd(w.success),w},dispose(){u?.dispose(),f?.dispose(),p?.dispose()}}}var CP=ri();Object.defineProperty(ue,"initSessionStoreWithStore",{enumerable:!0,get:function(){return CP.initSessionStoreWithStore}});var Tc=Wu();Object.defineProperty(ue,"syncPackToWorkspace",{enumerable:!0,get:function(){return Tc.syncPackToWorkspace}});Object.defineProperty(ue,"computeSkillsSignature",{enumerable:!0,get:function(){return Tc.computeSkillsSignature}});Object.defineProperty(ue,"createSessionDir",{enumerable:!0,get:function(){return Tc.createSessionDir}});Object.defineProperty(ue,"getSessionDir",{enumerable:!0,get:function(){return Tc.getSessionDir}});var kP=$a();Object.defineProperty(ue,"resolveModelAlias",{enumerable:!0,get:function(){return kP.resolveModelAlias}});function $P(t,e,n){return nd({storagePath:t,apiKey:e,baseUrl:n,freshState:!0,logger:new Lt.NoOpLogger})}function DP(t,e,n){return nd({storagePath:t,apiKey:e,baseUrl:n,logger:new Lt.ConsoleLogger("[Agent]")})}});var gi=T(Vt=>{"use strict";var LP=Vt&&Vt.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),MP=Vt&&Vt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),bc=Vt&&Vt.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&LP(n,e,r[s]);return MP(n,e),n}})();Object.defineProperty(Vt,"__esModule",{value:!0});Vt.resolvePackPath=Im;Vt.listAvailablePacks=jP;Vt.loadAgentPack=xP;Vt.getDefaultConfig=VP;Vt.getEnvDefaultModel=WP;Vt.getApiConfig=Pm;Vt.hasCredentialForEngine=KP;Vt.getFileAccess=qP;var tn=bc(require("fs")),ft=bc(require("path")),GP=bc(require("os")),UP=bc(require("js-yaml")),vc=Je();function Go(t,e){return process.env[t]??(e?process.env[e]:void 0)}var HP=process.env.AGENTHIPPO_HOME||ft.join(GP.homedir(),vc.AGENTIDE_DIR_NAME),sd=ft.join(HP,"agents"),rd="agents";function Vi(t){if(!tn.existsSync(t))return;let e=ft.join(t,"current.txt");if(tn.existsSync(e)){let r=tn.readFileSync(e,"utf-8").trim(),s=ft.join(t,r);if(tn.existsSync(s))return s}let n=ft.join(t,"agent.yaml");if(tn.existsSync(n))return t;try{let s=tn.readdirSync(t,{withFileTypes:!0}).filter(i=>i.isDirectory()&&/^\d+\.\d+\.\d+/.test(i.name)).map(i=>i.name).sort((i,o)=>{let[a,c,l]=i.split(".").map(p=>parseInt(p,10)||0),[d,u,f]=o.split(".").map(p=>parseInt(p,10)||0);return d!==a?d-a:u!==c?u-c:f-l});for(let i of s){let o=ft.join(t,i),a=ft.join(o,"agent.yaml");if(tn.existsSync(a))return o}}catch{}}function Im(t,e){if(ft.isAbsolute(t)||t.startsWith("./")||t.startsWith("../")){let c=ft.isAbsolute(t)?t:ft.resolve(process.cwd(),t);if(tn.existsSync(c)){try{if(tn.statSync(c).isDirectory())return Vi(c)??c}catch{}return c}return}let n=ft.join(process.cwd(),t),r=Vi(n);if(r)return r;let s=ft.join(process.cwd(),rd,t),i=Vi(s);if(i)return i;if(e){let c=ft.join(e,vc.AGENTIDE_DIR_NAME,rd,t),l=Vi(c);if(l)return l}let o=ft.join(sd,t),a=Vi(o);if(a)return a}function Om(t,e){let n=[];if(!tn.existsSync(t))return n;let r=tn.readdirSync(t,{withFileTypes:!0});for(let s of r){if(!s.isDirectory()||s.name.startsWith("."))continue;let i=ft.join(t,s.name),o=Vi(i);if(!o)continue;let a;o!==i&&(a=ft.basename(o)),n.push({name:s.name,path:o,version:a,source:e})}return n}function jP(t){let e=[],n=new Set;if(t){let s=ft.join(t,vc.AGENTIDE_DIR_NAME,rd),i=Om(s,"workspace");for(let o of i)e.push(o),n.add(o.name)}let r=Om(sd,"user-library");for(let s of r)n.has(s.name)||e.push(s);return e}async function xP(t,e){let n=Im(t,e);if(!n){let u=ft.isAbsolute(t)||t.startsWith("./")||t.startsWith("../")?[ft.resolve(process.cwd(),t)]:[`${process.cwd()}/${t}`,`${process.cwd()}/agents/${t}`,e?`${e}/${vc.AGENTIDE_DIR_NAME}/agents/${t}`:null,`${sd}/${t}`].filter(Boolean);throw new Error(`Agent pack not found: ${t}
418
418
  Searched: ${u.join(", ")}`)}let r=ft.join(n,"agent.yaml");if(!tn.existsSync(r))throw new Error(`Missing agent.yaml in pack: ${n}`);let s=tn.readFileSync(r,"utf-8"),i=UP.load(s);FP(i,r);let o=BP(i),a="",c=ft.join(n,"AGENTS.md");return tn.existsSync(c)&&(a=tn.readFileSync(c,"utf-8")),{manifest:o,packPath:n,systemPrompt:a,rules:[]}}function BP(t){let e=t.spec.engine?.trim()??"",n=e.toLowerCase();return e!==n?{...t,spec:{...t.spec,engine:n}}:t}function FP(t,e){let n=[];if(t.metadata?.name||n.push("Missing metadata.name"),t.metadata?.version||n.push("Missing metadata.version"),t.spec?.engine?.trim()||n.push("Missing spec.engine"),t.spec?.engine?.trim().toLowerCase()==="custom"&&n.push('Invalid spec.engine: use the concrete custom engine id (for example, openclaw), not "custom"'),t.spec?.cheapModel!==void 0&&typeof t.spec.cheapModel!="string"&&n.push("Invalid spec.cheapModel: must be a string when provided"),t.spec?.dataPlane!==void 0&&((typeof t.spec.dataPlane!="object"||!t.spec.dataPlane.connector?.trim())&&n.push("Invalid spec.dataPlane: requires a `connector` path (stdio MCP module run broker-side)"),t.spec.dataPlane?.provider!==void 0&&typeof t.spec.dataPlane.provider!="string"&&n.push("Invalid spec.dataPlane.provider: must be a string when provided")),n.length>0)throw new Error(`Invalid agent manifest at ${e}:
419
419
  - ${n.join(`
420
- - `)}`)}function VP(){return{engine:(Go("AGENTHIPPO_DEFAULT_ENGINE","AGENTIDE_DEFAULT_ENGINE")||"claude").trim().toLowerCase(),model:Go("AGENTHIPPO_DEFAULT_MODEL","AGENTIDE_DEFAULT_MODEL")||"claude-sonnet-4-5-20250929"}}function WP(){return Go("AGENTHIPPO_DEFAULT_MODEL","AGENTIDE_DEFAULT_MODEL")?.trim()||void 0}function Pm(){let t=Go("AGENTHIPPO_LITELLM_API_KEY","AGENTIDE_LITELLM_API_KEY"),e=Go("AGENTHIPPO_LITELLM_BASE_URL","AGENTIDE_LITELLM_BASE_URL"),n=process.env.ANTHROPIC_API_KEY||process.env.CLAUDE_API_KEY,r=process.env.OPENAI_API_KEY;return{apiKey:t||n||r,baseUrl:e,useLiteLLM:!!e,litellmApiKey:t,openaiApiKey:r,anthropicApiKey:n}}function KP(t,e=Pm()){if(e.useLiteLLM)return!0;let n=t.trim().toLowerCase();return n==="claude"?!!e.anthropicApiKey:n==="codex"?!!e.openaiApiKey:!0}function qP(t){return t?.manifest.spec.permissions?.fileAccess??"workspace-write"}});var Oc=T((fj,YP)=>{YP.exports={name:"agenthippo",displayName:"Agent Hippo",description:"Agent Hippo - The easiest way to build and test your AI agents",version:"1.110.28",agenthippo:{litellmImageTag:"0.2.16",hippoclawNpm:"@agenthippo-ai/hippoclaw@2026.7.28"},publisher:"agenthippo",private:!0,engines:{vscode:"^1.93.0"},enabledApiProposals:["chatParticipantAdditions","chatParticipantPrivate","languageModelThinkingPart"],activationEvents:["onStartupFinished","onCommand:agentide.customEngine.list","onCommand:agentide.engine.install","onCommand:agentide.engine.uninstall","onChatParticipant:agentide.claude","onChatParticipant:agentide.codex"],main:"./out/extension.js",contributes:{authentication:[{id:"agenthippo",label:"AgentHippo"}],chatParticipants:[{id:"agentide.claude",name:"claude",fullName:"Claude Agent",description:"AI coding agent powered by Anthropic's Claude Agent SDK",isSticky:!1},{id:"agentide.codex",name:"codex",fullName:"Codex Agent",description:"AI coding agent powered by OpenAI's Codex SDK",isSticky:!1}],mcpServerDefinitionProviders:[{id:"bundled-mcp-servers",label:"Agent Hippo Bundled MCP Servers"}],commands:[{command:"agentide.skills.syncRemote",title:"Sync Remote Skills",category:"Agent Hippo"},{command:"agentide.clearManagedResources",title:"Clear Managed Resources",category:"Agent Hippo"},{command:"agentide.showManagedResources",title:"Show Managed Resources",category:"Agent Hippo"},{command:"agentide.cleanupSessionLogs",title:"Cleanup Old Session Logs",category:"Agent Hippo"},{command:"agentide.pack.install",title:"Install Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.list",title:"List Installed Packs",category:"Agent Hippo"},{command:"agentide.customEngine.list",title:"List Custom Engines",category:"Agent Hippo"},{command:"agentide.pack.uninstall",title:"Uninstall Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.getActive",title:"Get Active Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.create",title:"Create Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.share",title:"Share Agent to User Library",category:"Agent Hippo"},{command:"agentide.pack.publish",title:"Publish Agent to Store",category:"Agent Hippo"},{command:"agentide.skill.share",title:"Save Skill to User Library",category:"Agent Hippo"},{command:"agentide.skill.publish",title:"Publish Skill to Store",category:"Agent Hippo"},{command:"agentide.mcp.share",title:"Save MCP Server to User Library",category:"Agent Hippo"},{command:"agentide.mcp.publish",title:"Publish MCP Server to Store",category:"Agent Hippo"},{command:"agenthippo.signIn",title:"Sign In to AgentHippo",category:"Agent Hippo"},{command:"agenthippo.signOut",title:"Sign Out of AgentHippo",category:"Agent Hippo"},{command:"agentide.store.find",title:"Install Packs, Skills, MCP Tools, Engines, Spotlight Views",category:"Agent Hippo"},{command:"agentide.engine.install",title:"Install Custom Engine",category:"Agent Hippo"},{command:"agentide.engine.uninstall",title:"Uninstall Custom Engine",category:"Agent Hippo"},{command:"agentide.engine.publish",title:"Publish Engine to Store",category:"Agent Hippo"},{command:"agentide.spotlight.publish",title:"Publish Spotlight View to Store (Full Bundle)",category:"Agent Hippo"},{command:"agentide.view.install",title:"Install Spotlight View",category:"Agent Hippo"},{command:"agentide.store.sync",title:"Sync Store Index",category:"Agent Hippo"},{command:"agentide.store.setup",title:"Setup Store Index Automation",category:"Agent Hippo"},{command:"agentide.pack.browseLibrary",title:"Browse User Library",category:"Agent Hippo"},{command:"agentide.pack.update",title:"Update Agent from User Library",category:"Agent Hippo"},{command:"agentide.pack.duplicate",title:"Duplicate Agent",category:"Agent Hippo"},{command:"agentide.pack.refresh",title:"Refresh Agent Packs",category:"Agent Hippo"},{command:"agentide.pack.resetDefault",title:"Reset Default Agent",category:"Agent Hippo"},{command:"agentide.gateway.connect",title:"Connect to Gateway",category:"Agent Hippo"},{command:"agentide.gateway.disconnect",title:"Disconnect from Gateway",category:"Agent Hippo"},{command:"agentide.gateway.toggle",title:"Toggle Gateway Connection",category:"Agent Hippo"},{command:"agentide.gateway.status",title:"Show Gateway Status",category:"Agent Hippo"},{command:"agentide.gateway.connectSession",title:"Connect Chat to Gateway",category:"Agent Hippo"},{command:"agentide.gateway.listSessions",title:"Show Connected Gateway Sessions",category:"Agent Hippo"},{command:"agentide.gateway.resetMappings",title:"Reset Agent Mappings (Gateway)",category:"Agent Hippo"},{command:"agentide.anywhere.toggle",title:"Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.install",title:"Install Agent Anywhere (Gateway)",category:"Agent Hippo"},{command:"agentide.anywhere.uninstall",title:"Uninstall Agent Anywhere (OpenClaw CLI)",category:"Agent Hippo"},{command:"agentide.anywhere.start",title:"Start Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.stop",title:"Stop Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.status",title:"Agent Anywhere Status",category:"Agent Hippo"},{command:"agentide.anywhere.connect",title:"Connect Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.disconnect",title:"Disconnect Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.openConfig",title:"Open Agent Anywhere Config",category:"Agent Hippo"},{command:"agentide.anywhere.openWebUI",title:"Open Agent Anywhere Web UI",category:"Agent Hippo"},{command:"agentide.anywhere.detect",title:"Detect Agent Anywhere Gateway",category:"Agent Hippo"},{command:"agentide.anywhere.meetAgent",title:"Meet Agent Anywhere...",category:"Agent Hippo"},{command:"agentide.setupCli",title:"Setup AgentHippo CLI",category:"Agent Hippo"},{command:"agentide.cli.status",title:"AgentHippo CLI Status",category:"Agent Hippo"},{command:"agentide.installBundledTools",title:"Install Bundled Tools (rg, sg, tree-sitter)",category:"Agent Hippo"},{command:"agentide.setupAnalytics",title:"Install Spotlight (OTEL + DuckDB)",category:"Agent Hippo"},{command:"agentide.analytics.toggle",title:"Manage Spotlight",category:"Agent Hippo"},{command:"agentide.analytics.start",title:"Start Spotlight (OTEL + LiteLLM)",category:"Agent Hippo"},{command:"agentide.analytics.stop",title:"Stop Spotlight (OTEL + LiteLLM)",category:"Agent Hippo"},{command:"agentide.analytics.status",title:"Show Spotlight Status",category:"Agent Hippo"},{command:"agentide.analytics.query",title:"Query Spotlight (Cost, Sessions)",category:"Agent Hippo"},{command:"agentide.analytics.openDashboard",title:"Open Spotlight Dashboard",category:"Agent Hippo"},{command:"agentide.fleet.open",title:"Open Agent Team",category:"Agent Hippo"},{command:"agentide.analytics.clearArtifacts",title:"Clear Spotlight Artifacts",category:"Agent Hippo"},{command:"agentide.analytics.regenerateDefaults",title:"Regenerate Default Charts",category:"Agent Hippo"}],menus:{ChatModePicker:[{command:"agentide.anywhere.meetAgent",group:"navigation@30",when:"agentide.anywhere.enabled && !agentide.anywhere.hidden",icon:"$(broadcast)"}]},viewsContainers:{activitybar:[{id:"agentide-analytics",title:"Agent Hippo",icon:"$(graph)"},{id:"agentide-team",title:"Agent Team",icon:"$(organization)"}]},views:{"agentide-analytics":[{type:"webview",id:"agentide.analyticsView",name:"Spotlight"}],"agentide-team":[{type:"webview",id:"agentide.teamView",name:"Agent Team"}]},configuration:{title:"Agent Hippo",properties:{"agentide.permissions.fileAccess":{type:"string",scope:"application",enum:["read-only","workspace-write","full"],default:"full",markdownDescription:"Filesystem access scope (applies to all engines).\n- `read-only`: Read/search only (no file writes)\n- `workspace-write`: Read/write within workspace folders only\n- `full`: Full filesystem access (yolo, default)\n\n**Security**: Agent manifest permissions take precedence - user cannot override stricter pack permissions."},"agentide.claude.maxThinkingTokens":{type:"number",default:1024,description:"Claude extended thinking budget (tokens). Set to 0 to disable. Requires a compatible model; Anthropic requires >=1024 for extended thinking."},"agentide.claude.cheapModel":{type:"string",default:"",description:"Optional cheap Claude model for subagents/background routing (for example, claude-haiku-4-5-20251001). Main model selection still comes from the model picker."},"agentide.sessions.retentionDays":{type:"number",default:7,minimum:1,maximum:365,description:"Number of days to retain session logs before cleanup. Cleanup runs on startup (best-effort) and via the 'Agent Hippo: Cleanup Old Session Logs' command."},"agentide.fallbackDirectory":{type:"string",scope:"machine",default:".agent-hippo",description:"Directory name (relative to home) used as workspace when no folder is open. Default: ~/.agent-hippo"},"agentide.additionalEngineDir":{type:"string",scope:"machine",default:"",description:"Additional directories to scan for custom engines. Machine-scoped: engines discovered here are executed, so a workspace must not be able to point this at attacker-controlled code."},"agentide.auth.baseUrl":{type:"string",scope:"application",default:"https://auth.agenthippo.ai",markdownDescription:"AgentHippo auth broker base URL for team sign-in and bootstrap (`agenthippo.signIn`).\n\n**Application-scoped on purpose**: this endpoint receives your PKCE authorization code and your AgentHippo access token, and its `/api/ide/bootstrap` response is written into your model-routing settings. A workspace must never be able to redirect it. Must be `https://` (plain `http://` is accepted only for loopback dev hosts)."},"agentide.cli.path":{type:"string",scope:"machine",default:"",description:"Optional absolute path to the AgentHippo CLI binary. If unset, Agent Hippo auto-detects a bundled binary or falls back to PATH. Machine-scoped: this path is executed."},"agentide.cli.installSource":{type:"string",scope:"machine",default:"",description:"Optional setup source for AgentHippo CLI. Supports HTTPS URL to a prebuilt binary, or local file path. If empty, setup builds from the local repository. Machine-scoped: this source is downloaded and executed."},"agentide.storeRepo":{type:"string",scope:"application",default:"agenthippoai/agenthippo-store",markdownDescription:"GitHub repository for pack store (owner/repo format).\n\nDefault: `agenthippoai/agenthippo-store` ([github.com/agenthippoai/agenthippo-store](https://github.com/agenthippoai/agenthippo-store))\n\nSet to your own repo (e.g., `mycompany/our-packs`) to use a private or custom store."},"agentide.store.indexUrl":{type:"string",scope:"application",default:"https://agenthippoai.github.io/agenthippo-store",markdownDescription:`Base URL for the store index (Orama + metadata are loaded from paths under this URL).
420
+ - `)}`)}function VP(){return{engine:(Go("AGENTHIPPO_DEFAULT_ENGINE","AGENTIDE_DEFAULT_ENGINE")||"claude").trim().toLowerCase(),model:Go("AGENTHIPPO_DEFAULT_MODEL","AGENTIDE_DEFAULT_MODEL")||"claude-sonnet-4-5-20250929"}}function WP(){return Go("AGENTHIPPO_DEFAULT_MODEL","AGENTIDE_DEFAULT_MODEL")?.trim()||void 0}function Pm(){let t=Go("AGENTHIPPO_LITELLM_API_KEY","AGENTIDE_LITELLM_API_KEY"),e=Go("AGENTHIPPO_LITELLM_BASE_URL","AGENTIDE_LITELLM_BASE_URL"),n=process.env.ANTHROPIC_API_KEY||process.env.CLAUDE_API_KEY,r=process.env.OPENAI_API_KEY;return{apiKey:t||n||r,baseUrl:e,useLiteLLM:!!e,litellmApiKey:t,openaiApiKey:r,anthropicApiKey:n}}function KP(t,e=Pm()){if(e.useLiteLLM)return!0;let n=t.trim().toLowerCase();return n==="claude"?!!e.anthropicApiKey:n==="codex"?!!e.openaiApiKey:!0}function qP(t){return t?.manifest.spec.permissions?.fileAccess??"workspace-write"}});var Oc=T((fj,YP)=>{YP.exports={name:"agenthippo",displayName:"Agent Hippo",description:"Agent Hippo - The easiest way to build and test your AI agents",version:"1.110.29",agenthippo:{litellmImageTag:"0.2.16",hippoclawNpm:"@agenthippo-ai/hippoclaw@2026.7.28"},publisher:"agenthippo",private:!0,engines:{vscode:"^1.93.0"},enabledApiProposals:["chatParticipantAdditions","chatParticipantPrivate","languageModelThinkingPart"],activationEvents:["onStartupFinished","onCommand:agentide.customEngine.list","onCommand:agentide.engine.install","onCommand:agentide.engine.uninstall","onChatParticipant:agentide.claude","onChatParticipant:agentide.codex"],main:"./out/extension.js",contributes:{authentication:[{id:"agenthippo",label:"AgentHippo"}],chatParticipants:[{id:"agentide.claude",name:"claude",fullName:"Claude Agent",description:"AI coding agent powered by Anthropic's Claude Agent SDK",isSticky:!1},{id:"agentide.codex",name:"codex",fullName:"Codex Agent",description:"AI coding agent powered by OpenAI's Codex SDK",isSticky:!1}],mcpServerDefinitionProviders:[{id:"bundled-mcp-servers",label:"Agent Hippo Bundled MCP Servers"}],commands:[{command:"agentide.skills.syncRemote",title:"Sync Remote Skills",category:"Agent Hippo"},{command:"agentide.clearManagedResources",title:"Clear Managed Resources",category:"Agent Hippo"},{command:"agentide.showManagedResources",title:"Show Managed Resources",category:"Agent Hippo"},{command:"agentide.cleanupSessionLogs",title:"Cleanup Old Session Logs",category:"Agent Hippo"},{command:"agentide.pack.install",title:"Install Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.list",title:"List Installed Packs",category:"Agent Hippo"},{command:"agentide.customEngine.list",title:"List Custom Engines",category:"Agent Hippo"},{command:"agentide.pack.uninstall",title:"Uninstall Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.getActive",title:"Get Active Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.create",title:"Create Agent Pack",category:"Agent Hippo"},{command:"agentide.pack.share",title:"Share Agent to User Library",category:"Agent Hippo"},{command:"agentide.pack.publish",title:"Publish Agent to Store",category:"Agent Hippo"},{command:"agentide.skill.share",title:"Save Skill to User Library",category:"Agent Hippo"},{command:"agentide.skill.publish",title:"Publish Skill to Store",category:"Agent Hippo"},{command:"agentide.mcp.share",title:"Save MCP Server to User Library",category:"Agent Hippo"},{command:"agentide.mcp.publish",title:"Publish MCP Server to Store",category:"Agent Hippo"},{command:"agenthippo.signIn",title:"Sign In to AgentHippo",category:"Agent Hippo"},{command:"agenthippo.signOut",title:"Sign Out of AgentHippo",category:"Agent Hippo"},{command:"agentide.store.find",title:"Install Packs, Skills, MCP Tools, Engines, Spotlight Views",category:"Agent Hippo"},{command:"agentide.engine.install",title:"Install Custom Engine",category:"Agent Hippo"},{command:"agentide.engine.uninstall",title:"Uninstall Custom Engine",category:"Agent Hippo"},{command:"agentide.engine.publish",title:"Publish Engine to Store",category:"Agent Hippo"},{command:"agentide.spotlight.publish",title:"Publish Spotlight View to Store (Full Bundle)",category:"Agent Hippo"},{command:"agentide.view.install",title:"Install Spotlight View",category:"Agent Hippo"},{command:"agentide.store.sync",title:"Sync Store Index",category:"Agent Hippo"},{command:"agentide.store.setup",title:"Setup Store Index Automation",category:"Agent Hippo"},{command:"agentide.pack.browseLibrary",title:"Browse User Library",category:"Agent Hippo"},{command:"agentide.pack.update",title:"Update Agent from User Library",category:"Agent Hippo"},{command:"agentide.pack.duplicate",title:"Duplicate Agent",category:"Agent Hippo"},{command:"agentide.pack.refresh",title:"Refresh Agent Packs",category:"Agent Hippo"},{command:"agentide.pack.resetDefault",title:"Reset Default Agent",category:"Agent Hippo"},{command:"agentide.gateway.connect",title:"Connect to Gateway",category:"Agent Hippo"},{command:"agentide.gateway.disconnect",title:"Disconnect from Gateway",category:"Agent Hippo"},{command:"agentide.gateway.toggle",title:"Toggle Gateway Connection",category:"Agent Hippo"},{command:"agentide.gateway.status",title:"Show Gateway Status",category:"Agent Hippo"},{command:"agentide.gateway.connectSession",title:"Connect Chat to Gateway",category:"Agent Hippo"},{command:"agentide.gateway.listSessions",title:"Show Connected Gateway Sessions",category:"Agent Hippo"},{command:"agentide.gateway.resetMappings",title:"Reset Agent Mappings (Gateway)",category:"Agent Hippo"},{command:"agentide.anywhere.toggle",title:"Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.install",title:"Install Agent Anywhere (Gateway)",category:"Agent Hippo"},{command:"agentide.anywhere.uninstall",title:"Uninstall Agent Anywhere (OpenClaw CLI)",category:"Agent Hippo"},{command:"agentide.anywhere.start",title:"Start Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.stop",title:"Stop Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.status",title:"Agent Anywhere Status",category:"Agent Hippo"},{command:"agentide.anywhere.connect",title:"Connect Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.disconnect",title:"Disconnect Agent Anywhere",category:"Agent Hippo"},{command:"agentide.anywhere.openConfig",title:"Open Agent Anywhere Config",category:"Agent Hippo"},{command:"agentide.anywhere.openWebUI",title:"Open Agent Anywhere Web UI",category:"Agent Hippo"},{command:"agentide.anywhere.detect",title:"Detect Agent Anywhere Gateway",category:"Agent Hippo"},{command:"agentide.anywhere.meetAgent",title:"Meet Agent Anywhere...",category:"Agent Hippo"},{command:"agentide.setupCli",title:"Setup AgentHippo CLI",category:"Agent Hippo"},{command:"agentide.cli.status",title:"AgentHippo CLI Status",category:"Agent Hippo"},{command:"agentide.installBundledTools",title:"Install Bundled Tools (rg, sg, tree-sitter)",category:"Agent Hippo"},{command:"agentide.setupAnalytics",title:"Install Spotlight (OTEL + DuckDB)",category:"Agent Hippo"},{command:"agentide.analytics.toggle",title:"Manage Spotlight",category:"Agent Hippo"},{command:"agentide.analytics.start",title:"Start Spotlight (OTEL + LiteLLM)",category:"Agent Hippo"},{command:"agentide.analytics.stop",title:"Stop Spotlight (OTEL + LiteLLM)",category:"Agent Hippo"},{command:"agentide.analytics.status",title:"Show Spotlight Status",category:"Agent Hippo"},{command:"agentide.analytics.query",title:"Query Spotlight (Cost, Sessions)",category:"Agent Hippo"},{command:"agentide.analytics.openDashboard",title:"Open Spotlight Dashboard",category:"Agent Hippo"},{command:"agentide.fleet.open",title:"Open Agent Team",category:"Agent Hippo"},{command:"agentide.analytics.clearArtifacts",title:"Clear Spotlight Artifacts",category:"Agent Hippo"},{command:"agentide.analytics.regenerateDefaults",title:"Regenerate Default Charts",category:"Agent Hippo"}],menus:{ChatModePicker:[{command:"agentide.anywhere.meetAgent",group:"navigation@30",when:"agentide.anywhere.enabled && !agentide.anywhere.hidden",icon:"$(broadcast)"}]},viewsContainers:{activitybar:[{id:"agentide-analytics",title:"Agent Hippo",icon:"$(graph)"},{id:"agentide-team",title:"Agent Team",icon:"$(organization)"}]},views:{"agentide-analytics":[{type:"webview",id:"agentide.analyticsView",name:"Spotlight"}],"agentide-team":[{type:"webview",id:"agentide.teamView",name:"Agent Team"}]},configuration:{title:"Agent Hippo",properties:{"agentide.permissions.fileAccess":{type:"string",scope:"application",enum:["read-only","workspace-write","full"],default:"full",markdownDescription:"Filesystem access scope (applies to all engines).\n- `read-only`: Read/search only (no file writes)\n- `workspace-write`: Read/write within workspace folders only\n- `full`: Full filesystem access (yolo, default)\n\n**Security**: Agent manifest permissions take precedence - user cannot override stricter pack permissions."},"agentide.claude.maxThinkingTokens":{type:"number",default:1024,description:"Claude extended thinking budget (tokens). Set to 0 to disable. Requires a compatible model; Anthropic requires >=1024 for extended thinking."},"agentide.claude.cheapModel":{type:"string",default:"",description:"Optional cheap Claude model for subagents/background routing (for example, claude-haiku-4-5-20251001). Main model selection still comes from the model picker."},"agentide.sessions.retentionDays":{type:"number",default:7,minimum:1,maximum:365,description:"Number of days to retain session logs before cleanup. Cleanup runs on startup (best-effort) and via the 'Agent Hippo: Cleanup Old Session Logs' command."},"agentide.fallbackDirectory":{type:"string",scope:"machine",default:".agent-hippo",description:"Directory name (relative to home) used as workspace when no folder is open. Default: ~/.agent-hippo"},"agentide.additionalEngineDir":{type:"string",scope:"machine",default:"",description:"Additional directories to scan for custom engines. Machine-scoped: engines discovered here are executed, so a workspace must not be able to point this at attacker-controlled code."},"agentide.auth.baseUrl":{type:"string",scope:"application",default:"https://auth.agenthippo.ai",markdownDescription:"AgentHippo auth broker base URL for team sign-in and bootstrap (`agenthippo.signIn`).\n\n**Application-scoped on purpose**: this endpoint receives your PKCE authorization code and your AgentHippo access token, and its `/api/ide/bootstrap` response is written into your model-routing settings. A workspace must never be able to redirect it. Must be `https://` (plain `http://` is accepted only for loopback dev hosts)."},"agentide.cli.path":{type:"string",scope:"machine",default:"",description:"Optional absolute path to the AgentHippo CLI binary. If unset, Agent Hippo auto-detects a bundled binary or falls back to PATH. Machine-scoped: this path is executed."},"agentide.cli.installSource":{type:"string",scope:"machine",default:"",description:"Optional setup source for AgentHippo CLI. Supports HTTPS URL to a prebuilt binary, or local file path. If empty, setup builds from the local repository. Machine-scoped: this source is downloaded and executed."},"agentide.storeRepo":{type:"string",scope:"application",default:"agenthippoai/agenthippo-store",markdownDescription:"GitHub repository for pack store (owner/repo format).\n\nDefault: `agenthippoai/agenthippo-store` ([github.com/agenthippoai/agenthippo-store](https://github.com/agenthippoai/agenthippo-store))\n\nSet to your own repo (e.g., `mycompany/our-packs`) to use a private or custom store."},"agentide.store.indexUrl":{type:"string",scope:"application",default:"https://agenthippoai.github.io/agenthippo-store",markdownDescription:`Base URL for the store index (Orama + metadata are loaded from paths under this URL).
421
421
 
422
422
  Default: \`https://agenthippoai.github.io/agenthippo-store\`
423
423
 
@@ -451,7 +451,7 @@ When enabled, JSONL trace files are incrementally converted to an indexed DuckDB
451
451
 
452
452
  **Application-scoped on purpose**: this host receives your Anthropic key and your prompts.`},"agentide.AgentHippoModelGateway.url":{type:"string",scope:"application",default:"",markdownDescription:"AgentHippo managed model gateway base URL (default `https://gateway.agenthippo.ai/v1`).\n\n**Application-scoped on purpose**: this host receives your AgentHippo sign-in JWT and your prompts."},"agentide.skills.remote.enabled":{type:"boolean",scope:"application",default:!1,description:"Sync skills from a remote skill registry into the default agent."},"agentide.skills.remote.registryUrl":{type:"string",scope:"application",default:"",markdownDescription:`Remote skill registry base URL.
453
453
 
454
- **Application-scoped on purpose**: skills fetched from here become agent instructions and tool definitions on this machine, so this is an install source.`},"agentide.skills.remote.syncOnStartup":{type:"boolean",scope:"application",default:!0,description:"Sync remote skills on extension startup (requires agentide.skills.remote.enabled)."},"agentide.skills.remote.allowOverwriteLocal":{type:"boolean",scope:"application",default:!1,description:"Allow remote skills to overwrite locally-authored skill files of the same name."},"agentide.skills.remote.timeoutMs":{type:"number",scope:"application",default:8e3,minimum:500,maximum:12e4,description:"Timeout (milliseconds) for remote skill registry requests."}}}},capabilities:{untrustedWorkspaces:{supported:"limited",description:"Agent Hippo runs AI agents that read your code, spawn processes, and send prompts to remote model endpoints. In an untrusted workspace the security-relevant settings below are ignored in favour of your user/application values, and remote agent packs (`spec.remote.url`) will not receive your AgentHippo access token without an explicit per-host approval.",restrictedConfigurations:["agentide.auth.baseUrl","agentide.storeRepo","agentide.store.indexUrl","agentide.anywhere.installSource","agentide.anywhere.enabled","agentide.anywhere.autoStart","agentide.anywhere.autoConnect","agentide.anywhere.port","agentide.anywhere.hidden","agentide.cli.path","agentide.cli.installSource","agentide.additionalEngineDir","agentide.fallbackDirectory","agentide.permissions.fileAccess","agentide.gateway.url","agentide.gateway.token","agentide.gateway.autoConnect","agentide.gateway.autoRegister","agentide.gateway.agents","agentide.providers.litellm.baseUrl","agentide.providers.anthropic.baseUrl","agentide.AgentHippoModelGateway.url","agentide.skills.remote.enabled","agentide.skills.remote.registryUrl","agentide.skills.remote.syncOnStartup","agentide.skills.remote.allowOverwriteLocal","agentide.analytics.fleetSources","agentide.analytics.fleetScriptSources","agentide.analytics.defaultDashboardPrompt","agentide.analytics.duckdb.tempDirectory"]}},dependencies:{"@agenthippo-ai/evidence-ship":"0.2.4","@anthropic-ai/claude-agent-sdk":"0.3.257","@anthropic-ai/sdk":"0.123.0","@cfworker/json-schema":"^4.1.1","@mariozechner/pi-ai":"0.54.0","@modelcontextprotocol/sdk":"^1.30.0","@openai/codex":"0.147.0","@openai/codex-sdk":"0.147.0","@orama/orama":"^3.1.6",commander:"^14.0.2",hono:"^4.11.5","js-yaml":"^4.1.1",zod:"^4.3.6"},devDependencies:{"@types/js-yaml":"^4.0.9","@types/mocha":"^10.0.10","@types/node":"^25.x"},scripts:{postinstall:"node ./scripts/vendor-tools.mjs --skip-if-present || true",compile:"node ../../node_modules/typescript/bin/tsc -p ./ && node ./scripts/generate-embedded-custom-engine-runner.mjs && node ./scripts/copy-compile-assets.mjs",watch:"node ../../node_modules/typescript/bin/tsc -watch -p ./",test:"node ../../node_modules/mocha/bin/mocha","test:serve-load":"bash ../../scripts/load/run-serve-load.sh","test:serve-load:full":"bash ../../scripts/load/run-serve-load.sh --full",cli:"node out/cli/index.js","build:tools":"node ./scripts/vendor-tools.mjs --clean","build:cli":"./scripts/build-cli.sh","build:cli:macos-arm64":"./scripts/build-cli.sh --target bun-darwin-arm64 --outfile dist/agenthippo-macos-arm64","build:cli:macos-x64":"./scripts/build-cli.sh --target bun-darwin-x64 --outfile dist/agenthippo-macos-x64","build:cli:linux-x64":"./scripts/build-cli.sh --target bun-linux-x64 --outfile dist/agenthippo-linux-x64","build:cli:linux-arm64":"./scripts/build-cli.sh --target bun-linux-arm64 --outfile dist/agenthippo-linux-arm64"}}});var hi=T(pt=>{"use strict";var XP=pt&&pt.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),JP=pt&&pt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),od=pt&&pt.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&XP(n,e,r[s]);return JP(n,e),n}})();Object.defineProperty(pt,"__esModule",{value:!0});pt.getDepsDir=Ki;pt.resolveFromOwnDeps=Cm;pt.getClaudeAgentSdkPlatformPackageName=tN;pt.resolveClaudeCodeExecutablePath=Nc;pt.resolveClaudeCodeFromOwnDeps=$m;pt.getUnsupportedClaudePlatformHint=rN;pt.areDepsInstalled=Dm;pt.installDeps=Lm;pt.isAutoInstallDisabled=Mm;pt.ensureDeps=sN;pt.getClaudeSdkCliPath=iN;pt.getCodexSdkBinaryPath=oN;pt.installedEngineVersion=cN;var nn=od(require("fs")),zP=od(require("os")),Ze=od(require("path")),Nm=require("child_process"),Gr=Rn(),Pc=Je();function QP(){let e=(()=>{try{return Oc()}catch{return}})()?.dependencies??{};return{"@anthropic-ai/claude-agent-sdk":e["@anthropic-ai/claude-agent-sdk"]??"0.3.227","@openai/codex":e["@openai/codex"]??"0.147.0","@openai/codex-sdk":e["@openai/codex-sdk"]??"0.147.0"}}var Rm=QP();function Ki(){let t=Ze.dirname(process.execPath),e=Ze.join(t,Pc.AGENTIDE_DEPS_DIR_NAME);if(nn.existsSync(e))return e;try{return nn.accessSync(t,nn.constants.W_OK),e}catch{return Ze.join(zP.homedir(),Pc.AGENTIDE_DIR_NAME,Pc.AGENTIDE_DEPS_DIR_NAME)}}function Cm(t,e){let n=__dirname;for(let r=0;r<8;r++){let s=Ze.join(n,"node_modules",...t.split("/"),...e.split("/"));try{if(nn.existsSync(s))return s}catch{}let i=Ze.dirname(n);if(i===n)break;n=i}}function Wi(t){try{return nn.existsSync(t)}catch{return!1}}function id(t,e){if(e==="x64")return t==="musl"?"/lib/ld-musl-x86_64.so.1":"/lib64/ld-linux-x86-64.so.2";if(e==="arm64")return t==="musl"?"/lib/ld-musl-aarch64.so.1":"/lib/ld-linux-aarch64.so.1"}function km(t,e){return t===process.platform&&e===process.arch}var Ic;function ZP(){return Ic||(Ic=(()=>{try{let s=process.report?.getReport?.();if((typeof s=="object"&&s?s.header:void 0)?.glibcVersionRuntime)return"glibc"}catch{}let t=id("glibc",process.arch),e=id("musl",process.arch),n=t?Wi(t):!1,r=e?Wi(e):!1;if(r&&!n)return"musl";if(n&&!r)return"glibc";if(Wi("/etc/alpine-release"))return"musl";try{if(/musl/i.test((0,Nm.execSync)("ldd --version 2>&1 || true",{encoding:"utf8"})))return"musl"}catch{}return"glibc"})(),Ic)}function eN(t,e){return km(t,e)?n=>{let r=id(n,e);return r?Wi(r):!1}:()=>!0}function ad(t={}){let e=t.platform??process.platform,n=t.arch??process.arch,r=n==="arm64"?"arm64":n==="x64"?"x64":void 0;if(!r)return[];if(e==="darwin")return[{name:`@anthropic-ai/claude-agent-sdk-darwin-${r}`}];if(e==="win32")return[{name:`@anthropic-ai/claude-agent-sdk-win32-${r}`}];if(e==="linux"){let s=t.libc??(km(e,n)?ZP():"glibc"),i=s==="musl"?"glibc":"musl",o=a=>({name:`@anthropic-ai/claude-agent-sdk-linux-${r}${a==="musl"?"-musl":""}`,libc:a});return[o(s),o(i)]}return[]}function tN(t={}){return ad(t)[0]?.name}function nN(t=process.platform){return t==="win32"?"claude.exe":"claude"}function Nc(t,e={}){let n=e.platform??process.platform,r=e.arch??process.arch,s=e.hasLoader??eN(n,r),i=nN(n),o;for(let{name:c,libc:l}of ad(e)){let d=Ze.join(t,...c.split("/"),i);if(Wi(d)){if(l&&!s(l)){o??=d;continue}return d}}let a=Ze.join(t,"@anthropic-ai","claude-agent-sdk","cli.js");return Wi(a)?a:o}function $m(){let t=__dirname;for(let e=0;e<8;e++){let n=Ze.join(t,"node_modules"),r=Nc(n);if(r)return r;let s=Ze.dirname(t);if(s===t)break;t=s}}function rN(t={}){if(ad(t).length>0)return;let e=t.platform??process.platform,n=t.arch??process.arch;return`@anthropic-ai/claude-agent-sdk ships no prebuilt Claude Code binary for ${e}-${n}.`}function Dm(){let t=Ki(),e=Ze.join(t,"node_modules"),n=Ze.join(t,"package.json");try{if(!nn.existsSync(n))return!1;let o=nn.readFileSync(n,"utf8"),c=JSON.parse(o).dependencies??{};for(let[l,d]of Object.entries(Rm))if(c[l]!==d)return!1}catch{return!1}let r=Nc(e),s=Ze.join(e,"@openai","codex","bin","codex.js"),i=Ze.join(e,"@openai","codex-sdk","package.json");return!!r&&nn.existsSync(s)&&nn.existsSync(i)}async function Lm(t=!1){let e=Ki();console.log(`${Gr.COLORS.cyan}Installing engine dependencies...${Gr.COLORS.reset}`),t&&console.log(` Directory: ${e}`),nn.mkdirSync(e,{recursive:!0});let n={name:Pc.AGENTIDE_DEPS_PACKAGE_NAME,version:"1.0.0",private:!0,dependencies:Rm};nn.writeFileSync(Ze.join(e,"package.json"),JSON.stringify(n,null,2)+`
454
+ **Application-scoped on purpose**: skills fetched from here become agent instructions and tool definitions on this machine, so this is an install source.`},"agentide.skills.remote.syncOnStartup":{type:"boolean",scope:"application",default:!0,description:"Sync remote skills on extension startup (requires agentide.skills.remote.enabled)."},"agentide.skills.remote.allowOverwriteLocal":{type:"boolean",scope:"application",default:!1,description:"Allow remote skills to overwrite locally-authored skill files of the same name."},"agentide.skills.remote.timeoutMs":{type:"number",scope:"application",default:8e3,minimum:500,maximum:12e4,description:"Timeout (milliseconds) for remote skill registry requests."}}}},capabilities:{untrustedWorkspaces:{supported:"limited",description:"Agent Hippo runs AI agents that read your code, spawn processes, and send prompts to remote model endpoints. In an untrusted workspace the security-relevant settings below are ignored in favour of your user/application values, and remote agent packs (`spec.remote.url`) will not receive your AgentHippo access token without an explicit per-host approval.",restrictedConfigurations:["agentide.auth.baseUrl","agentide.storeRepo","agentide.store.indexUrl","agentide.anywhere.installSource","agentide.anywhere.enabled","agentide.anywhere.autoStart","agentide.anywhere.autoConnect","agentide.anywhere.port","agentide.anywhere.hidden","agentide.cli.path","agentide.cli.installSource","agentide.additionalEngineDir","agentide.fallbackDirectory","agentide.permissions.fileAccess","agentide.gateway.url","agentide.gateway.token","agentide.gateway.autoConnect","agentide.gateway.autoRegister","agentide.gateway.agents","agentide.providers.litellm.baseUrl","agentide.providers.anthropic.baseUrl","agentide.AgentHippoModelGateway.url","agentide.skills.remote.enabled","agentide.skills.remote.registryUrl","agentide.skills.remote.syncOnStartup","agentide.skills.remote.allowOverwriteLocal","agentide.analytics.fleetSources","agentide.analytics.fleetScriptSources","agentide.analytics.defaultDashboardPrompt","agentide.analytics.duckdb.tempDirectory"]}},dependencies:{"@agenthippo-ai/evidence-ship":"0.2.4","@anthropic-ai/claude-agent-sdk":"0.3.258","@anthropic-ai/sdk":"0.123.0","@cfworker/json-schema":"^4.1.1","@mariozechner/pi-ai":"0.54.0","@modelcontextprotocol/sdk":"^1.30.0","@openai/codex":"0.147.0","@openai/codex-sdk":"0.147.0","@orama/orama":"^3.1.6",commander:"^14.0.2",hono:"^4.11.5","js-yaml":"^4.1.1",zod:"^4.3.6"},devDependencies:{"@types/js-yaml":"^4.0.9","@types/mocha":"^10.0.10","@types/node":"^25.x"},scripts:{postinstall:"node ./scripts/vendor-tools.mjs --skip-if-present || true",compile:"node ../../node_modules/typescript/bin/tsc -p ./ && node ./scripts/generate-embedded-custom-engine-runner.mjs && node ./scripts/copy-compile-assets.mjs",watch:"node ../../node_modules/typescript/bin/tsc -watch -p ./",test:"node ../../node_modules/mocha/bin/mocha","test:serve-load":"bash ../../scripts/load/run-serve-load.sh","test:serve-load:full":"bash ../../scripts/load/run-serve-load.sh --full",cli:"node out/cli/index.js","build:tools":"node ./scripts/vendor-tools.mjs --clean","build:cli":"./scripts/build-cli.sh","build:cli:macos-arm64":"./scripts/build-cli.sh --target bun-darwin-arm64 --outfile dist/agenthippo-macos-arm64","build:cli:macos-x64":"./scripts/build-cli.sh --target bun-darwin-x64 --outfile dist/agenthippo-macos-x64","build:cli:linux-x64":"./scripts/build-cli.sh --target bun-linux-x64 --outfile dist/agenthippo-linux-x64","build:cli:linux-arm64":"./scripts/build-cli.sh --target bun-linux-arm64 --outfile dist/agenthippo-linux-arm64"}}});var hi=T(pt=>{"use strict";var XP=pt&&pt.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),JP=pt&&pt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),od=pt&&pt.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&XP(n,e,r[s]);return JP(n,e),n}})();Object.defineProperty(pt,"__esModule",{value:!0});pt.getDepsDir=Ki;pt.resolveFromOwnDeps=Cm;pt.getClaudeAgentSdkPlatformPackageName=tN;pt.resolveClaudeCodeExecutablePath=Nc;pt.resolveClaudeCodeFromOwnDeps=$m;pt.getUnsupportedClaudePlatformHint=rN;pt.areDepsInstalled=Dm;pt.installDeps=Lm;pt.isAutoInstallDisabled=Mm;pt.ensureDeps=sN;pt.getClaudeSdkCliPath=iN;pt.getCodexSdkBinaryPath=oN;pt.installedEngineVersion=cN;var nn=od(require("fs")),zP=od(require("os")),Ze=od(require("path")),Nm=require("child_process"),Gr=Rn(),Pc=Je();function QP(){let e=(()=>{try{return Oc()}catch{return}})()?.dependencies??{};return{"@anthropic-ai/claude-agent-sdk":e["@anthropic-ai/claude-agent-sdk"]??"0.3.227","@openai/codex":e["@openai/codex"]??"0.147.0","@openai/codex-sdk":e["@openai/codex-sdk"]??"0.147.0"}}var Rm=QP();function Ki(){let t=Ze.dirname(process.execPath),e=Ze.join(t,Pc.AGENTIDE_DEPS_DIR_NAME);if(nn.existsSync(e))return e;try{return nn.accessSync(t,nn.constants.W_OK),e}catch{return Ze.join(zP.homedir(),Pc.AGENTIDE_DIR_NAME,Pc.AGENTIDE_DEPS_DIR_NAME)}}function Cm(t,e){let n=__dirname;for(let r=0;r<8;r++){let s=Ze.join(n,"node_modules",...t.split("/"),...e.split("/"));try{if(nn.existsSync(s))return s}catch{}let i=Ze.dirname(n);if(i===n)break;n=i}}function Wi(t){try{return nn.existsSync(t)}catch{return!1}}function id(t,e){if(e==="x64")return t==="musl"?"/lib/ld-musl-x86_64.so.1":"/lib64/ld-linux-x86-64.so.2";if(e==="arm64")return t==="musl"?"/lib/ld-musl-aarch64.so.1":"/lib/ld-linux-aarch64.so.1"}function km(t,e){return t===process.platform&&e===process.arch}var Ic;function ZP(){return Ic||(Ic=(()=>{try{let s=process.report?.getReport?.();if((typeof s=="object"&&s?s.header:void 0)?.glibcVersionRuntime)return"glibc"}catch{}let t=id("glibc",process.arch),e=id("musl",process.arch),n=t?Wi(t):!1,r=e?Wi(e):!1;if(r&&!n)return"musl";if(n&&!r)return"glibc";if(Wi("/etc/alpine-release"))return"musl";try{if(/musl/i.test((0,Nm.execSync)("ldd --version 2>&1 || true",{encoding:"utf8"})))return"musl"}catch{}return"glibc"})(),Ic)}function eN(t,e){return km(t,e)?n=>{let r=id(n,e);return r?Wi(r):!1}:()=>!0}function ad(t={}){let e=t.platform??process.platform,n=t.arch??process.arch,r=n==="arm64"?"arm64":n==="x64"?"x64":void 0;if(!r)return[];if(e==="darwin")return[{name:`@anthropic-ai/claude-agent-sdk-darwin-${r}`}];if(e==="win32")return[{name:`@anthropic-ai/claude-agent-sdk-win32-${r}`}];if(e==="linux"){let s=t.libc??(km(e,n)?ZP():"glibc"),i=s==="musl"?"glibc":"musl",o=a=>({name:`@anthropic-ai/claude-agent-sdk-linux-${r}${a==="musl"?"-musl":""}`,libc:a});return[o(s),o(i)]}return[]}function tN(t={}){return ad(t)[0]?.name}function nN(t=process.platform){return t==="win32"?"claude.exe":"claude"}function Nc(t,e={}){let n=e.platform??process.platform,r=e.arch??process.arch,s=e.hasLoader??eN(n,r),i=nN(n),o;for(let{name:c,libc:l}of ad(e)){let d=Ze.join(t,...c.split("/"),i);if(Wi(d)){if(l&&!s(l)){o??=d;continue}return d}}let a=Ze.join(t,"@anthropic-ai","claude-agent-sdk","cli.js");return Wi(a)?a:o}function $m(){let t=__dirname;for(let e=0;e<8;e++){let n=Ze.join(t,"node_modules"),r=Nc(n);if(r)return r;let s=Ze.dirname(t);if(s===t)break;t=s}}function rN(t={}){if(ad(t).length>0)return;let e=t.platform??process.platform,n=t.arch??process.arch;return`@anthropic-ai/claude-agent-sdk ships no prebuilt Claude Code binary for ${e}-${n}.`}function Dm(){let t=Ki(),e=Ze.join(t,"node_modules"),n=Ze.join(t,"package.json");try{if(!nn.existsSync(n))return!1;let o=nn.readFileSync(n,"utf8"),c=JSON.parse(o).dependencies??{};for(let[l,d]of Object.entries(Rm))if(c[l]!==d)return!1}catch{return!1}let r=Nc(e),s=Ze.join(e,"@openai","codex","bin","codex.js"),i=Ze.join(e,"@openai","codex-sdk","package.json");return!!r&&nn.existsSync(s)&&nn.existsSync(i)}async function Lm(t=!1){let e=Ki();console.log(`${Gr.COLORS.cyan}Installing engine dependencies...${Gr.COLORS.reset}`),t&&console.log(` Directory: ${e}`),nn.mkdirSync(e,{recursive:!0});let n={name:Pc.AGENTIDE_DEPS_PACKAGE_NAME,version:"1.0.0",private:!0,dependencies:Rm};nn.writeFileSync(Ze.join(e,"package.json"),JSON.stringify(n,null,2)+`
455
455
  `);try{let r=process.platform==="win32"?"npm.cmd":"npm";(0,Nm.execSync)(`${r} install --production --no-audit --no-fund`,{cwd:e,stdio:t?"inherit":"pipe"}),console.log(`${Gr.COLORS.green}Dependencies installed${Gr.COLORS.reset}`)}catch(r){throw console.error(`${Gr.COLORS.red}Error: Failed to install dependencies${Gr.COLORS.reset}`),r instanceof Error&&console.error(` ${r.message}`),r}}function Mm(){let t=(process.env.AGENTHIPPO_NO_AUTO_INSTALL??process.env.AGENTIDE_NO_AUTO_INSTALL??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"}async function sN(t=!1){if(!Dm()){if($m()&&Cm("@openai/codex","bin/codex.js")){t&&console.error(`${Gr.COLORS.dim}Engine SDKs resolved from the CLI's own node_modules \u2014 skipping install.${Gr.COLORS.reset}`);return}if(Mm()){t&&console.error(`${Gr.COLORS.dim}AGENTHIPPO_NO_AUTO_INSTALL set \u2014 skipping engine dependency install (expecting a self-contained image).${Gr.COLORS.reset}`);return}await Lm(t)}}function iN(){return Nc(Ze.join(Ki(),"node_modules"))}function oN(){let t=Ki(),e=Ze.join(t,"node_modules","@openai","codex","bin","codex.js");if(nn.existsSync(e))return e;let n=Ze.join(t,"node_modules","@openai","codex-sdk"),r=aN();if(!r)return;let s=process.platform==="win32"?"codex.exe":"codex",i=Ze.join(n,"vendor",r,"codex",s);return nn.existsSync(i)?i:void 0}function aN(){let t=process.arch,e=process.platform;if(e==="darwin")return t==="arm64"?"aarch64-apple-darwin":"x86_64-apple-darwin";if(e==="linux")return t==="arm64"?"aarch64-unknown-linux-musl":"x86_64-unknown-linux-musl";if(e==="win32")return t==="arm64"?"aarch64-pc-windows-msvc":"x86_64-pc-windows-msvc"}function cN(t){let e=t==="codex"?Ze.join("@openai","codex"):t==="claude"?Ze.join("@anthropic-ai","claude-agent-sdk"):void 0;if(!e)return;let n=[Ze.join(Ki(),"node_modules",e,"package.json"),Ze.join("/usr/local/lib/node_modules",e,"package.json"),Ze.join("/usr/lib/node_modules",e,"package.json")];for(let r of n)try{if(!nn.existsSync(r))continue;let s=JSON.parse(nn.readFileSync(r,"utf8"));if(s.version)return s.version}catch{}}});var Rn=T(Nt=>{"use strict";var lN=Nt&&Nt.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),uN=Nt&&Nt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),cd=Nt&&Nt.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&lN(n,e,r[s]);return uN(n,e),n}})();Object.defineProperty(Nt,"__esModule",{value:!0});Nt.SUGGESTED_LITELLM_SMOKE_TEST_COMMAND=Nt.COLORS=void 0;Nt.getBinaryDir=Cc;Nt.findClaudeCodePath=fN;Nt.findCodexPath=pN;Nt.findBundledBasePromptsDir=gN;Nt.getLiteLLMQuickstartHintLines=hN;var dN=cd(require("os")),mi=cd(require("path")),Xn=cd(require("fs")),Gm=require("child_process"),Rc=hi();function Cc(){return mi.dirname(process.execPath)}function fN(){if(process.env.CLAUDE_CODE_PATH)return process.env.CLAUDE_CODE_PATH;let t=(0,Rc.getClaudeSdkCliPath)();if(t)return t;let e=(0,Rc.resolveClaudeCodeFromOwnDeps)();if(e)return e;let n=Cc(),r=mi.join(n,"claude-sdk","cli.js");try{return Xn.accessSync(r,Xn.constants.R_OK),r}catch{}try{let o=process.platform==="win32"?"where claude":"which claude",a=(0,Gm.execSync)(o,{encoding:"utf8",stdio:["pipe","pipe","ignore"]}).trim();if(a)return a.split(`
456
456
  `)[0]}catch{}let s=dN.homedir(),i=[mi.join(s,".npm-global","bin","claude"),mi.join(s,".local","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude"];for(let o of i)try{return Xn.accessSync(o,Xn.constants.X_OK),o}catch{}}function pN(){if(process.env.CODEX_PATH)return process.env.CODEX_PATH;let t=(0,Rc.resolveFromOwnDeps)("@openai/codex","bin/codex.js");if(t)return t;let e=(0,Rc.getCodexSdkBinaryPath)();if(e)return e;let n=Cc(),r=process.platform==="win32"?"codex.exe":"codex",s=mi.join(n,"codex-sdk",r);try{return Xn.accessSync(s,Xn.constants.X_OK),s}catch{}try{let i=process.platform==="win32"?"where codex":"which codex",o=(0,Gm.execSync)(i,{encoding:"utf8",stdio:["pipe","pipe","ignore"]}).trim();if(o)return o.split(`
457
457
  `)[0]}catch{}}function gN(){let t=process.env.AGENTHIPPO_BASE_PROMPTS_DIR||process.env.AGENTIDE_BASE_PROMPTS_DIR;if(t)try{return Xn.accessSync(t,Xn.constants.R_OK),t}catch{}let e=Cc(),n=mi.join(e,"base-prompts");try{return Xn.accessSync(n,Xn.constants.R_OK),n}catch{}let r=mi.resolve(__dirname,"..","base-prompts");try{return Xn.accessSync(r,Xn.constants.R_OK),r}catch{}}Nt.COLORS={reset:"\x1B[0m",cyan:"\x1B[36m",gray:"\x1B[90m",dim:"\x1B[2m",blue:"\x1B[34m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m"};Nt.SUGGESTED_LITELLM_SMOKE_TEST_COMMAND='AGENTHIPPO_LITELLM_BASE_URL="http://localhost:4000" AGENTHIPPO_LITELLM_API_KEY="dummy" AGENTHIPPO_DEFAULT_MODEL="litellm/gpt-5.5" AGENTHIPPO_DEFAULT_ENGINE="codex" agenthippo ask "Reply with exactly: CLI_TEST_OK"';function hN(){return["Try local LiteLLM quickstart:",` ${Nt.SUGGESTED_LITELLM_SMOKE_TEST_COMMAND}`]}});var qi=T(us=>{"use strict";Object.defineProperty(us,"__esModule",{value:!0});us.TurnRegistry=us.DEFAULT_TURN_DEADLINE_MS=void 0;us.hashNonce=kc;us.isNonceShaped=Hm;var Um=require("crypto");us.DEFAULT_TURN_DEADLINE_MS=30*6e4;function kc(t){return(0,Um.createHash)("sha256").update(t).digest("hex")}var mN=/^[0-9a-f]{32}$/;function Hm(t){return mN.test(t)}var ld=class{entries=new Map;generations=new Map;generationCounter=0;register(e,n){this.prune();let r=n?.renewNonce?.trim()||void 0;if(r!==void 0&&!Hm(r))throw new Error("renewNonce must be a previously minted turn nonce (32 lowercase hex chars)");let s=r??(0,Um.randomBytes)(16).toString("hex"),i=kc(s);this.entries.set(i,{userId:e.userId,sessionKey:e.sessionKey,inboundToken:e.inboundToken,egressStoreKey:e.egressStoreKey,deadline:e.deadline??Date.now()+us.DEFAULT_TURN_DEADLINE_MS});let o=++this.generationCounter;this.generations.set(i,o);let a=!1;return{nonce:s,release:()=>{a||(a=!0,this.generations.get(i)===o&&(this.entries.delete(i),this.generations.delete(i)))}}}releaseByNonce(e){let n=kc(e);return this.generations.delete(n),this.entries.delete(n)}resolve(e,n=Date.now()){let r=kc(e),s=this.entries.get(r);if(s){if(n>s.deadline){this.entries.delete(r),this.generations.delete(r);return}return s}}prune(e=Date.now()){for(let[n,r]of this.entries)e>r.deadline&&(this.entries.delete(n),this.generations.delete(n))}get size(){return this.entries.size}};us.TurnRegistry=ld});var dd=T(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.CredentialBroker=yr.identityProvider=yr.passthroughProvider=void 0;yr.resolveProvider=EN;yr.passthroughProvider={name:"passthrough",refreshOnInbound:!0,async acquire({userId:t,inboundToken:e}){let n=e?.trim();if(!n)throw new Error(`No inbound data credential for user (fail-closed) \u2014 the platform did not forward a per-user token on this request (userId=${t})`);return{expiresAt:Date.now()+10*6e4,secretRef:n}}};yr.identityProvider={name:"identity",async acquire({userId:t}){if(!t.trim())throw new Error("No verified user (fail-closed)");return{expiresAt:Number.MAX_SAFE_INTEGER,secretRef:null}}};function EN(t){let e=(t??"passthrough").trim().toLowerCase();if(e==="passthrough")return yr.passthroughProvider;if(e==="identity")return yr.identityProvider;throw new Error(`Unknown data credential provider "${t}" (supported: passthrough, identity)`)}var ud=class{provider;cache=new Map;constructor(e){this.provider=e}async acquire(e,n){if(this.provider.refreshOnInbound)return this.provider.acquire({userId:e,inboundToken:n});let r=this.cache.get(e);if(r&&r.expiresAt>Date.now())return r;this.cache.delete(e);let s=await this.provider.acquire({userId:e,inboundToken:n});return this.cache.set(e,s),s}invalidate(e){this.cache.delete(e)}};yr.CredentialBroker=ud});var pd=T(Cn=>{"use strict";var _N=Cn&&Cn.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),yN=Cn&&Cn.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),wN=Cn&&Cn.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&_N(n,e,r[s]);return yN(n,e),n}})();Object.defineProperty(Cn,"__esModule",{value:!0});Cn.ConnectorHost=Cn.TURN_META_KEY=void 0;var jm=wN(require("path")),AN=require("fs"),SN=require("@modelcontextprotocol/sdk/client/index.js"),TN=require("@modelcontextprotocol/sdk/client/stdio.js"),bN=require("@modelcontextprotocol/sdk/types.js"),vN=cc();Cn.TURN_META_KEY="ai.agenthippo/turn";var fd=class t{client;logger;connectorPath;constructor(e,n,r){this.client=e,this.logger=n,this.connectorPath=r}static async spawn(e){let n=jm.resolve(e.connectorPath);await AN.promises.access(n);let r=await(0,vN.resolveNodeBinary)(),s=new TN.StdioClientTransport({command:r,args:[n],cwd:jm.dirname(n),env:{...process.env,AGENTHIPPO_DATA_CONNECTOR:"1"},stderr:"pipe"}),i=new SN.Client({name:"agenthippo-data-gateway",version:"1.0.0"});return await i.connect(s),s.stderr?.on("data",o=>{e.logger?.warn(`[DataPlane] connector stderr: ${String(o).trimEnd()}`)}),e.logger?.info(`[DataPlane] connector started: ${n}`),new t(i,e.logger,n)}async listTools(){return(await this.client.listTools()).tools.map(n=>({name:n.name,description:n.description,inputSchema:n.inputSchema??{type:"object"}}))}async callTool(e,n,r){return await this.client.request({method:"tools/call",params:{name:e,arguments:n,_meta:{[Cn.TURN_META_KEY]:{userId:r.userId,credential:r.credential}}}},bN.CallToolResultSchema)}async close(){try{await this.client.close()}catch(e){this.logger?.warn(`[DataPlane] connector close: ${e instanceof Error?e.message:String(e)}`)}}};Cn.ConnectorHost=fd});var Uo=T(kn=>{"use strict";Object.defineProperty(kn,"__esModule",{value:!0});kn.DEFAULT_AUTH_BIND=kn.AUTH_PROXY_SECRET_HEADER=kn.DEFAULT_JWT_SECRET=void 0;kn.resolveAuthBrokerBind=PN;kn.loadAuthBrokerConfig=NN;kn.emailDomainAllowed=RN;function ON(t){return t?.trim()?t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[]}kn.DEFAULT_JWT_SECRET="dev-agenthippo-auth-secret-change-me";kn.AUTH_PROXY_SECRET_HEADER="x-agenthippo-proxy-secret";kn.DEFAULT_AUTH_BIND="127.0.0.1";var IN=new Set(["127.0.0.1","localhost","::1","[::1]"]);function PN(t=process.env){let e=t.AGENTHIPPO_AUTH_BIND?.trim()||kn.DEFAULT_AUTH_BIND;if(!!IN.has(e.toLowerCase()))return{address:e,isPublic:!1};if(t.AGENTHIPPO_AUTH_ALLOW_PUBLIC_BIND!=="1")throw new Error(`Refusing to bind the auth broker to "${e}". This port issues authorization codes and access tokens, and a directly reachable broker can be asked to mint a token for an arbitrary email by forging X-Auth-Request-Email.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenthippo-ai/agenthippo",
3
- "version": "1.110.28",
3
+ "version": "1.110.29",
4
4
  "description": "AgentHippo CLI — serve, chat, and deploy agent packs",
5
5
  "author": "AgentHippo <dev@agenthippo.ai>",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -24,7 +24,7 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@anthropic-ai/claude-agent-sdk": "0.3.257",
27
+ "@anthropic-ai/claude-agent-sdk": "0.3.258",
28
28
  "@anthropic-ai/sdk": "0.123.0",
29
29
  "@cfworker/json-schema": "^4.1.1",
30
30
  "@mariozechner/pi-ai": "0.54.0",