@automagik/genie 4.260504.16 → 4.260504.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/genie.js CHANGED
@@ -418,7 +418,7 @@ ${bin} set-option -w pane-active-border-style "fg=$COLOR"
418
418
  WHERE a.id = ${agentId}
419
419
  AND e.state IN ('spawning', 'running', 'working', 'idle', 'permission', 'question')
420
420
  LIMIT 1
421
- `;return rows.length>0?rows[0].state:null}async function isExecutorAlive(agentId){return await getLiveExecutorState(agentId)!==null}async function resolveWorkerLivenessByTransport(worker,opts){if(/^%\d+$/.test(worker.paneId))return(opts?.isPaneAliveFn??(async(pane)=>{let{isPaneAlive:isPaneAlive2}=await Promise.resolve().then(() => (init_tmux(),exports_tmux));return isPaneAlive2(pane)}))(worker.paneId);return(opts?.isExecutorAliveFn??isExecutorAlive)(worker.id)}var STAT_CONCURRENCY_CAP=32,_resumeJsonlScannerDeps;var init_executor_registry=__esm(()=>{init_audit();init_db();_resumeJsonlScannerDeps={scanForSession:null}});var exports_team_manager={};__export(exports_team_manager,{validateBranchName:()=>validateBranchName,updateTeamConfig:()=>updateTeamConfig,unarchiveTeam:()=>unarchiveTeam,setTeamStatus:()=>setTeamStatus,resolveLeaderName:()=>resolveLeaderName,listTeams:()=>listTeams,listMembers:()=>listMembers,killTeamMembers:()=>killTeamMembers,hireAgent:()=>hireAgent,getTeam:()=>getTeam,fireAgent:()=>fireAgent,ensureTeamRow:()=>ensureTeamRow,disbandTeam:()=>disbandTeam,createTeam:()=>createTeam,archiveTeam:()=>archiveTeam});import{existsSync as existsSync8}from"fs";import{mkdir as mkdir2,rm,symlink}from"fs/promises";import{homedir as homedir7}from"os";import path,{join as join11}from"path";var{$}=globalThis.Bun;function parseMembers(raw){if(Array.isArray(raw))return raw;if(typeof raw==="string")try{let parsed=JSON.parse(raw);return Array.isArray(parsed)?parsed:[]}catch{return[]}return[]}function rowToTeamConfig(row){let config={name:row.name,repo:row.repo,baseBranch:row.base_branch,worktreePath:row.worktree_path,members:parseMembers(row.members),status:row.status,createdAt:row.created_at instanceof Date?row.created_at.toISOString():String(row.created_at)};if(row.leader)config.leader=row.leader;if(row.native_team_parent_session_id)config.nativeTeamParentSessionId=row.native_team_parent_session_id;if(row.native_teams_enabled)config.nativeTeamsEnabled=row.native_teams_enabled;if(row.tmux_session_name)config.tmuxSessionName=row.tmux_session_name;if(row.wish_slug)config.wishSlug=row.wish_slug;if(row.spawner)config.spawner=row.spawner;if(row.archived_at)config.archivedAt=row.archived_at instanceof Date?row.archived_at.toISOString():String(row.archived_at);if(row.parent_team)config.parentTeam=row.parent_team;let allow=parseAllowChildReachback(row.allow_child_reachback);if(allow.length>0)config.allowChildReachback=allow;return config}function parseAllowChildReachback(raw){if(Array.isArray(raw))return raw.filter((x)=>typeof x==="string");if(typeof raw==="string")try{let parsed=JSON.parse(raw);return Array.isArray(parsed)?parsed.filter((x)=>typeof x==="string"):[]}catch{return[]}return[]}function getGenieDir2(){return process.env.GENIE_HOME??join11(homedir7(),".genie")}function getWorktreeBase(repoPath){let base=loadGenieConfigSync().terminal?.worktreeBase;if(base&&base!==".worktrees"){if(path.isAbsolute(base))return base;return join11(repoPath,base)}let projectName=path.basename(repoPath);return join11(getGenieDir2(),"worktrees",projectName)}function validateBranchName(name){let errors2=[];if(/\s/.test(name))errors2.push("contains spaces");if(name.includes(".."))errors2.push('contains ".."');if(name.includes("~"))errors2.push('contains "~"');if(name.includes("^"))errors2.push('contains "^"');if(name.includes(":"))errors2.push('contains ":"');if(name.includes("?"))errors2.push('contains "?"');if(name.includes("*"))errors2.push('contains "*"');if(name.includes("["))errors2.push('contains "["');if(name.includes("\\"))errors2.push('contains "\\"');if(/[\x00-\x1f\x7f]/.test(name))errors2.push("contains control characters");if(name.endsWith(".lock"))errors2.push('ends with ".lock"');if(name.endsWith("/"))errors2.push('ends with "/"');if(name.endsWith("."))errors2.push('ends with "."');if(name.startsWith("-"))errors2.push('starts with "-"');if(errors2.length>0)throw Error(`Invalid team name '${name}': must be a valid git branch name (${errors2.join(", ")})`)}async function killWorkersByName(agentName,teamName){let matches=(await list()).filter((w)=>(w.role===agentName||w.id===agentName)&&(!teamName||w.team===teamName));for(let w of matches){if(w.currentExecutorId)try{await terminateExecutor(w.currentExecutorId),await setCurrentExecutor(w.id,null)}catch{}try{if(w.paneId&&w.paneId!=="inline"){let{execSync:execSync2}=__require("child_process"),{genieTmuxCmd:genieTmuxCmd2}=(init_tmux_wrapper(),__toCommonJS(exports_tmux_wrapper));execSync2(genieTmuxCmd2(`kill-pane -t ${w.paneId}`),{stdio:"ignore"})}}catch{}await unregister(w.id)}}async function postCloneInit(repoPath,worktreePath){let parentNodeModules=join11(repoPath,"node_modules"),worktreeNodeModules=join11(worktreePath,"node_modules");if(existsSync8(parentNodeModules)&&!existsSync8(worktreeNodeModules))try{await symlink(parentNodeModules,worktreeNodeModules,"dir")}catch{}let initScript=join11(repoPath,".genie","init.sh");if(existsSync8(initScript))try{await $`bash ${initScript}`.cwd(worktreePath).quiet()}catch{}}async function ensureWorktree(repoPath,branchName,worktreePath,baseBranch){try{await $`git -C ${repoPath} fetch origin ${baseBranch}`.quiet()}catch{}if(await mkdir2(path.dirname(worktreePath),{recursive:!0}),existsSync8(worktreePath))return;let branchExists=!1;try{await $`git -C ${repoPath} rev-parse --verify ${branchName}`.quiet(),branchExists=!0}catch{if(!branchExists)try{await $`git -C ${repoPath} branch ${branchName} origin/${baseBranch}`.quiet()}catch{try{await $`git -C ${repoPath} branch ${branchName} ${baseBranch}`.quiet()}catch{await $`git -C ${repoPath} branch ${branchName}`.quiet()}}}await $`git clone --shared --branch ${branchName} ${repoPath} ${worktreePath}`.quiet();try{let userName=(await $`git -C ${repoPath} config user.name`.quiet()).text().trim(),userEmail=(await $`git -C ${repoPath} config user.email`.quiet()).text().trim();if(userName)await $`git -C ${worktreePath} config user.name ${userName}`.quiet();if(userEmail)await $`git -C ${worktreePath} config user.email ${userEmail}`.quiet()}catch{}await postCloneInit(repoPath,worktreePath)}async function detectSpawnerParentTeam(newTeamName){let envTeam=process.env.GENIE_TEAM,spawnerName=process.env.GENIE_AGENT_NAME;if(!envTeam||!spawnerName)return null;if(spawnerName==="cli")return null;if(envTeam===newTeamName)return null;try{return await getTeam(envTeam)?envTeam:null}catch{return null}}async function createTeam(name,repo,baseBranch="dev"){validateBranchName(name);let repoPath=path.resolve(repo),existing=await getTeam(name);if(existing)return existing;let worktreeBase=getWorktreeBase(repoPath),worktreePath=join11(worktreeBase,name);await ensureWorktree(repoPath,name,worktreePath,baseBranch);let now=new Date().toISOString(),config={name,repo:repoPath,baseBranch,worktreePath,members:[],status:"in_progress",createdAt:now},promoted=await detectSpawnerParentTeam(name);if(promoted)config.parentTeam=promoted;if(isInsideClaudeCode()){config.nativeTeamsEnabled=!0;try{let result2=await registerAsTeamLead(name);config.nativeTeamParentSessionId=result2.sessionId}catch{}}let sql=await getConnection();return await sql`
421
+ `;return rows.length>0?rows[0].state:null}async function isExecutorAlive(agentId){return await getLiveExecutorState(agentId)!==null}async function resolveWorkerLivenessByTransport(worker,opts){if(/^%\d+$/.test(worker.paneId))return(opts?.isPaneAliveFn??(async(pane)=>{let{isPaneAlive:isPaneAlive2}=await Promise.resolve().then(() => (init_tmux(),exports_tmux));return isPaneAlive2(pane)}))(worker.paneId);return(opts?.isExecutorAliveFn??isExecutorAlive)(worker.id)}var STAT_CONCURRENCY_CAP=32,_resumeJsonlScannerDeps;var init_executor_registry=__esm(()=>{init_audit();init_db();_resumeJsonlScannerDeps={scanForSession:null}});var exports_team_manager={};__export(exports_team_manager,{validateBranchName:()=>validateBranchName,updateTeamConfig:()=>updateTeamConfig,unarchiveTeam:()=>unarchiveTeam,setTeamStatus:()=>setTeamStatus,resolveLeaderName:()=>resolveLeaderName,listTeams:()=>listTeams,listMembers:()=>listMembers,killTeamMembers:()=>killTeamMembers,hireAgent:()=>hireAgent,getTeam:()=>getTeam,fireAgent:()=>fireAgent,ensureTeamRow:()=>ensureTeamRow,disbandTeam:()=>disbandTeam,createTeam:()=>createTeam,archiveTeam:()=>archiveTeam});import{existsSync as existsSync8}from"fs";import{mkdir as mkdir2,symlink}from"fs/promises";import{homedir as homedir7}from"os";import path,{join as join11}from"path";var{$}=globalThis.Bun;function parseMembers(raw){if(Array.isArray(raw))return raw;if(typeof raw==="string")try{let parsed=JSON.parse(raw);return Array.isArray(parsed)?parsed:[]}catch{return[]}return[]}function rowToTeamConfig(row){let config={name:row.name,repo:row.repo,baseBranch:row.base_branch,worktreePath:row.worktree_path,members:parseMembers(row.members),status:row.status,createdAt:row.created_at instanceof Date?row.created_at.toISOString():String(row.created_at)};if(row.leader)config.leader=row.leader;if(row.native_team_parent_session_id)config.nativeTeamParentSessionId=row.native_team_parent_session_id;if(row.native_teams_enabled)config.nativeTeamsEnabled=row.native_teams_enabled;if(row.tmux_session_name)config.tmuxSessionName=row.tmux_session_name;if(row.wish_slug)config.wishSlug=row.wish_slug;if(row.spawner)config.spawner=row.spawner;if(row.archived_at)config.archivedAt=row.archived_at instanceof Date?row.archived_at.toISOString():String(row.archived_at);if(row.parent_team)config.parentTeam=row.parent_team;let allow=parseAllowChildReachback(row.allow_child_reachback);if(allow.length>0)config.allowChildReachback=allow;return config}function parseAllowChildReachback(raw){if(Array.isArray(raw))return raw.filter((x)=>typeof x==="string");if(typeof raw==="string")try{let parsed=JSON.parse(raw);return Array.isArray(parsed)?parsed.filter((x)=>typeof x==="string"):[]}catch{return[]}return[]}function getGenieDir2(){return process.env.GENIE_HOME??join11(homedir7(),".genie")}function getWorktreeBase(repoPath){let base=loadGenieConfigSync().terminal?.worktreeBase;if(base&&base!==".worktrees"){if(path.isAbsolute(base))return base;return join11(repoPath,base)}let projectName=path.basename(repoPath);return join11(getGenieDir2(),"worktrees",projectName)}function validateBranchName(name){let errors2=[];if(/\s/.test(name))errors2.push("contains spaces");if(name.includes(".."))errors2.push('contains ".."');if(name.includes("~"))errors2.push('contains "~"');if(name.includes("^"))errors2.push('contains "^"');if(name.includes(":"))errors2.push('contains ":"');if(name.includes("?"))errors2.push('contains "?"');if(name.includes("*"))errors2.push('contains "*"');if(name.includes("["))errors2.push('contains "["');if(name.includes("\\"))errors2.push('contains "\\"');if(/[\x00-\x1f\x7f]/.test(name))errors2.push("contains control characters");if(name.endsWith(".lock"))errors2.push('ends with ".lock"');if(name.endsWith("/"))errors2.push('ends with "/"');if(name.endsWith("."))errors2.push('ends with "."');if(name.startsWith("-"))errors2.push('starts with "-"');if(errors2.length>0)throw Error(`Invalid team name '${name}': must be a valid git branch name (${errors2.join(", ")})`)}async function killWorkersByName(agentName,teamName){let matches=(await list()).filter((w)=>(w.role===agentName||w.id===agentName)&&(!teamName||w.team===teamName));for(let w of matches){if(w.currentExecutorId)try{await terminateExecutor(w.currentExecutorId),await setCurrentExecutor(w.id,null)}catch{}try{if(w.paneId&&w.paneId!=="inline"){let{execSync:execSync2}=__require("child_process"),{genieTmuxCmd:genieTmuxCmd2}=(init_tmux_wrapper(),__toCommonJS(exports_tmux_wrapper));execSync2(genieTmuxCmd2(`kill-pane -t ${w.paneId}`),{stdio:"ignore"})}}catch{}await unregister(w.id)}}async function postCloneInit(repoPath,worktreePath){let parentNodeModules=join11(repoPath,"node_modules"),worktreeNodeModules=join11(worktreePath,"node_modules");if(existsSync8(parentNodeModules)&&!existsSync8(worktreeNodeModules))try{await symlink(parentNodeModules,worktreeNodeModules,"dir")}catch{}let initScript=join11(repoPath,".genie","init.sh");if(existsSync8(initScript))try{await $`bash ${initScript}`.cwd(worktreePath).quiet()}catch{}}async function ensureWorktree(repoPath,branchName,worktreePath,baseBranch){try{await $`git -C ${repoPath} fetch origin ${baseBranch}`.quiet()}catch{}if(await mkdir2(path.dirname(worktreePath),{recursive:!0}),existsSync8(worktreePath))return;let branchExists=!1;try{await $`git -C ${repoPath} rev-parse --verify ${branchName}`.quiet(),branchExists=!0}catch{if(!branchExists)try{await $`git -C ${repoPath} branch ${branchName} origin/${baseBranch}`.quiet()}catch{try{await $`git -C ${repoPath} branch ${branchName} ${baseBranch}`.quiet()}catch{await $`git -C ${repoPath} branch ${branchName}`.quiet()}}}await $`git clone --shared --branch ${branchName} ${repoPath} ${worktreePath}`.quiet();try{let userName=(await $`git -C ${repoPath} config user.name`.quiet()).text().trim(),userEmail=(await $`git -C ${repoPath} config user.email`.quiet()).text().trim();if(userName)await $`git -C ${worktreePath} config user.name ${userName}`.quiet();if(userEmail)await $`git -C ${worktreePath} config user.email ${userEmail}`.quiet()}catch{}await postCloneInit(repoPath,worktreePath)}async function detectSpawnerParentTeam(newTeamName){let envTeam=process.env.GENIE_TEAM,spawnerName=process.env.GENIE_AGENT_NAME;if(!envTeam||!spawnerName)return null;if(spawnerName==="cli")return null;if(envTeam===newTeamName)return null;try{return await getTeam(envTeam)?envTeam:null}catch{return null}}async function createTeam(name,repo,baseBranch="dev"){validateBranchName(name);let repoPath=path.resolve(repo),existing=await getTeam(name);if(existing)return existing;let worktreeBase=getWorktreeBase(repoPath),worktreePath=join11(worktreeBase,name);await ensureWorktree(repoPath,name,worktreePath,baseBranch);let now=new Date().toISOString(),config={name,repo:repoPath,baseBranch,worktreePath,members:[],status:"in_progress",createdAt:now},promoted=await detectSpawnerParentTeam(name);if(promoted)config.parentTeam=promoted;if(isInsideClaudeCode()){config.nativeTeamsEnabled=!0;try{let result2=await registerAsTeamLead(name);config.nativeTeamParentSessionId=result2.sessionId}catch{}}let sql=await getConnection();return await sql`
422
422
  INSERT INTO teams (
423
423
  name, repo, base_branch, worktree_path, leader,
424
424
  members, status, native_team_parent_session_id,
@@ -495,7 +495,7 @@ ${bin} set-option -w pane-active-border-style "fg=$COLOR"
495
495
  `}async function getTeam(name){try{let rows=await(await getConnection())`SELECT * FROM teams WHERE name = ${name}`;if(rows.length===0)return null;return rowToTeamConfig(rows[0])}catch{return null}}async function listTeams(includeArchived=!1){try{let sql=await getConnection();if(includeArchived)return(await sql`SELECT * FROM teams ORDER BY created_at DESC`).map(rowToTeamConfig);return(await sql`SELECT * FROM teams WHERE status != 'archived' ORDER BY created_at DESC`).map(rowToTeamConfig)}catch{return[]}}async function listMembers(teamName){let config=await getTeam(teamName);if(!config)return null;return config.members}async function killTeamMembers(teamName){let config=await getTeam(teamName);if(!config)return;for(let member of config.members)try{await killWorkersByName(member,teamName)}catch{}}async function resolveLeaderName(teamName){try{let config=await getTeam(teamName);if(config?.leader&&config.leader!=="team-lead")return config.leader}catch{}return teamName}async function setTeamStatus(teamName,status){if(status==="done"||status==="archived"){let config=await getTeam(teamName);if(config)await Promise.allSettled(config.members.map((member)=>killWorkersByName(member,teamName))),await cleanupTeamTmuxSession(config.tmuxSessionName??teamName,teamName),await cleanupTeamGitArtifacts(config)}if((await(await getConnection())`
496
496
  UPDATE teams SET status = ${status}
497
497
  WHERE name = ${teamName}
498
- `).count===0)throw Error(`Team "${teamName}" not found.`)}var init_team_manager=__esm(()=>{init_agent_registry();init_audit();init_builtin_agents();init_claude_native_teams();init_db();init_executor_registry();init_genie_config2();init_tmux()});var exports_claude_native_teams={};__export(exports_claude_native_teams,{writeNativeInbox:()=>writeNativeInbox,unregisterNativeMember:()=>unregisterNativeMember,sanitizeTeamName:()=>sanitizeTeamName,resolveNativeMemberName:()=>resolveNativeMemberName,registerNativeMember:()=>registerNativeMember,registerAsTeamLead:()=>registerAsTeamLead,loadNativeTeamConfig:()=>loadNativeTeamConfig,loadConfig:()=>loadConfig,loadAllNativeTeamConfigs:()=>loadAllNativeTeamConfigs,listTeamsWithUnreadInbox:()=>listTeamsWithUnreadInbox,listTeams:()=>listTeams2,isInsideClaudeCode:()=>isInsideClaudeCode,findTeamsContainingAgent:()=>findTeamsContainingAgent,ensureNativeTeamWithSessionId:()=>ensureNativeTeamWithSessionId,ensureNativeTeam:()=>ensureNativeTeam,discoverTeamName:()=>discoverTeamName,discoverClaudeParentSessionId:()=>discoverClaudeParentSessionId,deleteNativeTeam:()=>deleteNativeTeam,clearNativeInbox:()=>clearNativeInbox,assignColor:()=>assignColor});import{existsSync as existsSync9}from"fs";import{mkdir as mkdir3,open as open2,readFile as readFile3,readdir as readdir2,rm as rm2,stat as stat2,writeFile as writeFile3}from"fs/promises";import{homedir as homedir8}from"os";import{join as join12}from"path";function claudeConfigDir2(){return process.env.CLAUDE_CONFIG_DIR??join12(homedir8(),".claude")}function teamsBaseDir(){return join12(claudeConfigDir2(),"teams")}function sanitizeTeamName(name){return name.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}async function listTeams2(){try{return(await readdir2(teamsBaseDir())).filter((e)=>!e.startsWith("."))}catch{return[]}}function teamDir(teamName){return join12(teamsBaseDir(),sanitizeTeamName(teamName))}function configPath(teamName){return join12(teamDir(teamName),"config.json")}function inboxesDir(teamName){return join12(teamDir(teamName),"inboxes")}function inboxPath(teamName,agentName){return join12(inboxesDir(teamName),`${sanitizeTeamName(agentName)}.json`)}async function loadConfig(teamName){try{let content=await readFile3(configPath(teamName),"utf-8");return JSON.parse(content)}catch(err){if(err instanceof Error&&"code"in err&&err.code==="ENOENT")return null;let message=err instanceof Error?err.message:String(err);return console.warn(`[claude-native-teams] Failed to load config for "${teamName}": ${message}`),null}}async function loadNativeTeamConfig(teamName){return loadConfig(teamName)}async function loadAllNativeTeamConfigs(){let teamNames=await listTeams2(),configs=[];for(let name of teamNames){let cfg=await loadConfig(name);if(cfg)configs.push(cfg)}return configs}async function findTeamsContainingAgent(agentName){let teams=await listTeams2(),matches=[];for(let teamName of teams){let config=await loadConfig(teamName);if(!config)continue;if(config.members.some((m)=>m.name===agentName||m.agentType===agentName))matches.push(teamName)}return matches}async function saveConfig(teamName,config){await writeFile3(configPath(teamName),JSON.stringify(config,null,2))}async function countLeadSessionRefs(){let counts=new Map,teams=await listTeams2();for(let team of teams){let leadSessionId=(await loadConfig(team))?.leadSessionId;if(!leadSessionId)continue;counts.set(leadSessionId,(counts.get(leadSessionId)??0)+1)}return counts}async function ensureNativeTeam(teamName,description,leadSessionId,leaderName){let dir=teamDir(teamName),inboxDir=inboxesDir(teamName);await mkdir3(dir,{recursive:!0}),await mkdir3(inboxDir,{recursive:!0}),ensureClaudeSettingsSafe();let existing=await loadConfig(teamName);if(existing)return await backfillTeamRow(sanitizeTeamName(teamName),existing),existing;let sanitized=sanitizeTeamName(teamName),resolvedLeader=sanitizeTeamName(leaderName??teamName),config={name:sanitized,description,createdAt:Date.now(),leadAgentId:`${resolvedLeader}@${sanitized}`,leadSessionId,members:[]};return await saveConfig(teamName,config),await backfillTeamRow(sanitized,config),config}async function backfillTeamRow(name,nativeConfig){try{let{ensureTeamRow:ensureTeamRow2}=await Promise.resolve().then(() => (init_team_manager(),exports_team_manager));await ensureTeamRow2(name,{nativeConfig})}catch{}}function isHealthyLeadSessionId(id){if(typeof id!=="string"||id.length===0)return!1;return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id)}async function ensureNativeTeamWithSessionId(teamName,description,sessionId,leaderName){let config=await ensureNativeTeam(teamName,description,sessionId,leaderName);if(config.leadSessionId===sessionId)return config;if(isHealthyLeadSessionId(config.leadSessionId))return config;return config.leadSessionId=sessionId,await saveConfig(teamName,config),config}async function registerNativeMember(teamName,member){let config=await loadConfig(teamName);if(!config)throw Error(`Native team "${teamName}" not found`);let sanitized=sanitizeTeamName(teamName),agentId=`${sanitizeTeamName(member.agentName)}@${sanitized}`;config.members=config.members.filter((m)=>m.agentId!==agentId),config.members.push({agentId,name:sanitizeTeamName(member.agentName),agentType:member.agentType??"general-purpose",joinedAt:Date.now(),tmuxPaneId:member.tmuxPaneId,cwd:member.cwd??process.cwd(),backendType:"tmux",color:member.color,planModeRequired:member.planModeRequired??!1,isActive:!0}),await saveConfig(teamName,config);let inbox=inboxPath(teamName,member.agentName);if(!existsSync9(inbox))await writeFile3(inbox,"[]")}async function unregisterNativeMember(teamName,agentName){let config=await loadConfig(teamName);if(!config)return;let sanitized=sanitizeTeamName(teamName),agentId=`${sanitizeTeamName(agentName)}@${sanitized}`,before=config.members.length;if(config.members=config.members.filter((m)=>m.agentId!==agentId),config.members.length===before)return;await saveConfig(teamName,config)}async function writeNativeInbox(teamName,agentName,message){let path2=inboxPath(teamName,agentName);await mkdir3(inboxesDir(teamName),{recursive:!0}),await acquireLock(path2);try{let messages=[];try{let content=await readFile3(path2,"utf-8");messages=JSON.parse(content)}catch{}messages.push(message),await writeFile3(path2,JSON.stringify(messages,null,2))}finally{await releaseLock(path2)}}async function resolveNativeMemberName(teamName,genieWorkerId){let config=await loadConfig(teamName);if(!config||config.members.length===0)return null;let sanitizedId=sanitizeTeamName(genieWorkerId),sanitizedTeam=sanitizeTeamName(teamName),exactMatch=config.members.find((m)=>m.name===sanitizedId&&m.isActive);if(exactMatch)return exactMatch.name;let agentIdMatch=config.members.find((m)=>m.agentId===`${sanitizedId}@${sanitizedTeam}`&&m.isActive);if(agentIdMatch)return agentIdMatch.name;let teamPrefix=`${sanitizedTeam}-`;if(sanitizedId.startsWith(teamPrefix)){let stripped=sanitizedId.slice(teamPrefix.length),prefixMatch=config.members.find((m)=>m.name===stripped&&m.isActive);if(prefixMatch)return prefixMatch.name}let inactiveMatch=config.members.find((m)=>m.name===sanitizedId);if(inactiveMatch)return inactiveMatch.name;return null}async function assignColor(teamName){let config=await loadConfig(teamName);if(!config)return CLAUDE_TEAM_COLORS[0];let usedColors=new Set(config.members.map((m)=>m.color));for(let color of CLAUDE_TEAM_COLORS)if(!usedColors.has(color))return color;return CLAUDE_TEAM_COLORS[config.members.length%CLAUDE_TEAM_COLORS.length]}async function clearNativeInbox(teamName,agentName){let path2=inboxPath(teamName,agentName);await acquireLock(path2);try{await writeFile3(path2,"[]")}finally{await releaseLock(path2)}}async function deleteNativeTeam(teamName){let dir=teamDir(teamName);if(!existsSync9(dir))return!1;return await rm2(dir,{recursive:!0,force:!0}),!0}function extractLeaderInboxName(config,teamName){if(!config?.leadAgentId)return teamName??"unknown";let atIdx=config.leadAgentId.indexOf("@");return atIdx>0?config.leadAgentId.slice(0,atIdx):teamName??"unknown"}function resolveLeadWorkingDir(config,leaderInboxName){let leadMember=config.members.find((m)=>m.agentId===config.leadAgentId||m.name===leaderInboxName);if(leadMember?.cwd)return leadMember.cwd;if(config.worktreePath)return config.worktreePath;if(config.repo)return config.repo;return config.members.find((m)=>m.cwd)?.cwd??null}async function scanTeamInbox(base,name){let config=null;try{let cfgContent=await readFile3(join12(base,name,"config.json"),"utf-8");config=JSON.parse(cfgContent)}catch{}let leaderInboxName=extractLeaderInboxName(config,name),inboxFile=join12(base,name,"inboxes",`${leaderInboxName}.json`),messages;try{let content=await readFile3(inboxFile,"utf-8");messages=JSON.parse(content)}catch{return null}if(!Array.isArray(messages))return null;let unread=messages.filter((m)=>m.read===!1);if(unread.length===0)return null;let workingDir=config?resolveLeadWorkingDir(config,leaderInboxName):null;return{teamName:name,unreadCount:unread.length,workingDir,firstUnreadText:unread[0]?.text??null}}async function listTeamsWithUnreadInbox(){let base=teamsBaseDir(),teamDirs;try{teamDirs=await readdir2(base)}catch{return[]}let results=[];for(let name of teamDirs){let entry=await scanTeamInbox(base,name);if(entry)results.push(entry)}return results}function sanitizePath(p){return p.replace(/[^a-zA-Z0-9]/g,"-")}async function discoverClaudeSessionId(cwd){let envSessionId=process.env.CLAUDE_CODE_SESSION_ID;if(envSessionId)return envSessionId;let projectDir=join12(claudeConfigDir2(),"projects",sanitizePath(cwd??process.cwd()));try{let jsonls=(await readdir2(projectDir)).filter((e)=>e.endsWith(".jsonl"));if(jsonls.length===0)return null;let newest=null;for(let name of jsonls){let s=await stat2(join12(projectDir,name));if(!newest||s.mtimeMs>newest.mtime)newest={name,mtime:s.mtimeMs}}if(!newest)return null;return newest.name.replace(".jsonl","")}catch{return null}}async function readSessionMetadata(filePath){let handle=null;try{handle=await open2(filePath,"r");let buffer=Buffer.alloc(8192),{bytesRead}=await handle.read(buffer,0,buffer.length,0),head=buffer.toString("utf-8",0,bytesRead);for(let line of head.split(`
498
+ `).count===0)throw Error(`Team "${teamName}" not found.`)}var init_team_manager=__esm(()=>{init_agent_registry();init_audit();init_builtin_agents();init_claude_native_teams();init_db();init_executor_registry();init_genie_config2();init_tmux()});var exports_claude_native_teams={};__export(exports_claude_native_teams,{writeNativeInbox:()=>writeNativeInbox,unregisterNativeMember:()=>unregisterNativeMember,sanitizeTeamName:()=>sanitizeTeamName,resolveNativeMemberName:()=>resolveNativeMemberName,registerNativeMember:()=>registerNativeMember,registerAsTeamLead:()=>registerAsTeamLead,loadNativeTeamConfig:()=>loadNativeTeamConfig,loadConfig:()=>loadConfig,loadAllNativeTeamConfigs:()=>loadAllNativeTeamConfigs,listTeamsWithUnreadInbox:()=>listTeamsWithUnreadInbox,listTeams:()=>listTeams2,isInsideClaudeCode:()=>isInsideClaudeCode,findTeamsContainingAgent:()=>findTeamsContainingAgent,ensureNativeTeamWithSessionId:()=>ensureNativeTeamWithSessionId,ensureNativeTeam:()=>ensureNativeTeam,discoverTeamName:()=>discoverTeamName,discoverClaudeParentSessionId:()=>discoverClaudeParentSessionId,deleteNativeTeam:()=>deleteNativeTeam,clearNativeInbox:()=>clearNativeInbox,assignColor:()=>assignColor});import{existsSync as existsSync9}from"fs";import{mkdir as mkdir3,open as open2,readFile as readFile3,readdir as readdir2,rm,stat as stat2,writeFile as writeFile3}from"fs/promises";import{homedir as homedir8}from"os";import{join as join12}from"path";function claudeConfigDir2(){return process.env.CLAUDE_CONFIG_DIR??join12(homedir8(),".claude")}function teamsBaseDir(){return join12(claudeConfigDir2(),"teams")}function sanitizeTeamName(name){return name.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}async function listTeams2(){try{return(await readdir2(teamsBaseDir())).filter((e)=>!e.startsWith("."))}catch{return[]}}function teamDir(teamName){return join12(teamsBaseDir(),sanitizeTeamName(teamName))}function configPath(teamName){return join12(teamDir(teamName),"config.json")}function inboxesDir(teamName){return join12(teamDir(teamName),"inboxes")}function inboxPath(teamName,agentName){return join12(inboxesDir(teamName),`${sanitizeTeamName(agentName)}.json`)}async function loadConfig(teamName){try{let content=await readFile3(configPath(teamName),"utf-8");return JSON.parse(content)}catch(err){if(err instanceof Error&&"code"in err&&err.code==="ENOENT")return null;let message=err instanceof Error?err.message:String(err);return console.warn(`[claude-native-teams] Failed to load config for "${teamName}": ${message}`),null}}async function loadNativeTeamConfig(teamName){return loadConfig(teamName)}async function loadAllNativeTeamConfigs(){let teamNames=await listTeams2(),configs=[];for(let name of teamNames){let cfg=await loadConfig(name);if(cfg)configs.push(cfg)}return configs}async function findTeamsContainingAgent(agentName){let teams=await listTeams2(),matches=[];for(let teamName of teams){let config=await loadConfig(teamName);if(!config)continue;if(config.members.some((m)=>m.name===agentName||m.agentType===agentName))matches.push(teamName)}return matches}async function saveConfig(teamName,config){await writeFile3(configPath(teamName),JSON.stringify(config,null,2))}async function countLeadSessionRefs(){let counts=new Map,teams=await listTeams2();for(let team of teams){let leadSessionId=(await loadConfig(team))?.leadSessionId;if(!leadSessionId)continue;counts.set(leadSessionId,(counts.get(leadSessionId)??0)+1)}return counts}async function ensureNativeTeam(teamName,description,leadSessionId,leaderName){let dir=teamDir(teamName),inboxDir=inboxesDir(teamName);await mkdir3(dir,{recursive:!0}),await mkdir3(inboxDir,{recursive:!0}),ensureClaudeSettingsSafe();let existing=await loadConfig(teamName);if(existing)return await backfillTeamRow(sanitizeTeamName(teamName),existing),existing;let sanitized=sanitizeTeamName(teamName),resolvedLeader=sanitizeTeamName(leaderName??teamName),config={name:sanitized,description,createdAt:Date.now(),leadAgentId:`${resolvedLeader}@${sanitized}`,leadSessionId,members:[]};return await saveConfig(teamName,config),await backfillTeamRow(sanitized,config),config}async function backfillTeamRow(name,nativeConfig){try{let{ensureTeamRow:ensureTeamRow2}=await Promise.resolve().then(() => (init_team_manager(),exports_team_manager));await ensureTeamRow2(name,{nativeConfig})}catch{}}function isHealthyLeadSessionId(id){if(typeof id!=="string"||id.length===0)return!1;return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id)}async function ensureNativeTeamWithSessionId(teamName,description,sessionId,leaderName){let config=await ensureNativeTeam(teamName,description,sessionId,leaderName);if(config.leadSessionId===sessionId)return config;if(isHealthyLeadSessionId(config.leadSessionId))return config;return config.leadSessionId=sessionId,await saveConfig(teamName,config),config}async function registerNativeMember(teamName,member){let config=await loadConfig(teamName);if(!config)throw Error(`Native team "${teamName}" not found`);let sanitized=sanitizeTeamName(teamName),agentId=`${sanitizeTeamName(member.agentName)}@${sanitized}`;config.members=config.members.filter((m)=>m.agentId!==agentId),config.members.push({agentId,name:sanitizeTeamName(member.agentName),agentType:member.agentType??"general-purpose",joinedAt:Date.now(),tmuxPaneId:member.tmuxPaneId,cwd:member.cwd??process.cwd(),backendType:"tmux",color:member.color,planModeRequired:member.planModeRequired??!1,isActive:!0}),await saveConfig(teamName,config);let inbox=inboxPath(teamName,member.agentName);if(!existsSync9(inbox))await writeFile3(inbox,"[]")}async function unregisterNativeMember(teamName,agentName){let config=await loadConfig(teamName);if(!config)return;let sanitized=sanitizeTeamName(teamName),agentId=`${sanitizeTeamName(agentName)}@${sanitized}`,before=config.members.length;if(config.members=config.members.filter((m)=>m.agentId!==agentId),config.members.length===before)return;await saveConfig(teamName,config)}async function writeNativeInbox(teamName,agentName,message){let path2=inboxPath(teamName,agentName);await mkdir3(inboxesDir(teamName),{recursive:!0}),await acquireLock(path2);try{let messages=[];try{let content=await readFile3(path2,"utf-8");messages=JSON.parse(content)}catch{}messages.push(message),await writeFile3(path2,JSON.stringify(messages,null,2))}finally{await releaseLock(path2)}}async function resolveNativeMemberName(teamName,genieWorkerId){let config=await loadConfig(teamName);if(!config||config.members.length===0)return null;let sanitizedId=sanitizeTeamName(genieWorkerId),sanitizedTeam=sanitizeTeamName(teamName),exactMatch=config.members.find((m)=>m.name===sanitizedId&&m.isActive);if(exactMatch)return exactMatch.name;let agentIdMatch=config.members.find((m)=>m.agentId===`${sanitizedId}@${sanitizedTeam}`&&m.isActive);if(agentIdMatch)return agentIdMatch.name;let teamPrefix=`${sanitizedTeam}-`;if(sanitizedId.startsWith(teamPrefix)){let stripped=sanitizedId.slice(teamPrefix.length),prefixMatch=config.members.find((m)=>m.name===stripped&&m.isActive);if(prefixMatch)return prefixMatch.name}let inactiveMatch=config.members.find((m)=>m.name===sanitizedId);if(inactiveMatch)return inactiveMatch.name;return null}async function assignColor(teamName){let config=await loadConfig(teamName);if(!config)return CLAUDE_TEAM_COLORS[0];let usedColors=new Set(config.members.map((m)=>m.color));for(let color of CLAUDE_TEAM_COLORS)if(!usedColors.has(color))return color;return CLAUDE_TEAM_COLORS[config.members.length%CLAUDE_TEAM_COLORS.length]}async function clearNativeInbox(teamName,agentName){let path2=inboxPath(teamName,agentName);await acquireLock(path2);try{await writeFile3(path2,"[]")}finally{await releaseLock(path2)}}async function deleteNativeTeam(teamName){let dir=teamDir(teamName);if(!existsSync9(dir))return!1;return await rm(dir,{recursive:!0,force:!0}),!0}function extractLeaderInboxName(config,teamName){if(!config?.leadAgentId)return teamName??"unknown";let atIdx=config.leadAgentId.indexOf("@");return atIdx>0?config.leadAgentId.slice(0,atIdx):teamName??"unknown"}function resolveLeadWorkingDir(config,leaderInboxName){let leadMember=config.members.find((m)=>m.agentId===config.leadAgentId||m.name===leaderInboxName);if(leadMember?.cwd)return leadMember.cwd;if(config.worktreePath)return config.worktreePath;if(config.repo)return config.repo;return config.members.find((m)=>m.cwd)?.cwd??null}async function scanTeamInbox(base,name){let config=null;try{let cfgContent=await readFile3(join12(base,name,"config.json"),"utf-8");config=JSON.parse(cfgContent)}catch{}let leaderInboxName=extractLeaderInboxName(config,name),inboxFile=join12(base,name,"inboxes",`${leaderInboxName}.json`),messages;try{let content=await readFile3(inboxFile,"utf-8");messages=JSON.parse(content)}catch{return null}if(!Array.isArray(messages))return null;let unread=messages.filter((m)=>m.read===!1);if(unread.length===0)return null;let workingDir=config?resolveLeadWorkingDir(config,leaderInboxName):null;return{teamName:name,unreadCount:unread.length,workingDir,firstUnreadText:unread[0]?.text??null}}async function listTeamsWithUnreadInbox(){let base=teamsBaseDir(),teamDirs;try{teamDirs=await readdir2(base)}catch{return[]}let results=[];for(let name of teamDirs){let entry=await scanTeamInbox(base,name);if(entry)results.push(entry)}return results}function sanitizePath(p){return p.replace(/[^a-zA-Z0-9]/g,"-")}async function discoverClaudeSessionId(cwd){let envSessionId=process.env.CLAUDE_CODE_SESSION_ID;if(envSessionId)return envSessionId;let projectDir=join12(claudeConfigDir2(),"projects",sanitizePath(cwd??process.cwd()));try{let jsonls=(await readdir2(projectDir)).filter((e)=>e.endsWith(".jsonl"));if(jsonls.length===0)return null;let newest=null;for(let name of jsonls){let s=await stat2(join12(projectDir,name));if(!newest||s.mtimeMs>newest.mtime)newest={name,mtime:s.mtimeMs}}if(!newest)return null;return newest.name.replace(".jsonl","")}catch{return null}}async function readSessionMetadata(filePath){let handle=null;try{handle=await open2(filePath,"r");let buffer=Buffer.alloc(8192),{bytesRead}=await handle.read(buffer,0,buffer.length,0),head=buffer.toString("utf-8",0,bytesRead);for(let line of head.split(`
499
499
  `).slice(0,20)){let trimmed=line.trim();if(!trimmed)continue;try{let entry=JSON.parse(trimmed),teamName=typeof entry.teamName==="string"?entry.teamName:void 0,agentName=typeof entry.agentName==="string"?entry.agentName:void 0;if(teamName||agentName)return{teamName,agentName}}catch{}}}catch{return{}}finally{await handle?.close().catch(()=>{})}return{}}function rootScore(metadata){if(!metadata.teamName&&!metadata.agentName)return 2;if(metadata.teamName&&!metadata.agentName)return 1;return 0}function compareSessionRanking(a,b,leadRefs){let aLeadRefs=leadRefs.get(a.name.replace(".jsonl",""))??0,bLeadRefs=leadRefs.get(b.name.replace(".jsonl",""))??0;if(aLeadRefs!==bLeadRefs)return bLeadRefs-aLeadRefs;let aRoot=rootScore(a.metadata),bRoot=rootScore(b.metadata);if(aRoot!==bRoot)return bRoot-aRoot;return b.mtime-a.mtime}async function discoverClaudeParentSessionId(cwd){let envSessionId=process.env.CLAUDE_CODE_SESSION_ID;if(envSessionId)return envSessionId;let projectDir=join12(claudeConfigDir2(),"projects",sanitizePath(cwd??process.cwd()));try{let jsonls=(await readdir2(projectDir)).filter((e)=>e.endsWith(".jsonl"));if(jsonls.length===0)return null;let ranked=await Promise.all(jsonls.map(async(name)=>{let filePath=join12(projectDir,name),s=await stat2(filePath),metadata=await readSessionMetadata(filePath);return{name,mtime:s.mtimeMs,metadata}})),leadRefs=await countLeadSessionRefs();return ranked.sort((a,b)=>compareSessionRanking(a,b,leadRefs)),ranked[0]?.name.replace(".jsonl","")??null}catch{return null}}function isInsideClaudeCode(){return process.env.CLAUDECODE==="1"}async function discoverTeamName(cwd){let envTeam=process.env.GENIE_TEAM;if(envTeam)return envTeam;let base=teamsBaseDir(),sessionId=await discoverClaudeSessionId(cwd);if(sessionId)try{let teams=await readdir2(base);for(let name of teams){let cfgPath=join12(base,name,"config.json");try{let content=await readFile3(cfgPath,"utf-8"),config=JSON.parse(content);if(config.leadSessionId===sessionId)return config.name}catch{}}}catch{}let tmuxSessionName=await currentTmuxSessionName();if(tmuxSessionName){let cfgPath=join12(base,tmuxSessionName,"config.json");try{let content=await readFile3(cfgPath,"utf-8");return JSON.parse(content).name}catch{}}return null}async function currentTmuxSessionName(){if(!process.env.TMUX)return null;try{let{getCurrentSessionName:getCurrentSessionName2}=await Promise.resolve().then(() => (init_tmux(),exports_tmux));return await getCurrentSessionName2()}catch{return null}}async function registerAsTeamLead(teamName,opts){let sessionId=await discoverClaudeSessionId(opts?.cwd);if(!sessionId)throw Error("Could not discover Claude Code session ID. Are you running inside Claude Code with CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1?");let resolvedLeaderName=opts?.leaderName??teamName,config=await ensureNativeTeam(teamName,`Genie team: ${teamName}`,sessionId,resolvedLeaderName);if(config.leadSessionId!==sessionId)config.leadSessionId=sessionId,await saveConfig(teamName,config);let sanitized=sanitizeTeamName(teamName),leadAgentId=`${sanitizeTeamName(resolvedLeaderName)}@${sanitized}`,existingLead=config.members.find((m)=>m.agentId===leadAgentId),resolvedPaneId=opts?.tmuxPaneId??process.env.TMUX_PANE;if(!existingLead||!existingLead.isActive)await registerNativeMember(teamName,{agentName:resolvedLeaderName,agentType:"general-purpose",color:opts?.color??"blue",tmuxPaneId:resolvedPaneId,cwd:opts?.cwd??process.cwd()});else if(resolvedPaneId&&existingLead.tmuxPaneId!==resolvedPaneId)existingLead.tmuxPaneId=resolvedPaneId,await saveConfig(teamName,config);let inbox=inboxPath(teamName,resolvedLeaderName);if(!existsSync9(inbox))await writeFile3(inbox,"[]");let finalConfig=await loadConfig(teamName);if(!finalConfig)throw Error(`Failed to load config for team "${teamName}" after creation`);return{sessionId,config:finalConfig}}var init_claude_native_teams=__esm(()=>{init_claude_settings();init_lockfile();init_provider_adapters()});import{existsSync as existsSync10,readFileSync as readFileSync5,statSync}from"fs";import{mkdir as mkdir4,readFile as readFile4,readdir as readdir3,rename,writeFile as writeFile4}from"fs/promises";import{homedir as homedir9}from"os";import{join as join13}from"path";function getGenieHome(){return process.env.GENIE_HOME??join13(homedir9(),".genie")}function workersJsonPath(){return join13(getGenieHome(),"workers.json")}function claudeTeamsDirPath(){return join13(process.env.CLAUDE_CONFIG_DIR??join13(homedir9(),".claude"),"teams")}function teamsSeedMarkerPath(){return join13(getGenieHome(),"state","teams-seed-marker")}function teamsDirMtime(claudeTeamsDir){try{return String(statSync(claudeTeamsDir).mtimeMs)}catch{return null}}function readFreshTeamsSeedMarker(claudeTeamsDir){let mtimeMs=teamsDirMtime(claudeTeamsDir);if(!mtimeMs)return null;try{let marker=JSON.parse(readFileSync5(teamsSeedMarkerPath(),"utf-8"));if(marker.teamsDir!==claudeTeamsDir||marker.mtimeMs!==mtimeMs||!Array.isArray(marker.teamNames))return null;return{teamsDir:marker.teamsDir,mtimeMs:marker.mtimeMs,teamNames:marker.teamNames.filter((name)=>typeof name==="string"&&name.length>0)}}catch{return null}}function hasFreshTeamsSeedMarker(claudeTeamsDir){return readFreshTeamsSeedMarker(claudeTeamsDir)!==null}async function writeTeamsSeedMarker(teamNames){let claudeTeamsDir=claudeTeamsDirPath(),mtimeMs=teamsDirMtime(claudeTeamsDir);if(!mtimeMs)return;let markerPath=teamsSeedMarkerPath(),marker={teamsDir:claudeTeamsDir,mtimeMs,teamNames:[...new Set(teamNames)].sort()};await mkdir4(join13(getGenieHome(),"state"),{recursive:!0}),await writeFile4(markerPath,`${JSON.stringify(marker)}
500
500
  `,"utf-8")}function needsMigration(filePath){return existsSync10(filePath)&&!existsSync10(`${filePath}.migrated`)}async function readJson(filePath){try{let content=await readFile4(filePath,"utf-8");return JSON.parse(content)}catch{return null}}async function renameMatchingFiles(dir,filter){if(!existsSync10(dir))return;try{let files=await readdir3(dir);for(let f of files){if(!filter(f))continue;let fp=join13(dir,f);if(needsMigration(fp))await rename(fp,`${fp}.migrated`)}}catch{}}function needsSeed(){if(needsMigration(workersJsonPath()))return!0;let claudeTeamsDir=claudeTeamsDirPath();if(!existsSync10(claudeTeamsDir))return!1;if(hasFreshTeamsSeedMarker(claudeTeamsDir))return!1;try{return __require("fs").readdirSync(claudeTeamsDir).some((e)=>!e.startsWith("."))}catch{return!1}}async function needsSeededTeams(sql){let marker=readFreshTeamsSeedMarker(claudeTeamsDirPath());if(!marker||marker.teamNames.length===0)return!1;try{return(await sql`
501
501
  SELECT name FROM teams WHERE name = ANY(${marker.teamNames})
@@ -834,7 +834,7 @@ ${this.ctx.stack}`;this.cancel(err)}else{if(this.callback(null,msg),this.opts.st
834
834
 
835
835
  ${this.ctx.stack}`;this.deferred.reject(err)}else this.deferred.resolve(msg);this.cancel()}cancel(err){if(this.timer)this.timer.cancel();this.mux.cancel(this),this.deferred.reject(err?err:core_1.NatsError.errorForCode(core_1.ErrorCode.Cancelled))}}exports.RequestOne=RequestOne});var require_jsutil=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.Js409Errors=void 0;exports.validateDurableName=validateDurableName;exports.validateStreamName=validateStreamName;exports.minValidation=minValidation;exports.validateName=validateName;exports.validName=validName;exports.isFlowControlMsg=isFlowControlMsg;exports.isHeartbeatMsg=isHeartbeatMsg;exports.newJsErrorMsg=newJsErrorMsg;exports.checkJsError=checkJsError;exports.setMaxWaitingToFail=setMaxWaitingToFail;exports.isTerminal409=isTerminal409;exports.checkJsErrorCode=checkJsErrorCode;var encoders_1=require_encoders(),headers_1=require_headers(),msg_1=require_msg(),core_1=require_core();function validateDurableName(name){return minValidation("durable",name)}function validateStreamName(name){return minValidation("stream",name)}function minValidation(context,name=""){if(name==="")throw Error(`${context} name required`);return[".","*",">","/","\\"," ","\t",`
836
836
  `,"\r"].forEach((v)=>{if(name.indexOf(v)!==-1){switch(v){case`
837
- `:v="\\n";break;case"\r":v="\\r";break;case"\t":v="\\t";break;default:}throw Error(`invalid ${context} name - ${context} name cannot contain '${v}'`)}}),""}function validateName(context,name=""){if(name==="")throw Error(`${context} name required`);let m=validName(name);if(m.length)throw Error(`invalid ${context} name - ${context} name ${m}`)}function validName(name=""){if(name==="")throw Error("name required");let RE=/^[-\w]+$/g;if(name.match(RE)===null){for(let c of name.split(""))if(c.match(RE)===null)return`cannot contain '${c}'`}return""}function isFlowControlMsg(msg){if(msg.data.length>0)return!1;let h=msg.headers;if(!h)return!1;return h.code>=100&&h.code<200}function isHeartbeatMsg(msg){var _a;return isFlowControlMsg(msg)&&((_a=msg.headers)===null||_a===void 0?void 0:_a.description)==="Idle Heartbeat"}function newJsErrorMsg(code,description,subject){let h=(0,headers_1.headers)(code,description),arg={hdr:1,sid:0,size:0},msg=new msg_1.MsgImpl(arg,encoders_1.Empty,{});return msg._headers=h,msg._subject=subject,msg}function checkJsError(msg){if(msg.data.length!==0)return null;let h=msg.headers;if(!h)return null;return checkJsErrorCode(h.code,h.description)}var Js409Errors;(function(Js409Errors2){Js409Errors2.MaxBatchExceeded="exceeded maxrequestbatch of",Js409Errors2.MaxExpiresExceeded="exceeded maxrequestexpires of",Js409Errors2.MaxBytesExceeded="exceeded maxrequestmaxbytes of",Js409Errors2.MaxMessageSizeExceeded="message size exceeds maxbytes",Js409Errors2.PushConsumer="consumer is push based",Js409Errors2.MaxWaitingExceeded="exceeded maxwaiting",Js409Errors2.IdleHeartbeatMissed="idle heartbeats missed",Js409Errors2.ConsumerDeleted="consumer deleted"})(Js409Errors||(exports.Js409Errors=Js409Errors={}));var MAX_WAITING_FAIL=!1;function setMaxWaitingToFail(tf){MAX_WAITING_FAIL=tf}function isTerminal409(err){if(err.code!==core_1.ErrorCode.JetStream409)return!1;let fatal=[Js409Errors.MaxBatchExceeded,Js409Errors.MaxExpiresExceeded,Js409Errors.MaxBytesExceeded,Js409Errors.MaxMessageSizeExceeded,Js409Errors.PushConsumer,Js409Errors.IdleHeartbeatMissed,Js409Errors.ConsumerDeleted];if(MAX_WAITING_FAIL)fatal.push(Js409Errors.MaxWaitingExceeded);return fatal.find((s)=>{return err.message.indexOf(s)!==-1})!==void 0}function checkJsErrorCode(code,description=""){if(code<300)return null;switch(description=description.toLowerCase(),code){case 404:return new core_1.NatsError(description,core_1.ErrorCode.JetStream404NoMessages);case 408:return new core_1.NatsError(description,core_1.ErrorCode.JetStream408RequestTimeout);case 409:{let ec=description.startsWith(Js409Errors.IdleHeartbeatMissed)?core_1.ErrorCode.JetStreamIdleHeartBeat:core_1.ErrorCode.JetStream409;return new core_1.NatsError(description,ec)}case 503:return core_1.NatsError.errorForCode(core_1.ErrorCode.JetStreamNotEnabled,Error(description));default:if(description==="")description=core_1.ErrorCode.Unknown;return new core_1.NatsError(description,`${code}`)}}});var require_jsbaseclient_api=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.BaseApiClient=void 0;exports.defaultJsOptions=defaultJsOptions;var encoders_1=require_encoders(),codec_1=require_codec(),util_1=require_util(),jsutil_1=require_jsutil(),core_1=require_core(),defaultPrefix="$JS.API",defaultTimeout=5000;function defaultJsOptions(opts){if(opts=opts||{},opts.domain)opts.apiPrefix=`$JS.${opts.domain}.API`,delete opts.domain;return(0,util_1.extend)({apiPrefix:defaultPrefix,timeout:defaultTimeout},opts)}class BaseApiClient{constructor(nc,opts){this.nc=nc,this.opts=defaultJsOptions(opts),this._parseOpts(),this.prefix=this.opts.apiPrefix,this.timeout=this.opts.timeout,this.jc=(0,codec_1.JSONCodec)()}getOptions(){return Object.assign({},this.opts)}_parseOpts(){let prefix=this.opts.apiPrefix;if(!prefix||prefix.length===0)throw Error("invalid empty prefix");if(prefix[prefix.length-1]===".")prefix=prefix.substr(0,prefix.length-1);this.opts.apiPrefix=prefix}_request(subj_1){return __awaiter(this,arguments,void 0,function*(subj,data=null,opts){opts=opts||{},opts.timeout=this.timeout;let a=encoders_1.Empty;if(data)a=this.jc.encode(data);let{retries}=opts;retries=retries||1,retries=retries===-1?Number.MAX_SAFE_INTEGER:retries;let bo=(0,util_1.backoff)();for(let i2=0;i2<retries;i2++)try{let m=yield this.nc.request(subj,a,opts);return this.parseJsResponse(m)}catch(err){let ne=err;if((ne.code==="503"||ne.code===core_1.ErrorCode.Timeout)&&i2+1<retries)yield(0,util_1.delay)(bo.backoff(i2));else throw err}})}findStream(subject){return __awaiter(this,void 0,void 0,function*(){let q={subject},names=yield this._request(`${this.prefix}.STREAM.NAMES`,q);if(!names.streams||names.streams.length!==1)throw Error("no stream matches subject");return names.streams[0]})}getConnection(){return this.nc}parseJsResponse(m){let v=this.jc.decode(m.data),r=v;if(r.error){let err=(0,jsutil_1.checkJsErrorCode)(r.error.code,r.error.description);if(err!==null)throw err.api_error=r.error,err}return v}}exports.BaseApiClient=BaseApiClient});var require_jslister=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__await=exports&&exports.__await||function(v){return this instanceof __await?(this.v=v,this):new __await(v)},__asyncGenerator=exports&&exports.__asyncGenerator||function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i2,q=[];return i2=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i2[Symbol.asyncIterator]=function(){return this},i2;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){if(g[n]){if(i2[n]=function(v){return new Promise(function(a,b2){q.push([n,v,a,b2])>1||resume(n,v)})},f)i2[n]=f(i2[n])}}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){if(f(v),q.shift(),q.length)resume(q[0][0],q[0][1])}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ListerImpl=void 0;class ListerImpl{constructor(subject,filter,jsm,payload){if(!subject)throw Error("subject is required");this.subject=subject,this.jsm=jsm,this.offset=0,this.pageInfo={},this.filter=filter,this.payload=payload||{}}next(){return __awaiter(this,void 0,void 0,function*(){if(this.err)return[];if(this.pageInfo&&this.offset>=this.pageInfo.total)return[];let offset={offset:this.offset};if(this.payload)Object.assign(offset,this.payload);try{let r=yield this.jsm._request(this.subject,offset,{timeout:this.jsm.timeout});this.pageInfo=r;let count=this.countResponse(r);if(count===0)return[];return this.offset+=count,this.filter(r)}catch(err){throw this.err=err,err}})}countResponse(r){var _a,_b,_c;switch(r===null||r===void 0?void 0:r.type){case"io.nats.jetstream.api.v1.stream_names_response":case"io.nats.jetstream.api.v1.stream_list_response":return((_a=r.streams)===null||_a===void 0?void 0:_a.length)||0;case"io.nats.jetstream.api.v1.consumer_list_response":return((_b=r.consumers)===null||_b===void 0?void 0:_b.length)||0;default:return console.error(`jslister.ts: unknown API response for paged output: ${r===null||r===void 0?void 0:r.type}`),((_c=r.streams)===null||_c===void 0?void 0:_c.length)||0}return 0}[Symbol.asyncIterator](){return __asyncGenerator(this,arguments,function*(){let page=yield __await(this.next());while(page.length>0){for(let item of page)yield yield __await(item);page=yield __await(this.next())}})}}exports.ListerImpl=ListerImpl});var require_jsapi_types=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.ConsumerApiAction=exports.StoreCompression=exports.ReplayPolicy=exports.AckPolicy=exports.DeliverPolicy=exports.StorageType=exports.DiscardPolicy=exports.RetentionPolicy=void 0;exports.defaultConsumer=defaultConsumer;var util_1=require_util(),RetentionPolicy;(function(RetentionPolicy2){RetentionPolicy2.Limits="limits",RetentionPolicy2.Interest="interest",RetentionPolicy2.Workqueue="workqueue"})(RetentionPolicy||(exports.RetentionPolicy=RetentionPolicy={}));var DiscardPolicy;(function(DiscardPolicy2){DiscardPolicy2.Old="old",DiscardPolicy2.New="new"})(DiscardPolicy||(exports.DiscardPolicy=DiscardPolicy={}));var StorageType;(function(StorageType2){StorageType2.File="file",StorageType2.Memory="memory"})(StorageType||(exports.StorageType=StorageType={}));var DeliverPolicy;(function(DeliverPolicy2){DeliverPolicy2.All="all",DeliverPolicy2.Last="last",DeliverPolicy2.New="new",DeliverPolicy2.StartSequence="by_start_sequence",DeliverPolicy2.StartTime="by_start_time",DeliverPolicy2.LastPerSubject="last_per_subject"})(DeliverPolicy||(exports.DeliverPolicy=DeliverPolicy={}));var AckPolicy;(function(AckPolicy2){AckPolicy2.None="none",AckPolicy2.All="all",AckPolicy2.Explicit="explicit",AckPolicy2.NotSet=""})(AckPolicy||(exports.AckPolicy=AckPolicy={}));var ReplayPolicy;(function(ReplayPolicy2){ReplayPolicy2.Instant="instant",ReplayPolicy2.Original="original"})(ReplayPolicy||(exports.ReplayPolicy=ReplayPolicy={}));var StoreCompression;(function(StoreCompression2){StoreCompression2.None="none",StoreCompression2.S2="s2"})(StoreCompression||(exports.StoreCompression=StoreCompression={}));var ConsumerApiAction;(function(ConsumerApiAction2){ConsumerApiAction2.CreateOrUpdate="",ConsumerApiAction2.Update="update",ConsumerApiAction2.Create="create"})(ConsumerApiAction||(exports.ConsumerApiAction=ConsumerApiAction={}));function defaultConsumer(name,opts={}){return Object.assign({name,deliver_policy:DeliverPolicy.All,ack_policy:AckPolicy.Explicit,ack_wait:(0,util_1.nanos)(30000),replay_policy:ReplayPolicy.Instant},opts)}});var require_types2=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.ConsumerOptsBuilderImpl=exports.kvPrefix=exports.RepublishHeaders=exports.DirectMsgHeaders=exports.KvWatchInclude=exports.JsHeaders=exports.AdvisoryKind=void 0;exports.consumerOpts=consumerOpts;exports.isConsumerOptsBuilder=isConsumerOptsBuilder;var jsapi_types_1=require_jsapi_types(),jsutil_1=require_jsutil(),util_1=require_util(),AdvisoryKind;(function(AdvisoryKind2){AdvisoryKind2.API="api_audit",AdvisoryKind2.StreamAction="stream_action",AdvisoryKind2.ConsumerAction="consumer_action",AdvisoryKind2.SnapshotCreate="snapshot_create",AdvisoryKind2.SnapshotComplete="snapshot_complete",AdvisoryKind2.RestoreCreate="restore_create",AdvisoryKind2.RestoreComplete="restore_complete",AdvisoryKind2.MaxDeliver="max_deliver",AdvisoryKind2.Terminated="terminated",AdvisoryKind2.Ack="consumer_ack",AdvisoryKind2.StreamLeaderElected="stream_leader_elected",AdvisoryKind2.StreamQuorumLost="stream_quorum_lost",AdvisoryKind2.ConsumerLeaderElected="consumer_leader_elected",AdvisoryKind2.ConsumerQuorumLost="consumer_quorum_lost"})(AdvisoryKind||(exports.AdvisoryKind=AdvisoryKind={}));var JsHeaders;(function(JsHeaders2){JsHeaders2.StreamSourceHdr="Nats-Stream-Source",JsHeaders2.LastConsumerSeqHdr="Nats-Last-Consumer",JsHeaders2.LastStreamSeqHdr="Nats-Last-Stream",JsHeaders2.ConsumerStalledHdr="Nats-Consumer-Stalled",JsHeaders2.MessageSizeHdr="Nats-Msg-Size",JsHeaders2.RollupHdr="Nats-Rollup",JsHeaders2.RollupValueSubject="sub",JsHeaders2.RollupValueAll="all",JsHeaders2.PendingMessagesHdr="Nats-Pending-Messages",JsHeaders2.PendingBytesHdr="Nats-Pending-Bytes"})(JsHeaders||(exports.JsHeaders=JsHeaders={}));var KvWatchInclude;(function(KvWatchInclude2){KvWatchInclude2.LastValue="",KvWatchInclude2.AllHistory="history",KvWatchInclude2.UpdatesOnly="updates"})(KvWatchInclude||(exports.KvWatchInclude=KvWatchInclude={}));var DirectMsgHeaders;(function(DirectMsgHeaders2){DirectMsgHeaders2.Stream="Nats-Stream",DirectMsgHeaders2.Sequence="Nats-Sequence",DirectMsgHeaders2.TimeStamp="Nats-Time-Stamp",DirectMsgHeaders2.Subject="Nats-Subject"})(DirectMsgHeaders||(exports.DirectMsgHeaders=DirectMsgHeaders={}));var RepublishHeaders;(function(RepublishHeaders2){RepublishHeaders2.Stream="Nats-Stream",RepublishHeaders2.Subject="Nats-Subject",RepublishHeaders2.Sequence="Nats-Sequence",RepublishHeaders2.LastSequence="Nats-Last-Sequence",RepublishHeaders2.Size="Nats-Msg-Size"})(RepublishHeaders||(exports.RepublishHeaders=RepublishHeaders={}));exports.kvPrefix="KV_";class ConsumerOptsBuilderImpl{constructor(opts){this.stream="",this.mack=!1,this.ordered=!1,this.config=(0,jsapi_types_1.defaultConsumer)("",opts||{})}getOpts(){var _a;let o={};if(o.config=Object.assign({},this.config),o.config.filter_subject)this.filterSubject(o.config.filter_subject),o.config.filter_subject=void 0;if(o.config.filter_subjects)(_a=o.config.filter_subjects)===null||_a===void 0||_a.forEach((v)=>{this.filterSubject(v)}),o.config.filter_subjects=void 0;if(o.mack=this.mack,o.stream=this.stream,o.callbackFn=this.callbackFn,o.max=this.max,o.queue=this.qname,o.ordered=this.ordered,o.config.ack_policy=o.ordered?jsapi_types_1.AckPolicy.None:o.config.ack_policy,o.isBind=o.isBind||!1,this.filters)switch(this.filters.length){case 0:break;case 1:o.config.filter_subject=this.filters[0];break;default:o.config.filter_subjects=this.filters}return o}description(description){return this.config.description=description,this}deliverTo(subject){return this.config.deliver_subject=subject,this}durable(name){return(0,jsutil_1.validateDurableName)(name),this.config.durable_name=name,this}startSequence(seq2){if(seq2<=0)throw Error("sequence must be greater than 0");return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.StartSequence,this.config.opt_start_seq=seq2,this}startTime(time){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.StartTime,this.config.opt_start_time=time.toISOString(),this}deliverAll(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.All,this}deliverLastPerSubject(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.LastPerSubject,this}deliverLast(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.Last,this}deliverNew(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.New,this}startAtTimeDelta(millis){return this.startTime(new Date(Date.now()-millis)),this}headersOnly(){return this.config.headers_only=!0,this}ackNone(){return this.config.ack_policy=jsapi_types_1.AckPolicy.None,this}ackAll(){return this.config.ack_policy=jsapi_types_1.AckPolicy.All,this}ackExplicit(){return this.config.ack_policy=jsapi_types_1.AckPolicy.Explicit,this}ackWait(millis){return this.config.ack_wait=(0,util_1.nanos)(millis),this}maxDeliver(max){return this.config.max_deliver=max,this}filterSubject(s){return this.filters=this.filters||[],this.filters.push(s),this}replayInstantly(){return this.config.replay_policy=jsapi_types_1.ReplayPolicy.Instant,this}replayOriginal(){return this.config.replay_policy=jsapi_types_1.ReplayPolicy.Original,this}sample(n){if(n=Math.trunc(n),n<0||n>100)throw Error("value must be between 0-100");return this.config.sample_freq=`${n}%`,this}limit(n){return this.config.rate_limit_bps=n,this}maxWaiting(max){return this.config.max_waiting=max,this}maxAckPending(max){return this.config.max_ack_pending=max,this}idleHeartbeat(millis){return this.config.idle_heartbeat=(0,util_1.nanos)(millis),this}flowControl(){return this.config.flow_control=!0,this}deliverGroup(name){return this.queue(name),this}manualAck(){return this.mack=!0,this}maxMessages(max){return this.max=max,this}callback(fn){return this.callbackFn=fn,this}queue(n){return this.qname=n,this.config.deliver_group=n,this}orderedConsumer(){return this.ordered=!0,this}bind(stream,durable){return this.stream=stream,this.config.durable_name=durable,this.isBind=!0,this}bindStream(stream){return this.stream=stream,this}inactiveEphemeralThreshold(millis){return this.config.inactive_threshold=(0,util_1.nanos)(millis),this}maxPullBatch(n){return this.config.max_batch=n,this}maxPullRequestExpires(millis){return this.config.max_expires=(0,util_1.nanos)(millis),this}memory(){return this.config.mem_storage=!0,this}numReplicas(n){return this.config.num_replicas=n,this}consumerName(n){return this.config.name=n,this}}exports.ConsumerOptsBuilderImpl=ConsumerOptsBuilderImpl;function consumerOpts(opts){return new ConsumerOptsBuilderImpl(opts)}function isConsumerOptsBuilder(o){return typeof o.getOpts==="function"}});var require_jsmconsumer_api=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.ConsumerAPIImpl=void 0;var jsbaseclient_api_1=require_jsbaseclient_api(),jslister_1=require_jslister(),jsutil_1=require_jsutil(),semver_1=require_semver(),jsapi_types_1=require_jsapi_types();class ConsumerAPIImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts)}add(stream_1,cfg_1){return __awaiter(this,arguments,void 0,function*(stream,cfg,action=jsapi_types_1.ConsumerApiAction.Create){var _a,_b,_c;if((0,jsutil_1.validateStreamName)(stream),cfg.deliver_group&&cfg.flow_control)throw Error("jetstream flow control is not supported with queue groups");if(cfg.deliver_group&&cfg.idle_heartbeat)throw Error("jetstream idle heartbeat is not supported with queue groups");let cr={};if(cr.config=cfg,cr.stream_name=stream,cr.action=action,cr.config.durable_name)(0,jsutil_1.validateDurableName)(cr.config.durable_name);let nci=this.nc,{min,ok:newAPI}=nci.features.get(semver_1.Feature.JS_NEW_CONSUMER_CREATE_API),name=cfg.name===""?void 0:cfg.name;if(name&&!newAPI)throw Error(`consumer 'name' requires server ${min}`);if(name)try{(0,jsutil_1.minValidation)("name",name)}catch(err){let m=err.message,idx=m.indexOf("cannot contain");if(idx!==-1)throw Error(`consumer 'name' ${m.substring(idx)}`);throw err}let subj,consumerName="";if(Array.isArray(cfg.filter_subjects)){let{min:min2,ok}=nci.features.get(semver_1.Feature.JS_MULTIPLE_CONSUMER_FILTER);if(!ok)throw Error(`consumer 'filter_subjects' requires server ${min2}`);newAPI=!1}if(cfg.metadata){let{min:min2,ok}=nci.features.get(semver_1.Feature.JS_STREAM_CONSUMER_METADATA);if(!ok)throw Error(`consumer 'metadata' requires server ${min2}`)}if(newAPI)consumerName=(_b=(_a=cfg.name)!==null&&_a!==void 0?_a:cfg.durable_name)!==null&&_b!==void 0?_b:"";if(consumerName!==""){let fs2=(_c=cfg.filter_subject)!==null&&_c!==void 0?_c:void 0;if(fs2===">")fs2=void 0;subj=fs2!==void 0?`${this.prefix}.CONSUMER.CREATE.${stream}.${consumerName}.${fs2}`:`${this.prefix}.CONSUMER.CREATE.${stream}.${consumerName}`}else subj=cfg.durable_name?`${this.prefix}.CONSUMER.DURABLE.CREATE.${stream}.${cfg.durable_name}`:`${this.prefix}.CONSUMER.CREATE.${stream}`;return yield this._request(subj,cr)})}update(stream,durable,cfg){return __awaiter(this,void 0,void 0,function*(){let ci=yield this.info(stream,durable),changable=cfg;return this.add(stream,Object.assign(ci.config,changable),jsapi_types_1.ConsumerApiAction.Update)})}info(stream,name){return __awaiter(this,void 0,void 0,function*(){return(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(name),yield this._request(`${this.prefix}.CONSUMER.INFO.${stream}.${name}`)})}delete(stream,name){return __awaiter(this,void 0,void 0,function*(){return(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(name),(yield this._request(`${this.prefix}.CONSUMER.DELETE.${stream}.${name}`)).success})}list(stream){(0,jsutil_1.validateStreamName)(stream);let filter=(v)=>{return v.consumers},subj=`${this.prefix}.CONSUMER.LIST.${stream}`;return new jslister_1.ListerImpl(subj,filter,this)}pause(stream,name,until){let subj=`${this.prefix}.CONSUMER.PAUSE.${stream}.${name}`,opts={pause_until:until.toISOString()};return this._request(subj,opts)}resume(stream,name){return this.pause(stream,name,new Date(0))}}exports.ConsumerAPIImpl=ConsumerAPIImpl});var require_mod2=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.usernamePasswordAuthenticator=exports.tokenAuthenticator=exports.syncIterator=exports.StringCodec=exports.ServiceVerb=exports.ServiceResponseType=exports.ServiceErrorHeader=exports.ServiceErrorCodeHeader=exports.ServiceError=exports.RequestStrategy=exports.nuid=exports.Nuid=exports.nkeys=exports.nkeyAuthenticator=exports.NatsError=exports.nanos=exports.MsgHdrsImpl=exports.millis=exports.Metric=exports.Match=exports.jwtAuthenticator=exports.JSONCodec=exports.headers=exports.Events=exports.ErrorCode=exports.Empty=exports.delay=exports.deferred=exports.DebugEvents=exports.deadline=exports.credsAuthenticator=exports.createInbox=exports.canonicalMIMEHeaderKey=exports.buildAuthenticator=exports.Bench=exports.backoff=void 0;var internal_mod_1=require_internal_mod();Object.defineProperty(exports,"backoff",{enumerable:!0,get:function(){return internal_mod_1.backoff}});Object.defineProperty(exports,"Bench",{enumerable:!0,get:function(){return internal_mod_1.Bench}});Object.defineProperty(exports,"buildAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.buildAuthenticator}});Object.defineProperty(exports,"canonicalMIMEHeaderKey",{enumerable:!0,get:function(){return internal_mod_1.canonicalMIMEHeaderKey}});Object.defineProperty(exports,"createInbox",{enumerable:!0,get:function(){return internal_mod_1.createInbox}});Object.defineProperty(exports,"credsAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.credsAuthenticator}});Object.defineProperty(exports,"deadline",{enumerable:!0,get:function(){return internal_mod_1.deadline}});Object.defineProperty(exports,"DebugEvents",{enumerable:!0,get:function(){return internal_mod_1.DebugEvents}});Object.defineProperty(exports,"deferred",{enumerable:!0,get:function(){return internal_mod_1.deferred}});Object.defineProperty(exports,"delay",{enumerable:!0,get:function(){return internal_mod_1.delay}});Object.defineProperty(exports,"Empty",{enumerable:!0,get:function(){return internal_mod_1.Empty}});Object.defineProperty(exports,"ErrorCode",{enumerable:!0,get:function(){return internal_mod_1.ErrorCode}});Object.defineProperty(exports,"Events",{enumerable:!0,get:function(){return internal_mod_1.Events}});Object.defineProperty(exports,"headers",{enumerable:!0,get:function(){return internal_mod_1.headers}});Object.defineProperty(exports,"JSONCodec",{enumerable:!0,get:function(){return internal_mod_1.JSONCodec}});Object.defineProperty(exports,"jwtAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.jwtAuthenticator}});Object.defineProperty(exports,"Match",{enumerable:!0,get:function(){return internal_mod_1.Match}});Object.defineProperty(exports,"Metric",{enumerable:!0,get:function(){return internal_mod_1.Metric}});Object.defineProperty(exports,"millis",{enumerable:!0,get:function(){return internal_mod_1.millis}});Object.defineProperty(exports,"MsgHdrsImpl",{enumerable:!0,get:function(){return internal_mod_1.MsgHdrsImpl}});Object.defineProperty(exports,"nanos",{enumerable:!0,get:function(){return internal_mod_1.nanos}});Object.defineProperty(exports,"NatsError",{enumerable:!0,get:function(){return internal_mod_1.NatsError}});Object.defineProperty(exports,"nkeyAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.nkeyAuthenticator}});Object.defineProperty(exports,"nkeys",{enumerable:!0,get:function(){return internal_mod_1.nkeys}});Object.defineProperty(exports,"Nuid",{enumerable:!0,get:function(){return internal_mod_1.Nuid}});Object.defineProperty(exports,"nuid",{enumerable:!0,get:function(){return internal_mod_1.nuid}});Object.defineProperty(exports,"RequestStrategy",{enumerable:!0,get:function(){return internal_mod_1.RequestStrategy}});Object.defineProperty(exports,"ServiceError",{enumerable:!0,get:function(){return internal_mod_1.ServiceError}});Object.defineProperty(exports,"ServiceErrorCodeHeader",{enumerable:!0,get:function(){return internal_mod_1.ServiceErrorCodeHeader}});Object.defineProperty(exports,"ServiceErrorHeader",{enumerable:!0,get:function(){return internal_mod_1.ServiceErrorHeader}});Object.defineProperty(exports,"ServiceResponseType",{enumerable:!0,get:function(){return internal_mod_1.ServiceResponseType}});Object.defineProperty(exports,"ServiceVerb",{enumerable:!0,get:function(){return internal_mod_1.ServiceVerb}});Object.defineProperty(exports,"StringCodec",{enumerable:!0,get:function(){return internal_mod_1.StringCodec}});Object.defineProperty(exports,"syncIterator",{enumerable:!0,get:function(){return internal_mod_1.syncIterator}});Object.defineProperty(exports,"tokenAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.tokenAuthenticator}});Object.defineProperty(exports,"usernamePasswordAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.usernamePasswordAuthenticator}})});var require_jsmsg=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.JsMsgImpl=exports.ACK=void 0;exports.toJsMsg=toJsMsg;exports.parseInfo=parseInfo;var databuffer_1=require_databuffer(),codec_1=require_codec(),request_1=require_request(),mod_1=require_mod2(),util_1=require_util();exports.ACK=Uint8Array.of(43,65,67,75);var NAK=Uint8Array.of(45,78,65,75),WPI=Uint8Array.of(43,87,80,73),NXT=Uint8Array.of(43,78,88,84),TERM=Uint8Array.of(43,84,69,82,77),SPACE=Uint8Array.of(32);function toJsMsg(m,ackTimeout=5000){return new JsMsgImpl(m,ackTimeout)}function parseInfo(s){let tokens2=s.split(".");if(tokens2.length===9)tokens2.splice(2,0,"_","");if(tokens2.length<11||tokens2[0]!=="$JS"||tokens2[1]!=="ACK")throw Error("not js message");let di={};return di.domain=tokens2[2]==="_"?"":tokens2[2],di.account_hash=tokens2[3],di.stream=tokens2[4],di.consumer=tokens2[5],di.deliveryCount=parseInt(tokens2[6],10),di.redeliveryCount=di.deliveryCount,di.redelivered=di.deliveryCount>1,di.streamSequence=parseInt(tokens2[7],10),di.deliverySequence=parseInt(tokens2[8],10),di.timestampNanos=parseInt(tokens2[9],10),di.pending=parseInt(tokens2[10],10),di}class JsMsgImpl{constructor(msg,timeout){this.msg=msg,this.didAck=!1,this.timeout=timeout}get subject(){return this.msg.subject}get sid(){return this.msg.sid}get data(){return this.msg.data}get headers(){return this.msg.headers}get info(){if(!this.di)this.di=parseInfo(this.reply);return this.di}get redelivered(){return this.info.deliveryCount>1}get reply(){return this.msg.reply||""}get seq(){return this.info.streamSequence}doAck(payload){if(!this.didAck)this.didAck=!this.isWIP(payload),this.msg.respond(payload)}isWIP(p){return p.length===4&&p[0]===WPI[0]&&p[1]===WPI[1]&&p[2]===WPI[2]&&p[3]===WPI[3]}ackAck(opts){return __awaiter(this,void 0,void 0,function*(){var _a;opts=opts||{},opts.timeout=opts.timeout||this.timeout;let d=(0,mod_1.deferred)();if(!this.didAck)if(this.didAck=!0,this.msg.reply){let proto=this.msg.publisher,trace=!((_a=proto.options)===null||_a===void 0?void 0:_a.noAsyncTraces),r=new request_1.RequestOne(proto.muxSubscriptions,this.msg.reply,{timeout:opts.timeout},trace);proto.request(r);try{proto.publish(this.msg.reply,exports.ACK,{reply:`${proto.muxSubscriptions.baseInbox}${r.token}`})}catch(err){r.cancel(err)}try{yield Promise.race([r.timer,r.deferred]),d.resolve(!0)}catch(err){r.cancel(err),d.reject(err)}}else d.resolve(!1);else d.resolve(!1);return d})}ack(){this.doAck(exports.ACK)}nak(millis){let payload=NAK;if(millis)payload=(0,codec_1.StringCodec)().encode(`-NAK ${JSON.stringify({delay:(0,util_1.nanos)(millis)})}`);this.doAck(payload)}working(){this.doAck(WPI)}next(subj,opts={batch:1}){let args={};if(args.batch=opts.batch||1,args.no_wait=opts.no_wait||!1,opts.expires&&opts.expires>0)args.expires=(0,util_1.nanos)(opts.expires);let data=(0,codec_1.JSONCodec)().encode(args),payload=databuffer_1.DataBuffer.concat(NXT,SPACE,data),reqOpts=subj?{reply:subj}:void 0;this.msg.respond(payload,reqOpts)}term(reason=""){let term=TERM;if((reason===null||reason===void 0?void 0:reason.length)>0)term=(0,codec_1.StringCodec)().encode(`+TERM ${reason}`);this.doAck(term)}json(){return this.msg.json()}string(){return this.msg.string()}}exports.JsMsgImpl=JsMsgImpl});var require_typedsub=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.TypedSubscription=void 0;exports.checkFn=checkFn;var util_1=require_util(),queued_iterator_1=require_queued_iterator(),core_1=require_core();function checkFn(fn,name,required=!1){if(required===!0&&!fn)throw core_1.NatsError.errorForCode(core_1.ErrorCode.ApiError,Error(`${name} is not a function`));if(fn&&typeof fn!=="function")throw core_1.NatsError.errorForCode(core_1.ErrorCode.ApiError,Error(`${name} is not a function`))}class TypedSubscription extends queued_iterator_1.QueuedIteratorImpl{constructor(nc,subject,opts){super();if(checkFn(opts.adapter,"adapter",!0),this.adapter=opts.adapter,opts.callback)checkFn(opts.callback,"callback");if(this.noIterator=typeof opts.callback==="function",opts.ingestionFilterFn)checkFn(opts.ingestionFilterFn,"ingestionFilterFn"),this.ingestionFilterFn=opts.ingestionFilterFn;if(opts.protocolFilterFn)checkFn(opts.protocolFilterFn,"protocolFilterFn"),this.protocolFilterFn=opts.protocolFilterFn;if(opts.dispatchedFn)checkFn(opts.dispatchedFn,"dispatchedFn"),this.dispatchedFn=opts.dispatchedFn;if(opts.cleanupFn)checkFn(opts.cleanupFn,"cleanupFn");let callback=(err,msg)=>{this.callback(err,msg)};if(opts.callback){let uh=opts.callback;callback=(err,msg)=>{let[jer,tm]=this.adapter(err,msg);if(jer){uh(jer,null);return}let{ingest}=this.ingestionFilterFn?this.ingestionFilterFn(tm,this):{ingest:!0};if(ingest){if(this.protocolFilterFn?this.protocolFilterFn(tm):!0){if(uh(jer,tm),this.dispatchedFn&&tm)this.dispatchedFn(tm)}}}}let{max,queue:queue2,timeout}=opts,sopts={queue:queue2,timeout,callback};if(max&&max>0)sopts.max=max;if(this.sub=nc.subscribe(subject,sopts),opts.cleanupFn)this.sub.cleanupFn=opts.cleanupFn;if(!this.noIterator)this.iterClosed.then(()=>{this.unsubscribe()});this.subIterDone=(0,util_1.deferred)(),Promise.all([this.sub.closed,this.iterClosed]).then(()=>{this.subIterDone.resolve()}).catch(()=>{this.subIterDone.resolve()}),((s)=>__awaiter(this,void 0,void 0,function*(){yield s.closed,this.stop()}))(this.sub).then().catch()}unsubscribe(max){this.sub.unsubscribe(max)}drain(){return this.sub.drain()}isDraining(){return this.sub.isDraining()}isClosed(){return this.sub.isClosed()}callback(e,msg){this.sub.cancelTimeout();let[err,tm]=this.adapter(e,msg);if(err)this.stop(err);if(tm)this.push(tm)}getSubject(){return this.sub.getSubject()}getReceived(){return this.sub.getReceived()}getProcessed(){return this.sub.getProcessed()}getPending(){return this.sub.getPending()}getID(){return this.sub.getID()}getMax(){return this.sub.getMax()}get closed(){return this.sub.closed}}exports.TypedSubscription=TypedSubscription});var require_base64=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.Base64UrlPaddedCodec=exports.Base64UrlCodec=exports.Base64Codec=void 0;class Base64Codec{static encode(bytes){if(typeof bytes==="string")return btoa(bytes);let a=Array.from(bytes);return btoa(String.fromCharCode(...a))}static decode(s,binary2=!1){let bin=atob(s);if(!binary2)return bin;return Uint8Array.from(bin,(c)=>c.charCodeAt(0))}}exports.Base64Codec=Base64Codec;class Base64UrlCodec{static encode(bytes){return Base64UrlCodec.toB64URLEncoding(Base64Codec.encode(bytes))}static decode(s,binary2=!1){return Base64Codec.decode(Base64UrlCodec.fromB64URLEncoding(s),binary2)}static toB64URLEncoding(b64str){return b64str.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}static fromB64URLEncoding(b64str){return b64str.replace(/_/g,"/").replace(/-/g,"+")}}exports.Base64UrlCodec=Base64UrlCodec;class Base64UrlPaddedCodec{static encode(bytes){return Base64UrlPaddedCodec.toB64URLEncoding(Base64Codec.encode(bytes))}static decode(s,binary2=!1){return Base64UrlPaddedCodec.decode(Base64UrlPaddedCodec.fromB64URLEncoding(s),binary2)}static toB64URLEncoding(b64str){return b64str.replace(/\+/g,"-").replace(/\//g,"_")}static fromB64URLEncoding(b64str){return b64str.replace(/_/g,"/").replace(/-/g,"+")}}exports.Base64UrlPaddedCodec=Base64UrlPaddedCodec});var require_js_sha256=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.sha256=exports.sha224=exports.default=void 0;function t(t2,e2){return e2.forEach(function(e3){e3&&typeof e3!="string"&&!Array.isArray(e3)&&Object.keys(e3).forEach(function(r2){if(r2!=="default"&&!(r2 in t2)){var i3=Object.getOwnPropertyDescriptor(e3,r2);Object.defineProperty(t2,r2,i3.get?i3:{enumerable:!0,get:function(){return e3[r2]}})}})}),Object.freeze(t2)}var e=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};function r(){throw Error("setTimeout has not been defined")}function i2(){throw Error("clearTimeout has not been defined")}var h=r,s=i2;function n(t2){if(h===setTimeout)return setTimeout(t2,0);if((h===r||!h)&&setTimeout)return h=setTimeout,setTimeout(t2,0);try{return h(t2,0)}catch(e2){try{return h.call(null,t2,0)}catch(e3){return h.call(this,t2,0)}}}typeof e.setTimeout=="function"&&(h=setTimeout),typeof e.clearTimeout=="function"&&(s=clearTimeout);var o,a=[],f=!1,u=-1;function c(){f&&o&&(f=!1,o.length?a=o.concat(a):u=-1,a.length&&l())}function l(){if(!f){var t2=n(c);f=!0;for(var e2=a.length;e2;){for(o=a,a=[];++u<e2;)o&&o[u].run();u=-1,e2=a.length}o=null,f=!1,function(t3){if(s===clearTimeout)return clearTimeout(t3);if((s===i2||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(t3);try{return s(t3)}catch(e3){try{return s.call(null,t3)}catch(e4){return s.call(this,t3)}}}(t2)}}function y(t2,e2){this.fun=t2,this.array=e2}y.prototype.run=function(){this.fun.apply(null,this.array)};function p(){}var d=p,w=p,b2=p,v=p,A=p,g=p,_=p,m=e.performance||{},O=m.now||m.mozNow||m.msNow||m.oNow||m.webkitNow||function(){return new Date().getTime()},B=new Date,E={nextTick:function(t2){var e2=Array(arguments.length-1);if(arguments.length>1)for(var r2=1;r2<arguments.length;r2++)e2[r2-1]=arguments[r2];a.push(new y(t2,e2)),a.length!==1||f||n(l)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:d,addListener:w,once:b2,off:v,removeListener:A,removeAllListeners:g,emit:_,binding:function(t2){throw Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t2){throw Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t2){var e2=0.001*O.call(m),r2=Math.floor(e2),i3=Math.floor(e2%1*1e9);return t2&&(r2-=t2[0],(i3-=t2[1])<0&&(r2--,i3+=1e9)),[r2,i3]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-B)/1000}},S=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function T(t2){if(t2.__esModule)return t2;var e2=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t2).forEach(function(r2){var i3=Object.getOwnPropertyDescriptor(t2,r2);Object.defineProperty(e2,r2,i3.get?i3:{enumerable:!0,get:function(){return t2[r2]}})}),e2}var k,x={exports:{}},j={},N=T(t({__proto__:null,default:j},[j]));k=x,function(){var t2="input is invalid type",e2=typeof window=="object",r2=e2?window:{};r2.JS_SHA256_NO_WINDOW&&(e2=!1);var i3=!e2&&typeof self=="object",h2=!r2.JS_SHA256_NO_NODE_JS&&E.versions&&E.versions.node;h2?r2=S:i3&&(r2=self);var s2=!r2.JS_SHA256_NO_COMMON_JS&&k.exports,n2=!r2.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",o2="0123456789abcdef".split(""),a2=[-2147483648,8388608,32768,128],f2=[24,16,8,0],u2=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],c2=["hex","array","digest","arrayBuffer"],l2=[];!r2.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t3){return Object.prototype.toString.call(t3)==="[object Array]"}),!n2||!r2.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t3){return typeof t3=="object"&&t3.buffer&&t3.buffer.constructor===ArrayBuffer});var y2=function(t3,e3){return function(r3){return new v2(e3,!0).update(r3)[t3]()}},p2=function(t3){var e3=y2("hex",t3);h2&&(e3=d2(e3,t3)),e3.create=function(){return new v2(t3)},e3.update=function(t4){return e3.create().update(t4)};for(var r3=0;r3<c2.length;++r3){var i4=c2[r3];e3[i4]=y2(i4,t3)}return e3},d2=function(e3,i4){var h3,s3=N,n3=N.Buffer,o3=i4?"sha224":"sha256";return h3=n3.from&&!r2.JS_SHA256_NO_BUFFER_FROM?n3.from:function(t3){return new n3(t3)},function(r3){if(typeof r3=="string")return s3.createHash(o3).update(r3,"utf8").digest("hex");if(r3==null)throw Error(t2);return r3.constructor===ArrayBuffer&&(r3=new Uint8Array(r3)),Array.isArray(r3)||ArrayBuffer.isView(r3)||r3.constructor===n3?s3.createHash(o3).update(h3(r3)).digest("hex"):e3(r3)}},w2=function(t3,e3){return function(r3,i4){return new A2(r3,e3,!0).update(i4)[t3]()}},b3=function(t3){var e3=w2("hex",t3);e3.create=function(e4){return new A2(e4,t3)},e3.update=function(t4,r4){return e3.create(t4).update(r4)};for(var r3=0;r3<c2.length;++r3){var i4=c2[r3];e3[i4]=w2(i4,t3)}return e3};function v2(t3,e3){e3?(l2[0]=l2[16]=l2[1]=l2[2]=l2[3]=l2[4]=l2[5]=l2[6]=l2[7]=l2[8]=l2[9]=l2[10]=l2[11]=l2[12]=l2[13]=l2[14]=l2[15]=0,this.blocks=l2):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t3?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=t3}function A2(e3,r3,i4){var h3,s3=typeof e3;if(s3==="string"){var o3,a3=[],f3=e3.length,u3=0;for(h3=0;h3<f3;++h3)(o3=e3.charCodeAt(h3))<128?a3[u3++]=o3:o3<2048?(a3[u3++]=192|o3>>>6,a3[u3++]=128|63&o3):o3<55296||o3>=57344?(a3[u3++]=224|o3>>>12,a3[u3++]=128|o3>>>6&63,a3[u3++]=128|63&o3):(o3=65536+((1023&o3)<<10|1023&e3.charCodeAt(++h3)),a3[u3++]=240|o3>>>18,a3[u3++]=128|o3>>>12&63,a3[u3++]=128|o3>>>6&63,a3[u3++]=128|63&o3);e3=a3}else{if(s3!=="object")throw Error(t2);if(e3===null)throw Error(t2);if(n2&&e3.constructor===ArrayBuffer)e3=new Uint8Array(e3);else if(!(Array.isArray(e3)||n2&&ArrayBuffer.isView(e3)))throw Error(t2)}e3.length>64&&(e3=new v2(r3,!0).update(e3).array());var c3=[],l3=[];for(h3=0;h3<64;++h3){var y3=e3[h3]||0;c3[h3]=92^y3,l3[h3]=54^y3}v2.call(this,r3,i4),this.update(l3),this.oKeyPad=c3,this.inner=!0,this.sharedMemory=i4}v2.prototype.update=function(e3){if(!this.finalized){var r3,i4=typeof e3;if(i4!=="string"){if(i4!=="object")throw Error(t2);if(e3===null)throw Error(t2);if(n2&&e3.constructor===ArrayBuffer)e3=new Uint8Array(e3);else if(!(Array.isArray(e3)||n2&&ArrayBuffer.isView(e3)))throw Error(t2);r3=!0}for(var h3,s3,o3=0,a3=e3.length,u3=this.blocks;o3<a3;){if(this.hashed&&(this.hashed=!1,u3[0]=this.block,this.block=u3[16]=u3[1]=u3[2]=u3[3]=u3[4]=u3[5]=u3[6]=u3[7]=u3[8]=u3[9]=u3[10]=u3[11]=u3[12]=u3[13]=u3[14]=u3[15]=0),r3)for(s3=this.start;o3<a3&&s3<64;++o3)u3[s3>>>2]|=e3[o3]<<f2[3&s3++];else for(s3=this.start;o3<a3&&s3<64;++o3)(h3=e3.charCodeAt(o3))<128?u3[s3>>>2]|=h3<<f2[3&s3++]:h3<2048?(u3[s3>>>2]|=(192|h3>>>6)<<f2[3&s3++],u3[s3>>>2]|=(128|63&h3)<<f2[3&s3++]):h3<55296||h3>=57344?(u3[s3>>>2]|=(224|h3>>>12)<<f2[3&s3++],u3[s3>>>2]|=(128|h3>>>6&63)<<f2[3&s3++],u3[s3>>>2]|=(128|63&h3)<<f2[3&s3++]):(h3=65536+((1023&h3)<<10|1023&e3.charCodeAt(++o3)),u3[s3>>>2]|=(240|h3>>>18)<<f2[3&s3++],u3[s3>>>2]|=(128|h3>>>12&63)<<f2[3&s3++],u3[s3>>>2]|=(128|h3>>>6&63)<<f2[3&s3++],u3[s3>>>2]|=(128|63&h3)<<f2[3&s3++]);this.lastByteIndex=s3,this.bytes+=s3-this.start,s3>=64?(this.block=u3[16],this.start=s3-64,this.hash(),this.hashed=!0):this.start=s3}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this}},v2.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t3=this.blocks,e3=this.lastByteIndex;t3[16]=this.block,t3[e3>>>2]|=a2[3&e3],this.block=t3[16],e3>=56&&(this.hashed||this.hash(),t3[0]=this.block,t3[16]=t3[1]=t3[2]=t3[3]=t3[4]=t3[5]=t3[6]=t3[7]=t3[8]=t3[9]=t3[10]=t3[11]=t3[12]=t3[13]=t3[14]=t3[15]=0),t3[14]=this.hBytes<<3|this.bytes>>>29,t3[15]=this.bytes<<3,this.hash()}},v2.prototype.hash=function(){var t3,e3,r3,i4,h3,s3,n3,o3,a3,f3=this.h0,c3=this.h1,l3=this.h2,y3=this.h3,p3=this.h4,d3=this.h5,w3=this.h6,b4=this.h7,v3=this.blocks;for(t3=16;t3<64;++t3)e3=((h3=v3[t3-15])>>>7|h3<<25)^(h3>>>18|h3<<14)^h3>>>3,r3=((h3=v3[t3-2])>>>17|h3<<15)^(h3>>>19|h3<<13)^h3>>>10,v3[t3]=v3[t3-16]+e3+v3[t3-7]+r3|0;for(a3=c3&l3,t3=0;t3<64;t3+=4)this.first?(this.is224?(s3=300032,b4=(h3=v3[0]-1413257819)-150054599|0,y3=h3+24177077|0):(s3=704751109,b4=(h3=v3[0]-210244248)-1521486534|0,y3=h3+143694565|0),this.first=!1):(e3=(f3>>>2|f3<<30)^(f3>>>13|f3<<19)^(f3>>>22|f3<<10),i4=(s3=f3&c3)^f3&l3^a3,b4=y3+(h3=b4+(r3=(p3>>>6|p3<<26)^(p3>>>11|p3<<21)^(p3>>>25|p3<<7))+(p3&d3^~p3&w3)+u2[t3]+v3[t3])|0,y3=h3+(e3+i4)|0),e3=(y3>>>2|y3<<30)^(y3>>>13|y3<<19)^(y3>>>22|y3<<10),i4=(n3=y3&f3)^y3&c3^s3,w3=l3+(h3=w3+(r3=(b4>>>6|b4<<26)^(b4>>>11|b4<<21)^(b4>>>25|b4<<7))+(b4&p3^~b4&d3)+u2[t3+1]+v3[t3+1])|0,e3=((l3=h3+(e3+i4)|0)>>>2|l3<<30)^(l3>>>13|l3<<19)^(l3>>>22|l3<<10),i4=(o3=l3&y3)^l3&f3^n3,d3=c3+(h3=d3+(r3=(w3>>>6|w3<<26)^(w3>>>11|w3<<21)^(w3>>>25|w3<<7))+(w3&b4^~w3&p3)+u2[t3+2]+v3[t3+2])|0,e3=((c3=h3+(e3+i4)|0)>>>2|c3<<30)^(c3>>>13|c3<<19)^(c3>>>22|c3<<10),i4=(a3=c3&l3)^c3&y3^o3,p3=f3+(h3=p3+(r3=(d3>>>6|d3<<26)^(d3>>>11|d3<<21)^(d3>>>25|d3<<7))+(d3&w3^~d3&b4)+u2[t3+3]+v3[t3+3])|0,f3=h3+(e3+i4)|0,this.chromeBugWorkAround=!0;this.h0=this.h0+f3|0,this.h1=this.h1+c3|0,this.h2=this.h2+l3|0,this.h3=this.h3+y3|0,this.h4=this.h4+p3|0,this.h5=this.h5+d3|0,this.h6=this.h6+w3|0,this.h7=this.h7+b4|0},v2.prototype.hex=function(){this.finalize();var t3=this.h0,e3=this.h1,r3=this.h2,i4=this.h3,h3=this.h4,s3=this.h5,n3=this.h6,a3=this.h7,f3=o2[t3>>>28&15]+o2[t3>>>24&15]+o2[t3>>>20&15]+o2[t3>>>16&15]+o2[t3>>>12&15]+o2[t3>>>8&15]+o2[t3>>>4&15]+o2[15&t3]+o2[e3>>>28&15]+o2[e3>>>24&15]+o2[e3>>>20&15]+o2[e3>>>16&15]+o2[e3>>>12&15]+o2[e3>>>8&15]+o2[e3>>>4&15]+o2[15&e3]+o2[r3>>>28&15]+o2[r3>>>24&15]+o2[r3>>>20&15]+o2[r3>>>16&15]+o2[r3>>>12&15]+o2[r3>>>8&15]+o2[r3>>>4&15]+o2[15&r3]+o2[i4>>>28&15]+o2[i4>>>24&15]+o2[i4>>>20&15]+o2[i4>>>16&15]+o2[i4>>>12&15]+o2[i4>>>8&15]+o2[i4>>>4&15]+o2[15&i4]+o2[h3>>>28&15]+o2[h3>>>24&15]+o2[h3>>>20&15]+o2[h3>>>16&15]+o2[h3>>>12&15]+o2[h3>>>8&15]+o2[h3>>>4&15]+o2[15&h3]+o2[s3>>>28&15]+o2[s3>>>24&15]+o2[s3>>>20&15]+o2[s3>>>16&15]+o2[s3>>>12&15]+o2[s3>>>8&15]+o2[s3>>>4&15]+o2[15&s3]+o2[n3>>>28&15]+o2[n3>>>24&15]+o2[n3>>>20&15]+o2[n3>>>16&15]+o2[n3>>>12&15]+o2[n3>>>8&15]+o2[n3>>>4&15]+o2[15&n3];return this.is224||(f3+=o2[a3>>>28&15]+o2[a3>>>24&15]+o2[a3>>>20&15]+o2[a3>>>16&15]+o2[a3>>>12&15]+o2[a3>>>8&15]+o2[a3>>>4&15]+o2[15&a3]),f3},v2.prototype.toString=v2.prototype.hex,v2.prototype.digest=function(){this.finalize();var t3=this.h0,e3=this.h1,r3=this.h2,i4=this.h3,h3=this.h4,s3=this.h5,n3=this.h6,o3=this.h7,a3=[t3>>>24&255,t3>>>16&255,t3>>>8&255,255&t3,e3>>>24&255,e3>>>16&255,e3>>>8&255,255&e3,r3>>>24&255,r3>>>16&255,r3>>>8&255,255&r3,i4>>>24&255,i4>>>16&255,i4>>>8&255,255&i4,h3>>>24&255,h3>>>16&255,h3>>>8&255,255&h3,s3>>>24&255,s3>>>16&255,s3>>>8&255,255&s3,n3>>>24&255,n3>>>16&255,n3>>>8&255,255&n3];return this.is224||a3.push(o3>>>24&255,o3>>>16&255,o3>>>8&255,255&o3),a3},v2.prototype.array=v2.prototype.digest,v2.prototype.arrayBuffer=function(){this.finalize();var t3=new ArrayBuffer(this.is224?28:32),e3=new DataView(t3);return e3.setUint32(0,this.h0),e3.setUint32(4,this.h1),e3.setUint32(8,this.h2),e3.setUint32(12,this.h3),e3.setUint32(16,this.h4),e3.setUint32(20,this.h5),e3.setUint32(24,this.h6),this.is224||e3.setUint32(28,this.h7),t3},A2.prototype=new v2,A2.prototype.finalize=function(){if(v2.prototype.finalize.call(this),this.inner){this.inner=!1;var t3=this.array();v2.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t3),v2.prototype.finalize.call(this)}};var g2=p2();g2.sha256=g2,g2.sha224=p2(!0),g2.sha256.hmac=b3(),g2.sha224.hmac=b3(!0),s2?k.exports=g2:(r2.sha256=g2.sha256,r2.sha224=g2.sha224)}();var U=x.exports,z=x.exports.sha224,J=x.exports.sha256;exports.default=U;exports.sha224=z;exports.sha256=J});var require_sha_digest_parser=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.parseSha256=parseSha256;exports.checkSha256=checkSha256;function parseSha256(s){return toByteArray(s)}function isHex(s){if(!/^[0-9A-Fa-f]+$/.test(s))return!1;let isAllUpperCase=/^[0-9A-F]+$/.test(s),isAllLowerCase=/^[0-9a-f]+$/.test(s);if(!(isAllUpperCase||isAllLowerCase))return!1;return s.length%2===0}function isBase64(s){return/^[A-Za-z0-9\-_]*(={0,2})?$/.test(s)||/^[A-Za-z0-9+/]*(={0,2})?$/.test(s)}function detectEncoding(input){if(isHex(input))return"hex";else if(isBase64(input))return"b64";return""}function hexToByteArray(s){if(s.length%2!==0)throw Error("hex string must have an even length");let a=new Uint8Array(s.length/2);for(let i2=0;i2<s.length;i2+=2)a[i2/2]=parseInt(s.substring(i2,i2+2),16);return a}function base64ToByteArray(s){s=s.replace(/-/g,"+"),s=s.replace(/_/g,"/");let sbin=atob(s);return Uint8Array.from(sbin,(c)=>c.charCodeAt(0))}function toByteArray(input){switch(detectEncoding(input)){case"hex":return hexToByteArray(input);case"b64":return base64ToByteArray(input)}return null}function checkSha256(a,b2){let aBytes=typeof a==="string"?parseSha256(a):a,bBytes=typeof b2==="string"?parseSha256(b2):b2;if(aBytes===null||bBytes===null)return!1;if(aBytes.length!==bBytes.length)return!1;for(let i2=0;i2<aBytes.length;i2++)if(aBytes[i2]!==bBytes[i2])return!1;return!0}});var require_objectstore=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ObjectStoreImpl=exports.ObjectStoreStatusImpl=exports.digestType=exports.osPrefix=void 0;exports.objectStoreStreamName=objectStoreStreamName;exports.objectStoreBucketName=objectStoreBucketName;var kv_1=require_kv(),base64_1=require_base64(),codec_1=require_codec(),nuid_1=require_nuid(),util_1=require_util(),databuffer_1=require_databuffer(),headers_1=require_headers(),types_1=require_types2(),queued_iterator_1=require_queued_iterator(),js_sha256_1=require_js_sha256(),jsapi_types_1=require_jsapi_types(),jsclient_1=require_jsclient(),sha_digest_parser_1=require_sha_digest_parser();exports.osPrefix="OBJ_";exports.digestType="SHA-256=";function objectStoreStreamName(bucket){return(0,kv_1.validateBucket)(bucket),`${exports.osPrefix}${bucket}`}function objectStoreBucketName(stream){if(stream.startsWith(exports.osPrefix))return stream.substring(4);return stream}class ObjectStoreStatusImpl{constructor(si){this.si=si,this.backingStore="JetStream"}get bucket(){return objectStoreBucketName(this.si.config.name)}get description(){var _a;return(_a=this.si.config.description)!==null&&_a!==void 0?_a:""}get ttl(){return this.si.config.max_age}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get sealed(){return this.si.config.sealed}get size(){return this.si.state.bytes}get streamInfo(){return this.si}get metadata(){return this.si.config.metadata}get compression(){if(this.si.config.compression)return this.si.config.compression!==jsapi_types_1.StoreCompression.None;return!1}}exports.ObjectStoreStatusImpl=ObjectStoreStatusImpl;class ObjectInfoImpl{constructor(oi){this.info=oi}get name(){return this.info.name}get description(){var _a;return(_a=this.info.description)!==null&&_a!==void 0?_a:""}get headers(){if(!this.hdrs)this.hdrs=headers_1.MsgHdrsImpl.fromRecord(this.info.headers||{});return this.hdrs}get options(){return this.info.options}get bucket(){return this.info.bucket}get chunks(){return this.info.chunks}get deleted(){var _a;return(_a=this.info.deleted)!==null&&_a!==void 0?_a:!1}get digest(){return this.info.digest}get mtime(){return this.info.mtime}get nuid(){return this.info.nuid}get size(){return this.info.size}get revision(){return this.info.revision}get metadata(){return this.info.metadata||{}}isLink(){var _a,_b;return((_a=this.info.options)===null||_a===void 0?void 0:_a.link)!==void 0&&((_b=this.info.options)===null||_b===void 0?void 0:_b.link)!==null}}function toServerObjectStoreMeta(meta){var _a;let v={name:meta.name,description:(_a=meta.description)!==null&&_a!==void 0?_a:"",options:meta.options,metadata:meta.metadata};if(meta.headers){let mhi=meta.headers;v.headers=mhi.toRecord()}return v}function emptyReadableStream(){return new ReadableStream({pull(c){c.enqueue(new Uint8Array(0)),c.close()}})}class ObjectStoreImpl{constructor(name,jsm,js){this.name=name,this.jsm=jsm,this.js=js}_checkNotEmpty(name){if(!name||name.length===0)return{name,error:Error("name cannot be empty")};return{name}}info(name){return __awaiter(this,void 0,void 0,function*(){let info=yield this.rawInfo(name);return info?new ObjectInfoImpl(info):null})}list(){return __awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;let buf=[],iter=yield this.watch({ignoreDeletes:!0,includeHistory:!0});try{for(var _d=!0,iter_1=__asyncValues(iter),iter_1_1;iter_1_1=yield iter_1.next(),_a=iter_1_1.done,!_a;_d=!0){_c=iter_1_1.value,_d=!1;let info=_c;if(info===null)break;buf.push(info)}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=iter_1.return))yield _b.call(iter_1)}finally{if(e_1)throw e_1.error}}return Promise.resolve(buf)})}rawInfo(name){return __awaiter(this,void 0,void 0,function*(){let{name:obj,error}=this._checkNotEmpty(name);if(error)return Promise.reject(error);let meta=this._metaSubject(obj);try{let m=yield this.jsm.streams.getMessage(this.stream,{last_by_subj:meta}),soi=(0,codec_1.JSONCodec)().decode(m.data);return soi.revision=m.seq,soi}catch(err){if(err.code==="404")return null;return Promise.reject(err)}})}_si(opts){return __awaiter(this,void 0,void 0,function*(){try{return yield this.jsm.streams.info(this.stream,opts)}catch(err){if(err.code==="404")return null;return Promise.reject(err)}})}seal(){return __awaiter(this,void 0,void 0,function*(){let info=yield this._si();if(info===null)return Promise.reject(Error("object store not found"));return info.config.sealed=!0,info=yield this.jsm.streams.update(this.stream,info.config),Promise.resolve(new ObjectStoreStatusImpl(info))})}status(opts){return __awaiter(this,void 0,void 0,function*(){let info=yield this._si(opts);if(info===null)return Promise.reject(Error("object store not found"));return Promise.resolve(new ObjectStoreStatusImpl(info))})}destroy(){return this.jsm.streams.delete(this.stream)}_put(meta,rs,opts){return __awaiter(this,void 0,void 0,function*(){var _a,_b;let jsopts=this.js.getOptions();opts=opts||{timeout:jsopts.timeout},opts.timeout=opts.timeout||jsopts.timeout,opts.previousRevision=(_a=opts.previousRevision)!==null&&_a!==void 0?_a:void 0;let{timeout,previousRevision}=opts,si=this.js.nc.info,maxPayload=(si===null||si===void 0?void 0:si.max_payload)||1024;meta=meta||{},meta.options=meta.options||{};let maxChunk=((_b=meta.options)===null||_b===void 0?void 0:_b.max_chunk_size)||131072;maxChunk=maxChunk>maxPayload?maxPayload:maxChunk,meta.options.max_chunk_size=maxChunk;let old=yield this.info(meta.name),{name:n,error}=this._checkNotEmpty(meta.name);if(error)return Promise.reject(error);let id=nuid_1.nuid.next(),chunkSubj=this._chunkSubject(id),metaSubj=this._metaSubject(n),info=Object.assign({bucket:this.name,nuid:id,size:0,chunks:0},toServerObjectStoreMeta(meta)),d=(0,util_1.deferred)(),proms=[],db=new databuffer_1.DataBuffer;try{let reader=rs?rs.getReader():null,sha=js_sha256_1.sha256.create();while(!0){let{done,value}=reader?yield reader.read():{done:!0,value:void 0};if(done){if(db.size()>0){let payload=db.drain();sha.update(payload),info.chunks++,info.size+=payload.length,proms.push(this.js.publish(chunkSubj,payload,{timeout}))}yield Promise.all(proms),proms.length=0,info.mtime=new Date().toISOString();let digest=base64_1.Base64UrlPaddedCodec.encode(sha.digest());info.digest=`${exports.digestType}${digest}`,info.deleted=!1;let h=(0,headers_1.headers)();if(typeof previousRevision==="number")h.set(jsclient_1.PubHeaders.ExpectedLastSubjectSequenceHdr,`${previousRevision}`);h.set(types_1.JsHeaders.RollupHdr,types_1.JsHeaders.RollupValueSubject);let pa=yield this.js.publish(metaSubj,(0,codec_1.JSONCodec)().encode(info),{headers:h,timeout});if(info.revision=pa.seq,old)try{yield this.jsm.streams.purge(this.stream,{filter:`$O.${this.name}.C.${old.nuid}`})}catch(_err){}d.resolve(new ObjectInfoImpl(info));break}if(value){db.fill(value);while(db.size()>maxChunk){info.chunks++,info.size+=maxChunk;let payload=db.drain(meta.options.max_chunk_size);sha.update(payload),proms.push(this.js.publish(chunkSubj,payload,{timeout}))}}}}catch(err){yield this.jsm.streams.purge(this.stream,{filter:chunkSubj}),d.reject(err)}return d})}putBlob(meta,data,opts){function readableStreamFrom(data2){return new ReadableStream({pull(controller){controller.enqueue(data2),controller.close()}})}if(data===null)data=new Uint8Array(0);return this.put(meta,readableStreamFrom(data),opts)}put(meta,rs,opts){var _a;if((_a=meta===null||meta===void 0?void 0:meta.options)===null||_a===void 0?void 0:_a.link)return Promise.reject(Error("link cannot be set when putting the object in bucket"));return this._put(meta,rs,opts)}getBlob(name){return __awaiter(this,void 0,void 0,function*(){function fromReadableStream(rs){return __awaiter(this,void 0,void 0,function*(){let buf=new databuffer_1.DataBuffer,reader=rs.getReader();while(!0){let{done,value}=yield reader.read();if(done)return buf.drain();if(value&&value.length)buf.fill(value)}})}let r=yield this.get(name);if(r===null)return Promise.resolve(null);let vs=yield Promise.all([r.error,fromReadableStream(r.data)]);if(vs[0])return Promise.reject(vs[0]);else return Promise.resolve(vs[1])})}get(name){return __awaiter(this,void 0,void 0,function*(){let info=yield this.rawInfo(name);if(info===null)return Promise.resolve(null);if(info.deleted)return Promise.resolve(null);if(info.options&&info.options.link){let ln=info.options.link.name||"";if(ln==="")throw Error("link is a bucket");return(info.options.link.bucket!==this.name?yield ObjectStoreImpl.create(this.js,info.options.link.bucket):this).get(ln)}if(!info.digest.startsWith(exports.digestType))return Promise.reject(Error(`unknown digest type: ${info.digest}`));let digest=(0,sha_digest_parser_1.parseSha256)(info.digest.substring(8));if(digest===null)return Promise.reject(Error(`unable to parse digest: ${info.digest}`));let d=(0,util_1.deferred)(),r={info:new ObjectInfoImpl(info),error:d};if(info.size===0)return r.data=emptyReadableStream(),d.resolve(null),Promise.resolve(r);let controller,oc=(0,types_1.consumerOpts)();oc.orderedConsumer();let sha=js_sha256_1.sha256.create(),subj=`$O.${this.name}.C.${info.nuid}`,sub=yield this.js.subscribe(subj,oc);return(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_2,_b,_c;try{for(var _d=!0,sub_1=__asyncValues(sub),sub_1_1;sub_1_1=yield sub_1.next(),_a=sub_1_1.done,!_a;_d=!0){_c=sub_1_1.value,_d=!1;let jm=_c;if(jm.data.length>0)sha.update(jm.data),controller.enqueue(jm.data);if(jm.info.pending===0){if(!(0,sha_digest_parser_1.checkSha256)(digest,sha.digest()))controller.error(Error(`received a corrupt object, digests do not match received: ${info.digest} calculated ${digest}`));else controller.close();sub.unsubscribe()}}}catch(e_2_1){e_2={error:e_2_1}}finally{try{if(!_d&&!_a&&(_b=sub_1.return))yield _b.call(sub_1)}finally{if(e_2)throw e_2.error}}}))().then(()=>{d.resolve()}).catch((err)=>{controller.error(err),d.reject(err)}),r.data=new ReadableStream({start(c){controller=c},cancel(){sub.unsubscribe()}}),r})}linkStore(name,bucket){if(!(bucket instanceof ObjectStoreImpl))return Promise.reject("bucket required");let osi=bucket,{name:n,error}=this._checkNotEmpty(name);if(error)return Promise.reject(error);let meta={name:n,options:{link:{bucket:osi.name}}};return this._put(meta,null)}link(name,info){return __awaiter(this,void 0,void 0,function*(){let{name:n,error}=this._checkNotEmpty(name);if(error)return Promise.reject(error);if(info.deleted)return Promise.reject(Error("src object is deleted"));if(info.isLink())return Promise.reject(Error("src object is a link"));let dest=yield this.rawInfo(name);if(dest!==null&&!dest.deleted)return Promise.reject(Error("an object already exists with that name"));let link={bucket:info.bucket,name:info.name},mm={name:n,bucket:info.bucket,options:{link}};yield this.js.publish(this._metaSubject(name),JSON.stringify(mm));let i2=yield this.info(name);return Promise.resolve(i2)})}delete(name){return __awaiter(this,void 0,void 0,function*(){let info=yield this.rawInfo(name);if(info===null)return Promise.resolve({purged:0,success:!1});info.deleted=!0,info.size=0,info.chunks=0,info.digest="";let jc=(0,codec_1.JSONCodec)(),h=(0,headers_1.headers)();return h.set(types_1.JsHeaders.RollupHdr,types_1.JsHeaders.RollupValueSubject),yield this.js.publish(this._metaSubject(info.name),jc.encode(info),{headers:h}),this.jsm.streams.purge(this.stream,{filter:this._chunkSubject(info.nuid)})})}update(name_1){return __awaiter(this,arguments,void 0,function*(name,meta={}){var _a;let info=yield this.rawInfo(name);if(info===null)return Promise.reject(Error("object not found"));if(info.deleted)return Promise.reject(Error("cannot update meta for a deleted object"));meta.name=(_a=meta.name)!==null&&_a!==void 0?_a:info.name;let{name:n,error}=this._checkNotEmpty(meta.name);if(error)return Promise.reject(error);if(name!==meta.name){let i2=yield this.info(meta.name);if(i2&&!i2.deleted)return Promise.reject(Error("an object already exists with that name"))}meta.name=n;let ii=Object.assign({},info,toServerObjectStoreMeta(meta)),ack=yield this.js.publish(this._metaSubject(ii.name),JSON.stringify(ii));if(name!==meta.name)yield this.jsm.streams.purge(this.stream,{filter:this._metaSubject(name)});return Promise.resolve(ack)})}watch(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a,_b;opts.includeHistory=(_a=opts.includeHistory)!==null&&_a!==void 0?_a:!1,opts.ignoreDeletes=(_b=opts.ignoreDeletes)!==null&&_b!==void 0?_b:!1;let initialized=!1,qi=new queued_iterator_1.QueuedIteratorImpl,subj=this._metaSubjectAll();try{yield this.jsm.streams.getMessage(this.stream,{last_by_subj:subj})}catch(err){if(err.code==="404")qi.push(null),initialized=!0;else qi.stop(err)}let jc=(0,codec_1.JSONCodec)(),copts=(0,types_1.consumerOpts)();if(copts.orderedConsumer(),opts.includeHistory)copts.deliverLastPerSubject();else initialized=!0,copts.deliverNew();copts.callback((err,jm)=>{var _a2;if(err){qi.stop(err);return}if(jm!==null){let oi=jc.decode(jm.data);if(oi.deleted&&opts.ignoreDeletes===!0);else qi.push(oi);if(((_a2=jm.info)===null||_a2===void 0?void 0:_a2.pending)===0&&!initialized)initialized=!0,qi.push(null)}});let sub=yield this.js.subscribe(subj,copts);return qi._data=sub,qi.iterClosed.then(()=>{sub.unsubscribe()}),sub.closed.then(()=>{qi.stop()}).catch((err)=>{qi.stop(err)}),qi})}_chunkSubject(id){return`$O.${this.name}.C.${id}`}_metaSubject(n){return`$O.${this.name}.M.${base64_1.Base64UrlPaddedCodec.encode(n)}`}_metaSubjectAll(){return`$O.${this.name}.M.>`}init(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a;try{this.stream=objectStoreStreamName(this.name)}catch(err){return Promise.reject(err)}let max_age=(opts===null||opts===void 0?void 0:opts.ttl)||0;delete opts.ttl;let sc=Object.assign({max_age},opts);if(sc.name=this.stream,sc.num_replicas=(_a=opts.replicas)!==null&&_a!==void 0?_a:1,sc.allow_direct=!0,sc.allow_rollup_hdrs=!0,sc.discard=jsapi_types_1.DiscardPolicy.New,sc.subjects=[`$O.${this.name}.C.>`,`$O.${this.name}.M.>`],opts.placement)sc.placement=opts.placement;if(opts.metadata)sc.metadata=opts.metadata;if(typeof opts.compression==="boolean")sc.compression=opts.compression?jsapi_types_1.StoreCompression.S2:jsapi_types_1.StoreCompression.None;try{yield this.jsm.streams.info(sc.name)}catch(err){if(err.message==="stream not found")yield this.jsm.streams.add(sc)}})}static create(js_1,name_1){return __awaiter(this,arguments,void 0,function*(js,name,opts={}){let jsm=yield js.jetstreamManager(),os2=new ObjectStoreImpl(name,jsm,js);return yield os2.init(opts),Promise.resolve(os2)})}}exports.ObjectStoreImpl=ObjectStoreImpl});var require_idleheartbeat_monitor=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.IdleHeartbeatMonitor=void 0;class IdleHeartbeatMonitor{constructor(interval,cb,opts={maxOut:2}){this.interval=interval,this.maxOut=(opts===null||opts===void 0?void 0:opts.maxOut)||2,this.cancelAfter=(opts===null||opts===void 0?void 0:opts.cancelAfter)||0,this.last=Date.now(),this.missed=0,this.count=0,this.callback=cb,this._schedule()}cancel(){if(this.autoCancelTimer)clearTimeout(this.autoCancelTimer);if(this.timer)clearInterval(this.timer);this.timer=0,this.autoCancelTimer=0,this.missed=0}work(){this.last=Date.now(),this.missed=0}_change(interval,cancelAfter=0,maxOut=2){this.interval=interval,this.maxOut=maxOut,this.cancelAfter=cancelAfter,this.restart()}restart(){this.cancel(),this._schedule()}_schedule(){if(this.cancelAfter>0)this.autoCancelTimer=setTimeout(()=>{this.cancel()},this.cancelAfter);this.timer=setInterval(()=>{if(this.count++,Date.now()-this.last>this.interval)this.missed++;if(this.missed>=this.maxOut)try{if(this.callback(this.missed)===!0)this.cancel()}catch(err){console.log(err)}},this.interval)}}exports.IdleHeartbeatMonitor=IdleHeartbeatMonitor});var require_jsclient=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.JetStreamSubscriptionImpl=exports.JetStreamClientImpl=exports.PubHeaders=void 0;var types_1=require_types(),jsbaseclient_api_1=require_jsbaseclient_api(),jsutil_1=require_jsutil(),jsmconsumer_api_1=require_jsmconsumer_api(),jsmsg_1=require_jsmsg(),typedsub_1=require_typedsub(),queued_iterator_1=require_queued_iterator(),util_1=require_util(),headers_1=require_headers(),kv_1=require_kv(),semver_1=require_semver(),objectstore_1=require_objectstore(),idleheartbeat_monitor_1=require_idleheartbeat_monitor(),jsmstream_api_1=require_jsmstream_api(),types_2=require_types2(),core_1=require_core(),jsapi_types_1=require_jsapi_types(),nuid_1=require_nuid(),PubHeaders;(function(PubHeaders2){PubHeaders2.MsgIdHdr="Nats-Msg-Id",PubHeaders2.ExpectedStreamHdr="Nats-Expected-Stream",PubHeaders2.ExpectedLastSeqHdr="Nats-Expected-Last-Sequence",PubHeaders2.ExpectedLastMsgIdHdr="Nats-Expected-Last-Msg-Id",PubHeaders2.ExpectedLastSubjectSequenceHdr="Nats-Expected-Last-Subject-Sequence"})(PubHeaders||(exports.PubHeaders=PubHeaders={}));class ViewsImpl{constructor(js){this.js=js}kv(name,opts={}){let jsi=this.js,{ok,min}=jsi.nc.features.get(semver_1.Feature.JS_KV);if(!ok)return Promise.reject(Error(`kv is only supported on servers ${min} or better`));if(opts.bindOnly)return kv_1.Bucket.bind(this.js,name,opts);return kv_1.Bucket.create(this.js,name,opts)}os(name,opts={}){var _a;if(typeof((_a=crypto===null||crypto===void 0?void 0:crypto.subtle)===null||_a===void 0?void 0:_a.digest)!=="function")return Promise.reject(Error("objectstore: unable to calculate hashes - crypto.subtle.digest with sha256 support is required"));let jsi=this.js,{ok,min}=jsi.nc.features.get(semver_1.Feature.JS_OBJECTSTORE);if(!ok)return Promise.reject(Error(`objectstore is only supported on servers ${min} or better`));return objectstore_1.ObjectStoreImpl.create(this.js,name,opts)}}class JetStreamClientImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts);this.consumerAPI=new jsmconsumer_api_1.ConsumerAPIImpl(nc,opts),this.streamAPI=new jsmstream_api_1.StreamAPIImpl(nc,opts),this.consumers=new jsmstream_api_1.ConsumersImpl(this.consumerAPI),this.streams=new jsmstream_api_1.StreamsImpl(this.streamAPI)}jetstreamManager(checkAPI){if(checkAPI===void 0)checkAPI=this.opts.checkAPI;let opts=Object.assign({},this.opts,{checkAPI});return this.nc.jetstreamManager(opts)}get apiPrefix(){return this.prefix}get views(){return new ViewsImpl(this)}publish(subj_1){return __awaiter(this,arguments,void 0,function*(subj,data=types_1.Empty,opts){opts=opts||{},opts.expect=opts.expect||{};let mh=(opts===null||opts===void 0?void 0:opts.headers)||(0,headers_1.headers)();if(opts){if(opts.msgID)mh.set(PubHeaders.MsgIdHdr,opts.msgID);if(opts.expect.lastMsgID)mh.set(PubHeaders.ExpectedLastMsgIdHdr,opts.expect.lastMsgID);if(opts.expect.streamName)mh.set(PubHeaders.ExpectedStreamHdr,opts.expect.streamName);if(typeof opts.expect.lastSequence==="number")mh.set(PubHeaders.ExpectedLastSeqHdr,`${opts.expect.lastSequence}`);if(typeof opts.expect.lastSubjectSequence==="number")mh.set(PubHeaders.ExpectedLastSubjectSequenceHdr,`${opts.expect.lastSubjectSequence}`)}let to=opts.timeout||this.timeout,ro={};if(to)ro.timeout=to;if(opts)ro.headers=mh;let{retries,retry_delay}=opts;retries=retries||1,retry_delay=retry_delay||250;let r;for(let i2=0;i2<retries;i2++)try{r=yield this.nc.request(subj,data,ro);break}catch(err){if(err.code==="503"&&i2+1<retries)yield(0,util_1.delay)(retry_delay);else throw err}let pa=this.parseJsResponse(r);if(pa.stream==="")throw types_1.NatsError.errorForCode(core_1.ErrorCode.JetStreamInvalidAck);return pa.duplicate=pa.duplicate?pa.duplicate:!1,pa})}pull(stream_1,durable_1){return __awaiter(this,arguments,void 0,function*(stream,durable,expires=0){(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(durable);let timeout=this.timeout;if(expires>timeout)timeout=expires;expires=expires<0?0:(0,util_1.nanos)(expires);let pullOpts={batch:1,no_wait:expires===0,expires},msg=yield this.nc.request(`${this.prefix}.CONSUMER.MSG.NEXT.${stream}.${durable}`,this.jc.encode(pullOpts),{noMux:!0,timeout}),err=(0,jsutil_1.checkJsError)(msg);if(err)throw err;return(0,jsmsg_1.toJsMsg)(msg,this.timeout)})}fetch(stream,durable,opts={}){var _a;(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(durable);let timer2=null,trackBytes=((_a=opts.max_bytes)!==null&&_a!==void 0?_a:0)>0,receivedBytes=0,max_bytes=trackBytes?opts.max_bytes:0,monitor=null,args={};if(args.batch=opts.batch||1,max_bytes){let fv=this.nc.features.get(semver_1.Feature.JS_PULL_MAX_BYTES);if(!fv.ok)throw Error(`max_bytes is only supported on servers ${fv.min} or better`);args.max_bytes=max_bytes}if(args.no_wait=opts.no_wait||!1,args.no_wait&&args.expires)args.expires=0;let expires=opts.expires||0;if(expires)args.expires=(0,util_1.nanos)(expires);if(expires===0&&args.no_wait===!1)throw Error("expires or no_wait is required");let hb=opts.idle_heartbeat||0;if(hb){if(args.idle_heartbeat=(0,util_1.nanos)(hb),opts.delay_heartbeat===!0)args.idle_heartbeat=(0,util_1.nanos)(hb*4)}let qi=new queued_iterator_1.QueuedIteratorImpl,wants=args.batch,received=0;qi.protocolFilterFn=(jm,_ingest=!1)=>{let jsmi=jm;if((0,jsutil_1.isHeartbeatMsg)(jsmi.msg))return monitor===null||monitor===void 0||monitor.work(),!1;return!0},qi.dispatchedFn=(m)=>{if(m){if(trackBytes)receivedBytes+=m.data.length;if(received++,timer2&&m.info.pending===0)return;if(qi.getPending()===1&&m.info.pending===0||wants===received||max_bytes>0&&receivedBytes>=max_bytes)qi.stop()}};let inbox=(0,core_1.createInbox)(this.nc.options.inboxPrefix),sub=this.nc.subscribe(inbox,{max:opts.batch,callback:(err,msg)=>{if(err===null)err=(0,jsutil_1.checkJsError)(msg);if(err!==null){if(timer2)timer2.cancel(),timer2=null;if((0,core_1.isNatsError)(err))qi.stop(hideNonTerminalJsErrors(err)===null?void 0:err);else qi.stop(err)}else monitor===null||monitor===void 0||monitor.work(),qi.received++,qi.push((0,jsmsg_1.toJsMsg)(msg,this.timeout))}});if(expires)timer2=(0,util_1.timeout)(expires),timer2.catch(()=>{if(!sub.isClosed())sub.drain().catch(()=>{}),timer2=null;if(monitor)monitor.cancel()});return(()=>__awaiter(this,void 0,void 0,function*(){try{if(hb)monitor=new idleheartbeat_monitor_1.IdleHeartbeatMonitor(hb,(v)=>{return qi.push(()=>{qi.err=new types_1.NatsError(`${jsutil_1.Js409Errors.IdleHeartbeatMissed}: ${v}`,core_1.ErrorCode.JetStreamIdleHeartBeat)}),!0})}catch(_err){}if(yield sub.closed,timer2!==null)timer2.cancel(),timer2=null;if(monitor)monitor.cancel();qi.stop()}))().catch(),this.nc.publish(`${this.prefix}.CONSUMER.MSG.NEXT.${stream}.${durable}`,this.jc.encode(args),{reply:inbox}),qi}pullSubscribe(subject_1){return __awaiter(this,arguments,void 0,function*(subject,opts=(0,types_2.consumerOpts)()){let cso=yield this._processOptions(subject,opts);if(cso.ordered)throw Error("pull subscribers cannot be be ordered");if(cso.config.deliver_subject)throw Error("consumer info specifies deliver_subject - pull consumers cannot have deliver_subject set");let ackPolicy=cso.config.ack_policy;if(ackPolicy===jsapi_types_1.AckPolicy.None||ackPolicy===jsapi_types_1.AckPolicy.All)throw Error("ack policy for pull consumers must be explicit");let so=this._buildTypedSubscriptionOpts(cso),sub=new JetStreamPullSubscriptionImpl(this,cso.deliver,so);sub.info=cso;try{yield this._maybeCreateConsumer(cso)}catch(err){throw sub.unsubscribe(),err}return sub})}subscribe(subject_1){return __awaiter(this,arguments,void 0,function*(subject,opts=(0,types_2.consumerOpts)()){let cso=yield this._processOptions(subject,opts);if(!cso.isBind&&!cso.config.deliver_subject)throw Error("push consumer requires deliver_subject");let so=this._buildTypedSubscriptionOpts(cso),sub=new JetStreamSubscriptionImpl(this,cso.deliver,so);sub.info=cso;try{yield this._maybeCreateConsumer(cso)}catch(err){throw sub.unsubscribe(),err}return sub._maybeSetupHbMonitoring(),sub})}_processOptions(subject_1){return __awaiter(this,arguments,void 0,function*(subject,opts=(0,types_2.consumerOpts)()){var _a,_b;let jsi=(0,types_2.isConsumerOptsBuilder)(opts)?opts.getOpts():opts;if(jsi.isBind=(0,types_2.isConsumerOptsBuilder)(opts)?opts.isBind:!1,jsi.flow_control={heartbeat_count:0,fc_count:0,consumer_restarts:0},jsi.ordered){if(jsi.ordered_consumer_sequence={stream_seq:0,delivery_seq:0},jsi.config.ack_policy!==jsapi_types_1.AckPolicy.NotSet&&jsi.config.ack_policy!==jsapi_types_1.AckPolicy.None)throw new types_1.NatsError("ordered consumer: ack_policy can only be set to 'none'",core_1.ErrorCode.ApiError);if(jsi.config.durable_name&&jsi.config.durable_name.length>0)throw new types_1.NatsError("ordered consumer: durable_name cannot be set",core_1.ErrorCode.ApiError);if(jsi.config.deliver_subject&&jsi.config.deliver_subject.length>0)throw new types_1.NatsError("ordered consumer: deliver_subject cannot be set",core_1.ErrorCode.ApiError);if(jsi.config.max_deliver!==void 0&&jsi.config.max_deliver>1)throw new types_1.NatsError("ordered consumer: max_deliver cannot be set",core_1.ErrorCode.ApiError);if(jsi.config.deliver_group&&jsi.config.deliver_group.length>0)throw new types_1.NatsError("ordered consumer: deliver_group cannot be set",core_1.ErrorCode.ApiError);jsi.config.deliver_subject=(0,core_1.createInbox)(this.nc.options.inboxPrefix),jsi.config.ack_policy=jsapi_types_1.AckPolicy.None,jsi.config.max_deliver=1,jsi.config.flow_control=!0,jsi.config.idle_heartbeat=jsi.config.idle_heartbeat||(0,util_1.nanos)(5000),jsi.config.ack_wait=(0,util_1.nanos)(79200000),jsi.config.mem_storage=!0,jsi.config.num_replicas=1}if(jsi.config.ack_policy===jsapi_types_1.AckPolicy.NotSet)jsi.config.ack_policy=jsapi_types_1.AckPolicy.All;if(jsi.api=this,jsi.config=jsi.config||{},jsi.stream=jsi.stream?jsi.stream:yield this.findStream(subject),jsi.attached=!1,jsi.config.durable_name)try{let info=yield this.consumerAPI.info(jsi.stream,jsi.config.durable_name);if(info){if(info.config.filter_subject&&info.config.filter_subject!==subject)throw Error("subject does not match consumer");let qn=(_a=jsi.config.deliver_group)!==null&&_a!==void 0?_a:"";if(qn===""&&info.push_bound===!0)throw Error("duplicate subscription");let rqn=(_b=info.config.deliver_group)!==null&&_b!==void 0?_b:"";if(qn!==rqn)if(rqn==="")throw Error("durable requires no queue group");else throw Error(`durable requires queue group '${rqn}'`);if(jsi.last=info,jsi.config=info.config,jsi.attached=!0,!jsi.config.durable_name)jsi.name=info.name}}catch(err){if(err.code!=="404")throw err}if(!jsi.attached&&jsi.config.filter_subject===void 0&&jsi.config.filter_subjects===void 0)jsi.config.filter_subject=subject;return jsi.deliver=jsi.config.deliver_subject||(0,core_1.createInbox)(this.nc.options.inboxPrefix),jsi})}_buildTypedSubscriptionOpts(jsi){let so={};if(so.adapter=msgAdapter(jsi.callbackFn===void 0,this.timeout),so.ingestionFilterFn=JetStreamClientImpl.ingestionFn(jsi.ordered),so.protocolFilterFn=(jm,ingest=!1)=>{let jsmi=jm;if((0,jsutil_1.isFlowControlMsg)(jsmi.msg)){if(!ingest)jsmi.msg.respond();return!1}return!0},!jsi.mack&&jsi.config.ack_policy!==jsapi_types_1.AckPolicy.None)so.dispatchedFn=autoAckJsMsg;if(jsi.callbackFn)so.callback=jsi.callbackFn;return so.max=jsi.max||0,so.queue=jsi.queue,so}_maybeCreateConsumer(jsi){return __awaiter(this,void 0,void 0,function*(){if(jsi.attached)return;if(jsi.isBind)throw Error(`unable to bind - durable consumer ${jsi.config.durable_name} doesn't exist in ${jsi.stream}`);jsi.config=Object.assign({deliver_policy:jsapi_types_1.DeliverPolicy.All,ack_policy:jsapi_types_1.AckPolicy.Explicit,ack_wait:(0,util_1.nanos)(30000),replay_policy:jsapi_types_1.ReplayPolicy.Instant},jsi.config);let ci=yield this.consumerAPI.add(jsi.stream,jsi.config);if(Array.isArray(jsi.config.filter_subjects&&!Array.isArray(ci.config.filter_subjects)))throw Error("jetstream server doesn't support consumers with multiple filter subjects");jsi.name=ci.name,jsi.config=ci.config,jsi.last=ci})}static ingestionFn(ordered){return(jm,ctx)=>{var _a;let jsub=ctx;if(!jm)return{ingest:!1,protocol:!1};let jmi=jm;if(!(0,jsutil_1.checkJsError)(jmi.msg))(_a=jsub.monitor)===null||_a===void 0||_a.work();if((0,jsutil_1.isHeartbeatMsg)(jmi.msg)){let ingest2=ordered?jsub._checkHbOrderConsumer(jmi.msg):!0;if(!ordered)jsub.info.flow_control.heartbeat_count++;return{ingest:ingest2,protocol:!0}}else if((0,jsutil_1.isFlowControlMsg)(jmi.msg))return jsub.info.flow_control.fc_count++,{ingest:!0,protocol:!0};return{ingest:ordered?jsub._checkOrderedConsumer(jm):!0,protocol:!1}}}}exports.JetStreamClientImpl=JetStreamClientImpl;class JetStreamSubscriptionImpl extends typedsub_1.TypedSubscription{constructor(js,subject,opts){super(js.nc,subject,opts);this.js=js,this.monitor=null,this.sub.closed.then(()=>{if(this.monitor)this.monitor.cancel()})}set info(info){this.sub.info=info}get info(){return this.sub.info}_resetOrderedConsumer(sseq){if(this.info===null||this.sub.isClosed())return;let newDeliver=(0,core_1.createInbox)(this.js.nc.options.inboxPrefix);this.js.nc._resub(this.sub,newDeliver);let info=this.info;info.config.name=nuid_1.nuid.next(),info.ordered_consumer_sequence.delivery_seq=0,info.flow_control.heartbeat_count=0,info.flow_control.fc_count=0,info.flow_control.consumer_restarts++,info.deliver=newDeliver,info.config.deliver_subject=newDeliver,info.config.deliver_policy=jsapi_types_1.DeliverPolicy.StartSequence,info.config.opt_start_seq=sseq;let req={};req.stream_name=this.info.stream,req.config=info.config;let subj=`${info.api.prefix}.CONSUMER.CREATE.${info.stream}`;this.js._request(subj,req,{retries:-1}).then((v)=>{let ci=v,jinfo=this.sub.info;jinfo.last=ci,this.info.config=ci.config,this.info.name=ci.name}).catch((err)=>{let nerr=new types_1.NatsError(`unable to recreate ordered consumer ${info.stream} at seq ${sseq}`,core_1.ErrorCode.RequestError,err);this.sub.callback(nerr,{})})}_maybeSetupHbMonitoring(){var _a,_b;let ns=((_b=(_a=this.info)===null||_a===void 0?void 0:_a.config)===null||_b===void 0?void 0:_b.idle_heartbeat)||0;if(ns)this._setupHbMonitoring((0,util_1.millis)(ns))}_setupHbMonitoring(millis,cancelAfter=0){let opts={cancelAfter:0,maxOut:2};if(cancelAfter)opts.cancelAfter=cancelAfter;let sub=this.sub,handler=(v)=>{var _a,_b,_c,_d;let msg=(0,jsutil_1.newJsErrorMsg)(409,`${jsutil_1.Js409Errors.IdleHeartbeatMissed}: ${v}`,this.sub.subject);if(!((_a=this.info)===null||_a===void 0?void 0:_a.ordered))this.sub.callback(null,msg);else{if(!this.js.nc.protocol.connected)return!1;let seq2=((_c=(_b=this.info)===null||_b===void 0?void 0:_b.ordered_consumer_sequence)===null||_c===void 0?void 0:_c.stream_seq)||0;return this._resetOrderedConsumer(seq2+1),(_d=this.monitor)===null||_d===void 0||_d.restart(),!1}return!sub.noIterator};this.monitor=new idleheartbeat_monitor_1.IdleHeartbeatMonitor(millis,handler,opts)}_checkHbOrderConsumer(msg){let rm3=msg.headers.get(types_2.JsHeaders.ConsumerStalledHdr);if(rm3!=="")this.js.nc.publish(rm3);let lastDelivered=parseInt(msg.headers.get(types_2.JsHeaders.LastConsumerSeqHdr),10),ordered=this.info.ordered_consumer_sequence;if(this.info.flow_control.heartbeat_count++,lastDelivered!==ordered.delivery_seq)this._resetOrderedConsumer(ordered.stream_seq+1);return!1}_checkOrderedConsumer(jm){let ordered=this.info.ordered_consumer_sequence,sseq=jm.info.streamSequence,dseq=jm.info.deliverySequence;if(dseq!=ordered.delivery_seq+1)return this._resetOrderedConsumer(ordered.stream_seq+1),!1;return ordered.delivery_seq=dseq,ordered.stream_seq=sseq,!0}destroy(){return __awaiter(this,void 0,void 0,function*(){if(!this.isClosed())yield this.drain();let jinfo=this.sub.info,name=jinfo.config.durable_name||jinfo.name,subj=`${jinfo.api.prefix}.CONSUMER.DELETE.${jinfo.stream}.${name}`;yield jinfo.api._request(subj)})}consumerInfo(){return __awaiter(this,void 0,void 0,function*(){let jinfo=this.sub.info,name=jinfo.config.durable_name||jinfo.name,subj=`${jinfo.api.prefix}.CONSUMER.INFO.${jinfo.stream}.${name}`,ci=yield jinfo.api._request(subj);return jinfo.last=ci,ci})}}exports.JetStreamSubscriptionImpl=JetStreamSubscriptionImpl;class JetStreamPullSubscriptionImpl extends JetStreamSubscriptionImpl{constructor(js,subject,opts){super(js,subject,opts)}pull(opts={batch:1}){var _a,_b;let{stream,config,name}=this.sub.info,consumer=(_a=config.durable_name)!==null&&_a!==void 0?_a:name,args={};if(args.batch=opts.batch||1,args.no_wait=opts.no_wait||!1,((_b=opts.max_bytes)!==null&&_b!==void 0?_b:0)>0){let fv=this.js.nc.features.get(semver_1.Feature.JS_PULL_MAX_BYTES);if(!fv.ok)throw Error(`max_bytes is only supported on servers ${fv.min} or better`);args.max_bytes=opts.max_bytes}let expires=0;if(opts.expires&&opts.expires>0)expires=opts.expires,args.expires=(0,util_1.nanos)(expires);let hb=0;if(opts.idle_heartbeat&&opts.idle_heartbeat>0)hb=opts.idle_heartbeat,args.idle_heartbeat=(0,util_1.nanos)(hb);if(hb&&expires===0)throw Error("idle_heartbeat requires expires");if(hb>expires)throw Error("expires must be greater than idle_heartbeat");if(this.info){if(this.monitor)this.monitor.cancel();if(expires&&hb)if(!this.monitor)this._setupHbMonitoring(hb,expires);else this.monitor._change(hb,expires);let api=this.info.api,subj=`${api.prefix}.CONSUMER.MSG.NEXT.${stream}.${consumer}`,reply=this.sub.subject;api.nc.publish(subj,api.jc.encode(args),{reply})}}}function msgAdapter(iterator,ackTimeout){if(iterator)return iterMsgAdapter(ackTimeout);else return cbMsgAdapter(ackTimeout)}function cbMsgAdapter(ackTimeout){return(err,msg)=>{if(err)return[err,null];if(err=(0,jsutil_1.checkJsError)(msg),err)return[err,null];return[null,(0,jsmsg_1.toJsMsg)(msg,ackTimeout)]}}function iterMsgAdapter(ackTimeout){return(err,msg)=>{if(err)return[err,null];let ne=(0,jsutil_1.checkJsError)(msg);if(ne!==null)return[hideNonTerminalJsErrors(ne),null];return[null,(0,jsmsg_1.toJsMsg)(msg,ackTimeout)]}}function hideNonTerminalJsErrors(ne){if(ne!==null)switch(ne.code){case core_1.ErrorCode.JetStream404NoMessages:case core_1.ErrorCode.JetStream408RequestTimeout:return null;case core_1.ErrorCode.JetStream409:if((0,jsutil_1.isTerminal409)(ne))return ne;return null;default:return ne}return null}function autoAckJsMsg(data){if(data)data.ack()}});var require_kv=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.KvStatusImpl=exports.Bucket=exports.kvOperationHdr=void 0;exports.Base64KeyCodec=Base64KeyCodec;exports.NoopKvCodecs=NoopKvCodecs;exports.defaultBucketOpts=defaultBucketOpts;exports.validateKey=validateKey;exports.validateSearchKey=validateSearchKey;exports.hasWildcards=hasWildcards;exports.validateBucket=validateBucket;var core_1=require_core(),queued_iterator_1=require_queued_iterator(),headers_1=require_headers(),types_1=require_types2(),semver_1=require_semver(),util_1=require_util(),encoders_1=require_encoders(),jsapi_types_1=require_jsapi_types(),jsclient_1=require_jsclient(),nuid_1=require_nuid();function Base64KeyCodec(){return{encode(key){return btoa(key)},decode(bkey){return atob(bkey)}}}function NoopKvCodecs(){return{key:{encode(k){return k},decode(k){return k}},value:{encode(v){return v},decode(v){return v}}}}function defaultBucketOpts(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:NoopKvCodecs(),storage:jsapi_types_1.StorageType.File}}exports.kvOperationHdr="KV-Operation";var kvSubjectPrefix="$KV",validKeyRe=/^[-/=.\w]+$/,validSearchKey=/^[-/=.>*\w]+$/,validBucketRe=/^[-\w]+$/;function validateKey(k){if(k.startsWith(".")||k.endsWith(".")||!validKeyRe.test(k))throw Error(`invalid key: ${k}`)}function validateSearchKey(k){if(k.startsWith(".")||k.endsWith(".")||!validSearchKey.test(k))throw Error(`invalid key: ${k}`)}function hasWildcards(k){if(k.startsWith(".")||k.endsWith("."))throw Error(`invalid key: ${k}`);let chunks=k.split("."),hasWildcards2=!1;for(let i2=0;i2<chunks.length;i2++)switch(chunks[i2]){case"*":hasWildcards2=!0;break;case">":if(i2!==chunks.length-1)throw Error(`invalid key: ${k}`);hasWildcards2=!0;break;default:}return hasWildcards2}function validateBucket(name){if(!validBucketRe.test(name))throw Error(`invalid bucket name: ${name}`)}class Bucket{constructor(bucket,js,jsm){this.validateKey=validateKey,this.validateSearchKey=validateSearchKey,this.hasWildcards=hasWildcards,validateBucket(bucket),this.js=js,this.jsm=jsm,this.bucket=bucket,this.prefix=kvSubjectPrefix,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static create(js_1,name_1){return __awaiter(this,arguments,void 0,function*(js,name,opts={}){validateBucket(name);let jsm=yield js.jetstreamManager(),bucket=new Bucket(name,js,jsm);return yield bucket.init(opts),bucket})}static bind(js_1,name_1){return __awaiter(this,arguments,void 0,function*(js,name,opts={}){var _a,_b;let jsm=yield js.jetstreamManager(),info={config:{allow_direct:opts.allow_direct}};validateBucket(name);let bucket=new Bucket(name,js,jsm);return info.config.name=(_a=opts.streamName)!==null&&_a!==void 0?_a:bucket.bucketName(),Object.assign(bucket,info),bucket.stream=info.config.name,bucket.codec=opts.codec||NoopKvCodecs(),bucket.direct=(_b=info.config.allow_direct)!==null&&_b!==void 0?_b:!1,bucket.initializePrefixes(info),bucket})}init(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a,_b;let bo=Object.assign(defaultBucketOpts(),opts);this.codec=bo.codec;let sc={};if(this.stream=sc.name=(_a=opts.streamName)!==null&&_a!==void 0?_a:this.bucketName(),sc.retention=jsapi_types_1.RetentionPolicy.Limits,sc.max_msgs_per_subject=bo.history,bo.maxBucketSize)bo.max_bytes=bo.maxBucketSize;if(bo.max_bytes)sc.max_bytes=bo.max_bytes;sc.max_msg_size=bo.maxValueSize,sc.storage=bo.storage;let location=(_b=opts.placementCluster)!==null&&_b!==void 0?_b:"";if(location)opts.placement={},opts.placement.cluster=location,opts.placement.tags=[];if(opts.placement)sc.placement=opts.placement;if(opts.republish)sc.republish=opts.republish;if(opts.description)sc.description=opts.description;if(opts.mirror){let mirror=Object.assign({},opts.mirror);if(!mirror.name.startsWith(types_1.kvPrefix))mirror.name=`${types_1.kvPrefix}${mirror.name}`;sc.mirror=mirror,sc.mirror_direct=!0}else if(opts.sources){let sources=opts.sources.map((s)=>{let c=Object.assign({},s),srcBucketName=c.name.startsWith(types_1.kvPrefix)?c.name.substring(types_1.kvPrefix.length):c.name;if(!c.name.startsWith(types_1.kvPrefix))c.name=`${types_1.kvPrefix}${c.name}`;if(!s.external&&srcBucketName!==this.bucket)c.subject_transforms=[{src:`$KV.${srcBucketName}.>`,dest:`$KV.${this.bucket}.>`}];return c});sc.sources=sources,sc.subjects=[this.subjectForBucket()]}else sc.subjects=[this.subjectForBucket()];if(opts.metadata)sc.metadata=opts.metadata;if(typeof opts.compression==="boolean")sc.compression=opts.compression?jsapi_types_1.StoreCompression.S2:jsapi_types_1.StoreCompression.None;let nci=this.js.nc,have=nci.getServerVersion(),discardNew=have?(0,semver_1.compare)(have,(0,semver_1.parseSemVer)("2.7.2"))>=0:!1;sc.discard=discardNew?jsapi_types_1.DiscardPolicy.New:jsapi_types_1.DiscardPolicy.Old;let{ok:direct,min}=nci.features.get(semver_1.Feature.JS_ALLOW_DIRECT);if(!direct&&opts.allow_direct===!0){let v=have?`${have.major}.${have.minor}.${have.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${v} - requires ${min}`))}if(opts.allow_direct=typeof opts.allow_direct==="boolean"?opts.allow_direct:direct,sc.allow_direct=opts.allow_direct,this.direct=sc.allow_direct,sc.num_replicas=bo.replicas,bo.ttl)sc.max_age=(0,util_1.nanos)(bo.ttl);sc.allow_rollup_hdrs=!0;let info;try{if(info=yield this.jsm.streams.info(sc.name),!info.config.allow_direct&&this.direct===!0)this.direct=!1}catch(err){if(err.message==="stream not found")info=yield this.jsm.streams.add(sc);else throw err}this.initializePrefixes(info)})}initializePrefixes(info){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror}=info.config;if(mirror){let n=mirror.name;if(n.startsWith(types_1.kvPrefix))n=n.substring(types_1.kvPrefix.length);if(mirror.external&&mirror.external.api!==""){let mb=mirror.name.substring(types_1.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${mb}`,this.editPrefix=`${mirror.external.api}.$KV.${n}`}else this.editPrefix=this.prefix}}bucketName(){var _a;return(_a=this.stream)!==null&&_a!==void 0?_a:`${types_1.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey(k,edit=!1){let builder=[];if(edit){if(this.useJsPrefix)builder.push(this.js.apiPrefix);if(this.editPrefix!=="")builder.push(this.editPrefix);else builder.push(this.prefix)}else if(this.prefix)builder.push(this.prefix);return builder.push(k),builder.join(".")}fullKeyName(k){if(this.prefix!=="")return`${this.prefix}.${k}`;return`${kvSubjectPrefix}.${this.bucket}.${k}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey(key){let chunks=[];for(let t of key.split("."))switch(t){case">":case"*":chunks.push(t);break;default:chunks.push(this.codec.key.encode(t));break}return chunks.join(".")}decodeKey(ekey){let chunks=[];for(let t of ekey.split("."))switch(t){case">":case"*":chunks.push(t);break;default:chunks.push(this.codec.key.decode(t));break}return chunks.join(".")}close(){return Promise.resolve()}dataLen(data,h){let slen=h?h.get(types_1.JsHeaders.MessageSizeHdr)||"":"";if(slen!=="")return parseInt(slen,10);return data.length}smToEntry(sm){return new KvStoredEntryImpl(this.bucket,this.prefixLen,sm)}jmToEntry(jm){let key=this.decodeKey(jm.subject.substring(this.prefixLen));return new KvJsMsgEntryImpl(this.bucket,key,jm)}create(k,data){return __awaiter(this,void 0,void 0,function*(){var _a;let firstErr;try{let n=yield this.put(k,data,{previousSeq:0});return Promise.resolve(n)}catch(err){if(firstErr=err,((_a=err===null||err===void 0?void 0:err.api_error)===null||_a===void 0?void 0:_a.err_code)!==10071)return Promise.reject(err)}let rev=0;try{let e=yield this.get(k);if((e===null||e===void 0?void 0:e.operation)==="DEL"||(e===null||e===void 0?void 0:e.operation)==="PURGE")return rev=e!==null?e.revision:0,this.update(k,data,rev);else return Promise.reject(firstErr)}catch(err){return Promise.reject(err)}})}update(k,data,version){if(version<=0)throw Error("version must be greater than 0");return this.put(k,data,{previousSeq:version})}put(k_1,data_1){return __awaiter(this,arguments,void 0,function*(k,data,opts={}){var _a,_b;let ek=this.encodeKey(k);this.validateKey(ek);let o={};if(opts.previousSeq!==void 0){let h=(0,headers_1.headers)();o.headers=h,h.set(jsclient_1.PubHeaders.ExpectedLastSubjectSequenceHdr,`${opts.previousSeq}`)}try{return(yield this.js.publish(this.subjectForKey(ek,!0),data,o)).seq}catch(err){let ne=err;if(ne.isJetStreamError())return ne.message=(_a=ne.api_error)===null||_a===void 0?void 0:_a.description,ne.code=`${(_b=ne.api_error)===null||_b===void 0?void 0:_b.code}`,Promise.reject(ne);return Promise.reject(err)}})}get(k,opts){return __awaiter(this,void 0,void 0,function*(){let ek=this.encodeKey(k);this.validateKey(ek);let arg={last_by_subj:this.subjectForKey(ek)};if(opts&&opts.revision>0)arg={seq:opts.revision};let sm;try{if(this.direct)sm=yield this.jsm.direct.getMessage(this.bucketName(),arg);else sm=yield this.jsm.streams.getMessage(this.bucketName(),arg);let ke=this.smToEntry(sm);if(ke.key!==ek)return null;return ke}catch(err){if(err.code===core_1.ErrorCode.JetStream404NoMessages)return null;throw err}})}purge(k,opts){return this._deleteOrPurge(k,"PURGE",opts)}delete(k,opts){return this._deleteOrPurge(k,"DEL",opts)}purgeDeletes(){return __awaiter(this,arguments,void 0,function*(olderMillis=1800000){let done=(0,util_1.deferred)(),buf=[],i2=yield this.watch({key:">",initializedFn:()=>{done.resolve()}});(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;try{for(var _d=!0,i_1=__asyncValues(i2),i_1_1;i_1_1=yield i_1.next(),_a=i_1_1.done,!_a;_d=!0){_c=i_1_1.value,_d=!1;let e=_c;if(e.operation==="DEL"||e.operation==="PURGE")buf.push(e)}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=i_1.return))yield _b.call(i_1)}finally{if(e_1)throw e_1.error}}}))().then(),yield done,i2.stop();let min=Date.now()-olderMillis,proms=buf.map((e)=>{let subj=this.subjectForKey(e.key);if(e.created.getTime()>=min)return this.jsm.streams.purge(this.stream,{filter:subj,keep:1});else return this.jsm.streams.purge(this.stream,{filter:subj,keep:0})}),purged=yield Promise.all(proms);return purged.unshift({success:!0,purged:0}),purged.reduce((pv,cv)=>{return pv.purged+=cv.purged,pv})})}_deleteOrPurge(k,op,opts){return __awaiter(this,void 0,void 0,function*(){var _a,e_2,_b,_c;if(!this.hasWildcards(k))return this._doDeleteOrPurge(k,op,opts);let iter=yield this.keys(k),buf=[];try{for(var _d=!0,iter_1=__asyncValues(iter),iter_1_1;iter_1_1=yield iter_1.next(),_a=iter_1_1.done,!_a;_d=!0){_c=iter_1_1.value,_d=!1;let k2=_c;if(buf.push(this._doDeleteOrPurge(k2,op)),buf.length===100)yield Promise.all(buf),buf.length=0}}catch(e_2_1){e_2={error:e_2_1}}finally{try{if(!_d&&!_a&&(_b=iter_1.return))yield _b.call(iter_1)}finally{if(e_2)throw e_2.error}}if(buf.length>0)yield Promise.all(buf)})}_doDeleteOrPurge(k,op,opts){return __awaiter(this,void 0,void 0,function*(){let ek=this.encodeKey(k);this.validateKey(ek);let h=(0,headers_1.headers)();if(h.set(exports.kvOperationHdr,op),op==="PURGE")h.set(types_1.JsHeaders.RollupHdr,types_1.JsHeaders.RollupValueSubject);if(opts===null||opts===void 0?void 0:opts.previousSeq)h.set(jsclient_1.PubHeaders.ExpectedLastSubjectSequenceHdr,`${opts.previousSeq}`);yield this.js.publish(this.subjectForKey(ek,!0),encoders_1.Empty,{headers:h})})}_buildCC(k,content,opts={}){let filter_subjects=(!Array.isArray(k)?[k]:k).map((k2)=>{let ek=this.encodeKey(k2);return this.validateSearchKey(k2),this.fullKeyName(ek)}),deliver_policy=jsapi_types_1.DeliverPolicy.LastPerSubject;if(content===types_1.KvWatchInclude.AllHistory)deliver_policy=jsapi_types_1.DeliverPolicy.All;if(content===types_1.KvWatchInclude.UpdatesOnly)deliver_policy=jsapi_types_1.DeliverPolicy.New;let filter_subject=void 0;if(filter_subjects.length===1)filter_subject=filter_subjects[0],filter_subjects=void 0;return Object.assign({deliver_policy,ack_policy:jsapi_types_1.AckPolicy.None,filter_subjects,filter_subject,flow_control:!0,idle_heartbeat:(0,util_1.nanos)(5000)},opts)}remove(k){return this.purge(k)}history(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a;let k=(_a=opts.key)!==null&&_a!==void 0?_a:">",qi=new queued_iterator_1.QueuedIteratorImpl,co={};co.headers_only=opts.headers_only||!1;let fn;fn=()=>{qi.stop()};let count=0,cc=this._buildCC(k,types_1.KvWatchInclude.AllHistory,co),subj=cc.filter_subject,copts=(0,types_1.consumerOpts)(cc);copts.bindStream(this.stream),copts.orderedConsumer(),copts.callback((err,jm)=>{if(err){qi.stop(err);return}if(jm){let e=this.jmToEntry(jm);if(qi.push(e),qi.received++,fn&&count>0&&qi.received>=count||jm.info.pending===0)qi.push(fn),fn=void 0}});let sub=yield this.js.subscribe(subj,copts);if(fn){let{info:{last}}=sub,expect=last.num_pending+last.delivered.consumer_seq;if(expect===0||qi.received>=expect)try{fn()}catch(err){qi.stop(err)}finally{fn=void 0}else count=expect}return qi._data=sub,qi.iterClosed.then(()=>{sub.unsubscribe()}),sub.closed.then(()=>{qi.stop()}).catch((err)=>{qi.stop(err)}),qi})}canSetWatcherName(){let nci=this.js.nc,{ok}=nci.features.get(semver_1.Feature.JS_NEW_CONSUMER_CREATE_API);return ok}watch(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a;let k=(_a=opts.key)!==null&&_a!==void 0?_a:">",qi=new queued_iterator_1.QueuedIteratorImpl,co={};co.headers_only=opts.headers_only||!1;let content=types_1.KvWatchInclude.LastValue;if(opts.include===types_1.KvWatchInclude.AllHistory)content=types_1.KvWatchInclude.AllHistory;else if(opts.include===types_1.KvWatchInclude.UpdatesOnly)content=types_1.KvWatchInclude.UpdatesOnly;let ignoreDeletes=opts.ignoreDeletes===!0,fn=opts.initializedFn,count=0,cc=this._buildCC(k,content,co),subj=cc.filter_subject,copts=(0,types_1.consumerOpts)(cc);if(this.canSetWatcherName())copts.consumerName(nuid_1.nuid.next());if(copts.bindStream(this.stream),opts.resumeFromRevision&&opts.resumeFromRevision>0)copts.startSequence(opts.resumeFromRevision);copts.orderedConsumer(),copts.callback((err,jm)=>{if(err){qi.stop(err);return}if(jm){let e=this.jmToEntry(jm);if(ignoreDeletes&&e.operation==="DEL")return;if(qi.push(e),qi.received++,fn&&(count>0&&qi.received>=count||jm.info.pending===0))qi.push(fn),fn=void 0}});let sub=yield this.js.subscribe(subj,copts);if(fn){let{info:{last}}=sub,expect=last.num_pending+last.delivered.consumer_seq;if(expect===0||qi.received>=expect)try{fn()}catch(err){qi.stop(err)}finally{fn=void 0}else count=expect}return qi._data=sub,qi.iterClosed.then(()=>{sub.unsubscribe()}),sub.closed.then(()=>{qi.stop()}).catch((err)=>{qi.stop(err)}),qi})}keys(){return __awaiter(this,arguments,void 0,function*(k=">"){let keys=new queued_iterator_1.QueuedIteratorImpl,cc=this._buildCC(k,types_1.KvWatchInclude.LastValue,{headers_only:!0}),subj=Array.isArray(k)?">":cc.filter_subject,copts=(0,types_1.consumerOpts)(cc);copts.bindStream(this.stream),copts.orderedConsumer();let sub=yield this.js.subscribe(subj,copts);if((()=>__awaiter(this,void 0,void 0,function*(){var _a,e_3,_b,_c,_d;try{for(var _e=!0,sub_1=__asyncValues(sub),sub_1_1;sub_1_1=yield sub_1.next(),_a=sub_1_1.done,!_a;_e=!0){_c=sub_1_1.value,_e=!1;let jm=_c,op=(_d=jm.headers)===null||_d===void 0?void 0:_d.get(exports.kvOperationHdr);if(op!=="DEL"&&op!=="PURGE"){let key=this.decodeKey(jm.subject.substring(this.prefixLen));keys.push(key)}if(jm.info.pending===0)sub.unsubscribe()}}catch(e_3_1){e_3={error:e_3_1}}finally{try{if(!_e&&!_a&&(_b=sub_1.return))yield _b.call(sub_1)}finally{if(e_3)throw e_3.error}}}))().then(()=>{keys.stop()}).catch((err)=>{keys.stop(err)}),sub.info.last.num_pending===0)sub.unsubscribe();return keys})}purgeBucket(opts){return this.jsm.streams.purge(this.bucketName(),opts)}destroy(){return this.jsm.streams.delete(this.bucketName())}status(){return __awaiter(this,void 0,void 0,function*(){var _a,_b;let cluster=(_b=(_a=this.js.nc.info)===null||_a===void 0?void 0:_a.cluster)!==null&&_b!==void 0?_b:"",bn=this.bucketName(),si=yield this.jsm.streams.info(bn);return new KvStatusImpl(si,cluster)})}}exports.Bucket=Bucket;class KvStatusImpl{constructor(si,cluster=""){this.si=si,this.cluster=cluster}get bucket(){return this.si.config.name.startsWith(types_1.kvPrefix)?this.si.config.name.substring(types_1.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,util_1.millis)(this.si.config.max_age)}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){var _a;return(_a=this.si.config.description)!==null&&_a!==void 0?_a:""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){var _a,_b;return(_b=(_a=this.si.config.placement)===null||_a===void 0?void 0:_a.cluster)!==null&&_b!==void 0?_b:""}get republish(){var _a;return(_a=this.si.config.republish)!==null&&_a!==void 0?_a:{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){var _a;return(_a=this.si.config.metadata)!==null&&_a!==void 0?_a:{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==jsapi_types_1.StoreCompression.None;return!1}}exports.KvStatusImpl=KvStatusImpl;class KvStoredEntryImpl{constructor(bucket,prefixLen,sm){this.bucket=bucket,this.prefixLen=prefixLen,this.sm=sm}get key(){return this.sm.subject.substring(this.prefixLen)}get value(){return this.sm.data}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){return this.sm.header.get(exports.kvOperationHdr)||"PUT"}get length(){let slen=this.sm.header.get(types_1.JsHeaders.MessageSizeHdr)||"";if(slen!=="")return parseInt(slen,10);return this.sm.data.length}json(){return this.sm.json()}string(){return this.sm.string()}}class KvJsMsgEntryImpl{constructor(bucket,key,sm){this.bucket=bucket,this.key=key,this.sm=sm}get value(){return this.sm.data}get created(){return new Date((0,util_1.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){var _a;return((_a=this.sm.headers)===null||_a===void 0?void 0:_a.get(exports.kvOperationHdr))||"PUT"}get delta(){return this.sm.info.pending}get length(){var _a;let slen=((_a=this.sm.headers)===null||_a===void 0?void 0:_a.get(types_1.JsHeaders.MessageSizeHdr))||"";if(slen!=="")return parseInt(slen,10);return this.sm.data.length}json(){return this.sm.json()}string(){return this.sm.string()}}});var require_consumer=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.OrderedPullConsumerImpl=exports.PullConsumerImpl=exports.OrderedConsumerMessages=exports.PullConsumerMessagesImpl=exports.ConsumerDebugEvents=exports.ConsumerEvents=void 0;var util_1=require_util(),nuid_1=require_nuid(),jsutil_1=require_jsutil(),queued_iterator_1=require_queued_iterator(),core_1=require_core(),idleheartbeat_monitor_1=require_idleheartbeat_monitor(),jsmsg_1=require_jsmsg(),jsapi_types_1=require_jsapi_types(),types_1=require_types2(),PullConsumerType;(function(PullConsumerType2){PullConsumerType2[PullConsumerType2.Unset=-1]="Unset",PullConsumerType2[PullConsumerType2.Consume=0]="Consume",PullConsumerType2[PullConsumerType2.Fetch=1]="Fetch"})(PullConsumerType||(PullConsumerType={}));var ConsumerEvents;(function(ConsumerEvents2){ConsumerEvents2.HeartbeatsMissed="heartbeats_missed",ConsumerEvents2.ConsumerNotFound="consumer_not_found",ConsumerEvents2.StreamNotFound="stream_not_found",ConsumerEvents2.ConsumerDeleted="consumer_deleted",ConsumerEvents2.OrderedConsumerRecreated="ordered_consumer_recreated",ConsumerEvents2.NoResponders="no_responders"})(ConsumerEvents||(exports.ConsumerEvents=ConsumerEvents={}));var ConsumerDebugEvents;(function(ConsumerDebugEvents2){ConsumerDebugEvents2.DebugEvent="debug",ConsumerDebugEvents2.Discard="discard",ConsumerDebugEvents2.Reset="reset",ConsumerDebugEvents2.Next="next"})(ConsumerDebugEvents||(exports.ConsumerDebugEvents=ConsumerDebugEvents={}));class PullConsumerMessagesImpl extends queued_iterator_1.QueuedIteratorImpl{constructor(c,opts,refilling=!1){super();this.consumer=c;let copts=opts;this.opts=this.parseOptions(opts,refilling),this.callback=copts.callback||null,this.noIterator=typeof this.callback==="function",this.monitor=null,this.pong=null,this.pending={msgs:0,bytes:0,requests:0},this.refilling=refilling,this.timeout=null,this.inbox=(0,core_1.createInbox)(c.api.nc.options.inboxPrefix),this.listeners=[],this.forOrderedConsumer=!1,this.abortOnMissingResource=copts.abort_on_missing_resource===!0,this.bind=copts.bind===!0,this.inBackOff=!1,this.start()}start(){let{max_messages,max_bytes,idle_heartbeat,threshold_bytes,threshold_messages}=this.opts;this.closed().then((err)=>{if(this.cleanupHandler)try{this.cleanupHandler(err)}catch(_err){}});let{sub}=this;if(sub)sub.unsubscribe();if(this.sub=this.consumer.api.nc.subscribe(this.inbox,{callback:(err,msg)=>{var _a,_b,_c,_d;if(err){this.stop(err);return}if((_a=this.monitor)===null||_a===void 0||_a.work(),msg.subject===this.inbox){if((0,jsutil_1.isHeartbeatMsg)(msg))return;let code=(_b=msg.headers)===null||_b===void 0?void 0:_b.code,description=((_d=(_c=msg.headers)===null||_c===void 0?void 0:_c.description)===null||_d===void 0?void 0:_d.toLowerCase())||"unknown",{msgsLeft,bytesLeft}=this.parseDiscard(msg.headers);if(msgsLeft>0||bytesLeft>0)this.pending.msgs-=msgsLeft,this.pending.bytes-=bytesLeft,this.pending.requests--,this.notify(ConsumerDebugEvents.Discard,{msgsLeft,bytesLeft});else if(code===400){this.stop(new core_1.NatsError(description,`${code}`));return}else if(code===409&&description==="consumer deleted"){if(this.notify(ConsumerEvents.ConsumerDeleted,`${code} ${description}`),!this.refilling||this.abortOnMissingResource){let error=new core_1.NatsError(description,`${code}`);this.stop(error);return}}else if(code===503){if(this.notify(ConsumerEvents.NoResponders,`${code} No Responders`),!this.refilling||this.abortOnMissingResource){let error=new core_1.NatsError("no responders",`${code}`);this.stop(error);return}}else this.notify(ConsumerDebugEvents.DebugEvent,`${code} ${description}`)}else{if(this._push((0,jsmsg_1.toJsMsg)(msg,this.consumer.api.timeout)),this.received++,this.pending.msgs)this.pending.msgs--;if(this.pending.bytes)this.pending.bytes-=msg.size()}if(this.pending.msgs===0&&this.pending.bytes===0)this.pending.requests=0;if(this.refilling){if(max_messages&&this.pending.msgs<=threshold_messages||max_bytes&&this.pending.bytes<=threshold_bytes){let batch=this.pullOptions();this.pull(batch)}}else if(this.pending.requests===0)this._push(()=>{this.stop()})}}),this.sub.closed.then(()=>{if(this.sub.draining)this._push(()=>{this.stop()})}),idle_heartbeat)this.monitor=new idleheartbeat_monitor_1.IdleHeartbeatMonitor(idle_heartbeat,(data)=>{return this.notify(ConsumerEvents.HeartbeatsMissed,data),this.resetPending().then(()=>{}).catch(()=>{}),!1},{maxOut:2});(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c,_d;let status=this.consumer.api.nc.status();this.statusIterator=status;try{for(var _e=!0,status_1=__asyncValues(status),status_1_1;status_1_1=yield status_1.next(),_a=status_1_1.done,!_a;_e=!0)switch(_c=status_1_1.value,_e=!1,_c.type){case core_1.Events.Disconnect:(_d=this.monitor)===null||_d===void 0||_d.cancel();break;case core_1.Events.Reconnect:this.resetPending().then((ok)=>{var _a2;if(ok)(_a2=this.monitor)===null||_a2===void 0||_a2.restart()}).catch(()=>{});break;default:}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_e&&!_a&&(_b=status_1.return))yield _b.call(status_1)}finally{if(e_1)throw e_1.error}}}))(),this.pull(this.pullOptions())}_push(r){if(!this.callback)super.push(r);else{let fn=typeof r==="function"?r:null;try{if(!fn)this.callback(r);else fn()}catch(err){this.stop(err)}}}notify(type2,data){if(this.listeners.length>0)(()=>{this.listeners.forEach((l)=>{if(!l.done)l.push({type:type2,data})})})()}resetPending(){return this.bind?this.resetPendingNoInfo():this.resetPendingWithInfo()}resetPendingNoInfo(){return this.pending.msgs=0,this.pending.bytes=0,this.pending.requests=0,this.pull(this.pullOptions()),Promise.resolve(!0)}resetPendingWithInfo(){return __awaiter(this,void 0,void 0,function*(){if(this.inBackOff)return!1;let notFound=0,streamNotFound=0,bo=(0,util_1.backoff)([this.opts.expires]),attempt=0;while(!0){if(this.done)return!1;if(this.consumer.api.nc.isClosed())return console.error("aborting resetPending - connection is closed"),!1;try{return yield this.consumer.info(),this.inBackOff=!1,notFound=0,this.pending.msgs=0,this.pending.bytes=0,this.pending.requests=0,this.pull(this.pullOptions()),!0}catch(err){if(err.message==="stream not found"){if(streamNotFound++,this.notify(ConsumerEvents.StreamNotFound,streamNotFound),!this.refilling||this.abortOnMissingResource)return this.stop(err),!1}else if(err.message==="consumer not found"){if(notFound++,this.notify(ConsumerEvents.ConsumerNotFound,notFound),this.resetHandler)try{this.resetHandler()}catch(_){}if(!this.refilling||this.abortOnMissingResource)return this.stop(err),!1;if(this.forOrderedConsumer)return!1}else notFound=0,streamNotFound=0;this.inBackOff=!0;let to=bo.backoff(attempt),de=(0,util_1.delay)(to);yield Promise.race([de,this.consumer.api.nc.closed()]),de.cancel(),attempt++}}})}pull(opts){var _a,_b;this.pending.bytes+=(_a=opts.max_bytes)!==null&&_a!==void 0?_a:0,this.pending.msgs+=(_b=opts.batch)!==null&&_b!==void 0?_b:0,this.pending.requests++;let nc=this.consumer.api.nc;this._push(()=>{nc.publish(`${this.consumer.api.prefix}.CONSUMER.MSG.NEXT.${this.consumer.stream}.${this.consumer.name}`,this.consumer.api.jc.encode(opts),{reply:this.inbox}),this.notify(ConsumerDebugEvents.Next,opts)})}pullOptions(){let batch=this.opts.max_messages-this.pending.msgs,max_bytes=this.opts.max_bytes-this.pending.bytes,idle_heartbeat=(0,util_1.nanos)(this.opts.idle_heartbeat),expires=(0,util_1.nanos)(this.opts.expires);return{batch,max_bytes,idle_heartbeat,expires}}parseDiscard(headers){let discard={msgsLeft:0,bytesLeft:0},msgsLeft=headers===null||headers===void 0?void 0:headers.get(types_1.JsHeaders.PendingMessagesHdr);if(msgsLeft)discard.msgsLeft=parseInt(msgsLeft);let bytesLeft=headers===null||headers===void 0?void 0:headers.get(types_1.JsHeaders.PendingBytesHdr);if(bytesLeft)discard.bytesLeft=parseInt(bytesLeft);return discard}trackTimeout(t){this.timeout=t}close(){return this.stop(),this.iterClosed}closed(){return this.iterClosed}clearTimers(){var _a,_b;(_a=this.monitor)===null||_a===void 0||_a.cancel(),this.monitor=null,(_b=this.timeout)===null||_b===void 0||_b.cancel(),this.timeout=null}setCleanupHandler(fn){this.cleanupHandler=fn}stop(err){var _a,_b;if(this.done)return;(_a=this.sub)===null||_a===void 0||_a.unsubscribe(),this.clearTimers(),(_b=this.statusIterator)===null||_b===void 0||_b.stop(),this._push(()=>{super.stop(err),this.listeners.forEach((n)=>{n.stop()})})}parseOptions(opts,refilling=!1){let args=opts||{};if(args.max_messages=args.max_messages||0,args.max_bytes=args.max_bytes||0,args.max_messages!==0&&args.max_bytes!==0)throw Error("only specify one of max_messages or max_bytes");if(args.max_messages===0)args.max_messages=100;if(args.expires=args.expires||30000,args.expires<1000)throw Error("expires should be at least 1000ms");if(args.idle_heartbeat=args.idle_heartbeat||args.expires/2,args.idle_heartbeat=args.idle_heartbeat>30000?30000:args.idle_heartbeat,refilling){let minMsgs=Math.round(args.max_messages*0.75)||1;args.threshold_messages=args.threshold_messages||minMsgs;let minBytes=Math.round(args.max_bytes*0.75)||1;args.threshold_bytes=args.threshold_bytes||minBytes}return args}status(){let iter=new queued_iterator_1.QueuedIteratorImpl;return this.listeners.push(iter),Promise.resolve(iter)}}exports.PullConsumerMessagesImpl=PullConsumerMessagesImpl;class OrderedConsumerMessages extends queued_iterator_1.QueuedIteratorImpl{constructor(){super();this.listeners=[]}setSource(src){if(this.src)this.src.resetHandler=void 0,this.src.setCleanupHandler(),this.src.stop();this.src=src,this.src.setCleanupHandler((err)=>{this.stop(err||void 0)}),(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_2,_b,_c;let status=yield this.src.status();try{for(var _d=!0,status_2=__asyncValues(status),status_2_1;status_2_1=yield status_2.next(),_a=status_2_1.done,!_a;_d=!0){_c=status_2_1.value,_d=!1;let s=_c;this.notify(s.type,s.data)}}catch(e_2_1){e_2={error:e_2_1}}finally{try{if(!_d&&!_a&&(_b=status_2.return))yield _b.call(status_2)}finally{if(e_2)throw e_2.error}}}))().catch(()=>{})}notify(type2,data){if(this.listeners.length>0)(()=>{this.listeners.forEach((l)=>{if(!l.done)l.push({type:type2,data})})})()}stop(err){var _a;if(this.done)return;(_a=this.src)===null||_a===void 0||_a.stop(err),super.stop(err),this.listeners.forEach((n)=>{n.stop()})}close(){return this.stop(),this.iterClosed}closed(){return this.iterClosed}status(){let iter=new queued_iterator_1.QueuedIteratorImpl;return this.listeners.push(iter),Promise.resolve(iter)}}exports.OrderedConsumerMessages=OrderedConsumerMessages;class PullConsumerImpl{constructor(api,info){this.api=api,this._info=info,this.stream=info.stream_name,this.name=info.name}consume(opts={max_messages:100,expires:30000}){return Promise.resolve(new PullConsumerMessagesImpl(this,opts,!0))}fetch(opts={max_messages:100,expires:30000}){let m=new PullConsumerMessagesImpl(this,opts,!1),to=Math.round(m.opts.expires*1.05),timer2=(0,util_1.timeout)(to);return m.closed().catch(()=>{}).finally(()=>{timer2.cancel()}),timer2.catch(()=>{m.close().catch()}),m.trackTimeout(timer2),Promise.resolve(m)}next(opts={expires:30000}){let d=(0,util_1.deferred)(),fopts=opts;fopts.max_messages=1;let iter=new PullConsumerMessagesImpl(this,fopts,!1),to=Math.round(iter.opts.expires*1.05);if(to>=60000)(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_3,_b,_c;try{for(var _d=!0,_e=__asyncValues(yield iter.status()),_f;_f=yield _e.next(),_a=_f.done,!_a;_d=!0){_c=_f.value,_d=!1;let s=_c;if(s.type===ConsumerEvents.HeartbeatsMissed&&s.data>=2){d.reject(Error("consumer missed heartbeats"));break}}}catch(e_3_1){e_3={error:e_3_1}}finally{try{if(!_d&&!_a&&(_b=_e.return))yield _b.call(_e)}finally{if(e_3)throw e_3.error}}}))().catch();(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_4,_b,_c;try{for(var _d=!0,iter_1=__asyncValues(iter),iter_1_1;iter_1_1=yield iter_1.next(),_a=iter_1_1.done,!_a;_d=!0){_c=iter_1_1.value,_d=!1;let m=_c;d.resolve(m);break}}catch(e_4_1){e_4={error:e_4_1}}finally{try{if(!_d&&!_a&&(_b=iter_1.return))yield _b.call(iter_1)}finally{if(e_4)throw e_4.error}}}))().catch(()=>{});let timer2=(0,util_1.timeout)(to);return iter.closed().then((err)=>{err?d.reject(err):d.resolve(null)}).catch((err)=>{d.reject(err)}).finally(()=>{timer2.cancel()}),timer2.catch((_err)=>{d.resolve(null),iter.close().catch()}),iter.trackTimeout(timer2),d}delete(){let{stream_name,name}=this._info;return this.api.delete(stream_name,name)}info(cached=!1){if(cached)return Promise.resolve(this._info);let{stream_name,name}=this._info;return this.api.info(stream_name,name).then((ci)=>{return this._info=ci,this._info})}}exports.PullConsumerImpl=PullConsumerImpl;class OrderedPullConsumerImpl{constructor(api,stream,opts={}){if(this.api=api,this.stream=stream,this.cursor={stream_seq:1,deliver_seq:0},this.namePrefix=nuid_1.nuid.next(),typeof opts.name_prefix==="string")(0,jsutil_1.minValidation)("name_prefix",opts.name_prefix),this.namePrefix=opts.name_prefix+this.namePrefix;this.serial=0,this.currentConsumer=null,this.userCallback=null,this.iter=null,this.type=PullConsumerType.Unset,this.consumerOpts=opts,this.maxInitialReset=30,this.startSeq=this.consumerOpts.opt_start_seq||0,this.cursor.stream_seq=this.startSeq>0?this.startSeq-1:0}getConsumerOpts(seq2){this.serial++;let name=`${this.namePrefix}_${this.serial}`;seq2=seq2===0?1:seq2;let config={name,deliver_policy:jsapi_types_1.DeliverPolicy.StartSequence,opt_start_seq:seq2,ack_policy:jsapi_types_1.AckPolicy.None,inactive_threshold:(0,util_1.nanos)(300000),num_replicas:1};if(this.consumerOpts.headers_only===!0)config.headers_only=!0;if(Array.isArray(this.consumerOpts.filterSubjects))config.filter_subjects=this.consumerOpts.filterSubjects;if(typeof this.consumerOpts.filterSubjects==="string")config.filter_subject=this.consumerOpts.filterSubjects;if(this.consumerOpts.replay_policy)config.replay_policy=this.consumerOpts.replay_policy;if(seq2===this.startSeq+1){if(config.deliver_policy=this.consumerOpts.deliver_policy||jsapi_types_1.DeliverPolicy.StartSequence,this.consumerOpts.deliver_policy===jsapi_types_1.DeliverPolicy.LastPerSubject||this.consumerOpts.deliver_policy===jsapi_types_1.DeliverPolicy.New||this.consumerOpts.deliver_policy===jsapi_types_1.DeliverPolicy.Last)delete config.opt_start_seq,config.deliver_policy=this.consumerOpts.deliver_policy;if(config.deliver_policy===jsapi_types_1.DeliverPolicy.LastPerSubject){if(typeof config.filter_subjects>"u"&&typeof config.filter_subject>"u")config.filter_subject=">"}if(this.consumerOpts.opt_start_time)delete config.opt_start_seq,config.deliver_policy=jsapi_types_1.DeliverPolicy.StartTime,config.opt_start_time=this.consumerOpts.opt_start_time;if(this.consumerOpts.inactive_threshold)config.inactive_threshold=(0,util_1.nanos)(this.consumerOpts.inactive_threshold)}return config}resetConsumer(){return __awaiter(this,arguments,void 0,function*(seq2=0){var _a,_b,_c,_d,_e;let id=nuid_1.nuid.next(),isNew=this.serial===0;(_a=this.consumer)===null||_a===void 0||_a.delete().catch(()=>{}),seq2=seq2===0?1:seq2,this.cursor.deliver_seq=0;let config=this.getConsumerOpts(seq2);config.max_deliver=1,config.mem_storage=!0;let bo=(0,util_1.backoff)([((_b=this.opts)===null||_b===void 0?void 0:_b.expires)||30000]),ci;for(let i2=0;;i2++)try{ci=yield this.api.add(this.stream,config),(_c=this.iter)===null||_c===void 0||_c.notify(ConsumerEvents.OrderedConsumerRecreated,ci.name);break}catch(err){if(err.message==="stream not found"){if((_d=this.iter)===null||_d===void 0||_d.notify(ConsumerEvents.StreamNotFound,i2),this.type===PullConsumerType.Fetch||this.opts.abort_on_missing_resource===!0)return(_e=this.iter)===null||_e===void 0||_e.stop(err),Promise.reject(err)}if(isNew&&i2>=this.maxInitialReset)throw err;else yield(0,util_1.delay)(bo.backoff(i2+1))}return ci})}internalHandler(serial){return(m)=>{var _a;if(this.serial!==serial)return;let dseq=m.info.deliverySequence;if(dseq!==this.cursor.deliver_seq+1){this.notifyOrderedResetAndReset();return}if(this.cursor.deliver_seq=dseq,this.cursor.stream_seq=m.info.streamSequence,this.userCallback)this.userCallback(m);else(_a=this.iter)===null||_a===void 0||_a.push(m)}}reset(){return __awaiter(this,arguments,void 0,function*(opts={max_messages:100,expires:30000},info){var _a,_b;info=info||{};let fromFetch=info.fromFetch||!1,orderedReset=info.orderedReset||!1;if(this.type===PullConsumerType.Fetch&&orderedReset){(_a=this.iter)===null||_a===void 0||_a.src.stop(),yield(_b=this.iter)===null||_b===void 0?void 0:_b.closed(),this.currentConsumer=null;return}if(this.currentConsumer===null||orderedReset)this.currentConsumer=yield this.resetConsumer(this.cursor.stream_seq+1);if(this.iter===null||fromFetch)this.iter=new OrderedConsumerMessages;this.consumer=new PullConsumerImpl(this.api,this.currentConsumer);let copts=opts;copts.callback=this.internalHandler(this.serial);let msgs=null;if(this.type===PullConsumerType.Fetch&&fromFetch)msgs=yield this.consumer.fetch(opts);else if(this.type===PullConsumerType.Consume)msgs=yield this.consumer.consume(opts);let msgsImpl=msgs;msgsImpl.forOrderedConsumer=!0,msgsImpl.resetHandler=()=>{this.notifyOrderedResetAndReset()},this.iter.setSource(msgsImpl)})}notifyOrderedResetAndReset(){var _a;(_a=this.iter)===null||_a===void 0||_a.notify(ConsumerDebugEvents.Reset,""),this.reset(this.opts,{orderedReset:!0})}consume(){return __awaiter(this,arguments,void 0,function*(opts={max_messages:100,expires:30000}){if(opts.bind)return Promise.reject(Error("bind is not supported"));if(this.type===PullConsumerType.Fetch)return Promise.reject(Error("ordered consumer initialized as fetch"));if(this.type===PullConsumerType.Consume)return Promise.reject(Error("ordered consumer doesn't support concurrent consume"));let{callback}=opts;if(callback)this.userCallback=callback;return this.type=PullConsumerType.Consume,this.opts=opts,yield this.reset(opts),this.iter})}fetch(){return __awaiter(this,arguments,void 0,function*(opts={max_messages:100,expires:30000}){var _a;if(opts.bind)return Promise.reject(Error("bind is not supported"));if(this.type===PullConsumerType.Consume)return Promise.reject(Error("ordered consumer already initialized as consume"));if(((_a=this.iter)===null||_a===void 0?void 0:_a.done)===!1)return Promise.reject(Error("ordered consumer doesn't support concurrent fetch"));let{callback}=opts;if(callback)this.userCallback=callback;return this.type=PullConsumerType.Fetch,this.opts=opts,yield this.reset(opts,{fromFetch:!0}),this.iter})}next(){return __awaiter(this,arguments,void 0,function*(opts={expires:30000}){let copts=opts;if(copts.bind)return Promise.reject(Error("bind is not supported"));copts.max_messages=1;let d=(0,util_1.deferred)();return copts.callback=(m)=>{this.userCallback=null,d.resolve(m)},(yield this.fetch(copts)).iterClosed.then((err)=>{if(err)d.reject(err);d.resolve(null)}).catch((err)=>{d.reject(err)}),d})}delete(){if(!this.currentConsumer)return Promise.resolve(!1);return this.api.delete(this.stream,this.currentConsumer.name).then((tf)=>{return Promise.resolve(tf)}).catch((err)=>{return Promise.reject(err)}).finally(()=>{this.currentConsumer=null})}info(cached){return __awaiter(this,void 0,void 0,function*(){if(this.currentConsumer==null)return this.currentConsumer=yield this.resetConsumer(this.startSeq),Promise.resolve(this.currentConsumer);if(cached&&this.currentConsumer)return Promise.resolve(this.currentConsumer);return this.api.info(this.stream,this.currentConsumer.name)})}}exports.OrderedPullConsumerImpl=OrderedPullConsumerImpl});var require_jsmstream_api=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.StreamsImpl=exports.StoredMsgImpl=exports.StreamAPIImpl=exports.StreamImpl=exports.ConsumersImpl=void 0;exports.convertStreamSourceDomain=convertStreamSourceDomain;var types_1=require_types(),jsbaseclient_api_1=require_jsbaseclient_api(),jslister_1=require_jslister(),jsutil_1=require_jsutil(),headers_1=require_headers(),kv_1=require_kv(),objectstore_1=require_objectstore(),codec_1=require_codec(),encoders_1=require_encoders(),semver_1=require_semver(),types_2=require_types2(),consumer_1=require_consumer(),jsmconsumer_api_1=require_jsmconsumer_api();function convertStreamSourceDomain(s){if(s===void 0)return;let{domain}=s;if(domain===void 0)return s;let copy=Object.assign({},s);if(delete copy.domain,domain==="")return copy;if(copy.external)throw Error("domain and external are both set");return copy.external={api:`$JS.${domain}.API`},copy}class ConsumersImpl{constructor(api){this.api=api,this.notified=!1}checkVersion(){let fv=this.api.nc.features.get(semver_1.Feature.JS_SIMPLIFICATION);if(!fv.ok)return Promise.reject(Error(`consumers framework is only supported on servers ${fv.min} or better`));return Promise.resolve()}getPullConsumerFor(ci){if(ci.config.deliver_subject!==void 0)throw Error("push consumer not supported");return new consumer_1.PullConsumerImpl(this.api,ci)}get(stream_1){return __awaiter(this,arguments,void 0,function*(stream,name={}){if(typeof name==="object")return this.ordered(stream,name);return yield this.checkVersion(),this.api.info(stream,name).then((ci)=>{if(ci.config.deliver_subject!==void 0)return Promise.reject(Error("push consumer not supported"));return new consumer_1.PullConsumerImpl(this.api,ci)}).catch((err)=>{return Promise.reject(err)})})}ordered(stream,opts){return __awaiter(this,void 0,void 0,function*(){yield this.checkVersion();let impl=this.api;return new StreamAPIImpl(impl.nc,impl.opts).info(stream).then((_si)=>{return Promise.resolve(new consumer_1.OrderedPullConsumerImpl(this.api,stream,opts))}).catch((err)=>{return Promise.reject(err)})})}}exports.ConsumersImpl=ConsumersImpl;class StreamImpl{constructor(api,info){this.api=api,this._info=info}get name(){return this._info.config.name}alternates(){return this.info().then((si)=>{return si.alternates?si.alternates:[]})}best(){return __awaiter(this,void 0,void 0,function*(){if(yield this.info(),this._info.alternates){let asi=yield this.api.info(this._info.alternates[0].name);return new StreamImpl(this.api,asi)}else return this})}info(cached=!1,opts){if(cached)return Promise.resolve(this._info);return this.api.info(this.name,opts).then((si)=>{return this._info=si,this._info})}getConsumerFromInfo(ci){return new ConsumersImpl(new jsmconsumer_api_1.ConsumerAPIImpl(this.api.nc,this.api.opts)).getPullConsumerFor(ci)}getConsumer(name){return new ConsumersImpl(new jsmconsumer_api_1.ConsumerAPIImpl(this.api.nc,this.api.opts)).get(this.name,name)}getMessage(query){return this.api.getMessage(this.name,query)}deleteMessage(seq2,erase){return this.api.deleteMessage(this.name,seq2,erase)}}exports.StreamImpl=StreamImpl;class StreamAPIImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts)}checkStreamConfigVersions(cfg){let nci=this.nc;if(cfg.metadata){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_CONSUMER_METADATA);if(!ok)throw Error(`stream 'metadata' requires server ${min}`)}if(cfg.first_seq){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_FIRST_SEQ);if(!ok)throw Error(`stream 'first_seq' requires server ${min}`)}if(cfg.subject_transform){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_SUBJECT_TRANSFORM);if(!ok)throw Error(`stream 'subject_transform' requires server ${min}`)}if(cfg.compression){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_COMPRESSION);if(!ok)throw Error(`stream 'compression' requires server ${min}`)}if(cfg.consumer_limits){let{min,ok}=nci.features.get(semver_1.Feature.JS_DEFAULT_CONSUMER_LIMITS);if(!ok)throw Error(`stream 'consumer_limits' requires server ${min}`)}function validateStreamSource(context,src){var _a;if((((_a=src===null||src===void 0?void 0:src.subject_transforms)===null||_a===void 0?void 0:_a.length)||0)>0){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_SOURCE_SUBJECT_TRANSFORM);if(!ok)throw Error(`${context} 'subject_transforms' requires server ${min}`)}}if(cfg.sources)cfg.sources.forEach((src)=>{validateStreamSource("stream sources",src)});if(cfg.mirror)validateStreamSource("stream mirror",cfg.mirror)}add(){return __awaiter(this,arguments,void 0,function*(cfg={}){var _a;this.checkStreamConfigVersions(cfg),(0,jsutil_1.validateStreamName)(cfg.name),cfg.mirror=convertStreamSourceDomain(cfg.mirror),cfg.sources=(_a=cfg.sources)===null||_a===void 0?void 0:_a.map(convertStreamSourceDomain);let si=yield this._request(`${this.prefix}.STREAM.CREATE.${cfg.name}`,cfg);return this._fixInfo(si),si})}delete(stream){return __awaiter(this,void 0,void 0,function*(){return(0,jsutil_1.validateStreamName)(stream),(yield this._request(`${this.prefix}.STREAM.DELETE.${stream}`)).success})}update(name_1){return __awaiter(this,arguments,void 0,function*(name,cfg={}){var _a;if(typeof name==="object"){let sc=name;name=sc.name,cfg=sc,console.trace("\x1B[33m >> streams.update(config: StreamConfig) api changed to streams.update(name: string, config: StreamUpdateConfig) - this shim will be removed - update your code. \x1B[0m")}this.checkStreamConfigVersions(cfg),(0,jsutil_1.validateStreamName)(name);let old=yield this.info(name),update2=Object.assign(old.config,cfg);update2.mirror=convertStreamSourceDomain(update2.mirror),update2.sources=(_a=update2.sources)===null||_a===void 0?void 0:_a.map(convertStreamSourceDomain);let si=yield this._request(`${this.prefix}.STREAM.UPDATE.${name}`,update2);return this._fixInfo(si),si})}info(name,data){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(name);let subj=`${this.prefix}.STREAM.INFO.${name}`,si=yield this._request(subj,data),{total,limit}=si,have=si.state.subjects?Object.getOwnPropertyNames(si.state.subjects).length:1;if(total&&total>have){let infos=[si],paged=data||{},i2=0;while(total>have){i2++,paged.offset=limit*i2;let r2=yield this._request(subj,paged);total=r2.total,infos.push(r2);let count=Object.getOwnPropertyNames(r2.state.subjects).length;if(have+=count,count<limit)break}let subjects={};for(let i3=0;i3<infos.length;i3++)if(si=infos[i3],si.state.subjects)subjects=Object.assign(subjects,si.state.subjects);si.offset=0,si.total=0,si.limit=0,si.state.subjects=subjects}return this._fixInfo(si),si})}list(subject=""){let payload=(subject===null||subject===void 0?void 0:subject.length)?{subject}:{},listerFilter=(v)=>{let slr=v;return slr.streams.forEach((si)=>{this._fixInfo(si)}),slr.streams},subj=`${this.prefix}.STREAM.LIST`;return new jslister_1.ListerImpl(subj,listerFilter,this,payload)}_fixInfo(si){si.config.sealed=si.config.sealed||!1,si.config.deny_delete=si.config.deny_delete||!1,si.config.deny_purge=si.config.deny_purge||!1,si.config.allow_rollup_hdrs=si.config.allow_rollup_hdrs||!1}purge(name,opts){return __awaiter(this,void 0,void 0,function*(){if(opts){let{keep,seq:seq2}=opts;if(typeof keep==="number"&&typeof seq2==="number")throw Error("can specify one of keep or seq")}return(0,jsutil_1.validateStreamName)(name),yield this._request(`${this.prefix}.STREAM.PURGE.${name}`,opts)})}deleteMessage(stream_1,seq_1){return __awaiter(this,arguments,void 0,function*(stream,seq2,erase=!0){(0,jsutil_1.validateStreamName)(stream);let dr={seq:seq2};if(!erase)dr.no_erase=!0;return(yield this._request(`${this.prefix}.STREAM.MSG.DELETE.${stream}`,dr)).success})}getMessage(stream,query){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(stream);let sm=yield this._request(`${this.prefix}.STREAM.MSG.GET.${stream}`,query);return new StoredMsgImpl(sm)})}find(subject){return this.findStream(subject)}listKvs(){let filter=(v)=>{var _a,_b;let kvStreams=v.streams.filter((v2)=>{return v2.config.name.startsWith(types_2.kvPrefix)});kvStreams.forEach((si)=>{this._fixInfo(si)});let cluster="";if(kvStreams.length)cluster=(_b=(_a=this.nc.info)===null||_a===void 0?void 0:_a.cluster)!==null&&_b!==void 0?_b:"";return kvStreams.map((si)=>{return new kv_1.KvStatusImpl(si,cluster)})},subj=`${this.prefix}.STREAM.LIST`;return new jslister_1.ListerImpl(subj,filter,this)}listObjectStores(){let filter=(v)=>{let objStreams=v.streams.filter((v2)=>{return v2.config.name.startsWith(objectstore_1.osPrefix)});return objStreams.forEach((si)=>{this._fixInfo(si)}),objStreams.map((si)=>{return new objectstore_1.ObjectStoreStatusImpl(si)})},subj=`${this.prefix}.STREAM.LIST`;return new jslister_1.ListerImpl(subj,filter,this)}names(subject=""){let payload=(subject===null||subject===void 0?void 0:subject.length)?{subject}:{},listerFilter=(v)=>{return v.streams},subj=`${this.prefix}.STREAM.NAMES`;return new jslister_1.ListerImpl(subj,listerFilter,this,payload)}get(name){return __awaiter(this,void 0,void 0,function*(){let si=yield this.info(name);return Promise.resolve(new StreamImpl(this,si))})}}exports.StreamAPIImpl=StreamAPIImpl;class StoredMsgImpl{constructor(smr){this.smr=smr}get subject(){return this.smr.message.subject}get seq(){return this.smr.message.seq}get timestamp(){return this.smr.message.time}get time(){return new Date(Date.parse(this.timestamp))}get data(){return this.smr.message.data?this._parse(this.smr.message.data):types_1.Empty}get header(){if(!this._header)if(this.smr.message.hdrs){let hd=this._parse(this.smr.message.hdrs);this._header=headers_1.MsgHdrsImpl.decode(hd)}else this._header=(0,headers_1.headers)();return this._header}_parse(s){let bs=atob(s),len=bs.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=bs.charCodeAt(i2);return bytes}json(reviver){return(0,codec_1.JSONCodec)(reviver).decode(this.data)}string(){return encoders_1.TD.decode(this.data)}}exports.StoredMsgImpl=StoredMsgImpl;class StreamsImpl{constructor(api){this.api=api}get(stream){return this.api.info(stream).then((si)=>{return new StreamImpl(this.api,si)})}}exports.StreamsImpl=StreamsImpl});var require_jsm=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.JetStreamManagerImpl=exports.DirectMsgImpl=exports.DirectStreamAPIImpl=void 0;var jsbaseclient_api_1=require_jsbaseclient_api(),jsmstream_api_1=require_jsmstream_api(),jsmconsumer_api_1=require_jsmconsumer_api(),queued_iterator_1=require_queued_iterator(),types_1=require_types2(),core_1=require_core(),jsutil_1=require_jsutil(),encoders_1=require_encoders(),codec_1=require_codec();class DirectStreamAPIImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts)}getMessage(stream,query){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(stream);let qq=query,{last_by_subj}=qq;if(last_by_subj)qq=null;let payload=qq?this.jc.encode(qq):encoders_1.Empty,pre=this.opts.apiPrefix||"$JS.API",subj=last_by_subj?`${pre}.DIRECT.GET.${stream}.${last_by_subj}`:`${pre}.DIRECT.GET.${stream}`,r=yield this.nc.request(subj,payload,{timeout:this.timeout}),err=(0,jsutil_1.checkJsError)(r);if(err)return Promise.reject(err);let dm=new DirectMsgImpl(r);return Promise.resolve(dm)})}getBatch(stream,opts){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(stream);let subj=`${this.opts.apiPrefix||"$JS.API"}.DIRECT.GET.${stream}`;if(!Array.isArray(opts.multi_last)||opts.multi_last.length===0)return Promise.reject("multi_last is required");let payload=JSON.stringify(opts,(key,value)=>{if(key==="up_to_time"&&value instanceof Date)return value.toISOString();return value}),iter=new queued_iterator_1.QueuedIteratorImpl,raw=yield this.nc.requestMany(subj,payload,{strategy:core_1.RequestStrategy.SentinelMsg});return(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c,_d,_e,_f;let gotFirst=!1,badServer=!1,badRequest;try{for(var _g=!0,raw_1=__asyncValues(raw),raw_1_1;raw_1_1=yield raw_1.next(),_a=raw_1_1.done,!_a;_g=!0){_c=raw_1_1.value,_g=!1;let m=_c;if(!gotFirst){gotFirst=!0;let code=((_d=m.headers)===null||_d===void 0?void 0:_d.code)||0;if(code!==0&&code<200||code>299){badRequest=(_e=m.headers)===null||_e===void 0?void 0:_e.description.toLowerCase();break}if(((_f=m.headers)===null||_f===void 0?void 0:_f.get("Nats-Num-Pending"))===""){badServer=!0;break}}if(m.data.length===0)break;iter.push(new DirectMsgImpl(m))}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_g&&!_a&&(_b=raw_1.return))yield _b.call(raw_1)}finally{if(e_1)throw e_1.error}}iter.push(()=>{if(badServer)throw Error("batch direct get not supported by the server");if(badRequest)throw Error(`bad request: ${badRequest}`);iter.stop()})}))(),Promise.resolve(iter)})}}exports.DirectStreamAPIImpl=DirectStreamAPIImpl;class DirectMsgImpl{constructor(m){if(!m.headers)throw Error("headers expected");this.data=m.data,this.header=m.headers}get subject(){return this.header.last(types_1.DirectMsgHeaders.Subject)}get seq(){let v=this.header.last(types_1.DirectMsgHeaders.Sequence);return typeof v==="string"?parseInt(v):0}get time(){return new Date(Date.parse(this.timestamp))}get timestamp(){return this.header.last(types_1.DirectMsgHeaders.TimeStamp)}get stream(){return this.header.last(types_1.DirectMsgHeaders.Stream)}json(reviver){return(0,codec_1.JSONCodec)(reviver).decode(this.data)}string(){return encoders_1.TD.decode(this.data)}}exports.DirectMsgImpl=DirectMsgImpl;class JetStreamManagerImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts);this.streams=new jsmstream_api_1.StreamAPIImpl(nc,opts),this.consumers=new jsmconsumer_api_1.ConsumerAPIImpl(nc,opts),this.direct=new DirectStreamAPIImpl(nc,opts)}getAccountInfo(){return __awaiter(this,void 0,void 0,function*(){return yield this._request(`${this.prefix}.INFO`)})}jetstream(){return this.nc.jetstream(this.getOptions())}advisories(){let iter=new queued_iterator_1.QueuedIteratorImpl;return this.nc.subscribe("$JS.EVENT.ADVISORY.>",{callback:(err,msg)=>{if(err)throw err;try{let d=this.parseJsResponse(msg),chunks=d.type.split("."),kind=chunks[chunks.length-1];iter.push({kind,data:d})}catch(err2){iter.stop(err2)}}}),iter}}exports.JetStreamManagerImpl=JetStreamManagerImpl});var require_service=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.ServiceImpl=exports.ServiceGroupImpl=exports.ServiceMsgImpl=exports.ServiceApiPrefix=void 0;var util_1=require_util(),headers_1=require_headers(),codec_1=require_codec(),nuid_1=require_nuid(),queued_iterator_1=require_queued_iterator(),jsutil_1=require_jsutil(),semver_1=require_semver(),encoders_1=require_encoders(),core_1=require_core();exports.ServiceApiPrefix="$SRV";class ServiceMsgImpl{constructor(msg){this.msg=msg}get data(){return this.msg.data}get sid(){return this.msg.sid}get subject(){return this.msg.subject}get reply(){return this.msg.reply||""}get headers(){return this.msg.headers}respond(data,opts){return this.msg.respond(data,opts)}respondError(code,description,data,opts){var _a,_b;return opts=opts||{},opts.headers=opts.headers||(0,headers_1.headers)(),(_a=opts.headers)===null||_a===void 0||_a.set(core_1.ServiceErrorCodeHeader,`${code}`),(_b=opts.headers)===null||_b===void 0||_b.set(core_1.ServiceErrorHeader,description),this.msg.respond(data,opts)}json(reviver){return this.msg.json(reviver)}string(){return this.msg.string()}}exports.ServiceMsgImpl=ServiceMsgImpl;class ServiceGroupImpl{constructor(parent,name="",queue2=""){if(name!=="")validInternalToken("service group",name);let root="";if(parent instanceof ServiceImpl)this.srv=parent,root="";else if(parent instanceof ServiceGroupImpl){let sg=parent;if(this.srv=sg.srv,queue2===""&&sg.queue!=="")queue2=sg.queue;root=sg.subject}else throw Error("unknown ServiceGroup type");this.subject=this.calcSubject(root,name),this.queue=queue2}calcSubject(root,name=""){if(name==="")return root;return root!==""?`${root}.${name}`:name}addEndpoint(name="",opts){opts=opts||{subject:name};let args=typeof opts==="function"?{handler:opts,subject:name}:opts;(0,jsutil_1.validateName)("endpoint",name);let{subject,handler,metadata,queue:queue2}=args;subject=subject||name,queue2=queue2||this.queue,validSubjectName("endpoint subject",subject),subject=this.calcSubject(this.subject,subject);let ne={name,subject,queue:queue2,handler,metadata};return this.srv._addEndpoint(ne)}addGroup(name="",queue2=""){return new ServiceGroupImpl(this,name,queue2)}}exports.ServiceGroupImpl=ServiceGroupImpl;function validSubjectName(context,subj){if(subj==="")throw Error(`${context} cannot be empty`);if(subj.indexOf(" ")!==-1)throw Error(`${context} cannot contain spaces: '${subj}'`);let tokens2=subj.split(".");tokens2.forEach((v,idx)=>{if(v===">"&&idx!==tokens2.length-1)throw Error(`${context} cannot have internal '>': '${subj}'`)})}function validInternalToken(context,subj){if(subj.indexOf(" ")!==-1)throw Error(`${context} cannot contain spaces: '${subj}'`);subj.split(".").forEach((v)=>{if(v===">")throw Error(`${context} name cannot contain internal '>': '${subj}'`)})}class ServiceImpl{static controlSubject(verb,name="",id="",prefix){let pre=prefix!==null&&prefix!==void 0?prefix:exports.ServiceApiPrefix;if(name===""&&id==="")return`${pre}.${verb}`;if((0,jsutil_1.validateName)("control subject name",name),id!=="")return(0,jsutil_1.validateName)("control subject id",id),`${pre}.${verb}.${name}.${id}`;return`${pre}.${verb}.${name}`}constructor(nc,config={name:"",version:""}){if(this.nc=nc,this.config=Object.assign({},config),!this.config.queue)this.config.queue="q";(0,jsutil_1.validateName)("name",this.config.name),(0,jsutil_1.validateName)("queue",this.config.queue),(0,semver_1.parseSemVer)(this.config.version),this._id=nuid_1.nuid.next(),this.internal=[],this._done=(0,util_1.deferred)(),this._stopped=!1,this.handlers=[],this.started=new Date().toISOString(),this.reset(),this.nc.closed().then(()=>{this.close().catch()}).catch((err)=>{this.close(err).catch()})}get subjects(){return this.handlers.filter((s)=>{return s.internal===!1}).map((s)=>{return s.subject})}get id(){return this._id}get name(){return this.config.name}get description(){var _a;return(_a=this.config.description)!==null&&_a!==void 0?_a:""}get version(){return this.config.version}get metadata(){return this.config.metadata}errorToHeader(err){let h=(0,headers_1.headers)();if(err instanceof core_1.ServiceError){let se=err;h.set(core_1.ServiceErrorHeader,se.message),h.set(core_1.ServiceErrorCodeHeader,`${se.code}`)}else h.set(core_1.ServiceErrorHeader,err.message),h.set(core_1.ServiceErrorCodeHeader,"500");return h}setupHandler(h,internal=!1){let queue2=internal?"":h.queue?h.queue:this.config.queue,{name,subject,handler}=h,sv=h;if(sv.internal=internal,internal)this.internal.push(sv);sv.stats=new NamedEndpointStatsImpl(name,subject,queue2),sv.queue=queue2;let callback=handler?(err,msg)=>{if(err){this.close(err);return}let start=Date.now();try{handler(err,new ServiceMsgImpl(msg))}catch(err2){sv.stats.countError(err2),msg===null||msg===void 0||msg.respond(encoders_1.Empty,{headers:this.errorToHeader(err2)})}finally{sv.stats.countLatency(start)}}:void 0;return sv.sub=this.nc.subscribe(subject,{callback,queue:queue2}),sv.sub.closed.then(()=>{if(!this._stopped)this.close(Error(`required subscription ${h.subject} stopped`)).catch()}).catch((err)=>{if(!this._stopped){let ne=Error(`required subscription ${h.subject} errored: ${err.message}`);ne.stack=err.stack,this.close(ne).catch()}}),sv}info(){return{type:core_1.ServiceResponseType.INFO,name:this.name,id:this.id,version:this.version,description:this.description,metadata:this.metadata,endpoints:this.endpoints()}}endpoints(){return this.handlers.map((v)=>{let{subject,metadata,name,queue:queue2}=v;return{subject,metadata,name,queue_group:queue2}})}stats(){return __awaiter(this,void 0,void 0,function*(){let endpoints=[];for(let h of this.handlers){if(typeof this.config.statsHandler==="function")try{h.stats.data=yield this.config.statsHandler(h)}catch(err){h.stats.countError(err)}endpoints.push(h.stats.stats(h.qi))}return{type:core_1.ServiceResponseType.STATS,name:this.name,id:this.id,version:this.version,started:this.started,metadata:this.metadata,endpoints}})}addInternalHandler(verb,handler){let v=`${verb}`.toUpperCase();this._doAddInternalHandler(`${v}-all`,verb,handler),this._doAddInternalHandler(`${v}-kind`,verb,handler,this.name),this._doAddInternalHandler(`${v}`,verb,handler,this.name,this.id)}_doAddInternalHandler(name,verb,handler,kind="",id=""){let endpoint={};endpoint.name=name,endpoint.subject=ServiceImpl.controlSubject(verb,kind,id),endpoint.handler=handler,this.setupHandler(endpoint,!0)}start(){let jc=(0,codec_1.JSONCodec)(),statsHandler=(err,msg)=>{if(err)return this.close(err),Promise.reject(err);return this.stats().then((s)=>{return msg===null||msg===void 0||msg.respond(jc.encode(s)),Promise.resolve()})},infoHandler=(err,msg)=>{if(err)return this.close(err),Promise.reject(err);return msg===null||msg===void 0||msg.respond(jc.encode(this.info())),Promise.resolve()},ping=jc.encode(this.ping()),pingHandler=(err,msg)=>{if(err)return this.close(err).then().catch(),Promise.reject(err);return msg.respond(ping),Promise.resolve()};return this.addInternalHandler(core_1.ServiceVerb.PING,pingHandler),this.addInternalHandler(core_1.ServiceVerb.STATS,statsHandler),this.addInternalHandler(core_1.ServiceVerb.INFO,infoHandler),this.handlers.forEach((h)=>{let{subject}=h;if(typeof subject!=="string")return;if(h.handler===null)return;this.setupHandler(h)}),Promise.resolve(this)}close(err){if(this._stopped)return this._done;this._stopped=!0;let buf=[];if(!this.nc.isClosed())buf=this.handlers.concat(this.internal).map((h)=>{return h.sub.drain()});return Promise.allSettled(buf).then(()=>{this._done.resolve(err?err:null)}),this._done}get stopped(){return this._done}get isStopped(){return this._stopped}stop(err){return this.close(err)}ping(){return{type:core_1.ServiceResponseType.PING,name:this.name,id:this.id,version:this.version,metadata:this.metadata}}reset(){if(this.started=new Date().toISOString(),this.handlers)for(let h of this.handlers)h.stats.reset(h.qi)}addGroup(name,queue2){return new ServiceGroupImpl(this,name,queue2)}addEndpoint(name,handler){return new ServiceGroupImpl(this).addEndpoint(name,handler)}_addEndpoint(e){let qi=new queued_iterator_1.QueuedIteratorImpl;if(qi.noIterator=typeof e.handler==="function",!qi.noIterator)e.handler=(err,msg)=>{err?this.stop(err).catch():qi.push(new ServiceMsgImpl(msg))},qi.iterClosed.then(()=>{this.close().catch()});let ss=this.setupHandler(e,!1);return ss.qi=qi,this.handlers.push(ss),qi}}exports.ServiceImpl=ServiceImpl;class NamedEndpointStatsImpl{constructor(name,subject,queue2=""){this.name=name,this.subject=subject,this.average_processing_time=0,this.num_errors=0,this.num_requests=0,this.processing_time=0,this.queue=queue2}reset(qi){this.num_requests=0,this.processing_time=0,this.average_processing_time=0,this.num_errors=0,this.last_error=void 0,this.data=void 0;let qii=qi;if(qii)qii.time=0,qii.processed=0}countLatency(start){this.num_requests++,this.processing_time+=(0,util_1.nanos)(Date.now()-start),this.average_processing_time=Math.round(this.processing_time/this.num_requests)}countError(err){this.num_errors++,this.last_error=err.message}_stats(){let{name,subject,average_processing_time,num_errors,num_requests,processing_time,last_error,data,queue:queue2}=this;return{name,subject,average_processing_time,num_errors,num_requests,processing_time,last_error,data,queue_group:queue2}}stats(qi){let qii=qi;if((qii===null||qii===void 0?void 0:qii.noIterator)===!1)this.processing_time=(0,util_1.nanos)(qii.time),this.num_requests=qii.processed,this.average_processing_time=this.processing_time>0&&this.num_requests>0?this.processing_time/this.num_requests:0;return this._stats()}}});var require_serviceclient=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ServiceClientImpl=void 0;var encoders_1=require_encoders(),codec_1=require_codec(),queued_iterator_1=require_queued_iterator(),core_1=require_core(),service_1=require_service(),core_2=require_core();class ServiceClientImpl{constructor(nc,opts={strategy:core_2.RequestStrategy.JitterTimer,maxWait:2000},prefix){this.nc=nc,this.prefix=prefix,this.opts=opts}ping(name="",id=""){return this.q(core_1.ServiceVerb.PING,name,id)}stats(name="",id=""){return this.q(core_1.ServiceVerb.STATS,name,id)}info(name="",id=""){return this.q(core_1.ServiceVerb.INFO,name,id)}q(v_1){return __awaiter(this,arguments,void 0,function*(v,name="",id=""){let iter=new queued_iterator_1.QueuedIteratorImpl,jc=(0,codec_1.JSONCodec)(),subj=service_1.ServiceImpl.controlSubject(v,name,id,this.prefix),responses=yield this.nc.requestMany(subj,encoders_1.Empty,this.opts);return(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;try{for(var _d=!0,responses_1=__asyncValues(responses),responses_1_1;responses_1_1=yield responses_1.next(),_a=responses_1_1.done,!_a;_d=!0){_c=responses_1_1.value,_d=!1;let m=_c;try{let s=jc.decode(m.data);iter.push(s)}catch(err){iter.push(()=>{iter.stop(err)})}}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=responses_1.return))yield _b.call(responses_1)}finally{if(e_1)throw e_1.error}}iter.push(()=>{iter.stop()})}))().catch((err)=>{iter.stop(err)}),iter})}}exports.ServiceClientImpl=ServiceClientImpl});var require_nats=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ServicesFactory=exports.NatsConnectionImpl=void 0;var util_1=require_util(),protocol_1=require_protocol(),encoders_1=require_encoders(),types_1=require_types(),semver_1=require_semver(),options_1=require_options(),queued_iterator_1=require_queued_iterator(),request_1=require_request(),msg_1=require_msg(),jsm_1=require_jsm(),jsclient_1=require_jsclient(),service_1=require_service(),serviceclient_1=require_serviceclient(),core_1=require_core();class NatsConnectionImpl{constructor(opts){this.draining=!1,this.options=(0,options_1.parseOptions)(opts),this.listeners=[]}static connect(opts={}){return new Promise((resolve3,reject)=>{let nc=new NatsConnectionImpl(opts);protocol_1.ProtocolHandler.connect(nc.options,nc).then((ph)=>{nc.protocol=ph,function(){return __awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;try{for(var _d=!0,_e=__asyncValues(ph.status()),_f;_f=yield _e.next(),_a=_f.done,!_a;_d=!0){_c=_f.value,_d=!1;let s=_c;nc.listeners.forEach((l)=>{l.push(s)})}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=_e.return))yield _b.call(_e)}finally{if(e_1)throw e_1.error}}})}(),resolve3(nc)}).catch((err)=>{reject(err)})})}closed(){return this.protocol.closed}close(){return __awaiter(this,void 0,void 0,function*(){yield this.protocol.close()})}_check(subject,sub,pub){if(this.isClosed())throw types_1.NatsError.errorForCode(core_1.ErrorCode.ConnectionClosed);if(sub&&this.isDraining())throw types_1.NatsError.errorForCode(core_1.ErrorCode.ConnectionDraining);if(pub&&this.protocol.noMorePublishing)throw types_1.NatsError.errorForCode(core_1.ErrorCode.ConnectionDraining);if(subject=subject||"",subject.length===0)throw types_1.NatsError.errorForCode(core_1.ErrorCode.BadSubject)}publish(subject,data,options){this._check(subject,!1,!0),this.protocol.publish(subject,data,options)}publishMessage(msg){return this.publish(msg.subject,msg.data,{reply:msg.reply,headers:msg.headers})}respondMessage(msg){if(msg.reply)return this.publish(msg.reply,msg.data,{reply:msg.reply,headers:msg.headers}),!0;return!1}subscribe(subject,opts={}){this._check(subject,!0,!1);let sub=new protocol_1.SubscriptionImpl(this.protocol,subject,opts);return this.protocol.subscribe(sub),sub}_resub(s,subject,max){this._check(subject,!0,!1);let si=s;if(si.max=max,max)si.max=max+si.received;this.protocol.resub(si,subject)}requestMany(subject,data=encoders_1.Empty,opts={maxWait:1000,maxMessages:-1}){let asyncTraces=!this.protocol.options.noAsyncTraces;try{this._check(subject,!0,!0)}catch(err){return Promise.reject(err)}if(opts.strategy=opts.strategy||core_1.RequestStrategy.Timer,opts.maxWait=opts.maxWait||1000,opts.maxWait<1)return Promise.reject(new types_1.NatsError("timeout",core_1.ErrorCode.InvalidOption));let qi=new queued_iterator_1.QueuedIteratorImpl;function stop(err){qi.push(()=>{qi.stop(err)})}function callback(err,msg){if(err||msg===null)stop(err===null?void 0:err);else qi.push(msg)}if(opts.noMux){let stack=asyncTraces?Error().stack:null,max=typeof opts.maxMessages==="number"&&opts.maxMessages>0?opts.maxMessages:-1,sub=this.subscribe((0,core_1.createInbox)(this.options.inboxPrefix),{callback:(err,msg)=>{var _a,_b;if(((_a=msg===null||msg===void 0?void 0:msg.data)===null||_a===void 0?void 0:_a.length)===0&&((_b=msg===null||msg===void 0?void 0:msg.headers)===null||_b===void 0?void 0:_b.status)===core_1.ErrorCode.NoResponders)err=types_1.NatsError.errorForCode(core_1.ErrorCode.NoResponders);if(err){if(stack)err.stack+=`
837
+ `:v="\\n";break;case"\r":v="\\r";break;case"\t":v="\\t";break;default:}throw Error(`invalid ${context} name - ${context} name cannot contain '${v}'`)}}),""}function validateName(context,name=""){if(name==="")throw Error(`${context} name required`);let m=validName(name);if(m.length)throw Error(`invalid ${context} name - ${context} name ${m}`)}function validName(name=""){if(name==="")throw Error("name required");let RE=/^[-\w]+$/g;if(name.match(RE)===null){for(let c of name.split(""))if(c.match(RE)===null)return`cannot contain '${c}'`}return""}function isFlowControlMsg(msg){if(msg.data.length>0)return!1;let h=msg.headers;if(!h)return!1;return h.code>=100&&h.code<200}function isHeartbeatMsg(msg){var _a;return isFlowControlMsg(msg)&&((_a=msg.headers)===null||_a===void 0?void 0:_a.description)==="Idle Heartbeat"}function newJsErrorMsg(code,description,subject){let h=(0,headers_1.headers)(code,description),arg={hdr:1,sid:0,size:0},msg=new msg_1.MsgImpl(arg,encoders_1.Empty,{});return msg._headers=h,msg._subject=subject,msg}function checkJsError(msg){if(msg.data.length!==0)return null;let h=msg.headers;if(!h)return null;return checkJsErrorCode(h.code,h.description)}var Js409Errors;(function(Js409Errors2){Js409Errors2.MaxBatchExceeded="exceeded maxrequestbatch of",Js409Errors2.MaxExpiresExceeded="exceeded maxrequestexpires of",Js409Errors2.MaxBytesExceeded="exceeded maxrequestmaxbytes of",Js409Errors2.MaxMessageSizeExceeded="message size exceeds maxbytes",Js409Errors2.PushConsumer="consumer is push based",Js409Errors2.MaxWaitingExceeded="exceeded maxwaiting",Js409Errors2.IdleHeartbeatMissed="idle heartbeats missed",Js409Errors2.ConsumerDeleted="consumer deleted"})(Js409Errors||(exports.Js409Errors=Js409Errors={}));var MAX_WAITING_FAIL=!1;function setMaxWaitingToFail(tf){MAX_WAITING_FAIL=tf}function isTerminal409(err){if(err.code!==core_1.ErrorCode.JetStream409)return!1;let fatal=[Js409Errors.MaxBatchExceeded,Js409Errors.MaxExpiresExceeded,Js409Errors.MaxBytesExceeded,Js409Errors.MaxMessageSizeExceeded,Js409Errors.PushConsumer,Js409Errors.IdleHeartbeatMissed,Js409Errors.ConsumerDeleted];if(MAX_WAITING_FAIL)fatal.push(Js409Errors.MaxWaitingExceeded);return fatal.find((s)=>{return err.message.indexOf(s)!==-1})!==void 0}function checkJsErrorCode(code,description=""){if(code<300)return null;switch(description=description.toLowerCase(),code){case 404:return new core_1.NatsError(description,core_1.ErrorCode.JetStream404NoMessages);case 408:return new core_1.NatsError(description,core_1.ErrorCode.JetStream408RequestTimeout);case 409:{let ec=description.startsWith(Js409Errors.IdleHeartbeatMissed)?core_1.ErrorCode.JetStreamIdleHeartBeat:core_1.ErrorCode.JetStream409;return new core_1.NatsError(description,ec)}case 503:return core_1.NatsError.errorForCode(core_1.ErrorCode.JetStreamNotEnabled,Error(description));default:if(description==="")description=core_1.ErrorCode.Unknown;return new core_1.NatsError(description,`${code}`)}}});var require_jsbaseclient_api=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.BaseApiClient=void 0;exports.defaultJsOptions=defaultJsOptions;var encoders_1=require_encoders(),codec_1=require_codec(),util_1=require_util(),jsutil_1=require_jsutil(),core_1=require_core(),defaultPrefix="$JS.API",defaultTimeout=5000;function defaultJsOptions(opts){if(opts=opts||{},opts.domain)opts.apiPrefix=`$JS.${opts.domain}.API`,delete opts.domain;return(0,util_1.extend)({apiPrefix:defaultPrefix,timeout:defaultTimeout},opts)}class BaseApiClient{constructor(nc,opts){this.nc=nc,this.opts=defaultJsOptions(opts),this._parseOpts(),this.prefix=this.opts.apiPrefix,this.timeout=this.opts.timeout,this.jc=(0,codec_1.JSONCodec)()}getOptions(){return Object.assign({},this.opts)}_parseOpts(){let prefix=this.opts.apiPrefix;if(!prefix||prefix.length===0)throw Error("invalid empty prefix");if(prefix[prefix.length-1]===".")prefix=prefix.substr(0,prefix.length-1);this.opts.apiPrefix=prefix}_request(subj_1){return __awaiter(this,arguments,void 0,function*(subj,data=null,opts){opts=opts||{},opts.timeout=this.timeout;let a=encoders_1.Empty;if(data)a=this.jc.encode(data);let{retries}=opts;retries=retries||1,retries=retries===-1?Number.MAX_SAFE_INTEGER:retries;let bo=(0,util_1.backoff)();for(let i2=0;i2<retries;i2++)try{let m=yield this.nc.request(subj,a,opts);return this.parseJsResponse(m)}catch(err){let ne=err;if((ne.code==="503"||ne.code===core_1.ErrorCode.Timeout)&&i2+1<retries)yield(0,util_1.delay)(bo.backoff(i2));else throw err}})}findStream(subject){return __awaiter(this,void 0,void 0,function*(){let q={subject},names=yield this._request(`${this.prefix}.STREAM.NAMES`,q);if(!names.streams||names.streams.length!==1)throw Error("no stream matches subject");return names.streams[0]})}getConnection(){return this.nc}parseJsResponse(m){let v=this.jc.decode(m.data),r=v;if(r.error){let err=(0,jsutil_1.checkJsErrorCode)(r.error.code,r.error.description);if(err!==null)throw err.api_error=r.error,err}return v}}exports.BaseApiClient=BaseApiClient});var require_jslister=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__await=exports&&exports.__await||function(v){return this instanceof __await?(this.v=v,this):new __await(v)},__asyncGenerator=exports&&exports.__asyncGenerator||function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i2,q=[];return i2=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i2[Symbol.asyncIterator]=function(){return this},i2;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){if(g[n]){if(i2[n]=function(v){return new Promise(function(a,b2){q.push([n,v,a,b2])>1||resume(n,v)})},f)i2[n]=f(i2[n])}}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){if(f(v),q.shift(),q.length)resume(q[0][0],q[0][1])}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ListerImpl=void 0;class ListerImpl{constructor(subject,filter,jsm,payload){if(!subject)throw Error("subject is required");this.subject=subject,this.jsm=jsm,this.offset=0,this.pageInfo={},this.filter=filter,this.payload=payload||{}}next(){return __awaiter(this,void 0,void 0,function*(){if(this.err)return[];if(this.pageInfo&&this.offset>=this.pageInfo.total)return[];let offset={offset:this.offset};if(this.payload)Object.assign(offset,this.payload);try{let r=yield this.jsm._request(this.subject,offset,{timeout:this.jsm.timeout});this.pageInfo=r;let count=this.countResponse(r);if(count===0)return[];return this.offset+=count,this.filter(r)}catch(err){throw this.err=err,err}})}countResponse(r){var _a,_b,_c;switch(r===null||r===void 0?void 0:r.type){case"io.nats.jetstream.api.v1.stream_names_response":case"io.nats.jetstream.api.v1.stream_list_response":return((_a=r.streams)===null||_a===void 0?void 0:_a.length)||0;case"io.nats.jetstream.api.v1.consumer_list_response":return((_b=r.consumers)===null||_b===void 0?void 0:_b.length)||0;default:return console.error(`jslister.ts: unknown API response for paged output: ${r===null||r===void 0?void 0:r.type}`),((_c=r.streams)===null||_c===void 0?void 0:_c.length)||0}return 0}[Symbol.asyncIterator](){return __asyncGenerator(this,arguments,function*(){let page=yield __await(this.next());while(page.length>0){for(let item of page)yield yield __await(item);page=yield __await(this.next())}})}}exports.ListerImpl=ListerImpl});var require_jsapi_types=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.ConsumerApiAction=exports.StoreCompression=exports.ReplayPolicy=exports.AckPolicy=exports.DeliverPolicy=exports.StorageType=exports.DiscardPolicy=exports.RetentionPolicy=void 0;exports.defaultConsumer=defaultConsumer;var util_1=require_util(),RetentionPolicy;(function(RetentionPolicy2){RetentionPolicy2.Limits="limits",RetentionPolicy2.Interest="interest",RetentionPolicy2.Workqueue="workqueue"})(RetentionPolicy||(exports.RetentionPolicy=RetentionPolicy={}));var DiscardPolicy;(function(DiscardPolicy2){DiscardPolicy2.Old="old",DiscardPolicy2.New="new"})(DiscardPolicy||(exports.DiscardPolicy=DiscardPolicy={}));var StorageType;(function(StorageType2){StorageType2.File="file",StorageType2.Memory="memory"})(StorageType||(exports.StorageType=StorageType={}));var DeliverPolicy;(function(DeliverPolicy2){DeliverPolicy2.All="all",DeliverPolicy2.Last="last",DeliverPolicy2.New="new",DeliverPolicy2.StartSequence="by_start_sequence",DeliverPolicy2.StartTime="by_start_time",DeliverPolicy2.LastPerSubject="last_per_subject"})(DeliverPolicy||(exports.DeliverPolicy=DeliverPolicy={}));var AckPolicy;(function(AckPolicy2){AckPolicy2.None="none",AckPolicy2.All="all",AckPolicy2.Explicit="explicit",AckPolicy2.NotSet=""})(AckPolicy||(exports.AckPolicy=AckPolicy={}));var ReplayPolicy;(function(ReplayPolicy2){ReplayPolicy2.Instant="instant",ReplayPolicy2.Original="original"})(ReplayPolicy||(exports.ReplayPolicy=ReplayPolicy={}));var StoreCompression;(function(StoreCompression2){StoreCompression2.None="none",StoreCompression2.S2="s2"})(StoreCompression||(exports.StoreCompression=StoreCompression={}));var ConsumerApiAction;(function(ConsumerApiAction2){ConsumerApiAction2.CreateOrUpdate="",ConsumerApiAction2.Update="update",ConsumerApiAction2.Create="create"})(ConsumerApiAction||(exports.ConsumerApiAction=ConsumerApiAction={}));function defaultConsumer(name,opts={}){return Object.assign({name,deliver_policy:DeliverPolicy.All,ack_policy:AckPolicy.Explicit,ack_wait:(0,util_1.nanos)(30000),replay_policy:ReplayPolicy.Instant},opts)}});var require_types2=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.ConsumerOptsBuilderImpl=exports.kvPrefix=exports.RepublishHeaders=exports.DirectMsgHeaders=exports.KvWatchInclude=exports.JsHeaders=exports.AdvisoryKind=void 0;exports.consumerOpts=consumerOpts;exports.isConsumerOptsBuilder=isConsumerOptsBuilder;var jsapi_types_1=require_jsapi_types(),jsutil_1=require_jsutil(),util_1=require_util(),AdvisoryKind;(function(AdvisoryKind2){AdvisoryKind2.API="api_audit",AdvisoryKind2.StreamAction="stream_action",AdvisoryKind2.ConsumerAction="consumer_action",AdvisoryKind2.SnapshotCreate="snapshot_create",AdvisoryKind2.SnapshotComplete="snapshot_complete",AdvisoryKind2.RestoreCreate="restore_create",AdvisoryKind2.RestoreComplete="restore_complete",AdvisoryKind2.MaxDeliver="max_deliver",AdvisoryKind2.Terminated="terminated",AdvisoryKind2.Ack="consumer_ack",AdvisoryKind2.StreamLeaderElected="stream_leader_elected",AdvisoryKind2.StreamQuorumLost="stream_quorum_lost",AdvisoryKind2.ConsumerLeaderElected="consumer_leader_elected",AdvisoryKind2.ConsumerQuorumLost="consumer_quorum_lost"})(AdvisoryKind||(exports.AdvisoryKind=AdvisoryKind={}));var JsHeaders;(function(JsHeaders2){JsHeaders2.StreamSourceHdr="Nats-Stream-Source",JsHeaders2.LastConsumerSeqHdr="Nats-Last-Consumer",JsHeaders2.LastStreamSeqHdr="Nats-Last-Stream",JsHeaders2.ConsumerStalledHdr="Nats-Consumer-Stalled",JsHeaders2.MessageSizeHdr="Nats-Msg-Size",JsHeaders2.RollupHdr="Nats-Rollup",JsHeaders2.RollupValueSubject="sub",JsHeaders2.RollupValueAll="all",JsHeaders2.PendingMessagesHdr="Nats-Pending-Messages",JsHeaders2.PendingBytesHdr="Nats-Pending-Bytes"})(JsHeaders||(exports.JsHeaders=JsHeaders={}));var KvWatchInclude;(function(KvWatchInclude2){KvWatchInclude2.LastValue="",KvWatchInclude2.AllHistory="history",KvWatchInclude2.UpdatesOnly="updates"})(KvWatchInclude||(exports.KvWatchInclude=KvWatchInclude={}));var DirectMsgHeaders;(function(DirectMsgHeaders2){DirectMsgHeaders2.Stream="Nats-Stream",DirectMsgHeaders2.Sequence="Nats-Sequence",DirectMsgHeaders2.TimeStamp="Nats-Time-Stamp",DirectMsgHeaders2.Subject="Nats-Subject"})(DirectMsgHeaders||(exports.DirectMsgHeaders=DirectMsgHeaders={}));var RepublishHeaders;(function(RepublishHeaders2){RepublishHeaders2.Stream="Nats-Stream",RepublishHeaders2.Subject="Nats-Subject",RepublishHeaders2.Sequence="Nats-Sequence",RepublishHeaders2.LastSequence="Nats-Last-Sequence",RepublishHeaders2.Size="Nats-Msg-Size"})(RepublishHeaders||(exports.RepublishHeaders=RepublishHeaders={}));exports.kvPrefix="KV_";class ConsumerOptsBuilderImpl{constructor(opts){this.stream="",this.mack=!1,this.ordered=!1,this.config=(0,jsapi_types_1.defaultConsumer)("",opts||{})}getOpts(){var _a;let o={};if(o.config=Object.assign({},this.config),o.config.filter_subject)this.filterSubject(o.config.filter_subject),o.config.filter_subject=void 0;if(o.config.filter_subjects)(_a=o.config.filter_subjects)===null||_a===void 0||_a.forEach((v)=>{this.filterSubject(v)}),o.config.filter_subjects=void 0;if(o.mack=this.mack,o.stream=this.stream,o.callbackFn=this.callbackFn,o.max=this.max,o.queue=this.qname,o.ordered=this.ordered,o.config.ack_policy=o.ordered?jsapi_types_1.AckPolicy.None:o.config.ack_policy,o.isBind=o.isBind||!1,this.filters)switch(this.filters.length){case 0:break;case 1:o.config.filter_subject=this.filters[0];break;default:o.config.filter_subjects=this.filters}return o}description(description){return this.config.description=description,this}deliverTo(subject){return this.config.deliver_subject=subject,this}durable(name){return(0,jsutil_1.validateDurableName)(name),this.config.durable_name=name,this}startSequence(seq2){if(seq2<=0)throw Error("sequence must be greater than 0");return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.StartSequence,this.config.opt_start_seq=seq2,this}startTime(time){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.StartTime,this.config.opt_start_time=time.toISOString(),this}deliverAll(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.All,this}deliverLastPerSubject(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.LastPerSubject,this}deliverLast(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.Last,this}deliverNew(){return this.config.deliver_policy=jsapi_types_1.DeliverPolicy.New,this}startAtTimeDelta(millis){return this.startTime(new Date(Date.now()-millis)),this}headersOnly(){return this.config.headers_only=!0,this}ackNone(){return this.config.ack_policy=jsapi_types_1.AckPolicy.None,this}ackAll(){return this.config.ack_policy=jsapi_types_1.AckPolicy.All,this}ackExplicit(){return this.config.ack_policy=jsapi_types_1.AckPolicy.Explicit,this}ackWait(millis){return this.config.ack_wait=(0,util_1.nanos)(millis),this}maxDeliver(max){return this.config.max_deliver=max,this}filterSubject(s){return this.filters=this.filters||[],this.filters.push(s),this}replayInstantly(){return this.config.replay_policy=jsapi_types_1.ReplayPolicy.Instant,this}replayOriginal(){return this.config.replay_policy=jsapi_types_1.ReplayPolicy.Original,this}sample(n){if(n=Math.trunc(n),n<0||n>100)throw Error("value must be between 0-100");return this.config.sample_freq=`${n}%`,this}limit(n){return this.config.rate_limit_bps=n,this}maxWaiting(max){return this.config.max_waiting=max,this}maxAckPending(max){return this.config.max_ack_pending=max,this}idleHeartbeat(millis){return this.config.idle_heartbeat=(0,util_1.nanos)(millis),this}flowControl(){return this.config.flow_control=!0,this}deliverGroup(name){return this.queue(name),this}manualAck(){return this.mack=!0,this}maxMessages(max){return this.max=max,this}callback(fn){return this.callbackFn=fn,this}queue(n){return this.qname=n,this.config.deliver_group=n,this}orderedConsumer(){return this.ordered=!0,this}bind(stream,durable){return this.stream=stream,this.config.durable_name=durable,this.isBind=!0,this}bindStream(stream){return this.stream=stream,this}inactiveEphemeralThreshold(millis){return this.config.inactive_threshold=(0,util_1.nanos)(millis),this}maxPullBatch(n){return this.config.max_batch=n,this}maxPullRequestExpires(millis){return this.config.max_expires=(0,util_1.nanos)(millis),this}memory(){return this.config.mem_storage=!0,this}numReplicas(n){return this.config.num_replicas=n,this}consumerName(n){return this.config.name=n,this}}exports.ConsumerOptsBuilderImpl=ConsumerOptsBuilderImpl;function consumerOpts(opts){return new ConsumerOptsBuilderImpl(opts)}function isConsumerOptsBuilder(o){return typeof o.getOpts==="function"}});var require_jsmconsumer_api=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.ConsumerAPIImpl=void 0;var jsbaseclient_api_1=require_jsbaseclient_api(),jslister_1=require_jslister(),jsutil_1=require_jsutil(),semver_1=require_semver(),jsapi_types_1=require_jsapi_types();class ConsumerAPIImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts)}add(stream_1,cfg_1){return __awaiter(this,arguments,void 0,function*(stream,cfg,action=jsapi_types_1.ConsumerApiAction.Create){var _a,_b,_c;if((0,jsutil_1.validateStreamName)(stream),cfg.deliver_group&&cfg.flow_control)throw Error("jetstream flow control is not supported with queue groups");if(cfg.deliver_group&&cfg.idle_heartbeat)throw Error("jetstream idle heartbeat is not supported with queue groups");let cr={};if(cr.config=cfg,cr.stream_name=stream,cr.action=action,cr.config.durable_name)(0,jsutil_1.validateDurableName)(cr.config.durable_name);let nci=this.nc,{min,ok:newAPI}=nci.features.get(semver_1.Feature.JS_NEW_CONSUMER_CREATE_API),name=cfg.name===""?void 0:cfg.name;if(name&&!newAPI)throw Error(`consumer 'name' requires server ${min}`);if(name)try{(0,jsutil_1.minValidation)("name",name)}catch(err){let m=err.message,idx=m.indexOf("cannot contain");if(idx!==-1)throw Error(`consumer 'name' ${m.substring(idx)}`);throw err}let subj,consumerName="";if(Array.isArray(cfg.filter_subjects)){let{min:min2,ok}=nci.features.get(semver_1.Feature.JS_MULTIPLE_CONSUMER_FILTER);if(!ok)throw Error(`consumer 'filter_subjects' requires server ${min2}`);newAPI=!1}if(cfg.metadata){let{min:min2,ok}=nci.features.get(semver_1.Feature.JS_STREAM_CONSUMER_METADATA);if(!ok)throw Error(`consumer 'metadata' requires server ${min2}`)}if(newAPI)consumerName=(_b=(_a=cfg.name)!==null&&_a!==void 0?_a:cfg.durable_name)!==null&&_b!==void 0?_b:"";if(consumerName!==""){let fs2=(_c=cfg.filter_subject)!==null&&_c!==void 0?_c:void 0;if(fs2===">")fs2=void 0;subj=fs2!==void 0?`${this.prefix}.CONSUMER.CREATE.${stream}.${consumerName}.${fs2}`:`${this.prefix}.CONSUMER.CREATE.${stream}.${consumerName}`}else subj=cfg.durable_name?`${this.prefix}.CONSUMER.DURABLE.CREATE.${stream}.${cfg.durable_name}`:`${this.prefix}.CONSUMER.CREATE.${stream}`;return yield this._request(subj,cr)})}update(stream,durable,cfg){return __awaiter(this,void 0,void 0,function*(){let ci=yield this.info(stream,durable),changable=cfg;return this.add(stream,Object.assign(ci.config,changable),jsapi_types_1.ConsumerApiAction.Update)})}info(stream,name){return __awaiter(this,void 0,void 0,function*(){return(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(name),yield this._request(`${this.prefix}.CONSUMER.INFO.${stream}.${name}`)})}delete(stream,name){return __awaiter(this,void 0,void 0,function*(){return(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(name),(yield this._request(`${this.prefix}.CONSUMER.DELETE.${stream}.${name}`)).success})}list(stream){(0,jsutil_1.validateStreamName)(stream);let filter=(v)=>{return v.consumers},subj=`${this.prefix}.CONSUMER.LIST.${stream}`;return new jslister_1.ListerImpl(subj,filter,this)}pause(stream,name,until){let subj=`${this.prefix}.CONSUMER.PAUSE.${stream}.${name}`,opts={pause_until:until.toISOString()};return this._request(subj,opts)}resume(stream,name){return this.pause(stream,name,new Date(0))}}exports.ConsumerAPIImpl=ConsumerAPIImpl});var require_mod2=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.usernamePasswordAuthenticator=exports.tokenAuthenticator=exports.syncIterator=exports.StringCodec=exports.ServiceVerb=exports.ServiceResponseType=exports.ServiceErrorHeader=exports.ServiceErrorCodeHeader=exports.ServiceError=exports.RequestStrategy=exports.nuid=exports.Nuid=exports.nkeys=exports.nkeyAuthenticator=exports.NatsError=exports.nanos=exports.MsgHdrsImpl=exports.millis=exports.Metric=exports.Match=exports.jwtAuthenticator=exports.JSONCodec=exports.headers=exports.Events=exports.ErrorCode=exports.Empty=exports.delay=exports.deferred=exports.DebugEvents=exports.deadline=exports.credsAuthenticator=exports.createInbox=exports.canonicalMIMEHeaderKey=exports.buildAuthenticator=exports.Bench=exports.backoff=void 0;var internal_mod_1=require_internal_mod();Object.defineProperty(exports,"backoff",{enumerable:!0,get:function(){return internal_mod_1.backoff}});Object.defineProperty(exports,"Bench",{enumerable:!0,get:function(){return internal_mod_1.Bench}});Object.defineProperty(exports,"buildAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.buildAuthenticator}});Object.defineProperty(exports,"canonicalMIMEHeaderKey",{enumerable:!0,get:function(){return internal_mod_1.canonicalMIMEHeaderKey}});Object.defineProperty(exports,"createInbox",{enumerable:!0,get:function(){return internal_mod_1.createInbox}});Object.defineProperty(exports,"credsAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.credsAuthenticator}});Object.defineProperty(exports,"deadline",{enumerable:!0,get:function(){return internal_mod_1.deadline}});Object.defineProperty(exports,"DebugEvents",{enumerable:!0,get:function(){return internal_mod_1.DebugEvents}});Object.defineProperty(exports,"deferred",{enumerable:!0,get:function(){return internal_mod_1.deferred}});Object.defineProperty(exports,"delay",{enumerable:!0,get:function(){return internal_mod_1.delay}});Object.defineProperty(exports,"Empty",{enumerable:!0,get:function(){return internal_mod_1.Empty}});Object.defineProperty(exports,"ErrorCode",{enumerable:!0,get:function(){return internal_mod_1.ErrorCode}});Object.defineProperty(exports,"Events",{enumerable:!0,get:function(){return internal_mod_1.Events}});Object.defineProperty(exports,"headers",{enumerable:!0,get:function(){return internal_mod_1.headers}});Object.defineProperty(exports,"JSONCodec",{enumerable:!0,get:function(){return internal_mod_1.JSONCodec}});Object.defineProperty(exports,"jwtAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.jwtAuthenticator}});Object.defineProperty(exports,"Match",{enumerable:!0,get:function(){return internal_mod_1.Match}});Object.defineProperty(exports,"Metric",{enumerable:!0,get:function(){return internal_mod_1.Metric}});Object.defineProperty(exports,"millis",{enumerable:!0,get:function(){return internal_mod_1.millis}});Object.defineProperty(exports,"MsgHdrsImpl",{enumerable:!0,get:function(){return internal_mod_1.MsgHdrsImpl}});Object.defineProperty(exports,"nanos",{enumerable:!0,get:function(){return internal_mod_1.nanos}});Object.defineProperty(exports,"NatsError",{enumerable:!0,get:function(){return internal_mod_1.NatsError}});Object.defineProperty(exports,"nkeyAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.nkeyAuthenticator}});Object.defineProperty(exports,"nkeys",{enumerable:!0,get:function(){return internal_mod_1.nkeys}});Object.defineProperty(exports,"Nuid",{enumerable:!0,get:function(){return internal_mod_1.Nuid}});Object.defineProperty(exports,"nuid",{enumerable:!0,get:function(){return internal_mod_1.nuid}});Object.defineProperty(exports,"RequestStrategy",{enumerable:!0,get:function(){return internal_mod_1.RequestStrategy}});Object.defineProperty(exports,"ServiceError",{enumerable:!0,get:function(){return internal_mod_1.ServiceError}});Object.defineProperty(exports,"ServiceErrorCodeHeader",{enumerable:!0,get:function(){return internal_mod_1.ServiceErrorCodeHeader}});Object.defineProperty(exports,"ServiceErrorHeader",{enumerable:!0,get:function(){return internal_mod_1.ServiceErrorHeader}});Object.defineProperty(exports,"ServiceResponseType",{enumerable:!0,get:function(){return internal_mod_1.ServiceResponseType}});Object.defineProperty(exports,"ServiceVerb",{enumerable:!0,get:function(){return internal_mod_1.ServiceVerb}});Object.defineProperty(exports,"StringCodec",{enumerable:!0,get:function(){return internal_mod_1.StringCodec}});Object.defineProperty(exports,"syncIterator",{enumerable:!0,get:function(){return internal_mod_1.syncIterator}});Object.defineProperty(exports,"tokenAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.tokenAuthenticator}});Object.defineProperty(exports,"usernamePasswordAuthenticator",{enumerable:!0,get:function(){return internal_mod_1.usernamePasswordAuthenticator}})});var require_jsmsg=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.JsMsgImpl=exports.ACK=void 0;exports.toJsMsg=toJsMsg;exports.parseInfo=parseInfo;var databuffer_1=require_databuffer(),codec_1=require_codec(),request_1=require_request(),mod_1=require_mod2(),util_1=require_util();exports.ACK=Uint8Array.of(43,65,67,75);var NAK=Uint8Array.of(45,78,65,75),WPI=Uint8Array.of(43,87,80,73),NXT=Uint8Array.of(43,78,88,84),TERM=Uint8Array.of(43,84,69,82,77),SPACE=Uint8Array.of(32);function toJsMsg(m,ackTimeout=5000){return new JsMsgImpl(m,ackTimeout)}function parseInfo(s){let tokens2=s.split(".");if(tokens2.length===9)tokens2.splice(2,0,"_","");if(tokens2.length<11||tokens2[0]!=="$JS"||tokens2[1]!=="ACK")throw Error("not js message");let di={};return di.domain=tokens2[2]==="_"?"":tokens2[2],di.account_hash=tokens2[3],di.stream=tokens2[4],di.consumer=tokens2[5],di.deliveryCount=parseInt(tokens2[6],10),di.redeliveryCount=di.deliveryCount,di.redelivered=di.deliveryCount>1,di.streamSequence=parseInt(tokens2[7],10),di.deliverySequence=parseInt(tokens2[8],10),di.timestampNanos=parseInt(tokens2[9],10),di.pending=parseInt(tokens2[10],10),di}class JsMsgImpl{constructor(msg,timeout){this.msg=msg,this.didAck=!1,this.timeout=timeout}get subject(){return this.msg.subject}get sid(){return this.msg.sid}get data(){return this.msg.data}get headers(){return this.msg.headers}get info(){if(!this.di)this.di=parseInfo(this.reply);return this.di}get redelivered(){return this.info.deliveryCount>1}get reply(){return this.msg.reply||""}get seq(){return this.info.streamSequence}doAck(payload){if(!this.didAck)this.didAck=!this.isWIP(payload),this.msg.respond(payload)}isWIP(p){return p.length===4&&p[0]===WPI[0]&&p[1]===WPI[1]&&p[2]===WPI[2]&&p[3]===WPI[3]}ackAck(opts){return __awaiter(this,void 0,void 0,function*(){var _a;opts=opts||{},opts.timeout=opts.timeout||this.timeout;let d=(0,mod_1.deferred)();if(!this.didAck)if(this.didAck=!0,this.msg.reply){let proto=this.msg.publisher,trace=!((_a=proto.options)===null||_a===void 0?void 0:_a.noAsyncTraces),r=new request_1.RequestOne(proto.muxSubscriptions,this.msg.reply,{timeout:opts.timeout},trace);proto.request(r);try{proto.publish(this.msg.reply,exports.ACK,{reply:`${proto.muxSubscriptions.baseInbox}${r.token}`})}catch(err){r.cancel(err)}try{yield Promise.race([r.timer,r.deferred]),d.resolve(!0)}catch(err){r.cancel(err),d.reject(err)}}else d.resolve(!1);else d.resolve(!1);return d})}ack(){this.doAck(exports.ACK)}nak(millis){let payload=NAK;if(millis)payload=(0,codec_1.StringCodec)().encode(`-NAK ${JSON.stringify({delay:(0,util_1.nanos)(millis)})}`);this.doAck(payload)}working(){this.doAck(WPI)}next(subj,opts={batch:1}){let args={};if(args.batch=opts.batch||1,args.no_wait=opts.no_wait||!1,opts.expires&&opts.expires>0)args.expires=(0,util_1.nanos)(opts.expires);let data=(0,codec_1.JSONCodec)().encode(args),payload=databuffer_1.DataBuffer.concat(NXT,SPACE,data),reqOpts=subj?{reply:subj}:void 0;this.msg.respond(payload,reqOpts)}term(reason=""){let term=TERM;if((reason===null||reason===void 0?void 0:reason.length)>0)term=(0,codec_1.StringCodec)().encode(`+TERM ${reason}`);this.doAck(term)}json(){return this.msg.json()}string(){return this.msg.string()}}exports.JsMsgImpl=JsMsgImpl});var require_typedsub=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.TypedSubscription=void 0;exports.checkFn=checkFn;var util_1=require_util(),queued_iterator_1=require_queued_iterator(),core_1=require_core();function checkFn(fn,name,required=!1){if(required===!0&&!fn)throw core_1.NatsError.errorForCode(core_1.ErrorCode.ApiError,Error(`${name} is not a function`));if(fn&&typeof fn!=="function")throw core_1.NatsError.errorForCode(core_1.ErrorCode.ApiError,Error(`${name} is not a function`))}class TypedSubscription extends queued_iterator_1.QueuedIteratorImpl{constructor(nc,subject,opts){super();if(checkFn(opts.adapter,"adapter",!0),this.adapter=opts.adapter,opts.callback)checkFn(opts.callback,"callback");if(this.noIterator=typeof opts.callback==="function",opts.ingestionFilterFn)checkFn(opts.ingestionFilterFn,"ingestionFilterFn"),this.ingestionFilterFn=opts.ingestionFilterFn;if(opts.protocolFilterFn)checkFn(opts.protocolFilterFn,"protocolFilterFn"),this.protocolFilterFn=opts.protocolFilterFn;if(opts.dispatchedFn)checkFn(opts.dispatchedFn,"dispatchedFn"),this.dispatchedFn=opts.dispatchedFn;if(opts.cleanupFn)checkFn(opts.cleanupFn,"cleanupFn");let callback=(err,msg)=>{this.callback(err,msg)};if(opts.callback){let uh=opts.callback;callback=(err,msg)=>{let[jer,tm]=this.adapter(err,msg);if(jer){uh(jer,null);return}let{ingest}=this.ingestionFilterFn?this.ingestionFilterFn(tm,this):{ingest:!0};if(ingest){if(this.protocolFilterFn?this.protocolFilterFn(tm):!0){if(uh(jer,tm),this.dispatchedFn&&tm)this.dispatchedFn(tm)}}}}let{max,queue:queue2,timeout}=opts,sopts={queue:queue2,timeout,callback};if(max&&max>0)sopts.max=max;if(this.sub=nc.subscribe(subject,sopts),opts.cleanupFn)this.sub.cleanupFn=opts.cleanupFn;if(!this.noIterator)this.iterClosed.then(()=>{this.unsubscribe()});this.subIterDone=(0,util_1.deferred)(),Promise.all([this.sub.closed,this.iterClosed]).then(()=>{this.subIterDone.resolve()}).catch(()=>{this.subIterDone.resolve()}),((s)=>__awaiter(this,void 0,void 0,function*(){yield s.closed,this.stop()}))(this.sub).then().catch()}unsubscribe(max){this.sub.unsubscribe(max)}drain(){return this.sub.drain()}isDraining(){return this.sub.isDraining()}isClosed(){return this.sub.isClosed()}callback(e,msg){this.sub.cancelTimeout();let[err,tm]=this.adapter(e,msg);if(err)this.stop(err);if(tm)this.push(tm)}getSubject(){return this.sub.getSubject()}getReceived(){return this.sub.getReceived()}getProcessed(){return this.sub.getProcessed()}getPending(){return this.sub.getPending()}getID(){return this.sub.getID()}getMax(){return this.sub.getMax()}get closed(){return this.sub.closed}}exports.TypedSubscription=TypedSubscription});var require_base64=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.Base64UrlPaddedCodec=exports.Base64UrlCodec=exports.Base64Codec=void 0;class Base64Codec{static encode(bytes){if(typeof bytes==="string")return btoa(bytes);let a=Array.from(bytes);return btoa(String.fromCharCode(...a))}static decode(s,binary2=!1){let bin=atob(s);if(!binary2)return bin;return Uint8Array.from(bin,(c)=>c.charCodeAt(0))}}exports.Base64Codec=Base64Codec;class Base64UrlCodec{static encode(bytes){return Base64UrlCodec.toB64URLEncoding(Base64Codec.encode(bytes))}static decode(s,binary2=!1){return Base64Codec.decode(Base64UrlCodec.fromB64URLEncoding(s),binary2)}static toB64URLEncoding(b64str){return b64str.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}static fromB64URLEncoding(b64str){return b64str.replace(/_/g,"/").replace(/-/g,"+")}}exports.Base64UrlCodec=Base64UrlCodec;class Base64UrlPaddedCodec{static encode(bytes){return Base64UrlPaddedCodec.toB64URLEncoding(Base64Codec.encode(bytes))}static decode(s,binary2=!1){return Base64UrlPaddedCodec.decode(Base64UrlPaddedCodec.fromB64URLEncoding(s),binary2)}static toB64URLEncoding(b64str){return b64str.replace(/\+/g,"-").replace(/\//g,"_")}static fromB64URLEncoding(b64str){return b64str.replace(/_/g,"/").replace(/-/g,"+")}}exports.Base64UrlPaddedCodec=Base64UrlPaddedCodec});var require_js_sha256=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.sha256=exports.sha224=exports.default=void 0;function t(t2,e2){return e2.forEach(function(e3){e3&&typeof e3!="string"&&!Array.isArray(e3)&&Object.keys(e3).forEach(function(r2){if(r2!=="default"&&!(r2 in t2)){var i3=Object.getOwnPropertyDescriptor(e3,r2);Object.defineProperty(t2,r2,i3.get?i3:{enumerable:!0,get:function(){return e3[r2]}})}})}),Object.freeze(t2)}var e=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};function r(){throw Error("setTimeout has not been defined")}function i2(){throw Error("clearTimeout has not been defined")}var h=r,s=i2;function n(t2){if(h===setTimeout)return setTimeout(t2,0);if((h===r||!h)&&setTimeout)return h=setTimeout,setTimeout(t2,0);try{return h(t2,0)}catch(e2){try{return h.call(null,t2,0)}catch(e3){return h.call(this,t2,0)}}}typeof e.setTimeout=="function"&&(h=setTimeout),typeof e.clearTimeout=="function"&&(s=clearTimeout);var o,a=[],f=!1,u=-1;function c(){f&&o&&(f=!1,o.length?a=o.concat(a):u=-1,a.length&&l())}function l(){if(!f){var t2=n(c);f=!0;for(var e2=a.length;e2;){for(o=a,a=[];++u<e2;)o&&o[u].run();u=-1,e2=a.length}o=null,f=!1,function(t3){if(s===clearTimeout)return clearTimeout(t3);if((s===i2||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(t3);try{return s(t3)}catch(e3){try{return s.call(null,t3)}catch(e4){return s.call(this,t3)}}}(t2)}}function y(t2,e2){this.fun=t2,this.array=e2}y.prototype.run=function(){this.fun.apply(null,this.array)};function p(){}var d=p,w=p,b2=p,v=p,A=p,g=p,_=p,m=e.performance||{},O=m.now||m.mozNow||m.msNow||m.oNow||m.webkitNow||function(){return new Date().getTime()},B=new Date,E={nextTick:function(t2){var e2=Array(arguments.length-1);if(arguments.length>1)for(var r2=1;r2<arguments.length;r2++)e2[r2-1]=arguments[r2];a.push(new y(t2,e2)),a.length!==1||f||n(l)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:d,addListener:w,once:b2,off:v,removeListener:A,removeAllListeners:g,emit:_,binding:function(t2){throw Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t2){throw Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t2){var e2=0.001*O.call(m),r2=Math.floor(e2),i3=Math.floor(e2%1*1e9);return t2&&(r2-=t2[0],(i3-=t2[1])<0&&(r2--,i3+=1e9)),[r2,i3]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-B)/1000}},S=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function T(t2){if(t2.__esModule)return t2;var e2=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t2).forEach(function(r2){var i3=Object.getOwnPropertyDescriptor(t2,r2);Object.defineProperty(e2,r2,i3.get?i3:{enumerable:!0,get:function(){return t2[r2]}})}),e2}var k,x={exports:{}},j={},N=T(t({__proto__:null,default:j},[j]));k=x,function(){var t2="input is invalid type",e2=typeof window=="object",r2=e2?window:{};r2.JS_SHA256_NO_WINDOW&&(e2=!1);var i3=!e2&&typeof self=="object",h2=!r2.JS_SHA256_NO_NODE_JS&&E.versions&&E.versions.node;h2?r2=S:i3&&(r2=self);var s2=!r2.JS_SHA256_NO_COMMON_JS&&k.exports,n2=!r2.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",o2="0123456789abcdef".split(""),a2=[-2147483648,8388608,32768,128],f2=[24,16,8,0],u2=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],c2=["hex","array","digest","arrayBuffer"],l2=[];!r2.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t3){return Object.prototype.toString.call(t3)==="[object Array]"}),!n2||!r2.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t3){return typeof t3=="object"&&t3.buffer&&t3.buffer.constructor===ArrayBuffer});var y2=function(t3,e3){return function(r3){return new v2(e3,!0).update(r3)[t3]()}},p2=function(t3){var e3=y2("hex",t3);h2&&(e3=d2(e3,t3)),e3.create=function(){return new v2(t3)},e3.update=function(t4){return e3.create().update(t4)};for(var r3=0;r3<c2.length;++r3){var i4=c2[r3];e3[i4]=y2(i4,t3)}return e3},d2=function(e3,i4){var h3,s3=N,n3=N.Buffer,o3=i4?"sha224":"sha256";return h3=n3.from&&!r2.JS_SHA256_NO_BUFFER_FROM?n3.from:function(t3){return new n3(t3)},function(r3){if(typeof r3=="string")return s3.createHash(o3).update(r3,"utf8").digest("hex");if(r3==null)throw Error(t2);return r3.constructor===ArrayBuffer&&(r3=new Uint8Array(r3)),Array.isArray(r3)||ArrayBuffer.isView(r3)||r3.constructor===n3?s3.createHash(o3).update(h3(r3)).digest("hex"):e3(r3)}},w2=function(t3,e3){return function(r3,i4){return new A2(r3,e3,!0).update(i4)[t3]()}},b3=function(t3){var e3=w2("hex",t3);e3.create=function(e4){return new A2(e4,t3)},e3.update=function(t4,r4){return e3.create(t4).update(r4)};for(var r3=0;r3<c2.length;++r3){var i4=c2[r3];e3[i4]=w2(i4,t3)}return e3};function v2(t3,e3){e3?(l2[0]=l2[16]=l2[1]=l2[2]=l2[3]=l2[4]=l2[5]=l2[6]=l2[7]=l2[8]=l2[9]=l2[10]=l2[11]=l2[12]=l2[13]=l2[14]=l2[15]=0,this.blocks=l2):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t3?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=t3}function A2(e3,r3,i4){var h3,s3=typeof e3;if(s3==="string"){var o3,a3=[],f3=e3.length,u3=0;for(h3=0;h3<f3;++h3)(o3=e3.charCodeAt(h3))<128?a3[u3++]=o3:o3<2048?(a3[u3++]=192|o3>>>6,a3[u3++]=128|63&o3):o3<55296||o3>=57344?(a3[u3++]=224|o3>>>12,a3[u3++]=128|o3>>>6&63,a3[u3++]=128|63&o3):(o3=65536+((1023&o3)<<10|1023&e3.charCodeAt(++h3)),a3[u3++]=240|o3>>>18,a3[u3++]=128|o3>>>12&63,a3[u3++]=128|o3>>>6&63,a3[u3++]=128|63&o3);e3=a3}else{if(s3!=="object")throw Error(t2);if(e3===null)throw Error(t2);if(n2&&e3.constructor===ArrayBuffer)e3=new Uint8Array(e3);else if(!(Array.isArray(e3)||n2&&ArrayBuffer.isView(e3)))throw Error(t2)}e3.length>64&&(e3=new v2(r3,!0).update(e3).array());var c3=[],l3=[];for(h3=0;h3<64;++h3){var y3=e3[h3]||0;c3[h3]=92^y3,l3[h3]=54^y3}v2.call(this,r3,i4),this.update(l3),this.oKeyPad=c3,this.inner=!0,this.sharedMemory=i4}v2.prototype.update=function(e3){if(!this.finalized){var r3,i4=typeof e3;if(i4!=="string"){if(i4!=="object")throw Error(t2);if(e3===null)throw Error(t2);if(n2&&e3.constructor===ArrayBuffer)e3=new Uint8Array(e3);else if(!(Array.isArray(e3)||n2&&ArrayBuffer.isView(e3)))throw Error(t2);r3=!0}for(var h3,s3,o3=0,a3=e3.length,u3=this.blocks;o3<a3;){if(this.hashed&&(this.hashed=!1,u3[0]=this.block,this.block=u3[16]=u3[1]=u3[2]=u3[3]=u3[4]=u3[5]=u3[6]=u3[7]=u3[8]=u3[9]=u3[10]=u3[11]=u3[12]=u3[13]=u3[14]=u3[15]=0),r3)for(s3=this.start;o3<a3&&s3<64;++o3)u3[s3>>>2]|=e3[o3]<<f2[3&s3++];else for(s3=this.start;o3<a3&&s3<64;++o3)(h3=e3.charCodeAt(o3))<128?u3[s3>>>2]|=h3<<f2[3&s3++]:h3<2048?(u3[s3>>>2]|=(192|h3>>>6)<<f2[3&s3++],u3[s3>>>2]|=(128|63&h3)<<f2[3&s3++]):h3<55296||h3>=57344?(u3[s3>>>2]|=(224|h3>>>12)<<f2[3&s3++],u3[s3>>>2]|=(128|h3>>>6&63)<<f2[3&s3++],u3[s3>>>2]|=(128|63&h3)<<f2[3&s3++]):(h3=65536+((1023&h3)<<10|1023&e3.charCodeAt(++o3)),u3[s3>>>2]|=(240|h3>>>18)<<f2[3&s3++],u3[s3>>>2]|=(128|h3>>>12&63)<<f2[3&s3++],u3[s3>>>2]|=(128|h3>>>6&63)<<f2[3&s3++],u3[s3>>>2]|=(128|63&h3)<<f2[3&s3++]);this.lastByteIndex=s3,this.bytes+=s3-this.start,s3>=64?(this.block=u3[16],this.start=s3-64,this.hash(),this.hashed=!0):this.start=s3}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this}},v2.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t3=this.blocks,e3=this.lastByteIndex;t3[16]=this.block,t3[e3>>>2]|=a2[3&e3],this.block=t3[16],e3>=56&&(this.hashed||this.hash(),t3[0]=this.block,t3[16]=t3[1]=t3[2]=t3[3]=t3[4]=t3[5]=t3[6]=t3[7]=t3[8]=t3[9]=t3[10]=t3[11]=t3[12]=t3[13]=t3[14]=t3[15]=0),t3[14]=this.hBytes<<3|this.bytes>>>29,t3[15]=this.bytes<<3,this.hash()}},v2.prototype.hash=function(){var t3,e3,r3,i4,h3,s3,n3,o3,a3,f3=this.h0,c3=this.h1,l3=this.h2,y3=this.h3,p3=this.h4,d3=this.h5,w3=this.h6,b4=this.h7,v3=this.blocks;for(t3=16;t3<64;++t3)e3=((h3=v3[t3-15])>>>7|h3<<25)^(h3>>>18|h3<<14)^h3>>>3,r3=((h3=v3[t3-2])>>>17|h3<<15)^(h3>>>19|h3<<13)^h3>>>10,v3[t3]=v3[t3-16]+e3+v3[t3-7]+r3|0;for(a3=c3&l3,t3=0;t3<64;t3+=4)this.first?(this.is224?(s3=300032,b4=(h3=v3[0]-1413257819)-150054599|0,y3=h3+24177077|0):(s3=704751109,b4=(h3=v3[0]-210244248)-1521486534|0,y3=h3+143694565|0),this.first=!1):(e3=(f3>>>2|f3<<30)^(f3>>>13|f3<<19)^(f3>>>22|f3<<10),i4=(s3=f3&c3)^f3&l3^a3,b4=y3+(h3=b4+(r3=(p3>>>6|p3<<26)^(p3>>>11|p3<<21)^(p3>>>25|p3<<7))+(p3&d3^~p3&w3)+u2[t3]+v3[t3])|0,y3=h3+(e3+i4)|0),e3=(y3>>>2|y3<<30)^(y3>>>13|y3<<19)^(y3>>>22|y3<<10),i4=(n3=y3&f3)^y3&c3^s3,w3=l3+(h3=w3+(r3=(b4>>>6|b4<<26)^(b4>>>11|b4<<21)^(b4>>>25|b4<<7))+(b4&p3^~b4&d3)+u2[t3+1]+v3[t3+1])|0,e3=((l3=h3+(e3+i4)|0)>>>2|l3<<30)^(l3>>>13|l3<<19)^(l3>>>22|l3<<10),i4=(o3=l3&y3)^l3&f3^n3,d3=c3+(h3=d3+(r3=(w3>>>6|w3<<26)^(w3>>>11|w3<<21)^(w3>>>25|w3<<7))+(w3&b4^~w3&p3)+u2[t3+2]+v3[t3+2])|0,e3=((c3=h3+(e3+i4)|0)>>>2|c3<<30)^(c3>>>13|c3<<19)^(c3>>>22|c3<<10),i4=(a3=c3&l3)^c3&y3^o3,p3=f3+(h3=p3+(r3=(d3>>>6|d3<<26)^(d3>>>11|d3<<21)^(d3>>>25|d3<<7))+(d3&w3^~d3&b4)+u2[t3+3]+v3[t3+3])|0,f3=h3+(e3+i4)|0,this.chromeBugWorkAround=!0;this.h0=this.h0+f3|0,this.h1=this.h1+c3|0,this.h2=this.h2+l3|0,this.h3=this.h3+y3|0,this.h4=this.h4+p3|0,this.h5=this.h5+d3|0,this.h6=this.h6+w3|0,this.h7=this.h7+b4|0},v2.prototype.hex=function(){this.finalize();var t3=this.h0,e3=this.h1,r3=this.h2,i4=this.h3,h3=this.h4,s3=this.h5,n3=this.h6,a3=this.h7,f3=o2[t3>>>28&15]+o2[t3>>>24&15]+o2[t3>>>20&15]+o2[t3>>>16&15]+o2[t3>>>12&15]+o2[t3>>>8&15]+o2[t3>>>4&15]+o2[15&t3]+o2[e3>>>28&15]+o2[e3>>>24&15]+o2[e3>>>20&15]+o2[e3>>>16&15]+o2[e3>>>12&15]+o2[e3>>>8&15]+o2[e3>>>4&15]+o2[15&e3]+o2[r3>>>28&15]+o2[r3>>>24&15]+o2[r3>>>20&15]+o2[r3>>>16&15]+o2[r3>>>12&15]+o2[r3>>>8&15]+o2[r3>>>4&15]+o2[15&r3]+o2[i4>>>28&15]+o2[i4>>>24&15]+o2[i4>>>20&15]+o2[i4>>>16&15]+o2[i4>>>12&15]+o2[i4>>>8&15]+o2[i4>>>4&15]+o2[15&i4]+o2[h3>>>28&15]+o2[h3>>>24&15]+o2[h3>>>20&15]+o2[h3>>>16&15]+o2[h3>>>12&15]+o2[h3>>>8&15]+o2[h3>>>4&15]+o2[15&h3]+o2[s3>>>28&15]+o2[s3>>>24&15]+o2[s3>>>20&15]+o2[s3>>>16&15]+o2[s3>>>12&15]+o2[s3>>>8&15]+o2[s3>>>4&15]+o2[15&s3]+o2[n3>>>28&15]+o2[n3>>>24&15]+o2[n3>>>20&15]+o2[n3>>>16&15]+o2[n3>>>12&15]+o2[n3>>>8&15]+o2[n3>>>4&15]+o2[15&n3];return this.is224||(f3+=o2[a3>>>28&15]+o2[a3>>>24&15]+o2[a3>>>20&15]+o2[a3>>>16&15]+o2[a3>>>12&15]+o2[a3>>>8&15]+o2[a3>>>4&15]+o2[15&a3]),f3},v2.prototype.toString=v2.prototype.hex,v2.prototype.digest=function(){this.finalize();var t3=this.h0,e3=this.h1,r3=this.h2,i4=this.h3,h3=this.h4,s3=this.h5,n3=this.h6,o3=this.h7,a3=[t3>>>24&255,t3>>>16&255,t3>>>8&255,255&t3,e3>>>24&255,e3>>>16&255,e3>>>8&255,255&e3,r3>>>24&255,r3>>>16&255,r3>>>8&255,255&r3,i4>>>24&255,i4>>>16&255,i4>>>8&255,255&i4,h3>>>24&255,h3>>>16&255,h3>>>8&255,255&h3,s3>>>24&255,s3>>>16&255,s3>>>8&255,255&s3,n3>>>24&255,n3>>>16&255,n3>>>8&255,255&n3];return this.is224||a3.push(o3>>>24&255,o3>>>16&255,o3>>>8&255,255&o3),a3},v2.prototype.array=v2.prototype.digest,v2.prototype.arrayBuffer=function(){this.finalize();var t3=new ArrayBuffer(this.is224?28:32),e3=new DataView(t3);return e3.setUint32(0,this.h0),e3.setUint32(4,this.h1),e3.setUint32(8,this.h2),e3.setUint32(12,this.h3),e3.setUint32(16,this.h4),e3.setUint32(20,this.h5),e3.setUint32(24,this.h6),this.is224||e3.setUint32(28,this.h7),t3},A2.prototype=new v2,A2.prototype.finalize=function(){if(v2.prototype.finalize.call(this),this.inner){this.inner=!1;var t3=this.array();v2.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t3),v2.prototype.finalize.call(this)}};var g2=p2();g2.sha256=g2,g2.sha224=p2(!0),g2.sha256.hmac=b3(),g2.sha224.hmac=b3(!0),s2?k.exports=g2:(r2.sha256=g2.sha256,r2.sha224=g2.sha224)}();var U=x.exports,z=x.exports.sha224,J=x.exports.sha256;exports.default=U;exports.sha224=z;exports.sha256=J});var require_sha_digest_parser=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.parseSha256=parseSha256;exports.checkSha256=checkSha256;function parseSha256(s){return toByteArray(s)}function isHex(s){if(!/^[0-9A-Fa-f]+$/.test(s))return!1;let isAllUpperCase=/^[0-9A-F]+$/.test(s),isAllLowerCase=/^[0-9a-f]+$/.test(s);if(!(isAllUpperCase||isAllLowerCase))return!1;return s.length%2===0}function isBase64(s){return/^[A-Za-z0-9\-_]*(={0,2})?$/.test(s)||/^[A-Za-z0-9+/]*(={0,2})?$/.test(s)}function detectEncoding(input){if(isHex(input))return"hex";else if(isBase64(input))return"b64";return""}function hexToByteArray(s){if(s.length%2!==0)throw Error("hex string must have an even length");let a=new Uint8Array(s.length/2);for(let i2=0;i2<s.length;i2+=2)a[i2/2]=parseInt(s.substring(i2,i2+2),16);return a}function base64ToByteArray(s){s=s.replace(/-/g,"+"),s=s.replace(/_/g,"/");let sbin=atob(s);return Uint8Array.from(sbin,(c)=>c.charCodeAt(0))}function toByteArray(input){switch(detectEncoding(input)){case"hex":return hexToByteArray(input);case"b64":return base64ToByteArray(input)}return null}function checkSha256(a,b2){let aBytes=typeof a==="string"?parseSha256(a):a,bBytes=typeof b2==="string"?parseSha256(b2):b2;if(aBytes===null||bBytes===null)return!1;if(aBytes.length!==bBytes.length)return!1;for(let i2=0;i2<aBytes.length;i2++)if(aBytes[i2]!==bBytes[i2])return!1;return!0}});var require_objectstore=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ObjectStoreImpl=exports.ObjectStoreStatusImpl=exports.digestType=exports.osPrefix=void 0;exports.objectStoreStreamName=objectStoreStreamName;exports.objectStoreBucketName=objectStoreBucketName;var kv_1=require_kv(),base64_1=require_base64(),codec_1=require_codec(),nuid_1=require_nuid(),util_1=require_util(),databuffer_1=require_databuffer(),headers_1=require_headers(),types_1=require_types2(),queued_iterator_1=require_queued_iterator(),js_sha256_1=require_js_sha256(),jsapi_types_1=require_jsapi_types(),jsclient_1=require_jsclient(),sha_digest_parser_1=require_sha_digest_parser();exports.osPrefix="OBJ_";exports.digestType="SHA-256=";function objectStoreStreamName(bucket){return(0,kv_1.validateBucket)(bucket),`${exports.osPrefix}${bucket}`}function objectStoreBucketName(stream){if(stream.startsWith(exports.osPrefix))return stream.substring(4);return stream}class ObjectStoreStatusImpl{constructor(si){this.si=si,this.backingStore="JetStream"}get bucket(){return objectStoreBucketName(this.si.config.name)}get description(){var _a;return(_a=this.si.config.description)!==null&&_a!==void 0?_a:""}get ttl(){return this.si.config.max_age}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get sealed(){return this.si.config.sealed}get size(){return this.si.state.bytes}get streamInfo(){return this.si}get metadata(){return this.si.config.metadata}get compression(){if(this.si.config.compression)return this.si.config.compression!==jsapi_types_1.StoreCompression.None;return!1}}exports.ObjectStoreStatusImpl=ObjectStoreStatusImpl;class ObjectInfoImpl{constructor(oi){this.info=oi}get name(){return this.info.name}get description(){var _a;return(_a=this.info.description)!==null&&_a!==void 0?_a:""}get headers(){if(!this.hdrs)this.hdrs=headers_1.MsgHdrsImpl.fromRecord(this.info.headers||{});return this.hdrs}get options(){return this.info.options}get bucket(){return this.info.bucket}get chunks(){return this.info.chunks}get deleted(){var _a;return(_a=this.info.deleted)!==null&&_a!==void 0?_a:!1}get digest(){return this.info.digest}get mtime(){return this.info.mtime}get nuid(){return this.info.nuid}get size(){return this.info.size}get revision(){return this.info.revision}get metadata(){return this.info.metadata||{}}isLink(){var _a,_b;return((_a=this.info.options)===null||_a===void 0?void 0:_a.link)!==void 0&&((_b=this.info.options)===null||_b===void 0?void 0:_b.link)!==null}}function toServerObjectStoreMeta(meta){var _a;let v={name:meta.name,description:(_a=meta.description)!==null&&_a!==void 0?_a:"",options:meta.options,metadata:meta.metadata};if(meta.headers){let mhi=meta.headers;v.headers=mhi.toRecord()}return v}function emptyReadableStream(){return new ReadableStream({pull(c){c.enqueue(new Uint8Array(0)),c.close()}})}class ObjectStoreImpl{constructor(name,jsm,js){this.name=name,this.jsm=jsm,this.js=js}_checkNotEmpty(name){if(!name||name.length===0)return{name,error:Error("name cannot be empty")};return{name}}info(name){return __awaiter(this,void 0,void 0,function*(){let info=yield this.rawInfo(name);return info?new ObjectInfoImpl(info):null})}list(){return __awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;let buf=[],iter=yield this.watch({ignoreDeletes:!0,includeHistory:!0});try{for(var _d=!0,iter_1=__asyncValues(iter),iter_1_1;iter_1_1=yield iter_1.next(),_a=iter_1_1.done,!_a;_d=!0){_c=iter_1_1.value,_d=!1;let info=_c;if(info===null)break;buf.push(info)}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=iter_1.return))yield _b.call(iter_1)}finally{if(e_1)throw e_1.error}}return Promise.resolve(buf)})}rawInfo(name){return __awaiter(this,void 0,void 0,function*(){let{name:obj,error}=this._checkNotEmpty(name);if(error)return Promise.reject(error);let meta=this._metaSubject(obj);try{let m=yield this.jsm.streams.getMessage(this.stream,{last_by_subj:meta}),soi=(0,codec_1.JSONCodec)().decode(m.data);return soi.revision=m.seq,soi}catch(err){if(err.code==="404")return null;return Promise.reject(err)}})}_si(opts){return __awaiter(this,void 0,void 0,function*(){try{return yield this.jsm.streams.info(this.stream,opts)}catch(err){if(err.code==="404")return null;return Promise.reject(err)}})}seal(){return __awaiter(this,void 0,void 0,function*(){let info=yield this._si();if(info===null)return Promise.reject(Error("object store not found"));return info.config.sealed=!0,info=yield this.jsm.streams.update(this.stream,info.config),Promise.resolve(new ObjectStoreStatusImpl(info))})}status(opts){return __awaiter(this,void 0,void 0,function*(){let info=yield this._si(opts);if(info===null)return Promise.reject(Error("object store not found"));return Promise.resolve(new ObjectStoreStatusImpl(info))})}destroy(){return this.jsm.streams.delete(this.stream)}_put(meta,rs,opts){return __awaiter(this,void 0,void 0,function*(){var _a,_b;let jsopts=this.js.getOptions();opts=opts||{timeout:jsopts.timeout},opts.timeout=opts.timeout||jsopts.timeout,opts.previousRevision=(_a=opts.previousRevision)!==null&&_a!==void 0?_a:void 0;let{timeout,previousRevision}=opts,si=this.js.nc.info,maxPayload=(si===null||si===void 0?void 0:si.max_payload)||1024;meta=meta||{},meta.options=meta.options||{};let maxChunk=((_b=meta.options)===null||_b===void 0?void 0:_b.max_chunk_size)||131072;maxChunk=maxChunk>maxPayload?maxPayload:maxChunk,meta.options.max_chunk_size=maxChunk;let old=yield this.info(meta.name),{name:n,error}=this._checkNotEmpty(meta.name);if(error)return Promise.reject(error);let id=nuid_1.nuid.next(),chunkSubj=this._chunkSubject(id),metaSubj=this._metaSubject(n),info=Object.assign({bucket:this.name,nuid:id,size:0,chunks:0},toServerObjectStoreMeta(meta)),d=(0,util_1.deferred)(),proms=[],db=new databuffer_1.DataBuffer;try{let reader=rs?rs.getReader():null,sha=js_sha256_1.sha256.create();while(!0){let{done,value}=reader?yield reader.read():{done:!0,value:void 0};if(done){if(db.size()>0){let payload=db.drain();sha.update(payload),info.chunks++,info.size+=payload.length,proms.push(this.js.publish(chunkSubj,payload,{timeout}))}yield Promise.all(proms),proms.length=0,info.mtime=new Date().toISOString();let digest=base64_1.Base64UrlPaddedCodec.encode(sha.digest());info.digest=`${exports.digestType}${digest}`,info.deleted=!1;let h=(0,headers_1.headers)();if(typeof previousRevision==="number")h.set(jsclient_1.PubHeaders.ExpectedLastSubjectSequenceHdr,`${previousRevision}`);h.set(types_1.JsHeaders.RollupHdr,types_1.JsHeaders.RollupValueSubject);let pa=yield this.js.publish(metaSubj,(0,codec_1.JSONCodec)().encode(info),{headers:h,timeout});if(info.revision=pa.seq,old)try{yield this.jsm.streams.purge(this.stream,{filter:`$O.${this.name}.C.${old.nuid}`})}catch(_err){}d.resolve(new ObjectInfoImpl(info));break}if(value){db.fill(value);while(db.size()>maxChunk){info.chunks++,info.size+=maxChunk;let payload=db.drain(meta.options.max_chunk_size);sha.update(payload),proms.push(this.js.publish(chunkSubj,payload,{timeout}))}}}}catch(err){yield this.jsm.streams.purge(this.stream,{filter:chunkSubj}),d.reject(err)}return d})}putBlob(meta,data,opts){function readableStreamFrom(data2){return new ReadableStream({pull(controller){controller.enqueue(data2),controller.close()}})}if(data===null)data=new Uint8Array(0);return this.put(meta,readableStreamFrom(data),opts)}put(meta,rs,opts){var _a;if((_a=meta===null||meta===void 0?void 0:meta.options)===null||_a===void 0?void 0:_a.link)return Promise.reject(Error("link cannot be set when putting the object in bucket"));return this._put(meta,rs,opts)}getBlob(name){return __awaiter(this,void 0,void 0,function*(){function fromReadableStream(rs){return __awaiter(this,void 0,void 0,function*(){let buf=new databuffer_1.DataBuffer,reader=rs.getReader();while(!0){let{done,value}=yield reader.read();if(done)return buf.drain();if(value&&value.length)buf.fill(value)}})}let r=yield this.get(name);if(r===null)return Promise.resolve(null);let vs=yield Promise.all([r.error,fromReadableStream(r.data)]);if(vs[0])return Promise.reject(vs[0]);else return Promise.resolve(vs[1])})}get(name){return __awaiter(this,void 0,void 0,function*(){let info=yield this.rawInfo(name);if(info===null)return Promise.resolve(null);if(info.deleted)return Promise.resolve(null);if(info.options&&info.options.link){let ln=info.options.link.name||"";if(ln==="")throw Error("link is a bucket");return(info.options.link.bucket!==this.name?yield ObjectStoreImpl.create(this.js,info.options.link.bucket):this).get(ln)}if(!info.digest.startsWith(exports.digestType))return Promise.reject(Error(`unknown digest type: ${info.digest}`));let digest=(0,sha_digest_parser_1.parseSha256)(info.digest.substring(8));if(digest===null)return Promise.reject(Error(`unable to parse digest: ${info.digest}`));let d=(0,util_1.deferred)(),r={info:new ObjectInfoImpl(info),error:d};if(info.size===0)return r.data=emptyReadableStream(),d.resolve(null),Promise.resolve(r);let controller,oc=(0,types_1.consumerOpts)();oc.orderedConsumer();let sha=js_sha256_1.sha256.create(),subj=`$O.${this.name}.C.${info.nuid}`,sub=yield this.js.subscribe(subj,oc);return(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_2,_b,_c;try{for(var _d=!0,sub_1=__asyncValues(sub),sub_1_1;sub_1_1=yield sub_1.next(),_a=sub_1_1.done,!_a;_d=!0){_c=sub_1_1.value,_d=!1;let jm=_c;if(jm.data.length>0)sha.update(jm.data),controller.enqueue(jm.data);if(jm.info.pending===0){if(!(0,sha_digest_parser_1.checkSha256)(digest,sha.digest()))controller.error(Error(`received a corrupt object, digests do not match received: ${info.digest} calculated ${digest}`));else controller.close();sub.unsubscribe()}}}catch(e_2_1){e_2={error:e_2_1}}finally{try{if(!_d&&!_a&&(_b=sub_1.return))yield _b.call(sub_1)}finally{if(e_2)throw e_2.error}}}))().then(()=>{d.resolve()}).catch((err)=>{controller.error(err),d.reject(err)}),r.data=new ReadableStream({start(c){controller=c},cancel(){sub.unsubscribe()}}),r})}linkStore(name,bucket){if(!(bucket instanceof ObjectStoreImpl))return Promise.reject("bucket required");let osi=bucket,{name:n,error}=this._checkNotEmpty(name);if(error)return Promise.reject(error);let meta={name:n,options:{link:{bucket:osi.name}}};return this._put(meta,null)}link(name,info){return __awaiter(this,void 0,void 0,function*(){let{name:n,error}=this._checkNotEmpty(name);if(error)return Promise.reject(error);if(info.deleted)return Promise.reject(Error("src object is deleted"));if(info.isLink())return Promise.reject(Error("src object is a link"));let dest=yield this.rawInfo(name);if(dest!==null&&!dest.deleted)return Promise.reject(Error("an object already exists with that name"));let link={bucket:info.bucket,name:info.name},mm={name:n,bucket:info.bucket,options:{link}};yield this.js.publish(this._metaSubject(name),JSON.stringify(mm));let i2=yield this.info(name);return Promise.resolve(i2)})}delete(name){return __awaiter(this,void 0,void 0,function*(){let info=yield this.rawInfo(name);if(info===null)return Promise.resolve({purged:0,success:!1});info.deleted=!0,info.size=0,info.chunks=0,info.digest="";let jc=(0,codec_1.JSONCodec)(),h=(0,headers_1.headers)();return h.set(types_1.JsHeaders.RollupHdr,types_1.JsHeaders.RollupValueSubject),yield this.js.publish(this._metaSubject(info.name),jc.encode(info),{headers:h}),this.jsm.streams.purge(this.stream,{filter:this._chunkSubject(info.nuid)})})}update(name_1){return __awaiter(this,arguments,void 0,function*(name,meta={}){var _a;let info=yield this.rawInfo(name);if(info===null)return Promise.reject(Error("object not found"));if(info.deleted)return Promise.reject(Error("cannot update meta for a deleted object"));meta.name=(_a=meta.name)!==null&&_a!==void 0?_a:info.name;let{name:n,error}=this._checkNotEmpty(meta.name);if(error)return Promise.reject(error);if(name!==meta.name){let i2=yield this.info(meta.name);if(i2&&!i2.deleted)return Promise.reject(Error("an object already exists with that name"))}meta.name=n;let ii=Object.assign({},info,toServerObjectStoreMeta(meta)),ack=yield this.js.publish(this._metaSubject(ii.name),JSON.stringify(ii));if(name!==meta.name)yield this.jsm.streams.purge(this.stream,{filter:this._metaSubject(name)});return Promise.resolve(ack)})}watch(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a,_b;opts.includeHistory=(_a=opts.includeHistory)!==null&&_a!==void 0?_a:!1,opts.ignoreDeletes=(_b=opts.ignoreDeletes)!==null&&_b!==void 0?_b:!1;let initialized=!1,qi=new queued_iterator_1.QueuedIteratorImpl,subj=this._metaSubjectAll();try{yield this.jsm.streams.getMessage(this.stream,{last_by_subj:subj})}catch(err){if(err.code==="404")qi.push(null),initialized=!0;else qi.stop(err)}let jc=(0,codec_1.JSONCodec)(),copts=(0,types_1.consumerOpts)();if(copts.orderedConsumer(),opts.includeHistory)copts.deliverLastPerSubject();else initialized=!0,copts.deliverNew();copts.callback((err,jm)=>{var _a2;if(err){qi.stop(err);return}if(jm!==null){let oi=jc.decode(jm.data);if(oi.deleted&&opts.ignoreDeletes===!0);else qi.push(oi);if(((_a2=jm.info)===null||_a2===void 0?void 0:_a2.pending)===0&&!initialized)initialized=!0,qi.push(null)}});let sub=yield this.js.subscribe(subj,copts);return qi._data=sub,qi.iterClosed.then(()=>{sub.unsubscribe()}),sub.closed.then(()=>{qi.stop()}).catch((err)=>{qi.stop(err)}),qi})}_chunkSubject(id){return`$O.${this.name}.C.${id}`}_metaSubject(n){return`$O.${this.name}.M.${base64_1.Base64UrlPaddedCodec.encode(n)}`}_metaSubjectAll(){return`$O.${this.name}.M.>`}init(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a;try{this.stream=objectStoreStreamName(this.name)}catch(err){return Promise.reject(err)}let max_age=(opts===null||opts===void 0?void 0:opts.ttl)||0;delete opts.ttl;let sc=Object.assign({max_age},opts);if(sc.name=this.stream,sc.num_replicas=(_a=opts.replicas)!==null&&_a!==void 0?_a:1,sc.allow_direct=!0,sc.allow_rollup_hdrs=!0,sc.discard=jsapi_types_1.DiscardPolicy.New,sc.subjects=[`$O.${this.name}.C.>`,`$O.${this.name}.M.>`],opts.placement)sc.placement=opts.placement;if(opts.metadata)sc.metadata=opts.metadata;if(typeof opts.compression==="boolean")sc.compression=opts.compression?jsapi_types_1.StoreCompression.S2:jsapi_types_1.StoreCompression.None;try{yield this.jsm.streams.info(sc.name)}catch(err){if(err.message==="stream not found")yield this.jsm.streams.add(sc)}})}static create(js_1,name_1){return __awaiter(this,arguments,void 0,function*(js,name,opts={}){let jsm=yield js.jetstreamManager(),os2=new ObjectStoreImpl(name,jsm,js);return yield os2.init(opts),Promise.resolve(os2)})}}exports.ObjectStoreImpl=ObjectStoreImpl});var require_idleheartbeat_monitor=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.IdleHeartbeatMonitor=void 0;class IdleHeartbeatMonitor{constructor(interval,cb,opts={maxOut:2}){this.interval=interval,this.maxOut=(opts===null||opts===void 0?void 0:opts.maxOut)||2,this.cancelAfter=(opts===null||opts===void 0?void 0:opts.cancelAfter)||0,this.last=Date.now(),this.missed=0,this.count=0,this.callback=cb,this._schedule()}cancel(){if(this.autoCancelTimer)clearTimeout(this.autoCancelTimer);if(this.timer)clearInterval(this.timer);this.timer=0,this.autoCancelTimer=0,this.missed=0}work(){this.last=Date.now(),this.missed=0}_change(interval,cancelAfter=0,maxOut=2){this.interval=interval,this.maxOut=maxOut,this.cancelAfter=cancelAfter,this.restart()}restart(){this.cancel(),this._schedule()}_schedule(){if(this.cancelAfter>0)this.autoCancelTimer=setTimeout(()=>{this.cancel()},this.cancelAfter);this.timer=setInterval(()=>{if(this.count++,Date.now()-this.last>this.interval)this.missed++;if(this.missed>=this.maxOut)try{if(this.callback(this.missed)===!0)this.cancel()}catch(err){console.log(err)}},this.interval)}}exports.IdleHeartbeatMonitor=IdleHeartbeatMonitor});var require_jsclient=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.JetStreamSubscriptionImpl=exports.JetStreamClientImpl=exports.PubHeaders=void 0;var types_1=require_types(),jsbaseclient_api_1=require_jsbaseclient_api(),jsutil_1=require_jsutil(),jsmconsumer_api_1=require_jsmconsumer_api(),jsmsg_1=require_jsmsg(),typedsub_1=require_typedsub(),queued_iterator_1=require_queued_iterator(),util_1=require_util(),headers_1=require_headers(),kv_1=require_kv(),semver_1=require_semver(),objectstore_1=require_objectstore(),idleheartbeat_monitor_1=require_idleheartbeat_monitor(),jsmstream_api_1=require_jsmstream_api(),types_2=require_types2(),core_1=require_core(),jsapi_types_1=require_jsapi_types(),nuid_1=require_nuid(),PubHeaders;(function(PubHeaders2){PubHeaders2.MsgIdHdr="Nats-Msg-Id",PubHeaders2.ExpectedStreamHdr="Nats-Expected-Stream",PubHeaders2.ExpectedLastSeqHdr="Nats-Expected-Last-Sequence",PubHeaders2.ExpectedLastMsgIdHdr="Nats-Expected-Last-Msg-Id",PubHeaders2.ExpectedLastSubjectSequenceHdr="Nats-Expected-Last-Subject-Sequence"})(PubHeaders||(exports.PubHeaders=PubHeaders={}));class ViewsImpl{constructor(js){this.js=js}kv(name,opts={}){let jsi=this.js,{ok,min}=jsi.nc.features.get(semver_1.Feature.JS_KV);if(!ok)return Promise.reject(Error(`kv is only supported on servers ${min} or better`));if(opts.bindOnly)return kv_1.Bucket.bind(this.js,name,opts);return kv_1.Bucket.create(this.js,name,opts)}os(name,opts={}){var _a;if(typeof((_a=crypto===null||crypto===void 0?void 0:crypto.subtle)===null||_a===void 0?void 0:_a.digest)!=="function")return Promise.reject(Error("objectstore: unable to calculate hashes - crypto.subtle.digest with sha256 support is required"));let jsi=this.js,{ok,min}=jsi.nc.features.get(semver_1.Feature.JS_OBJECTSTORE);if(!ok)return Promise.reject(Error(`objectstore is only supported on servers ${min} or better`));return objectstore_1.ObjectStoreImpl.create(this.js,name,opts)}}class JetStreamClientImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts);this.consumerAPI=new jsmconsumer_api_1.ConsumerAPIImpl(nc,opts),this.streamAPI=new jsmstream_api_1.StreamAPIImpl(nc,opts),this.consumers=new jsmstream_api_1.ConsumersImpl(this.consumerAPI),this.streams=new jsmstream_api_1.StreamsImpl(this.streamAPI)}jetstreamManager(checkAPI){if(checkAPI===void 0)checkAPI=this.opts.checkAPI;let opts=Object.assign({},this.opts,{checkAPI});return this.nc.jetstreamManager(opts)}get apiPrefix(){return this.prefix}get views(){return new ViewsImpl(this)}publish(subj_1){return __awaiter(this,arguments,void 0,function*(subj,data=types_1.Empty,opts){opts=opts||{},opts.expect=opts.expect||{};let mh=(opts===null||opts===void 0?void 0:opts.headers)||(0,headers_1.headers)();if(opts){if(opts.msgID)mh.set(PubHeaders.MsgIdHdr,opts.msgID);if(opts.expect.lastMsgID)mh.set(PubHeaders.ExpectedLastMsgIdHdr,opts.expect.lastMsgID);if(opts.expect.streamName)mh.set(PubHeaders.ExpectedStreamHdr,opts.expect.streamName);if(typeof opts.expect.lastSequence==="number")mh.set(PubHeaders.ExpectedLastSeqHdr,`${opts.expect.lastSequence}`);if(typeof opts.expect.lastSubjectSequence==="number")mh.set(PubHeaders.ExpectedLastSubjectSequenceHdr,`${opts.expect.lastSubjectSequence}`)}let to=opts.timeout||this.timeout,ro={};if(to)ro.timeout=to;if(opts)ro.headers=mh;let{retries,retry_delay}=opts;retries=retries||1,retry_delay=retry_delay||250;let r;for(let i2=0;i2<retries;i2++)try{r=yield this.nc.request(subj,data,ro);break}catch(err){if(err.code==="503"&&i2+1<retries)yield(0,util_1.delay)(retry_delay);else throw err}let pa=this.parseJsResponse(r);if(pa.stream==="")throw types_1.NatsError.errorForCode(core_1.ErrorCode.JetStreamInvalidAck);return pa.duplicate=pa.duplicate?pa.duplicate:!1,pa})}pull(stream_1,durable_1){return __awaiter(this,arguments,void 0,function*(stream,durable,expires=0){(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(durable);let timeout=this.timeout;if(expires>timeout)timeout=expires;expires=expires<0?0:(0,util_1.nanos)(expires);let pullOpts={batch:1,no_wait:expires===0,expires},msg=yield this.nc.request(`${this.prefix}.CONSUMER.MSG.NEXT.${stream}.${durable}`,this.jc.encode(pullOpts),{noMux:!0,timeout}),err=(0,jsutil_1.checkJsError)(msg);if(err)throw err;return(0,jsmsg_1.toJsMsg)(msg,this.timeout)})}fetch(stream,durable,opts={}){var _a;(0,jsutil_1.validateStreamName)(stream),(0,jsutil_1.validateDurableName)(durable);let timer2=null,trackBytes=((_a=opts.max_bytes)!==null&&_a!==void 0?_a:0)>0,receivedBytes=0,max_bytes=trackBytes?opts.max_bytes:0,monitor=null,args={};if(args.batch=opts.batch||1,max_bytes){let fv=this.nc.features.get(semver_1.Feature.JS_PULL_MAX_BYTES);if(!fv.ok)throw Error(`max_bytes is only supported on servers ${fv.min} or better`);args.max_bytes=max_bytes}if(args.no_wait=opts.no_wait||!1,args.no_wait&&args.expires)args.expires=0;let expires=opts.expires||0;if(expires)args.expires=(0,util_1.nanos)(expires);if(expires===0&&args.no_wait===!1)throw Error("expires or no_wait is required");let hb=opts.idle_heartbeat||0;if(hb){if(args.idle_heartbeat=(0,util_1.nanos)(hb),opts.delay_heartbeat===!0)args.idle_heartbeat=(0,util_1.nanos)(hb*4)}let qi=new queued_iterator_1.QueuedIteratorImpl,wants=args.batch,received=0;qi.protocolFilterFn=(jm,_ingest=!1)=>{let jsmi=jm;if((0,jsutil_1.isHeartbeatMsg)(jsmi.msg))return monitor===null||monitor===void 0||monitor.work(),!1;return!0},qi.dispatchedFn=(m)=>{if(m){if(trackBytes)receivedBytes+=m.data.length;if(received++,timer2&&m.info.pending===0)return;if(qi.getPending()===1&&m.info.pending===0||wants===received||max_bytes>0&&receivedBytes>=max_bytes)qi.stop()}};let inbox=(0,core_1.createInbox)(this.nc.options.inboxPrefix),sub=this.nc.subscribe(inbox,{max:opts.batch,callback:(err,msg)=>{if(err===null)err=(0,jsutil_1.checkJsError)(msg);if(err!==null){if(timer2)timer2.cancel(),timer2=null;if((0,core_1.isNatsError)(err))qi.stop(hideNonTerminalJsErrors(err)===null?void 0:err);else qi.stop(err)}else monitor===null||monitor===void 0||monitor.work(),qi.received++,qi.push((0,jsmsg_1.toJsMsg)(msg,this.timeout))}});if(expires)timer2=(0,util_1.timeout)(expires),timer2.catch(()=>{if(!sub.isClosed())sub.drain().catch(()=>{}),timer2=null;if(monitor)monitor.cancel()});return(()=>__awaiter(this,void 0,void 0,function*(){try{if(hb)monitor=new idleheartbeat_monitor_1.IdleHeartbeatMonitor(hb,(v)=>{return qi.push(()=>{qi.err=new types_1.NatsError(`${jsutil_1.Js409Errors.IdleHeartbeatMissed}: ${v}`,core_1.ErrorCode.JetStreamIdleHeartBeat)}),!0})}catch(_err){}if(yield sub.closed,timer2!==null)timer2.cancel(),timer2=null;if(monitor)monitor.cancel();qi.stop()}))().catch(),this.nc.publish(`${this.prefix}.CONSUMER.MSG.NEXT.${stream}.${durable}`,this.jc.encode(args),{reply:inbox}),qi}pullSubscribe(subject_1){return __awaiter(this,arguments,void 0,function*(subject,opts=(0,types_2.consumerOpts)()){let cso=yield this._processOptions(subject,opts);if(cso.ordered)throw Error("pull subscribers cannot be be ordered");if(cso.config.deliver_subject)throw Error("consumer info specifies deliver_subject - pull consumers cannot have deliver_subject set");let ackPolicy=cso.config.ack_policy;if(ackPolicy===jsapi_types_1.AckPolicy.None||ackPolicy===jsapi_types_1.AckPolicy.All)throw Error("ack policy for pull consumers must be explicit");let so=this._buildTypedSubscriptionOpts(cso),sub=new JetStreamPullSubscriptionImpl(this,cso.deliver,so);sub.info=cso;try{yield this._maybeCreateConsumer(cso)}catch(err){throw sub.unsubscribe(),err}return sub})}subscribe(subject_1){return __awaiter(this,arguments,void 0,function*(subject,opts=(0,types_2.consumerOpts)()){let cso=yield this._processOptions(subject,opts);if(!cso.isBind&&!cso.config.deliver_subject)throw Error("push consumer requires deliver_subject");let so=this._buildTypedSubscriptionOpts(cso),sub=new JetStreamSubscriptionImpl(this,cso.deliver,so);sub.info=cso;try{yield this._maybeCreateConsumer(cso)}catch(err){throw sub.unsubscribe(),err}return sub._maybeSetupHbMonitoring(),sub})}_processOptions(subject_1){return __awaiter(this,arguments,void 0,function*(subject,opts=(0,types_2.consumerOpts)()){var _a,_b;let jsi=(0,types_2.isConsumerOptsBuilder)(opts)?opts.getOpts():opts;if(jsi.isBind=(0,types_2.isConsumerOptsBuilder)(opts)?opts.isBind:!1,jsi.flow_control={heartbeat_count:0,fc_count:0,consumer_restarts:0},jsi.ordered){if(jsi.ordered_consumer_sequence={stream_seq:0,delivery_seq:0},jsi.config.ack_policy!==jsapi_types_1.AckPolicy.NotSet&&jsi.config.ack_policy!==jsapi_types_1.AckPolicy.None)throw new types_1.NatsError("ordered consumer: ack_policy can only be set to 'none'",core_1.ErrorCode.ApiError);if(jsi.config.durable_name&&jsi.config.durable_name.length>0)throw new types_1.NatsError("ordered consumer: durable_name cannot be set",core_1.ErrorCode.ApiError);if(jsi.config.deliver_subject&&jsi.config.deliver_subject.length>0)throw new types_1.NatsError("ordered consumer: deliver_subject cannot be set",core_1.ErrorCode.ApiError);if(jsi.config.max_deliver!==void 0&&jsi.config.max_deliver>1)throw new types_1.NatsError("ordered consumer: max_deliver cannot be set",core_1.ErrorCode.ApiError);if(jsi.config.deliver_group&&jsi.config.deliver_group.length>0)throw new types_1.NatsError("ordered consumer: deliver_group cannot be set",core_1.ErrorCode.ApiError);jsi.config.deliver_subject=(0,core_1.createInbox)(this.nc.options.inboxPrefix),jsi.config.ack_policy=jsapi_types_1.AckPolicy.None,jsi.config.max_deliver=1,jsi.config.flow_control=!0,jsi.config.idle_heartbeat=jsi.config.idle_heartbeat||(0,util_1.nanos)(5000),jsi.config.ack_wait=(0,util_1.nanos)(79200000),jsi.config.mem_storage=!0,jsi.config.num_replicas=1}if(jsi.config.ack_policy===jsapi_types_1.AckPolicy.NotSet)jsi.config.ack_policy=jsapi_types_1.AckPolicy.All;if(jsi.api=this,jsi.config=jsi.config||{},jsi.stream=jsi.stream?jsi.stream:yield this.findStream(subject),jsi.attached=!1,jsi.config.durable_name)try{let info=yield this.consumerAPI.info(jsi.stream,jsi.config.durable_name);if(info){if(info.config.filter_subject&&info.config.filter_subject!==subject)throw Error("subject does not match consumer");let qn=(_a=jsi.config.deliver_group)!==null&&_a!==void 0?_a:"";if(qn===""&&info.push_bound===!0)throw Error("duplicate subscription");let rqn=(_b=info.config.deliver_group)!==null&&_b!==void 0?_b:"";if(qn!==rqn)if(rqn==="")throw Error("durable requires no queue group");else throw Error(`durable requires queue group '${rqn}'`);if(jsi.last=info,jsi.config=info.config,jsi.attached=!0,!jsi.config.durable_name)jsi.name=info.name}}catch(err){if(err.code!=="404")throw err}if(!jsi.attached&&jsi.config.filter_subject===void 0&&jsi.config.filter_subjects===void 0)jsi.config.filter_subject=subject;return jsi.deliver=jsi.config.deliver_subject||(0,core_1.createInbox)(this.nc.options.inboxPrefix),jsi})}_buildTypedSubscriptionOpts(jsi){let so={};if(so.adapter=msgAdapter(jsi.callbackFn===void 0,this.timeout),so.ingestionFilterFn=JetStreamClientImpl.ingestionFn(jsi.ordered),so.protocolFilterFn=(jm,ingest=!1)=>{let jsmi=jm;if((0,jsutil_1.isFlowControlMsg)(jsmi.msg)){if(!ingest)jsmi.msg.respond();return!1}return!0},!jsi.mack&&jsi.config.ack_policy!==jsapi_types_1.AckPolicy.None)so.dispatchedFn=autoAckJsMsg;if(jsi.callbackFn)so.callback=jsi.callbackFn;return so.max=jsi.max||0,so.queue=jsi.queue,so}_maybeCreateConsumer(jsi){return __awaiter(this,void 0,void 0,function*(){if(jsi.attached)return;if(jsi.isBind)throw Error(`unable to bind - durable consumer ${jsi.config.durable_name} doesn't exist in ${jsi.stream}`);jsi.config=Object.assign({deliver_policy:jsapi_types_1.DeliverPolicy.All,ack_policy:jsapi_types_1.AckPolicy.Explicit,ack_wait:(0,util_1.nanos)(30000),replay_policy:jsapi_types_1.ReplayPolicy.Instant},jsi.config);let ci=yield this.consumerAPI.add(jsi.stream,jsi.config);if(Array.isArray(jsi.config.filter_subjects&&!Array.isArray(ci.config.filter_subjects)))throw Error("jetstream server doesn't support consumers with multiple filter subjects");jsi.name=ci.name,jsi.config=ci.config,jsi.last=ci})}static ingestionFn(ordered){return(jm,ctx)=>{var _a;let jsub=ctx;if(!jm)return{ingest:!1,protocol:!1};let jmi=jm;if(!(0,jsutil_1.checkJsError)(jmi.msg))(_a=jsub.monitor)===null||_a===void 0||_a.work();if((0,jsutil_1.isHeartbeatMsg)(jmi.msg)){let ingest2=ordered?jsub._checkHbOrderConsumer(jmi.msg):!0;if(!ordered)jsub.info.flow_control.heartbeat_count++;return{ingest:ingest2,protocol:!0}}else if((0,jsutil_1.isFlowControlMsg)(jmi.msg))return jsub.info.flow_control.fc_count++,{ingest:!0,protocol:!0};return{ingest:ordered?jsub._checkOrderedConsumer(jm):!0,protocol:!1}}}}exports.JetStreamClientImpl=JetStreamClientImpl;class JetStreamSubscriptionImpl extends typedsub_1.TypedSubscription{constructor(js,subject,opts){super(js.nc,subject,opts);this.js=js,this.monitor=null,this.sub.closed.then(()=>{if(this.monitor)this.monitor.cancel()})}set info(info){this.sub.info=info}get info(){return this.sub.info}_resetOrderedConsumer(sseq){if(this.info===null||this.sub.isClosed())return;let newDeliver=(0,core_1.createInbox)(this.js.nc.options.inboxPrefix);this.js.nc._resub(this.sub,newDeliver);let info=this.info;info.config.name=nuid_1.nuid.next(),info.ordered_consumer_sequence.delivery_seq=0,info.flow_control.heartbeat_count=0,info.flow_control.fc_count=0,info.flow_control.consumer_restarts++,info.deliver=newDeliver,info.config.deliver_subject=newDeliver,info.config.deliver_policy=jsapi_types_1.DeliverPolicy.StartSequence,info.config.opt_start_seq=sseq;let req={};req.stream_name=this.info.stream,req.config=info.config;let subj=`${info.api.prefix}.CONSUMER.CREATE.${info.stream}`;this.js._request(subj,req,{retries:-1}).then((v)=>{let ci=v,jinfo=this.sub.info;jinfo.last=ci,this.info.config=ci.config,this.info.name=ci.name}).catch((err)=>{let nerr=new types_1.NatsError(`unable to recreate ordered consumer ${info.stream} at seq ${sseq}`,core_1.ErrorCode.RequestError,err);this.sub.callback(nerr,{})})}_maybeSetupHbMonitoring(){var _a,_b;let ns=((_b=(_a=this.info)===null||_a===void 0?void 0:_a.config)===null||_b===void 0?void 0:_b.idle_heartbeat)||0;if(ns)this._setupHbMonitoring((0,util_1.millis)(ns))}_setupHbMonitoring(millis,cancelAfter=0){let opts={cancelAfter:0,maxOut:2};if(cancelAfter)opts.cancelAfter=cancelAfter;let sub=this.sub,handler=(v)=>{var _a,_b,_c,_d;let msg=(0,jsutil_1.newJsErrorMsg)(409,`${jsutil_1.Js409Errors.IdleHeartbeatMissed}: ${v}`,this.sub.subject);if(!((_a=this.info)===null||_a===void 0?void 0:_a.ordered))this.sub.callback(null,msg);else{if(!this.js.nc.protocol.connected)return!1;let seq2=((_c=(_b=this.info)===null||_b===void 0?void 0:_b.ordered_consumer_sequence)===null||_c===void 0?void 0:_c.stream_seq)||0;return this._resetOrderedConsumer(seq2+1),(_d=this.monitor)===null||_d===void 0||_d.restart(),!1}return!sub.noIterator};this.monitor=new idleheartbeat_monitor_1.IdleHeartbeatMonitor(millis,handler,opts)}_checkHbOrderConsumer(msg){let rm2=msg.headers.get(types_2.JsHeaders.ConsumerStalledHdr);if(rm2!=="")this.js.nc.publish(rm2);let lastDelivered=parseInt(msg.headers.get(types_2.JsHeaders.LastConsumerSeqHdr),10),ordered=this.info.ordered_consumer_sequence;if(this.info.flow_control.heartbeat_count++,lastDelivered!==ordered.delivery_seq)this._resetOrderedConsumer(ordered.stream_seq+1);return!1}_checkOrderedConsumer(jm){let ordered=this.info.ordered_consumer_sequence,sseq=jm.info.streamSequence,dseq=jm.info.deliverySequence;if(dseq!=ordered.delivery_seq+1)return this._resetOrderedConsumer(ordered.stream_seq+1),!1;return ordered.delivery_seq=dseq,ordered.stream_seq=sseq,!0}destroy(){return __awaiter(this,void 0,void 0,function*(){if(!this.isClosed())yield this.drain();let jinfo=this.sub.info,name=jinfo.config.durable_name||jinfo.name,subj=`${jinfo.api.prefix}.CONSUMER.DELETE.${jinfo.stream}.${name}`;yield jinfo.api._request(subj)})}consumerInfo(){return __awaiter(this,void 0,void 0,function*(){let jinfo=this.sub.info,name=jinfo.config.durable_name||jinfo.name,subj=`${jinfo.api.prefix}.CONSUMER.INFO.${jinfo.stream}.${name}`,ci=yield jinfo.api._request(subj);return jinfo.last=ci,ci})}}exports.JetStreamSubscriptionImpl=JetStreamSubscriptionImpl;class JetStreamPullSubscriptionImpl extends JetStreamSubscriptionImpl{constructor(js,subject,opts){super(js,subject,opts)}pull(opts={batch:1}){var _a,_b;let{stream,config,name}=this.sub.info,consumer=(_a=config.durable_name)!==null&&_a!==void 0?_a:name,args={};if(args.batch=opts.batch||1,args.no_wait=opts.no_wait||!1,((_b=opts.max_bytes)!==null&&_b!==void 0?_b:0)>0){let fv=this.js.nc.features.get(semver_1.Feature.JS_PULL_MAX_BYTES);if(!fv.ok)throw Error(`max_bytes is only supported on servers ${fv.min} or better`);args.max_bytes=opts.max_bytes}let expires=0;if(opts.expires&&opts.expires>0)expires=opts.expires,args.expires=(0,util_1.nanos)(expires);let hb=0;if(opts.idle_heartbeat&&opts.idle_heartbeat>0)hb=opts.idle_heartbeat,args.idle_heartbeat=(0,util_1.nanos)(hb);if(hb&&expires===0)throw Error("idle_heartbeat requires expires");if(hb>expires)throw Error("expires must be greater than idle_heartbeat");if(this.info){if(this.monitor)this.monitor.cancel();if(expires&&hb)if(!this.monitor)this._setupHbMonitoring(hb,expires);else this.monitor._change(hb,expires);let api=this.info.api,subj=`${api.prefix}.CONSUMER.MSG.NEXT.${stream}.${consumer}`,reply=this.sub.subject;api.nc.publish(subj,api.jc.encode(args),{reply})}}}function msgAdapter(iterator,ackTimeout){if(iterator)return iterMsgAdapter(ackTimeout);else return cbMsgAdapter(ackTimeout)}function cbMsgAdapter(ackTimeout){return(err,msg)=>{if(err)return[err,null];if(err=(0,jsutil_1.checkJsError)(msg),err)return[err,null];return[null,(0,jsmsg_1.toJsMsg)(msg,ackTimeout)]}}function iterMsgAdapter(ackTimeout){return(err,msg)=>{if(err)return[err,null];let ne=(0,jsutil_1.checkJsError)(msg);if(ne!==null)return[hideNonTerminalJsErrors(ne),null];return[null,(0,jsmsg_1.toJsMsg)(msg,ackTimeout)]}}function hideNonTerminalJsErrors(ne){if(ne!==null)switch(ne.code){case core_1.ErrorCode.JetStream404NoMessages:case core_1.ErrorCode.JetStream408RequestTimeout:return null;case core_1.ErrorCode.JetStream409:if((0,jsutil_1.isTerminal409)(ne))return ne;return null;default:return ne}return null}function autoAckJsMsg(data){if(data)data.ack()}});var require_kv=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.KvStatusImpl=exports.Bucket=exports.kvOperationHdr=void 0;exports.Base64KeyCodec=Base64KeyCodec;exports.NoopKvCodecs=NoopKvCodecs;exports.defaultBucketOpts=defaultBucketOpts;exports.validateKey=validateKey;exports.validateSearchKey=validateSearchKey;exports.hasWildcards=hasWildcards;exports.validateBucket=validateBucket;var core_1=require_core(),queued_iterator_1=require_queued_iterator(),headers_1=require_headers(),types_1=require_types2(),semver_1=require_semver(),util_1=require_util(),encoders_1=require_encoders(),jsapi_types_1=require_jsapi_types(),jsclient_1=require_jsclient(),nuid_1=require_nuid();function Base64KeyCodec(){return{encode(key){return btoa(key)},decode(bkey){return atob(bkey)}}}function NoopKvCodecs(){return{key:{encode(k){return k},decode(k){return k}},value:{encode(v){return v},decode(v){return v}}}}function defaultBucketOpts(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:NoopKvCodecs(),storage:jsapi_types_1.StorageType.File}}exports.kvOperationHdr="KV-Operation";var kvSubjectPrefix="$KV",validKeyRe=/^[-/=.\w]+$/,validSearchKey=/^[-/=.>*\w]+$/,validBucketRe=/^[-\w]+$/;function validateKey(k){if(k.startsWith(".")||k.endsWith(".")||!validKeyRe.test(k))throw Error(`invalid key: ${k}`)}function validateSearchKey(k){if(k.startsWith(".")||k.endsWith(".")||!validSearchKey.test(k))throw Error(`invalid key: ${k}`)}function hasWildcards(k){if(k.startsWith(".")||k.endsWith("."))throw Error(`invalid key: ${k}`);let chunks=k.split("."),hasWildcards2=!1;for(let i2=0;i2<chunks.length;i2++)switch(chunks[i2]){case"*":hasWildcards2=!0;break;case">":if(i2!==chunks.length-1)throw Error(`invalid key: ${k}`);hasWildcards2=!0;break;default:}return hasWildcards2}function validateBucket(name){if(!validBucketRe.test(name))throw Error(`invalid bucket name: ${name}`)}class Bucket{constructor(bucket,js,jsm){this.validateKey=validateKey,this.validateSearchKey=validateSearchKey,this.hasWildcards=hasWildcards,validateBucket(bucket),this.js=js,this.jsm=jsm,this.bucket=bucket,this.prefix=kvSubjectPrefix,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static create(js_1,name_1){return __awaiter(this,arguments,void 0,function*(js,name,opts={}){validateBucket(name);let jsm=yield js.jetstreamManager(),bucket=new Bucket(name,js,jsm);return yield bucket.init(opts),bucket})}static bind(js_1,name_1){return __awaiter(this,arguments,void 0,function*(js,name,opts={}){var _a,_b;let jsm=yield js.jetstreamManager(),info={config:{allow_direct:opts.allow_direct}};validateBucket(name);let bucket=new Bucket(name,js,jsm);return info.config.name=(_a=opts.streamName)!==null&&_a!==void 0?_a:bucket.bucketName(),Object.assign(bucket,info),bucket.stream=info.config.name,bucket.codec=opts.codec||NoopKvCodecs(),bucket.direct=(_b=info.config.allow_direct)!==null&&_b!==void 0?_b:!1,bucket.initializePrefixes(info),bucket})}init(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a,_b;let bo=Object.assign(defaultBucketOpts(),opts);this.codec=bo.codec;let sc={};if(this.stream=sc.name=(_a=opts.streamName)!==null&&_a!==void 0?_a:this.bucketName(),sc.retention=jsapi_types_1.RetentionPolicy.Limits,sc.max_msgs_per_subject=bo.history,bo.maxBucketSize)bo.max_bytes=bo.maxBucketSize;if(bo.max_bytes)sc.max_bytes=bo.max_bytes;sc.max_msg_size=bo.maxValueSize,sc.storage=bo.storage;let location=(_b=opts.placementCluster)!==null&&_b!==void 0?_b:"";if(location)opts.placement={},opts.placement.cluster=location,opts.placement.tags=[];if(opts.placement)sc.placement=opts.placement;if(opts.republish)sc.republish=opts.republish;if(opts.description)sc.description=opts.description;if(opts.mirror){let mirror=Object.assign({},opts.mirror);if(!mirror.name.startsWith(types_1.kvPrefix))mirror.name=`${types_1.kvPrefix}${mirror.name}`;sc.mirror=mirror,sc.mirror_direct=!0}else if(opts.sources){let sources=opts.sources.map((s)=>{let c=Object.assign({},s),srcBucketName=c.name.startsWith(types_1.kvPrefix)?c.name.substring(types_1.kvPrefix.length):c.name;if(!c.name.startsWith(types_1.kvPrefix))c.name=`${types_1.kvPrefix}${c.name}`;if(!s.external&&srcBucketName!==this.bucket)c.subject_transforms=[{src:`$KV.${srcBucketName}.>`,dest:`$KV.${this.bucket}.>`}];return c});sc.sources=sources,sc.subjects=[this.subjectForBucket()]}else sc.subjects=[this.subjectForBucket()];if(opts.metadata)sc.metadata=opts.metadata;if(typeof opts.compression==="boolean")sc.compression=opts.compression?jsapi_types_1.StoreCompression.S2:jsapi_types_1.StoreCompression.None;let nci=this.js.nc,have=nci.getServerVersion(),discardNew=have?(0,semver_1.compare)(have,(0,semver_1.parseSemVer)("2.7.2"))>=0:!1;sc.discard=discardNew?jsapi_types_1.DiscardPolicy.New:jsapi_types_1.DiscardPolicy.Old;let{ok:direct,min}=nci.features.get(semver_1.Feature.JS_ALLOW_DIRECT);if(!direct&&opts.allow_direct===!0){let v=have?`${have.major}.${have.minor}.${have.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${v} - requires ${min}`))}if(opts.allow_direct=typeof opts.allow_direct==="boolean"?opts.allow_direct:direct,sc.allow_direct=opts.allow_direct,this.direct=sc.allow_direct,sc.num_replicas=bo.replicas,bo.ttl)sc.max_age=(0,util_1.nanos)(bo.ttl);sc.allow_rollup_hdrs=!0;let info;try{if(info=yield this.jsm.streams.info(sc.name),!info.config.allow_direct&&this.direct===!0)this.direct=!1}catch(err){if(err.message==="stream not found")info=yield this.jsm.streams.add(sc);else throw err}this.initializePrefixes(info)})}initializePrefixes(info){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror}=info.config;if(mirror){let n=mirror.name;if(n.startsWith(types_1.kvPrefix))n=n.substring(types_1.kvPrefix.length);if(mirror.external&&mirror.external.api!==""){let mb=mirror.name.substring(types_1.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${mb}`,this.editPrefix=`${mirror.external.api}.$KV.${n}`}else this.editPrefix=this.prefix}}bucketName(){var _a;return(_a=this.stream)!==null&&_a!==void 0?_a:`${types_1.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey(k,edit=!1){let builder=[];if(edit){if(this.useJsPrefix)builder.push(this.js.apiPrefix);if(this.editPrefix!=="")builder.push(this.editPrefix);else builder.push(this.prefix)}else if(this.prefix)builder.push(this.prefix);return builder.push(k),builder.join(".")}fullKeyName(k){if(this.prefix!=="")return`${this.prefix}.${k}`;return`${kvSubjectPrefix}.${this.bucket}.${k}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey(key){let chunks=[];for(let t of key.split("."))switch(t){case">":case"*":chunks.push(t);break;default:chunks.push(this.codec.key.encode(t));break}return chunks.join(".")}decodeKey(ekey){let chunks=[];for(let t of ekey.split("."))switch(t){case">":case"*":chunks.push(t);break;default:chunks.push(this.codec.key.decode(t));break}return chunks.join(".")}close(){return Promise.resolve()}dataLen(data,h){let slen=h?h.get(types_1.JsHeaders.MessageSizeHdr)||"":"";if(slen!=="")return parseInt(slen,10);return data.length}smToEntry(sm){return new KvStoredEntryImpl(this.bucket,this.prefixLen,sm)}jmToEntry(jm){let key=this.decodeKey(jm.subject.substring(this.prefixLen));return new KvJsMsgEntryImpl(this.bucket,key,jm)}create(k,data){return __awaiter(this,void 0,void 0,function*(){var _a;let firstErr;try{let n=yield this.put(k,data,{previousSeq:0});return Promise.resolve(n)}catch(err){if(firstErr=err,((_a=err===null||err===void 0?void 0:err.api_error)===null||_a===void 0?void 0:_a.err_code)!==10071)return Promise.reject(err)}let rev=0;try{let e=yield this.get(k);if((e===null||e===void 0?void 0:e.operation)==="DEL"||(e===null||e===void 0?void 0:e.operation)==="PURGE")return rev=e!==null?e.revision:0,this.update(k,data,rev);else return Promise.reject(firstErr)}catch(err){return Promise.reject(err)}})}update(k,data,version){if(version<=0)throw Error("version must be greater than 0");return this.put(k,data,{previousSeq:version})}put(k_1,data_1){return __awaiter(this,arguments,void 0,function*(k,data,opts={}){var _a,_b;let ek=this.encodeKey(k);this.validateKey(ek);let o={};if(opts.previousSeq!==void 0){let h=(0,headers_1.headers)();o.headers=h,h.set(jsclient_1.PubHeaders.ExpectedLastSubjectSequenceHdr,`${opts.previousSeq}`)}try{return(yield this.js.publish(this.subjectForKey(ek,!0),data,o)).seq}catch(err){let ne=err;if(ne.isJetStreamError())return ne.message=(_a=ne.api_error)===null||_a===void 0?void 0:_a.description,ne.code=`${(_b=ne.api_error)===null||_b===void 0?void 0:_b.code}`,Promise.reject(ne);return Promise.reject(err)}})}get(k,opts){return __awaiter(this,void 0,void 0,function*(){let ek=this.encodeKey(k);this.validateKey(ek);let arg={last_by_subj:this.subjectForKey(ek)};if(opts&&opts.revision>0)arg={seq:opts.revision};let sm;try{if(this.direct)sm=yield this.jsm.direct.getMessage(this.bucketName(),arg);else sm=yield this.jsm.streams.getMessage(this.bucketName(),arg);let ke=this.smToEntry(sm);if(ke.key!==ek)return null;return ke}catch(err){if(err.code===core_1.ErrorCode.JetStream404NoMessages)return null;throw err}})}purge(k,opts){return this._deleteOrPurge(k,"PURGE",opts)}delete(k,opts){return this._deleteOrPurge(k,"DEL",opts)}purgeDeletes(){return __awaiter(this,arguments,void 0,function*(olderMillis=1800000){let done=(0,util_1.deferred)(),buf=[],i2=yield this.watch({key:">",initializedFn:()=>{done.resolve()}});(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;try{for(var _d=!0,i_1=__asyncValues(i2),i_1_1;i_1_1=yield i_1.next(),_a=i_1_1.done,!_a;_d=!0){_c=i_1_1.value,_d=!1;let e=_c;if(e.operation==="DEL"||e.operation==="PURGE")buf.push(e)}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=i_1.return))yield _b.call(i_1)}finally{if(e_1)throw e_1.error}}}))().then(),yield done,i2.stop();let min=Date.now()-olderMillis,proms=buf.map((e)=>{let subj=this.subjectForKey(e.key);if(e.created.getTime()>=min)return this.jsm.streams.purge(this.stream,{filter:subj,keep:1});else return this.jsm.streams.purge(this.stream,{filter:subj,keep:0})}),purged=yield Promise.all(proms);return purged.unshift({success:!0,purged:0}),purged.reduce((pv,cv)=>{return pv.purged+=cv.purged,pv})})}_deleteOrPurge(k,op,opts){return __awaiter(this,void 0,void 0,function*(){var _a,e_2,_b,_c;if(!this.hasWildcards(k))return this._doDeleteOrPurge(k,op,opts);let iter=yield this.keys(k),buf=[];try{for(var _d=!0,iter_1=__asyncValues(iter),iter_1_1;iter_1_1=yield iter_1.next(),_a=iter_1_1.done,!_a;_d=!0){_c=iter_1_1.value,_d=!1;let k2=_c;if(buf.push(this._doDeleteOrPurge(k2,op)),buf.length===100)yield Promise.all(buf),buf.length=0}}catch(e_2_1){e_2={error:e_2_1}}finally{try{if(!_d&&!_a&&(_b=iter_1.return))yield _b.call(iter_1)}finally{if(e_2)throw e_2.error}}if(buf.length>0)yield Promise.all(buf)})}_doDeleteOrPurge(k,op,opts){return __awaiter(this,void 0,void 0,function*(){let ek=this.encodeKey(k);this.validateKey(ek);let h=(0,headers_1.headers)();if(h.set(exports.kvOperationHdr,op),op==="PURGE")h.set(types_1.JsHeaders.RollupHdr,types_1.JsHeaders.RollupValueSubject);if(opts===null||opts===void 0?void 0:opts.previousSeq)h.set(jsclient_1.PubHeaders.ExpectedLastSubjectSequenceHdr,`${opts.previousSeq}`);yield this.js.publish(this.subjectForKey(ek,!0),encoders_1.Empty,{headers:h})})}_buildCC(k,content,opts={}){let filter_subjects=(!Array.isArray(k)?[k]:k).map((k2)=>{let ek=this.encodeKey(k2);return this.validateSearchKey(k2),this.fullKeyName(ek)}),deliver_policy=jsapi_types_1.DeliverPolicy.LastPerSubject;if(content===types_1.KvWatchInclude.AllHistory)deliver_policy=jsapi_types_1.DeliverPolicy.All;if(content===types_1.KvWatchInclude.UpdatesOnly)deliver_policy=jsapi_types_1.DeliverPolicy.New;let filter_subject=void 0;if(filter_subjects.length===1)filter_subject=filter_subjects[0],filter_subjects=void 0;return Object.assign({deliver_policy,ack_policy:jsapi_types_1.AckPolicy.None,filter_subjects,filter_subject,flow_control:!0,idle_heartbeat:(0,util_1.nanos)(5000)},opts)}remove(k){return this.purge(k)}history(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a;let k=(_a=opts.key)!==null&&_a!==void 0?_a:">",qi=new queued_iterator_1.QueuedIteratorImpl,co={};co.headers_only=opts.headers_only||!1;let fn;fn=()=>{qi.stop()};let count=0,cc=this._buildCC(k,types_1.KvWatchInclude.AllHistory,co),subj=cc.filter_subject,copts=(0,types_1.consumerOpts)(cc);copts.bindStream(this.stream),copts.orderedConsumer(),copts.callback((err,jm)=>{if(err){qi.stop(err);return}if(jm){let e=this.jmToEntry(jm);if(qi.push(e),qi.received++,fn&&count>0&&qi.received>=count||jm.info.pending===0)qi.push(fn),fn=void 0}});let sub=yield this.js.subscribe(subj,copts);if(fn){let{info:{last}}=sub,expect=last.num_pending+last.delivered.consumer_seq;if(expect===0||qi.received>=expect)try{fn()}catch(err){qi.stop(err)}finally{fn=void 0}else count=expect}return qi._data=sub,qi.iterClosed.then(()=>{sub.unsubscribe()}),sub.closed.then(()=>{qi.stop()}).catch((err)=>{qi.stop(err)}),qi})}canSetWatcherName(){let nci=this.js.nc,{ok}=nci.features.get(semver_1.Feature.JS_NEW_CONSUMER_CREATE_API);return ok}watch(){return __awaiter(this,arguments,void 0,function*(opts={}){var _a;let k=(_a=opts.key)!==null&&_a!==void 0?_a:">",qi=new queued_iterator_1.QueuedIteratorImpl,co={};co.headers_only=opts.headers_only||!1;let content=types_1.KvWatchInclude.LastValue;if(opts.include===types_1.KvWatchInclude.AllHistory)content=types_1.KvWatchInclude.AllHistory;else if(opts.include===types_1.KvWatchInclude.UpdatesOnly)content=types_1.KvWatchInclude.UpdatesOnly;let ignoreDeletes=opts.ignoreDeletes===!0,fn=opts.initializedFn,count=0,cc=this._buildCC(k,content,co),subj=cc.filter_subject,copts=(0,types_1.consumerOpts)(cc);if(this.canSetWatcherName())copts.consumerName(nuid_1.nuid.next());if(copts.bindStream(this.stream),opts.resumeFromRevision&&opts.resumeFromRevision>0)copts.startSequence(opts.resumeFromRevision);copts.orderedConsumer(),copts.callback((err,jm)=>{if(err){qi.stop(err);return}if(jm){let e=this.jmToEntry(jm);if(ignoreDeletes&&e.operation==="DEL")return;if(qi.push(e),qi.received++,fn&&(count>0&&qi.received>=count||jm.info.pending===0))qi.push(fn),fn=void 0}});let sub=yield this.js.subscribe(subj,copts);if(fn){let{info:{last}}=sub,expect=last.num_pending+last.delivered.consumer_seq;if(expect===0||qi.received>=expect)try{fn()}catch(err){qi.stop(err)}finally{fn=void 0}else count=expect}return qi._data=sub,qi.iterClosed.then(()=>{sub.unsubscribe()}),sub.closed.then(()=>{qi.stop()}).catch((err)=>{qi.stop(err)}),qi})}keys(){return __awaiter(this,arguments,void 0,function*(k=">"){let keys=new queued_iterator_1.QueuedIteratorImpl,cc=this._buildCC(k,types_1.KvWatchInclude.LastValue,{headers_only:!0}),subj=Array.isArray(k)?">":cc.filter_subject,copts=(0,types_1.consumerOpts)(cc);copts.bindStream(this.stream),copts.orderedConsumer();let sub=yield this.js.subscribe(subj,copts);if((()=>__awaiter(this,void 0,void 0,function*(){var _a,e_3,_b,_c,_d;try{for(var _e=!0,sub_1=__asyncValues(sub),sub_1_1;sub_1_1=yield sub_1.next(),_a=sub_1_1.done,!_a;_e=!0){_c=sub_1_1.value,_e=!1;let jm=_c,op=(_d=jm.headers)===null||_d===void 0?void 0:_d.get(exports.kvOperationHdr);if(op!=="DEL"&&op!=="PURGE"){let key=this.decodeKey(jm.subject.substring(this.prefixLen));keys.push(key)}if(jm.info.pending===0)sub.unsubscribe()}}catch(e_3_1){e_3={error:e_3_1}}finally{try{if(!_e&&!_a&&(_b=sub_1.return))yield _b.call(sub_1)}finally{if(e_3)throw e_3.error}}}))().then(()=>{keys.stop()}).catch((err)=>{keys.stop(err)}),sub.info.last.num_pending===0)sub.unsubscribe();return keys})}purgeBucket(opts){return this.jsm.streams.purge(this.bucketName(),opts)}destroy(){return this.jsm.streams.delete(this.bucketName())}status(){return __awaiter(this,void 0,void 0,function*(){var _a,_b;let cluster=(_b=(_a=this.js.nc.info)===null||_a===void 0?void 0:_a.cluster)!==null&&_b!==void 0?_b:"",bn=this.bucketName(),si=yield this.jsm.streams.info(bn);return new KvStatusImpl(si,cluster)})}}exports.Bucket=Bucket;class KvStatusImpl{constructor(si,cluster=""){this.si=si,this.cluster=cluster}get bucket(){return this.si.config.name.startsWith(types_1.kvPrefix)?this.si.config.name.substring(types_1.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,util_1.millis)(this.si.config.max_age)}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){var _a;return(_a=this.si.config.description)!==null&&_a!==void 0?_a:""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){var _a,_b;return(_b=(_a=this.si.config.placement)===null||_a===void 0?void 0:_a.cluster)!==null&&_b!==void 0?_b:""}get republish(){var _a;return(_a=this.si.config.republish)!==null&&_a!==void 0?_a:{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){var _a;return(_a=this.si.config.metadata)!==null&&_a!==void 0?_a:{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==jsapi_types_1.StoreCompression.None;return!1}}exports.KvStatusImpl=KvStatusImpl;class KvStoredEntryImpl{constructor(bucket,prefixLen,sm){this.bucket=bucket,this.prefixLen=prefixLen,this.sm=sm}get key(){return this.sm.subject.substring(this.prefixLen)}get value(){return this.sm.data}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){return this.sm.header.get(exports.kvOperationHdr)||"PUT"}get length(){let slen=this.sm.header.get(types_1.JsHeaders.MessageSizeHdr)||"";if(slen!=="")return parseInt(slen,10);return this.sm.data.length}json(){return this.sm.json()}string(){return this.sm.string()}}class KvJsMsgEntryImpl{constructor(bucket,key,sm){this.bucket=bucket,this.key=key,this.sm=sm}get value(){return this.sm.data}get created(){return new Date((0,util_1.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){var _a;return((_a=this.sm.headers)===null||_a===void 0?void 0:_a.get(exports.kvOperationHdr))||"PUT"}get delta(){return this.sm.info.pending}get length(){var _a;let slen=((_a=this.sm.headers)===null||_a===void 0?void 0:_a.get(types_1.JsHeaders.MessageSizeHdr))||"";if(slen!=="")return parseInt(slen,10);return this.sm.data.length}json(){return this.sm.json()}string(){return this.sm.string()}}});var require_consumer=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.OrderedPullConsumerImpl=exports.PullConsumerImpl=exports.OrderedConsumerMessages=exports.PullConsumerMessagesImpl=exports.ConsumerDebugEvents=exports.ConsumerEvents=void 0;var util_1=require_util(),nuid_1=require_nuid(),jsutil_1=require_jsutil(),queued_iterator_1=require_queued_iterator(),core_1=require_core(),idleheartbeat_monitor_1=require_idleheartbeat_monitor(),jsmsg_1=require_jsmsg(),jsapi_types_1=require_jsapi_types(),types_1=require_types2(),PullConsumerType;(function(PullConsumerType2){PullConsumerType2[PullConsumerType2.Unset=-1]="Unset",PullConsumerType2[PullConsumerType2.Consume=0]="Consume",PullConsumerType2[PullConsumerType2.Fetch=1]="Fetch"})(PullConsumerType||(PullConsumerType={}));var ConsumerEvents;(function(ConsumerEvents2){ConsumerEvents2.HeartbeatsMissed="heartbeats_missed",ConsumerEvents2.ConsumerNotFound="consumer_not_found",ConsumerEvents2.StreamNotFound="stream_not_found",ConsumerEvents2.ConsumerDeleted="consumer_deleted",ConsumerEvents2.OrderedConsumerRecreated="ordered_consumer_recreated",ConsumerEvents2.NoResponders="no_responders"})(ConsumerEvents||(exports.ConsumerEvents=ConsumerEvents={}));var ConsumerDebugEvents;(function(ConsumerDebugEvents2){ConsumerDebugEvents2.DebugEvent="debug",ConsumerDebugEvents2.Discard="discard",ConsumerDebugEvents2.Reset="reset",ConsumerDebugEvents2.Next="next"})(ConsumerDebugEvents||(exports.ConsumerDebugEvents=ConsumerDebugEvents={}));class PullConsumerMessagesImpl extends queued_iterator_1.QueuedIteratorImpl{constructor(c,opts,refilling=!1){super();this.consumer=c;let copts=opts;this.opts=this.parseOptions(opts,refilling),this.callback=copts.callback||null,this.noIterator=typeof this.callback==="function",this.monitor=null,this.pong=null,this.pending={msgs:0,bytes:0,requests:0},this.refilling=refilling,this.timeout=null,this.inbox=(0,core_1.createInbox)(c.api.nc.options.inboxPrefix),this.listeners=[],this.forOrderedConsumer=!1,this.abortOnMissingResource=copts.abort_on_missing_resource===!0,this.bind=copts.bind===!0,this.inBackOff=!1,this.start()}start(){let{max_messages,max_bytes,idle_heartbeat,threshold_bytes,threshold_messages}=this.opts;this.closed().then((err)=>{if(this.cleanupHandler)try{this.cleanupHandler(err)}catch(_err){}});let{sub}=this;if(sub)sub.unsubscribe();if(this.sub=this.consumer.api.nc.subscribe(this.inbox,{callback:(err,msg)=>{var _a,_b,_c,_d;if(err){this.stop(err);return}if((_a=this.monitor)===null||_a===void 0||_a.work(),msg.subject===this.inbox){if((0,jsutil_1.isHeartbeatMsg)(msg))return;let code=(_b=msg.headers)===null||_b===void 0?void 0:_b.code,description=((_d=(_c=msg.headers)===null||_c===void 0?void 0:_c.description)===null||_d===void 0?void 0:_d.toLowerCase())||"unknown",{msgsLeft,bytesLeft}=this.parseDiscard(msg.headers);if(msgsLeft>0||bytesLeft>0)this.pending.msgs-=msgsLeft,this.pending.bytes-=bytesLeft,this.pending.requests--,this.notify(ConsumerDebugEvents.Discard,{msgsLeft,bytesLeft});else if(code===400){this.stop(new core_1.NatsError(description,`${code}`));return}else if(code===409&&description==="consumer deleted"){if(this.notify(ConsumerEvents.ConsumerDeleted,`${code} ${description}`),!this.refilling||this.abortOnMissingResource){let error=new core_1.NatsError(description,`${code}`);this.stop(error);return}}else if(code===503){if(this.notify(ConsumerEvents.NoResponders,`${code} No Responders`),!this.refilling||this.abortOnMissingResource){let error=new core_1.NatsError("no responders",`${code}`);this.stop(error);return}}else this.notify(ConsumerDebugEvents.DebugEvent,`${code} ${description}`)}else{if(this._push((0,jsmsg_1.toJsMsg)(msg,this.consumer.api.timeout)),this.received++,this.pending.msgs)this.pending.msgs--;if(this.pending.bytes)this.pending.bytes-=msg.size()}if(this.pending.msgs===0&&this.pending.bytes===0)this.pending.requests=0;if(this.refilling){if(max_messages&&this.pending.msgs<=threshold_messages||max_bytes&&this.pending.bytes<=threshold_bytes){let batch=this.pullOptions();this.pull(batch)}}else if(this.pending.requests===0)this._push(()=>{this.stop()})}}),this.sub.closed.then(()=>{if(this.sub.draining)this._push(()=>{this.stop()})}),idle_heartbeat)this.monitor=new idleheartbeat_monitor_1.IdleHeartbeatMonitor(idle_heartbeat,(data)=>{return this.notify(ConsumerEvents.HeartbeatsMissed,data),this.resetPending().then(()=>{}).catch(()=>{}),!1},{maxOut:2});(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c,_d;let status=this.consumer.api.nc.status();this.statusIterator=status;try{for(var _e=!0,status_1=__asyncValues(status),status_1_1;status_1_1=yield status_1.next(),_a=status_1_1.done,!_a;_e=!0)switch(_c=status_1_1.value,_e=!1,_c.type){case core_1.Events.Disconnect:(_d=this.monitor)===null||_d===void 0||_d.cancel();break;case core_1.Events.Reconnect:this.resetPending().then((ok)=>{var _a2;if(ok)(_a2=this.monitor)===null||_a2===void 0||_a2.restart()}).catch(()=>{});break;default:}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_e&&!_a&&(_b=status_1.return))yield _b.call(status_1)}finally{if(e_1)throw e_1.error}}}))(),this.pull(this.pullOptions())}_push(r){if(!this.callback)super.push(r);else{let fn=typeof r==="function"?r:null;try{if(!fn)this.callback(r);else fn()}catch(err){this.stop(err)}}}notify(type2,data){if(this.listeners.length>0)(()=>{this.listeners.forEach((l)=>{if(!l.done)l.push({type:type2,data})})})()}resetPending(){return this.bind?this.resetPendingNoInfo():this.resetPendingWithInfo()}resetPendingNoInfo(){return this.pending.msgs=0,this.pending.bytes=0,this.pending.requests=0,this.pull(this.pullOptions()),Promise.resolve(!0)}resetPendingWithInfo(){return __awaiter(this,void 0,void 0,function*(){if(this.inBackOff)return!1;let notFound=0,streamNotFound=0,bo=(0,util_1.backoff)([this.opts.expires]),attempt=0;while(!0){if(this.done)return!1;if(this.consumer.api.nc.isClosed())return console.error("aborting resetPending - connection is closed"),!1;try{return yield this.consumer.info(),this.inBackOff=!1,notFound=0,this.pending.msgs=0,this.pending.bytes=0,this.pending.requests=0,this.pull(this.pullOptions()),!0}catch(err){if(err.message==="stream not found"){if(streamNotFound++,this.notify(ConsumerEvents.StreamNotFound,streamNotFound),!this.refilling||this.abortOnMissingResource)return this.stop(err),!1}else if(err.message==="consumer not found"){if(notFound++,this.notify(ConsumerEvents.ConsumerNotFound,notFound),this.resetHandler)try{this.resetHandler()}catch(_){}if(!this.refilling||this.abortOnMissingResource)return this.stop(err),!1;if(this.forOrderedConsumer)return!1}else notFound=0,streamNotFound=0;this.inBackOff=!0;let to=bo.backoff(attempt),de=(0,util_1.delay)(to);yield Promise.race([de,this.consumer.api.nc.closed()]),de.cancel(),attempt++}}})}pull(opts){var _a,_b;this.pending.bytes+=(_a=opts.max_bytes)!==null&&_a!==void 0?_a:0,this.pending.msgs+=(_b=opts.batch)!==null&&_b!==void 0?_b:0,this.pending.requests++;let nc=this.consumer.api.nc;this._push(()=>{nc.publish(`${this.consumer.api.prefix}.CONSUMER.MSG.NEXT.${this.consumer.stream}.${this.consumer.name}`,this.consumer.api.jc.encode(opts),{reply:this.inbox}),this.notify(ConsumerDebugEvents.Next,opts)})}pullOptions(){let batch=this.opts.max_messages-this.pending.msgs,max_bytes=this.opts.max_bytes-this.pending.bytes,idle_heartbeat=(0,util_1.nanos)(this.opts.idle_heartbeat),expires=(0,util_1.nanos)(this.opts.expires);return{batch,max_bytes,idle_heartbeat,expires}}parseDiscard(headers){let discard={msgsLeft:0,bytesLeft:0},msgsLeft=headers===null||headers===void 0?void 0:headers.get(types_1.JsHeaders.PendingMessagesHdr);if(msgsLeft)discard.msgsLeft=parseInt(msgsLeft);let bytesLeft=headers===null||headers===void 0?void 0:headers.get(types_1.JsHeaders.PendingBytesHdr);if(bytesLeft)discard.bytesLeft=parseInt(bytesLeft);return discard}trackTimeout(t){this.timeout=t}close(){return this.stop(),this.iterClosed}closed(){return this.iterClosed}clearTimers(){var _a,_b;(_a=this.monitor)===null||_a===void 0||_a.cancel(),this.monitor=null,(_b=this.timeout)===null||_b===void 0||_b.cancel(),this.timeout=null}setCleanupHandler(fn){this.cleanupHandler=fn}stop(err){var _a,_b;if(this.done)return;(_a=this.sub)===null||_a===void 0||_a.unsubscribe(),this.clearTimers(),(_b=this.statusIterator)===null||_b===void 0||_b.stop(),this._push(()=>{super.stop(err),this.listeners.forEach((n)=>{n.stop()})})}parseOptions(opts,refilling=!1){let args=opts||{};if(args.max_messages=args.max_messages||0,args.max_bytes=args.max_bytes||0,args.max_messages!==0&&args.max_bytes!==0)throw Error("only specify one of max_messages or max_bytes");if(args.max_messages===0)args.max_messages=100;if(args.expires=args.expires||30000,args.expires<1000)throw Error("expires should be at least 1000ms");if(args.idle_heartbeat=args.idle_heartbeat||args.expires/2,args.idle_heartbeat=args.idle_heartbeat>30000?30000:args.idle_heartbeat,refilling){let minMsgs=Math.round(args.max_messages*0.75)||1;args.threshold_messages=args.threshold_messages||minMsgs;let minBytes=Math.round(args.max_bytes*0.75)||1;args.threshold_bytes=args.threshold_bytes||minBytes}return args}status(){let iter=new queued_iterator_1.QueuedIteratorImpl;return this.listeners.push(iter),Promise.resolve(iter)}}exports.PullConsumerMessagesImpl=PullConsumerMessagesImpl;class OrderedConsumerMessages extends queued_iterator_1.QueuedIteratorImpl{constructor(){super();this.listeners=[]}setSource(src){if(this.src)this.src.resetHandler=void 0,this.src.setCleanupHandler(),this.src.stop();this.src=src,this.src.setCleanupHandler((err)=>{this.stop(err||void 0)}),(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_2,_b,_c;let status=yield this.src.status();try{for(var _d=!0,status_2=__asyncValues(status),status_2_1;status_2_1=yield status_2.next(),_a=status_2_1.done,!_a;_d=!0){_c=status_2_1.value,_d=!1;let s=_c;this.notify(s.type,s.data)}}catch(e_2_1){e_2={error:e_2_1}}finally{try{if(!_d&&!_a&&(_b=status_2.return))yield _b.call(status_2)}finally{if(e_2)throw e_2.error}}}))().catch(()=>{})}notify(type2,data){if(this.listeners.length>0)(()=>{this.listeners.forEach((l)=>{if(!l.done)l.push({type:type2,data})})})()}stop(err){var _a;if(this.done)return;(_a=this.src)===null||_a===void 0||_a.stop(err),super.stop(err),this.listeners.forEach((n)=>{n.stop()})}close(){return this.stop(),this.iterClosed}closed(){return this.iterClosed}status(){let iter=new queued_iterator_1.QueuedIteratorImpl;return this.listeners.push(iter),Promise.resolve(iter)}}exports.OrderedConsumerMessages=OrderedConsumerMessages;class PullConsumerImpl{constructor(api,info){this.api=api,this._info=info,this.stream=info.stream_name,this.name=info.name}consume(opts={max_messages:100,expires:30000}){return Promise.resolve(new PullConsumerMessagesImpl(this,opts,!0))}fetch(opts={max_messages:100,expires:30000}){let m=new PullConsumerMessagesImpl(this,opts,!1),to=Math.round(m.opts.expires*1.05),timer2=(0,util_1.timeout)(to);return m.closed().catch(()=>{}).finally(()=>{timer2.cancel()}),timer2.catch(()=>{m.close().catch()}),m.trackTimeout(timer2),Promise.resolve(m)}next(opts={expires:30000}){let d=(0,util_1.deferred)(),fopts=opts;fopts.max_messages=1;let iter=new PullConsumerMessagesImpl(this,fopts,!1),to=Math.round(iter.opts.expires*1.05);if(to>=60000)(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_3,_b,_c;try{for(var _d=!0,_e=__asyncValues(yield iter.status()),_f;_f=yield _e.next(),_a=_f.done,!_a;_d=!0){_c=_f.value,_d=!1;let s=_c;if(s.type===ConsumerEvents.HeartbeatsMissed&&s.data>=2){d.reject(Error("consumer missed heartbeats"));break}}}catch(e_3_1){e_3={error:e_3_1}}finally{try{if(!_d&&!_a&&(_b=_e.return))yield _b.call(_e)}finally{if(e_3)throw e_3.error}}}))().catch();(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_4,_b,_c;try{for(var _d=!0,iter_1=__asyncValues(iter),iter_1_1;iter_1_1=yield iter_1.next(),_a=iter_1_1.done,!_a;_d=!0){_c=iter_1_1.value,_d=!1;let m=_c;d.resolve(m);break}}catch(e_4_1){e_4={error:e_4_1}}finally{try{if(!_d&&!_a&&(_b=iter_1.return))yield _b.call(iter_1)}finally{if(e_4)throw e_4.error}}}))().catch(()=>{});let timer2=(0,util_1.timeout)(to);return iter.closed().then((err)=>{err?d.reject(err):d.resolve(null)}).catch((err)=>{d.reject(err)}).finally(()=>{timer2.cancel()}),timer2.catch((_err)=>{d.resolve(null),iter.close().catch()}),iter.trackTimeout(timer2),d}delete(){let{stream_name,name}=this._info;return this.api.delete(stream_name,name)}info(cached=!1){if(cached)return Promise.resolve(this._info);let{stream_name,name}=this._info;return this.api.info(stream_name,name).then((ci)=>{return this._info=ci,this._info})}}exports.PullConsumerImpl=PullConsumerImpl;class OrderedPullConsumerImpl{constructor(api,stream,opts={}){if(this.api=api,this.stream=stream,this.cursor={stream_seq:1,deliver_seq:0},this.namePrefix=nuid_1.nuid.next(),typeof opts.name_prefix==="string")(0,jsutil_1.minValidation)("name_prefix",opts.name_prefix),this.namePrefix=opts.name_prefix+this.namePrefix;this.serial=0,this.currentConsumer=null,this.userCallback=null,this.iter=null,this.type=PullConsumerType.Unset,this.consumerOpts=opts,this.maxInitialReset=30,this.startSeq=this.consumerOpts.opt_start_seq||0,this.cursor.stream_seq=this.startSeq>0?this.startSeq-1:0}getConsumerOpts(seq2){this.serial++;let name=`${this.namePrefix}_${this.serial}`;seq2=seq2===0?1:seq2;let config={name,deliver_policy:jsapi_types_1.DeliverPolicy.StartSequence,opt_start_seq:seq2,ack_policy:jsapi_types_1.AckPolicy.None,inactive_threshold:(0,util_1.nanos)(300000),num_replicas:1};if(this.consumerOpts.headers_only===!0)config.headers_only=!0;if(Array.isArray(this.consumerOpts.filterSubjects))config.filter_subjects=this.consumerOpts.filterSubjects;if(typeof this.consumerOpts.filterSubjects==="string")config.filter_subject=this.consumerOpts.filterSubjects;if(this.consumerOpts.replay_policy)config.replay_policy=this.consumerOpts.replay_policy;if(seq2===this.startSeq+1){if(config.deliver_policy=this.consumerOpts.deliver_policy||jsapi_types_1.DeliverPolicy.StartSequence,this.consumerOpts.deliver_policy===jsapi_types_1.DeliverPolicy.LastPerSubject||this.consumerOpts.deliver_policy===jsapi_types_1.DeliverPolicy.New||this.consumerOpts.deliver_policy===jsapi_types_1.DeliverPolicy.Last)delete config.opt_start_seq,config.deliver_policy=this.consumerOpts.deliver_policy;if(config.deliver_policy===jsapi_types_1.DeliverPolicy.LastPerSubject){if(typeof config.filter_subjects>"u"&&typeof config.filter_subject>"u")config.filter_subject=">"}if(this.consumerOpts.opt_start_time)delete config.opt_start_seq,config.deliver_policy=jsapi_types_1.DeliverPolicy.StartTime,config.opt_start_time=this.consumerOpts.opt_start_time;if(this.consumerOpts.inactive_threshold)config.inactive_threshold=(0,util_1.nanos)(this.consumerOpts.inactive_threshold)}return config}resetConsumer(){return __awaiter(this,arguments,void 0,function*(seq2=0){var _a,_b,_c,_d,_e;let id=nuid_1.nuid.next(),isNew=this.serial===0;(_a=this.consumer)===null||_a===void 0||_a.delete().catch(()=>{}),seq2=seq2===0?1:seq2,this.cursor.deliver_seq=0;let config=this.getConsumerOpts(seq2);config.max_deliver=1,config.mem_storage=!0;let bo=(0,util_1.backoff)([((_b=this.opts)===null||_b===void 0?void 0:_b.expires)||30000]),ci;for(let i2=0;;i2++)try{ci=yield this.api.add(this.stream,config),(_c=this.iter)===null||_c===void 0||_c.notify(ConsumerEvents.OrderedConsumerRecreated,ci.name);break}catch(err){if(err.message==="stream not found"){if((_d=this.iter)===null||_d===void 0||_d.notify(ConsumerEvents.StreamNotFound,i2),this.type===PullConsumerType.Fetch||this.opts.abort_on_missing_resource===!0)return(_e=this.iter)===null||_e===void 0||_e.stop(err),Promise.reject(err)}if(isNew&&i2>=this.maxInitialReset)throw err;else yield(0,util_1.delay)(bo.backoff(i2+1))}return ci})}internalHandler(serial){return(m)=>{var _a;if(this.serial!==serial)return;let dseq=m.info.deliverySequence;if(dseq!==this.cursor.deliver_seq+1){this.notifyOrderedResetAndReset();return}if(this.cursor.deliver_seq=dseq,this.cursor.stream_seq=m.info.streamSequence,this.userCallback)this.userCallback(m);else(_a=this.iter)===null||_a===void 0||_a.push(m)}}reset(){return __awaiter(this,arguments,void 0,function*(opts={max_messages:100,expires:30000},info){var _a,_b;info=info||{};let fromFetch=info.fromFetch||!1,orderedReset=info.orderedReset||!1;if(this.type===PullConsumerType.Fetch&&orderedReset){(_a=this.iter)===null||_a===void 0||_a.src.stop(),yield(_b=this.iter)===null||_b===void 0?void 0:_b.closed(),this.currentConsumer=null;return}if(this.currentConsumer===null||orderedReset)this.currentConsumer=yield this.resetConsumer(this.cursor.stream_seq+1);if(this.iter===null||fromFetch)this.iter=new OrderedConsumerMessages;this.consumer=new PullConsumerImpl(this.api,this.currentConsumer);let copts=opts;copts.callback=this.internalHandler(this.serial);let msgs=null;if(this.type===PullConsumerType.Fetch&&fromFetch)msgs=yield this.consumer.fetch(opts);else if(this.type===PullConsumerType.Consume)msgs=yield this.consumer.consume(opts);let msgsImpl=msgs;msgsImpl.forOrderedConsumer=!0,msgsImpl.resetHandler=()=>{this.notifyOrderedResetAndReset()},this.iter.setSource(msgsImpl)})}notifyOrderedResetAndReset(){var _a;(_a=this.iter)===null||_a===void 0||_a.notify(ConsumerDebugEvents.Reset,""),this.reset(this.opts,{orderedReset:!0})}consume(){return __awaiter(this,arguments,void 0,function*(opts={max_messages:100,expires:30000}){if(opts.bind)return Promise.reject(Error("bind is not supported"));if(this.type===PullConsumerType.Fetch)return Promise.reject(Error("ordered consumer initialized as fetch"));if(this.type===PullConsumerType.Consume)return Promise.reject(Error("ordered consumer doesn't support concurrent consume"));let{callback}=opts;if(callback)this.userCallback=callback;return this.type=PullConsumerType.Consume,this.opts=opts,yield this.reset(opts),this.iter})}fetch(){return __awaiter(this,arguments,void 0,function*(opts={max_messages:100,expires:30000}){var _a;if(opts.bind)return Promise.reject(Error("bind is not supported"));if(this.type===PullConsumerType.Consume)return Promise.reject(Error("ordered consumer already initialized as consume"));if(((_a=this.iter)===null||_a===void 0?void 0:_a.done)===!1)return Promise.reject(Error("ordered consumer doesn't support concurrent fetch"));let{callback}=opts;if(callback)this.userCallback=callback;return this.type=PullConsumerType.Fetch,this.opts=opts,yield this.reset(opts,{fromFetch:!0}),this.iter})}next(){return __awaiter(this,arguments,void 0,function*(opts={expires:30000}){let copts=opts;if(copts.bind)return Promise.reject(Error("bind is not supported"));copts.max_messages=1;let d=(0,util_1.deferred)();return copts.callback=(m)=>{this.userCallback=null,d.resolve(m)},(yield this.fetch(copts)).iterClosed.then((err)=>{if(err)d.reject(err);d.resolve(null)}).catch((err)=>{d.reject(err)}),d})}delete(){if(!this.currentConsumer)return Promise.resolve(!1);return this.api.delete(this.stream,this.currentConsumer.name).then((tf)=>{return Promise.resolve(tf)}).catch((err)=>{return Promise.reject(err)}).finally(()=>{this.currentConsumer=null})}info(cached){return __awaiter(this,void 0,void 0,function*(){if(this.currentConsumer==null)return this.currentConsumer=yield this.resetConsumer(this.startSeq),Promise.resolve(this.currentConsumer);if(cached&&this.currentConsumer)return Promise.resolve(this.currentConsumer);return this.api.info(this.stream,this.currentConsumer.name)})}}exports.OrderedPullConsumerImpl=OrderedPullConsumerImpl});var require_jsmstream_api=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.StreamsImpl=exports.StoredMsgImpl=exports.StreamAPIImpl=exports.StreamImpl=exports.ConsumersImpl=void 0;exports.convertStreamSourceDomain=convertStreamSourceDomain;var types_1=require_types(),jsbaseclient_api_1=require_jsbaseclient_api(),jslister_1=require_jslister(),jsutil_1=require_jsutil(),headers_1=require_headers(),kv_1=require_kv(),objectstore_1=require_objectstore(),codec_1=require_codec(),encoders_1=require_encoders(),semver_1=require_semver(),types_2=require_types2(),consumer_1=require_consumer(),jsmconsumer_api_1=require_jsmconsumer_api();function convertStreamSourceDomain(s){if(s===void 0)return;let{domain}=s;if(domain===void 0)return s;let copy=Object.assign({},s);if(delete copy.domain,domain==="")return copy;if(copy.external)throw Error("domain and external are both set");return copy.external={api:`$JS.${domain}.API`},copy}class ConsumersImpl{constructor(api){this.api=api,this.notified=!1}checkVersion(){let fv=this.api.nc.features.get(semver_1.Feature.JS_SIMPLIFICATION);if(!fv.ok)return Promise.reject(Error(`consumers framework is only supported on servers ${fv.min} or better`));return Promise.resolve()}getPullConsumerFor(ci){if(ci.config.deliver_subject!==void 0)throw Error("push consumer not supported");return new consumer_1.PullConsumerImpl(this.api,ci)}get(stream_1){return __awaiter(this,arguments,void 0,function*(stream,name={}){if(typeof name==="object")return this.ordered(stream,name);return yield this.checkVersion(),this.api.info(stream,name).then((ci)=>{if(ci.config.deliver_subject!==void 0)return Promise.reject(Error("push consumer not supported"));return new consumer_1.PullConsumerImpl(this.api,ci)}).catch((err)=>{return Promise.reject(err)})})}ordered(stream,opts){return __awaiter(this,void 0,void 0,function*(){yield this.checkVersion();let impl=this.api;return new StreamAPIImpl(impl.nc,impl.opts).info(stream).then((_si)=>{return Promise.resolve(new consumer_1.OrderedPullConsumerImpl(this.api,stream,opts))}).catch((err)=>{return Promise.reject(err)})})}}exports.ConsumersImpl=ConsumersImpl;class StreamImpl{constructor(api,info){this.api=api,this._info=info}get name(){return this._info.config.name}alternates(){return this.info().then((si)=>{return si.alternates?si.alternates:[]})}best(){return __awaiter(this,void 0,void 0,function*(){if(yield this.info(),this._info.alternates){let asi=yield this.api.info(this._info.alternates[0].name);return new StreamImpl(this.api,asi)}else return this})}info(cached=!1,opts){if(cached)return Promise.resolve(this._info);return this.api.info(this.name,opts).then((si)=>{return this._info=si,this._info})}getConsumerFromInfo(ci){return new ConsumersImpl(new jsmconsumer_api_1.ConsumerAPIImpl(this.api.nc,this.api.opts)).getPullConsumerFor(ci)}getConsumer(name){return new ConsumersImpl(new jsmconsumer_api_1.ConsumerAPIImpl(this.api.nc,this.api.opts)).get(this.name,name)}getMessage(query){return this.api.getMessage(this.name,query)}deleteMessage(seq2,erase){return this.api.deleteMessage(this.name,seq2,erase)}}exports.StreamImpl=StreamImpl;class StreamAPIImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts)}checkStreamConfigVersions(cfg){let nci=this.nc;if(cfg.metadata){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_CONSUMER_METADATA);if(!ok)throw Error(`stream 'metadata' requires server ${min}`)}if(cfg.first_seq){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_FIRST_SEQ);if(!ok)throw Error(`stream 'first_seq' requires server ${min}`)}if(cfg.subject_transform){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_SUBJECT_TRANSFORM);if(!ok)throw Error(`stream 'subject_transform' requires server ${min}`)}if(cfg.compression){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_COMPRESSION);if(!ok)throw Error(`stream 'compression' requires server ${min}`)}if(cfg.consumer_limits){let{min,ok}=nci.features.get(semver_1.Feature.JS_DEFAULT_CONSUMER_LIMITS);if(!ok)throw Error(`stream 'consumer_limits' requires server ${min}`)}function validateStreamSource(context,src){var _a;if((((_a=src===null||src===void 0?void 0:src.subject_transforms)===null||_a===void 0?void 0:_a.length)||0)>0){let{min,ok}=nci.features.get(semver_1.Feature.JS_STREAM_SOURCE_SUBJECT_TRANSFORM);if(!ok)throw Error(`${context} 'subject_transforms' requires server ${min}`)}}if(cfg.sources)cfg.sources.forEach((src)=>{validateStreamSource("stream sources",src)});if(cfg.mirror)validateStreamSource("stream mirror",cfg.mirror)}add(){return __awaiter(this,arguments,void 0,function*(cfg={}){var _a;this.checkStreamConfigVersions(cfg),(0,jsutil_1.validateStreamName)(cfg.name),cfg.mirror=convertStreamSourceDomain(cfg.mirror),cfg.sources=(_a=cfg.sources)===null||_a===void 0?void 0:_a.map(convertStreamSourceDomain);let si=yield this._request(`${this.prefix}.STREAM.CREATE.${cfg.name}`,cfg);return this._fixInfo(si),si})}delete(stream){return __awaiter(this,void 0,void 0,function*(){return(0,jsutil_1.validateStreamName)(stream),(yield this._request(`${this.prefix}.STREAM.DELETE.${stream}`)).success})}update(name_1){return __awaiter(this,arguments,void 0,function*(name,cfg={}){var _a;if(typeof name==="object"){let sc=name;name=sc.name,cfg=sc,console.trace("\x1B[33m >> streams.update(config: StreamConfig) api changed to streams.update(name: string, config: StreamUpdateConfig) - this shim will be removed - update your code. \x1B[0m")}this.checkStreamConfigVersions(cfg),(0,jsutil_1.validateStreamName)(name);let old=yield this.info(name),update2=Object.assign(old.config,cfg);update2.mirror=convertStreamSourceDomain(update2.mirror),update2.sources=(_a=update2.sources)===null||_a===void 0?void 0:_a.map(convertStreamSourceDomain);let si=yield this._request(`${this.prefix}.STREAM.UPDATE.${name}`,update2);return this._fixInfo(si),si})}info(name,data){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(name);let subj=`${this.prefix}.STREAM.INFO.${name}`,si=yield this._request(subj,data),{total,limit}=si,have=si.state.subjects?Object.getOwnPropertyNames(si.state.subjects).length:1;if(total&&total>have){let infos=[si],paged=data||{},i2=0;while(total>have){i2++,paged.offset=limit*i2;let r2=yield this._request(subj,paged);total=r2.total,infos.push(r2);let count=Object.getOwnPropertyNames(r2.state.subjects).length;if(have+=count,count<limit)break}let subjects={};for(let i3=0;i3<infos.length;i3++)if(si=infos[i3],si.state.subjects)subjects=Object.assign(subjects,si.state.subjects);si.offset=0,si.total=0,si.limit=0,si.state.subjects=subjects}return this._fixInfo(si),si})}list(subject=""){let payload=(subject===null||subject===void 0?void 0:subject.length)?{subject}:{},listerFilter=(v)=>{let slr=v;return slr.streams.forEach((si)=>{this._fixInfo(si)}),slr.streams},subj=`${this.prefix}.STREAM.LIST`;return new jslister_1.ListerImpl(subj,listerFilter,this,payload)}_fixInfo(si){si.config.sealed=si.config.sealed||!1,si.config.deny_delete=si.config.deny_delete||!1,si.config.deny_purge=si.config.deny_purge||!1,si.config.allow_rollup_hdrs=si.config.allow_rollup_hdrs||!1}purge(name,opts){return __awaiter(this,void 0,void 0,function*(){if(opts){let{keep,seq:seq2}=opts;if(typeof keep==="number"&&typeof seq2==="number")throw Error("can specify one of keep or seq")}return(0,jsutil_1.validateStreamName)(name),yield this._request(`${this.prefix}.STREAM.PURGE.${name}`,opts)})}deleteMessage(stream_1,seq_1){return __awaiter(this,arguments,void 0,function*(stream,seq2,erase=!0){(0,jsutil_1.validateStreamName)(stream);let dr={seq:seq2};if(!erase)dr.no_erase=!0;return(yield this._request(`${this.prefix}.STREAM.MSG.DELETE.${stream}`,dr)).success})}getMessage(stream,query){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(stream);let sm=yield this._request(`${this.prefix}.STREAM.MSG.GET.${stream}`,query);return new StoredMsgImpl(sm)})}find(subject){return this.findStream(subject)}listKvs(){let filter=(v)=>{var _a,_b;let kvStreams=v.streams.filter((v2)=>{return v2.config.name.startsWith(types_2.kvPrefix)});kvStreams.forEach((si)=>{this._fixInfo(si)});let cluster="";if(kvStreams.length)cluster=(_b=(_a=this.nc.info)===null||_a===void 0?void 0:_a.cluster)!==null&&_b!==void 0?_b:"";return kvStreams.map((si)=>{return new kv_1.KvStatusImpl(si,cluster)})},subj=`${this.prefix}.STREAM.LIST`;return new jslister_1.ListerImpl(subj,filter,this)}listObjectStores(){let filter=(v)=>{let objStreams=v.streams.filter((v2)=>{return v2.config.name.startsWith(objectstore_1.osPrefix)});return objStreams.forEach((si)=>{this._fixInfo(si)}),objStreams.map((si)=>{return new objectstore_1.ObjectStoreStatusImpl(si)})},subj=`${this.prefix}.STREAM.LIST`;return new jslister_1.ListerImpl(subj,filter,this)}names(subject=""){let payload=(subject===null||subject===void 0?void 0:subject.length)?{subject}:{},listerFilter=(v)=>{return v.streams},subj=`${this.prefix}.STREAM.NAMES`;return new jslister_1.ListerImpl(subj,listerFilter,this,payload)}get(name){return __awaiter(this,void 0,void 0,function*(){let si=yield this.info(name);return Promise.resolve(new StreamImpl(this,si))})}}exports.StreamAPIImpl=StreamAPIImpl;class StoredMsgImpl{constructor(smr){this.smr=smr}get subject(){return this.smr.message.subject}get seq(){return this.smr.message.seq}get timestamp(){return this.smr.message.time}get time(){return new Date(Date.parse(this.timestamp))}get data(){return this.smr.message.data?this._parse(this.smr.message.data):types_1.Empty}get header(){if(!this._header)if(this.smr.message.hdrs){let hd=this._parse(this.smr.message.hdrs);this._header=headers_1.MsgHdrsImpl.decode(hd)}else this._header=(0,headers_1.headers)();return this._header}_parse(s){let bs=atob(s),len=bs.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=bs.charCodeAt(i2);return bytes}json(reviver){return(0,codec_1.JSONCodec)(reviver).decode(this.data)}string(){return encoders_1.TD.decode(this.data)}}exports.StoredMsgImpl=StoredMsgImpl;class StreamsImpl{constructor(api){this.api=api}get(stream){return this.api.info(stream).then((si)=>{return new StreamImpl(this.api,si)})}}exports.StreamsImpl=StreamsImpl});var require_jsm=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.JetStreamManagerImpl=exports.DirectMsgImpl=exports.DirectStreamAPIImpl=void 0;var jsbaseclient_api_1=require_jsbaseclient_api(),jsmstream_api_1=require_jsmstream_api(),jsmconsumer_api_1=require_jsmconsumer_api(),queued_iterator_1=require_queued_iterator(),types_1=require_types2(),core_1=require_core(),jsutil_1=require_jsutil(),encoders_1=require_encoders(),codec_1=require_codec();class DirectStreamAPIImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts)}getMessage(stream,query){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(stream);let qq=query,{last_by_subj}=qq;if(last_by_subj)qq=null;let payload=qq?this.jc.encode(qq):encoders_1.Empty,pre=this.opts.apiPrefix||"$JS.API",subj=last_by_subj?`${pre}.DIRECT.GET.${stream}.${last_by_subj}`:`${pre}.DIRECT.GET.${stream}`,r=yield this.nc.request(subj,payload,{timeout:this.timeout}),err=(0,jsutil_1.checkJsError)(r);if(err)return Promise.reject(err);let dm=new DirectMsgImpl(r);return Promise.resolve(dm)})}getBatch(stream,opts){return __awaiter(this,void 0,void 0,function*(){(0,jsutil_1.validateStreamName)(stream);let subj=`${this.opts.apiPrefix||"$JS.API"}.DIRECT.GET.${stream}`;if(!Array.isArray(opts.multi_last)||opts.multi_last.length===0)return Promise.reject("multi_last is required");let payload=JSON.stringify(opts,(key,value)=>{if(key==="up_to_time"&&value instanceof Date)return value.toISOString();return value}),iter=new queued_iterator_1.QueuedIteratorImpl,raw=yield this.nc.requestMany(subj,payload,{strategy:core_1.RequestStrategy.SentinelMsg});return(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c,_d,_e,_f;let gotFirst=!1,badServer=!1,badRequest;try{for(var _g=!0,raw_1=__asyncValues(raw),raw_1_1;raw_1_1=yield raw_1.next(),_a=raw_1_1.done,!_a;_g=!0){_c=raw_1_1.value,_g=!1;let m=_c;if(!gotFirst){gotFirst=!0;let code=((_d=m.headers)===null||_d===void 0?void 0:_d.code)||0;if(code!==0&&code<200||code>299){badRequest=(_e=m.headers)===null||_e===void 0?void 0:_e.description.toLowerCase();break}if(((_f=m.headers)===null||_f===void 0?void 0:_f.get("Nats-Num-Pending"))===""){badServer=!0;break}}if(m.data.length===0)break;iter.push(new DirectMsgImpl(m))}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_g&&!_a&&(_b=raw_1.return))yield _b.call(raw_1)}finally{if(e_1)throw e_1.error}}iter.push(()=>{if(badServer)throw Error("batch direct get not supported by the server");if(badRequest)throw Error(`bad request: ${badRequest}`);iter.stop()})}))(),Promise.resolve(iter)})}}exports.DirectStreamAPIImpl=DirectStreamAPIImpl;class DirectMsgImpl{constructor(m){if(!m.headers)throw Error("headers expected");this.data=m.data,this.header=m.headers}get subject(){return this.header.last(types_1.DirectMsgHeaders.Subject)}get seq(){let v=this.header.last(types_1.DirectMsgHeaders.Sequence);return typeof v==="string"?parseInt(v):0}get time(){return new Date(Date.parse(this.timestamp))}get timestamp(){return this.header.last(types_1.DirectMsgHeaders.TimeStamp)}get stream(){return this.header.last(types_1.DirectMsgHeaders.Stream)}json(reviver){return(0,codec_1.JSONCodec)(reviver).decode(this.data)}string(){return encoders_1.TD.decode(this.data)}}exports.DirectMsgImpl=DirectMsgImpl;class JetStreamManagerImpl extends jsbaseclient_api_1.BaseApiClient{constructor(nc,opts){super(nc,opts);this.streams=new jsmstream_api_1.StreamAPIImpl(nc,opts),this.consumers=new jsmconsumer_api_1.ConsumerAPIImpl(nc,opts),this.direct=new DirectStreamAPIImpl(nc,opts)}getAccountInfo(){return __awaiter(this,void 0,void 0,function*(){return yield this._request(`${this.prefix}.INFO`)})}jetstream(){return this.nc.jetstream(this.getOptions())}advisories(){let iter=new queued_iterator_1.QueuedIteratorImpl;return this.nc.subscribe("$JS.EVENT.ADVISORY.>",{callback:(err,msg)=>{if(err)throw err;try{let d=this.parseJsResponse(msg),chunks=d.type.split("."),kind=chunks[chunks.length-1];iter.push({kind,data:d})}catch(err2){iter.stop(err2)}}}),iter}}exports.JetStreamManagerImpl=JetStreamManagerImpl});var require_service=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});exports.ServiceImpl=exports.ServiceGroupImpl=exports.ServiceMsgImpl=exports.ServiceApiPrefix=void 0;var util_1=require_util(),headers_1=require_headers(),codec_1=require_codec(),nuid_1=require_nuid(),queued_iterator_1=require_queued_iterator(),jsutil_1=require_jsutil(),semver_1=require_semver(),encoders_1=require_encoders(),core_1=require_core();exports.ServiceApiPrefix="$SRV";class ServiceMsgImpl{constructor(msg){this.msg=msg}get data(){return this.msg.data}get sid(){return this.msg.sid}get subject(){return this.msg.subject}get reply(){return this.msg.reply||""}get headers(){return this.msg.headers}respond(data,opts){return this.msg.respond(data,opts)}respondError(code,description,data,opts){var _a,_b;return opts=opts||{},opts.headers=opts.headers||(0,headers_1.headers)(),(_a=opts.headers)===null||_a===void 0||_a.set(core_1.ServiceErrorCodeHeader,`${code}`),(_b=opts.headers)===null||_b===void 0||_b.set(core_1.ServiceErrorHeader,description),this.msg.respond(data,opts)}json(reviver){return this.msg.json(reviver)}string(){return this.msg.string()}}exports.ServiceMsgImpl=ServiceMsgImpl;class ServiceGroupImpl{constructor(parent,name="",queue2=""){if(name!=="")validInternalToken("service group",name);let root="";if(parent instanceof ServiceImpl)this.srv=parent,root="";else if(parent instanceof ServiceGroupImpl){let sg=parent;if(this.srv=sg.srv,queue2===""&&sg.queue!=="")queue2=sg.queue;root=sg.subject}else throw Error("unknown ServiceGroup type");this.subject=this.calcSubject(root,name),this.queue=queue2}calcSubject(root,name=""){if(name==="")return root;return root!==""?`${root}.${name}`:name}addEndpoint(name="",opts){opts=opts||{subject:name};let args=typeof opts==="function"?{handler:opts,subject:name}:opts;(0,jsutil_1.validateName)("endpoint",name);let{subject,handler,metadata,queue:queue2}=args;subject=subject||name,queue2=queue2||this.queue,validSubjectName("endpoint subject",subject),subject=this.calcSubject(this.subject,subject);let ne={name,subject,queue:queue2,handler,metadata};return this.srv._addEndpoint(ne)}addGroup(name="",queue2=""){return new ServiceGroupImpl(this,name,queue2)}}exports.ServiceGroupImpl=ServiceGroupImpl;function validSubjectName(context,subj){if(subj==="")throw Error(`${context} cannot be empty`);if(subj.indexOf(" ")!==-1)throw Error(`${context} cannot contain spaces: '${subj}'`);let tokens2=subj.split(".");tokens2.forEach((v,idx)=>{if(v===">"&&idx!==tokens2.length-1)throw Error(`${context} cannot have internal '>': '${subj}'`)})}function validInternalToken(context,subj){if(subj.indexOf(" ")!==-1)throw Error(`${context} cannot contain spaces: '${subj}'`);subj.split(".").forEach((v)=>{if(v===">")throw Error(`${context} name cannot contain internal '>': '${subj}'`)})}class ServiceImpl{static controlSubject(verb,name="",id="",prefix){let pre=prefix!==null&&prefix!==void 0?prefix:exports.ServiceApiPrefix;if(name===""&&id==="")return`${pre}.${verb}`;if((0,jsutil_1.validateName)("control subject name",name),id!=="")return(0,jsutil_1.validateName)("control subject id",id),`${pre}.${verb}.${name}.${id}`;return`${pre}.${verb}.${name}`}constructor(nc,config={name:"",version:""}){if(this.nc=nc,this.config=Object.assign({},config),!this.config.queue)this.config.queue="q";(0,jsutil_1.validateName)("name",this.config.name),(0,jsutil_1.validateName)("queue",this.config.queue),(0,semver_1.parseSemVer)(this.config.version),this._id=nuid_1.nuid.next(),this.internal=[],this._done=(0,util_1.deferred)(),this._stopped=!1,this.handlers=[],this.started=new Date().toISOString(),this.reset(),this.nc.closed().then(()=>{this.close().catch()}).catch((err)=>{this.close(err).catch()})}get subjects(){return this.handlers.filter((s)=>{return s.internal===!1}).map((s)=>{return s.subject})}get id(){return this._id}get name(){return this.config.name}get description(){var _a;return(_a=this.config.description)!==null&&_a!==void 0?_a:""}get version(){return this.config.version}get metadata(){return this.config.metadata}errorToHeader(err){let h=(0,headers_1.headers)();if(err instanceof core_1.ServiceError){let se=err;h.set(core_1.ServiceErrorHeader,se.message),h.set(core_1.ServiceErrorCodeHeader,`${se.code}`)}else h.set(core_1.ServiceErrorHeader,err.message),h.set(core_1.ServiceErrorCodeHeader,"500");return h}setupHandler(h,internal=!1){let queue2=internal?"":h.queue?h.queue:this.config.queue,{name,subject,handler}=h,sv=h;if(sv.internal=internal,internal)this.internal.push(sv);sv.stats=new NamedEndpointStatsImpl(name,subject,queue2),sv.queue=queue2;let callback=handler?(err,msg)=>{if(err){this.close(err);return}let start=Date.now();try{handler(err,new ServiceMsgImpl(msg))}catch(err2){sv.stats.countError(err2),msg===null||msg===void 0||msg.respond(encoders_1.Empty,{headers:this.errorToHeader(err2)})}finally{sv.stats.countLatency(start)}}:void 0;return sv.sub=this.nc.subscribe(subject,{callback,queue:queue2}),sv.sub.closed.then(()=>{if(!this._stopped)this.close(Error(`required subscription ${h.subject} stopped`)).catch()}).catch((err)=>{if(!this._stopped){let ne=Error(`required subscription ${h.subject} errored: ${err.message}`);ne.stack=err.stack,this.close(ne).catch()}}),sv}info(){return{type:core_1.ServiceResponseType.INFO,name:this.name,id:this.id,version:this.version,description:this.description,metadata:this.metadata,endpoints:this.endpoints()}}endpoints(){return this.handlers.map((v)=>{let{subject,metadata,name,queue:queue2}=v;return{subject,metadata,name,queue_group:queue2}})}stats(){return __awaiter(this,void 0,void 0,function*(){let endpoints=[];for(let h of this.handlers){if(typeof this.config.statsHandler==="function")try{h.stats.data=yield this.config.statsHandler(h)}catch(err){h.stats.countError(err)}endpoints.push(h.stats.stats(h.qi))}return{type:core_1.ServiceResponseType.STATS,name:this.name,id:this.id,version:this.version,started:this.started,metadata:this.metadata,endpoints}})}addInternalHandler(verb,handler){let v=`${verb}`.toUpperCase();this._doAddInternalHandler(`${v}-all`,verb,handler),this._doAddInternalHandler(`${v}-kind`,verb,handler,this.name),this._doAddInternalHandler(`${v}`,verb,handler,this.name,this.id)}_doAddInternalHandler(name,verb,handler,kind="",id=""){let endpoint={};endpoint.name=name,endpoint.subject=ServiceImpl.controlSubject(verb,kind,id),endpoint.handler=handler,this.setupHandler(endpoint,!0)}start(){let jc=(0,codec_1.JSONCodec)(),statsHandler=(err,msg)=>{if(err)return this.close(err),Promise.reject(err);return this.stats().then((s)=>{return msg===null||msg===void 0||msg.respond(jc.encode(s)),Promise.resolve()})},infoHandler=(err,msg)=>{if(err)return this.close(err),Promise.reject(err);return msg===null||msg===void 0||msg.respond(jc.encode(this.info())),Promise.resolve()},ping=jc.encode(this.ping()),pingHandler=(err,msg)=>{if(err)return this.close(err).then().catch(),Promise.reject(err);return msg.respond(ping),Promise.resolve()};return this.addInternalHandler(core_1.ServiceVerb.PING,pingHandler),this.addInternalHandler(core_1.ServiceVerb.STATS,statsHandler),this.addInternalHandler(core_1.ServiceVerb.INFO,infoHandler),this.handlers.forEach((h)=>{let{subject}=h;if(typeof subject!=="string")return;if(h.handler===null)return;this.setupHandler(h)}),Promise.resolve(this)}close(err){if(this._stopped)return this._done;this._stopped=!0;let buf=[];if(!this.nc.isClosed())buf=this.handlers.concat(this.internal).map((h)=>{return h.sub.drain()});return Promise.allSettled(buf).then(()=>{this._done.resolve(err?err:null)}),this._done}get stopped(){return this._done}get isStopped(){return this._stopped}stop(err){return this.close(err)}ping(){return{type:core_1.ServiceResponseType.PING,name:this.name,id:this.id,version:this.version,metadata:this.metadata}}reset(){if(this.started=new Date().toISOString(),this.handlers)for(let h of this.handlers)h.stats.reset(h.qi)}addGroup(name,queue2){return new ServiceGroupImpl(this,name,queue2)}addEndpoint(name,handler){return new ServiceGroupImpl(this).addEndpoint(name,handler)}_addEndpoint(e){let qi=new queued_iterator_1.QueuedIteratorImpl;if(qi.noIterator=typeof e.handler==="function",!qi.noIterator)e.handler=(err,msg)=>{err?this.stop(err).catch():qi.push(new ServiceMsgImpl(msg))},qi.iterClosed.then(()=>{this.close().catch()});let ss=this.setupHandler(e,!1);return ss.qi=qi,this.handlers.push(ss),qi}}exports.ServiceImpl=ServiceImpl;class NamedEndpointStatsImpl{constructor(name,subject,queue2=""){this.name=name,this.subject=subject,this.average_processing_time=0,this.num_errors=0,this.num_requests=0,this.processing_time=0,this.queue=queue2}reset(qi){this.num_requests=0,this.processing_time=0,this.average_processing_time=0,this.num_errors=0,this.last_error=void 0,this.data=void 0;let qii=qi;if(qii)qii.time=0,qii.processed=0}countLatency(start){this.num_requests++,this.processing_time+=(0,util_1.nanos)(Date.now()-start),this.average_processing_time=Math.round(this.processing_time/this.num_requests)}countError(err){this.num_errors++,this.last_error=err.message}_stats(){let{name,subject,average_processing_time,num_errors,num_requests,processing_time,last_error,data,queue:queue2}=this;return{name,subject,average_processing_time,num_errors,num_requests,processing_time,last_error,data,queue_group:queue2}}stats(qi){let qii=qi;if((qii===null||qii===void 0?void 0:qii.noIterator)===!1)this.processing_time=(0,util_1.nanos)(qii.time),this.num_requests=qii.processed,this.average_processing_time=this.processing_time>0&&this.num_requests>0?this.processing_time/this.num_requests:0;return this._stats()}}});var require_serviceclient=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ServiceClientImpl=void 0;var encoders_1=require_encoders(),codec_1=require_codec(),queued_iterator_1=require_queued_iterator(),core_1=require_core(),service_1=require_service(),core_2=require_core();class ServiceClientImpl{constructor(nc,opts={strategy:core_2.RequestStrategy.JitterTimer,maxWait:2000},prefix){this.nc=nc,this.prefix=prefix,this.opts=opts}ping(name="",id=""){return this.q(core_1.ServiceVerb.PING,name,id)}stats(name="",id=""){return this.q(core_1.ServiceVerb.STATS,name,id)}info(name="",id=""){return this.q(core_1.ServiceVerb.INFO,name,id)}q(v_1){return __awaiter(this,arguments,void 0,function*(v,name="",id=""){let iter=new queued_iterator_1.QueuedIteratorImpl,jc=(0,codec_1.JSONCodec)(),subj=service_1.ServiceImpl.controlSubject(v,name,id,this.prefix),responses=yield this.nc.requestMany(subj,encoders_1.Empty,this.opts);return(()=>__awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;try{for(var _d=!0,responses_1=__asyncValues(responses),responses_1_1;responses_1_1=yield responses_1.next(),_a=responses_1_1.done,!_a;_d=!0){_c=responses_1_1.value,_d=!1;let m=_c;try{let s=jc.decode(m.data);iter.push(s)}catch(err){iter.push(()=>{iter.stop(err)})}}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=responses_1.return))yield _b.call(responses_1)}finally{if(e_1)throw e_1.error}}iter.push(()=>{iter.stop()})}))().catch((err)=>{iter.stop(err)}),iter})}}exports.ServiceClientImpl=ServiceClientImpl});var require_nats=__commonJS((exports)=>{var __awaiter=exports&&exports.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve3){resolve3(value)})}return new(P||(P=Promise))(function(resolve3,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result2){result2.done?resolve3(result2.value):adopt(result2.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},__asyncValues=exports&&exports.__asyncValues||function(o){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i2;return m?m.call(o):(o=typeof __values==="function"?__values(o):o[Symbol.iterator](),i2={},verb("next"),verb("throw"),verb("return"),i2[Symbol.asyncIterator]=function(){return this},i2);function verb(n){i2[n]=o[n]&&function(v){return new Promise(function(resolve3,reject){v=o[n](v),settle(resolve3,reject,v.done,v.value)})}}function settle(resolve3,reject,d,v){Promise.resolve(v).then(function(v2){resolve3({value:v2,done:d})},reject)}};Object.defineProperty(exports,"__esModule",{value:!0});exports.ServicesFactory=exports.NatsConnectionImpl=void 0;var util_1=require_util(),protocol_1=require_protocol(),encoders_1=require_encoders(),types_1=require_types(),semver_1=require_semver(),options_1=require_options(),queued_iterator_1=require_queued_iterator(),request_1=require_request(),msg_1=require_msg(),jsm_1=require_jsm(),jsclient_1=require_jsclient(),service_1=require_service(),serviceclient_1=require_serviceclient(),core_1=require_core();class NatsConnectionImpl{constructor(opts){this.draining=!1,this.options=(0,options_1.parseOptions)(opts),this.listeners=[]}static connect(opts={}){return new Promise((resolve3,reject)=>{let nc=new NatsConnectionImpl(opts);protocol_1.ProtocolHandler.connect(nc.options,nc).then((ph)=>{nc.protocol=ph,function(){return __awaiter(this,void 0,void 0,function*(){var _a,e_1,_b,_c;try{for(var _d=!0,_e=__asyncValues(ph.status()),_f;_f=yield _e.next(),_a=_f.done,!_a;_d=!0){_c=_f.value,_d=!1;let s=_c;nc.listeners.forEach((l)=>{l.push(s)})}}catch(e_1_1){e_1={error:e_1_1}}finally{try{if(!_d&&!_a&&(_b=_e.return))yield _b.call(_e)}finally{if(e_1)throw e_1.error}}})}(),resolve3(nc)}).catch((err)=>{reject(err)})})}closed(){return this.protocol.closed}close(){return __awaiter(this,void 0,void 0,function*(){yield this.protocol.close()})}_check(subject,sub,pub){if(this.isClosed())throw types_1.NatsError.errorForCode(core_1.ErrorCode.ConnectionClosed);if(sub&&this.isDraining())throw types_1.NatsError.errorForCode(core_1.ErrorCode.ConnectionDraining);if(pub&&this.protocol.noMorePublishing)throw types_1.NatsError.errorForCode(core_1.ErrorCode.ConnectionDraining);if(subject=subject||"",subject.length===0)throw types_1.NatsError.errorForCode(core_1.ErrorCode.BadSubject)}publish(subject,data,options){this._check(subject,!1,!0),this.protocol.publish(subject,data,options)}publishMessage(msg){return this.publish(msg.subject,msg.data,{reply:msg.reply,headers:msg.headers})}respondMessage(msg){if(msg.reply)return this.publish(msg.reply,msg.data,{reply:msg.reply,headers:msg.headers}),!0;return!1}subscribe(subject,opts={}){this._check(subject,!0,!1);let sub=new protocol_1.SubscriptionImpl(this.protocol,subject,opts);return this.protocol.subscribe(sub),sub}_resub(s,subject,max){this._check(subject,!0,!1);let si=s;if(si.max=max,max)si.max=max+si.received;this.protocol.resub(si,subject)}requestMany(subject,data=encoders_1.Empty,opts={maxWait:1000,maxMessages:-1}){let asyncTraces=!this.protocol.options.noAsyncTraces;try{this._check(subject,!0,!0)}catch(err){return Promise.reject(err)}if(opts.strategy=opts.strategy||core_1.RequestStrategy.Timer,opts.maxWait=opts.maxWait||1000,opts.maxWait<1)return Promise.reject(new types_1.NatsError("timeout",core_1.ErrorCode.InvalidOption));let qi=new queued_iterator_1.QueuedIteratorImpl;function stop(err){qi.push(()=>{qi.stop(err)})}function callback(err,msg){if(err||msg===null)stop(err===null?void 0:err);else qi.push(msg)}if(opts.noMux){let stack=asyncTraces?Error().stack:null,max=typeof opts.maxMessages==="number"&&opts.maxMessages>0?opts.maxMessages:-1,sub=this.subscribe((0,core_1.createInbox)(this.options.inboxPrefix),{callback:(err,msg)=>{var _a,_b;if(((_a=msg===null||msg===void 0?void 0:msg.data)===null||_a===void 0?void 0:_a.length)===0&&((_b=msg===null||msg===void 0?void 0:msg.headers)===null||_b===void 0?void 0:_b.status)===core_1.ErrorCode.NoResponders)err=types_1.NatsError.errorForCode(core_1.ErrorCode.NoResponders);if(err){if(stack)err.stack+=`
838
838
 
839
839
  ${stack}`;cancel(err);return}if(callback(null,msg),opts.strategy===core_1.RequestStrategy.Count){if(max--,max===0)cancel()}if(opts.strategy===core_1.RequestStrategy.JitterTimer)clearTimers(),timer2=setTimeout(()=>{cancel()},300);if(opts.strategy===core_1.RequestStrategy.SentinelMsg){if(msg&&msg.data.length===0)cancel()}}});sub.requestSubject=subject,sub.closed.then(()=>{stop()}).catch((err)=>{qi.stop(err)});let cancel=(err)=>{if(err)qi.push(()=>{throw err});clearTimers(),sub.drain().then(()=>{stop()}).catch((_err)=>{stop()})};qi.iterClosed.then(()=>{clearTimers(),sub===null||sub===void 0||sub.unsubscribe()}).catch((_err)=>{clearTimers(),sub===null||sub===void 0||sub.unsubscribe()});try{this.publish(subject,data,{reply:sub.getSubject()})}catch(err){cancel(err)}let timer2=setTimeout(()=>{cancel()},opts.maxWait),clearTimers=()=>{if(timer2)clearTimeout(timer2)}}else{let rmo=opts;rmo.callback=callback,qi.iterClosed.then(()=>{r.cancel()}).catch((err)=>{r.cancel(err)});let r=new request_1.RequestMany(this.protocol.muxSubscriptions,subject,rmo);this.protocol.request(r);try{this.publish(subject,data,{reply:`${this.protocol.muxSubscriptions.baseInbox}${r.token}`,headers:opts.headers})}catch(err){r.cancel(err)}}return Promise.resolve(qi)}request(subject,data,opts={timeout:1000,noMux:!1}){try{this._check(subject,!0,!0)}catch(err){return Promise.reject(err)}let asyncTraces=!this.protocol.options.noAsyncTraces;if(opts.timeout=opts.timeout||1000,opts.timeout<1)return Promise.reject(new types_1.NatsError("timeout",core_1.ErrorCode.InvalidOption));if(!opts.noMux&&opts.reply)return Promise.reject(new types_1.NatsError("reply can only be used with noMux",core_1.ErrorCode.InvalidOption));if(opts.noMux){let inbox=opts.reply?opts.reply:(0,core_1.createInbox)(this.options.inboxPrefix),d=(0,util_1.deferred)(),errCtx=asyncTraces?Error():null,sub=this.subscribe(inbox,{max:1,timeout:opts.timeout,callback:(err,msg)=>{if(err){if(errCtx&&err.code!==core_1.ErrorCode.Timeout)err.stack+=`
840
840
 
@@ -982,12 +982,12 @@ ${errCtx.stack}`;d.reject(err)}else d.resolve(msg)}});return sub.requestSubject=
982
982
  FROM session_sync
983
983
  WHERE id = 'backfill'
984
984
  LIMIT 1
985
- `;if(rows.length===0)return{driftPct:null,detail:"no prior backfill row \u2014 first run will seed"};let row=rows[0];if(row.total_bytes<=0)return{driftPct:0,detail:"no JSONL bytes discovered yet"};let pct=Math.max(0,row.total_bytes-row.processed_bytes)/row.total_bytes*100,display=pct.toFixed(1);return{driftPct:pct,detail:`processed ${row.processed_bytes}/${row.total_bytes} bytes (drift ${display}%)`}}catch(err){return{driftPct:null,detail:`drift probe failed: ${err.message}`}}}async function defaultRunBackfillSync(){if(!await isAvailable())return{ranSync:!1,driftPct:null,detail:"pg unavailable \u2014 backfill skipped"};return(async()=>{try{let sql=await getConnection(),{startBackfill:startBackfill2}=await Promise.resolve().then(() => (init_session_backfill(),exports_session_backfill));await startBackfill2(sql)}catch{}})(),{ranSync:!0,driftPct:null,detail:"background convergence kicked \u2014 `genie doctor --fix` to wait"}}async function defaultRunBackfillBlocking(){if(!await isAvailable())return{ranSync:!1,driftPct:null,detail:"pg unavailable \u2014 backfill skipped"};let sql=await getConnection(),{startBackfill:startBackfill2}=await Promise.resolve().then(() => (init_session_backfill(),exports_session_backfill));await startBackfill2(sql);let after=await defaultMeasureBackfillDrift();return{ranSync:!0,driftPct:after.driftPct,detail:after.detail}}async function defaultListOrphanedZombies(){try{let{listExhaustedZombies:listExhaustedZombies2}=await Promise.resolve().then(() => (init_agent_registry(),exports_agent_registry));return await listExhaustedZombies2()}catch{return[]}}function safeIsDirectory(path2){try{return statSync5(path2).isDirectory()}catch{return!1}}function summarizeInboxes(inboxesDir2){let inboxFiles=[];try{inboxFiles=readdirSync6(inboxesDir2).filter((f)=>f.endsWith(".json"))}catch{return{newestMs:null,hasContent:!1}}let newestMs=null,hasContent=!1;for(let f of inboxFiles)try{let st=statSync5(join24(inboxesDir2,f));if(newestMs===null||st.mtimeMs>newestMs)newestMs=st.mtimeMs;if(st.size>2)hasContent=!0}catch{}return{newestMs,hasContent}}function classifyTeamDir2(name,base,now){let dir=join24(base,name);if(!safeIsDirectory(dir))return null;if(existsSync19(join24(dir,"config.json")))return null;let inboxesDir2=join24(dir,"inboxes");if(!safeIsDirectory(inboxesDir2))return null;let{newestMs,hasContent}=summarizeInboxes(inboxesDir2),orphan={teamName:name,path:dir,newestInboxMs:newestMs,hasContent},active=hasContent&&newestMs!==null&&now-newestMs<ORPHAN_FRESH_WINDOW_MS;return{orphan,active}}function defaultScanTeamConfigOrphans(){let base=teamsBaseDir3(),result2={active:[],stale:[]};if(!existsSync19(base))return result2;let now=Date.now();for(let name of readdirSync6(base)){if(name.startsWith(".")||name==="_archive")continue;let classified=classifyTeamDir2(name,base,now);if(!classified)continue;(classified.active?result2.active:result2.stale).push(classified.orphan)}return result2}function defaultArchiveStaleTeamConfigs(orphans){if(orphans.length===0)return[];let archiveRoot=join24(teamsBaseDir3(),"_archive");mkdirSync9(archiveRoot,{recursive:!0});let ts3=new Date().toISOString().replace(/[:.]/g,"-"),archived=[];for(let o of orphans){let dest=join24(archiveRoot,`${o.teamName}-${ts3}`);try{renameSync4(o.path,dest),archived.push(dest)}catch{}}return archived}async function defaultRecordAudit(eventType,name,details){await recordAuditEvent("command","serve_start",eventType,"serve",{precondition:name,...details})}async function checkPartition(health,autoFix,deps){if(health.partition_health==="ok"||health.partition_health==="warn")return{name:"partition",status:"ok",detail:health.next_rotation_at?`next rotation: ${health.next_rotation_at}`:void 0};if(health.partition_health==="unknown")return{name:"partition",status:"skipped",detail:"pg unavailable \u2014 skipping partition probe"};if(!autoFix)return{name:"partition",status:"refused",detail:"today's partition is missing or rotation is overdue",fixCommand:"genie doctor --observability # then re-run; or `genie serve start` (without --no-fix)"};let result2=await deps.runPartitionMaintenance();return{name:"partition",status:"fixed",detail:`created/present ${result2.createdOrPresent}, dropped ${result2.dropped}; next rotation ${result2.nextRotationAt??"unknown"}`}}async function checkWatchdog(health,autoFix,deps){if(deps.platform!=="linux")return{name:"watchdog",status:"skipped",detail:"watchdog install is Linux/systemd only"};if(process.env.GENIE_WATCHDOG_SKIP==="1")return{name:"watchdog",status:"skipped",detail:"GENIE_WATCHDOG_SKIP=1"};if(health.watchdog==="ok")return{name:"watchdog",status:"ok"};if(!process.env.GENIE_WATCHDOG_INSTALL_CMD&&!resolveWatchdogCliPath())return{name:"watchdog",status:"skipped",detail:"watchdog optional in this install \u2014 set GENIE_WATCHDOG_SKIP=1 to silence, or run from source repo to enable"};if(!autoFix)return{name:"watchdog",status:"refused",detail:health.watchdog_detail??"watchdog units missing",fixCommand:"sudo bun run packages/watchdog/src/cli.ts install"};try{let result2=await deps.installWatchdog();return{name:"watchdog",status:"fixed",detail:`wrote ${result2.filesWritten.length}, skipped ${result2.filesSkipped.length}`}}catch(err){return{name:"watchdog",status:"refused",detail:`auto-install failed: ${err.message}`,fixCommand:"sudo bun run packages/watchdog/src/cli.ts install"}}}async function checkBackfill(autoFix,deps){let drift=await deps.measureBackfillDrift();if(drift.driftPct===null)return{name:"backfill",status:"skipped",detail:drift.detail};if(drift.driftPct<BACKFILL_DRIFT_THRESHOLD_PCT)return{name:"backfill",status:"ok",detail:drift.detail};if(!autoFix)return{name:"backfill",status:"refused",detail:drift.detail,fixCommand:`genie sessions sync # drift ${drift.driftPct.toFixed(1)}% > ${BACKFILL_DRIFT_THRESHOLD_PCT}%`};return{name:"backfill",status:"fixed",detail:(await deps.runBackfillSync()).detail}}async function checkDeadPaneZombies(deps){let orphans=await deps.listOrphanedZombies();if(orphans.length===0)return{name:"dead_pane_zombies",status:"ok"};return{name:"dead_pane_zombies",status:"refused",detail:`${orphans.length} exhausted zombie(s) past TTL; visible in \`genie status\``,fixCommand:"genie prune --zombies # archive eligible rows"}}function checkTeamConfigOrphans(autoFix,deps){let scan=deps.scanTeamConfigOrphans();if(scan.active.length===0&&scan.stale.length===0)return{name:"team_config_orphans",status:"ok"};if(!autoFix){let summary=`active=${scan.active.length} stale=${scan.stale.length}`,firstActive=scan.active[0]?.teamName;return{name:"team_config_orphans",status:"refused",detail:summary,fixCommand:firstActive?`genie team repair ${firstActive} # active orphan; stale dirs archive on auto-fix`:"genie serve start # auto-fix archives stale orphans"}}let archivedPaths=deps.archiveStaleTeamConfigs(scan.stale);if(scan.active.length>0)return{name:"team_config_orphans",status:"refused",detail:`archived ${archivedPaths.length} stale; ${scan.active.length} active orphan(s) need repair`,fixCommand:`genie team repair ${scan.active[0].teamName}`};return{name:"team_config_orphans",status:"fixed",detail:`archived ${archivedPaths.length} stale orphan(s)`}}function bindDefaults(deps){return{collectHealth:deps?.collectHealth??collectObservabilityHealth,runPartitionMaintenance:deps?.runPartitionMaintenance??defaultRunPartitionMaintenance,installWatchdog:deps?.installWatchdog??defaultInstallWatchdog,runBackfillSync:deps?.runBackfillSync??defaultRunBackfillSync,measureBackfillDrift:deps?.measureBackfillDrift??defaultMeasureBackfillDrift,listOrphanedZombies:deps?.listOrphanedZombies??defaultListOrphanedZombies,scanTeamConfigOrphans:deps?.scanTeamConfigOrphans??defaultScanTeamConfigOrphans,archiveStaleTeamConfigs:deps?.archiveStaleTeamConfigs??defaultArchiveStaleTeamConfigs,platform:deps?.platform??process.platform,recordAudit:deps?.recordAudit??defaultRecordAudit,log:deps?.log??((line)=>console.log(line))}}async function ensureServeReady(opts){let deps=bindDefaults(opts.deps),health=await deps.collectHealth(),results=[];results.push(await checkPartition(health,opts.autoFix,deps)),results.push(await checkBackfill(opts.autoFix,deps)),results.push(await checkDeadPaneZombies(deps)),await emitAuditEvents(results,deps);let ok=results.every((r)=>r.status==="ok"||r.status==="fixed"||r.status==="skipped");return printReport(results,deps.log),{ok,results}}function formatDuration(ms){if(ms<1000)return`${ms}ms`;return`${(ms/1000).toFixed(1)}s`}function logMaintenanceStepStart(log,silent,label){if(!silent)log(` ${label}...`);return Date.now()}function logMaintenanceStepDone(log,silent,label,startedAt){if(!silent)log(` done ${label} (${formatDuration(Date.now()-startedAt)})`)}async function runDoctorMaintenance(opts={}){let rawRunBackfillSync=opts.deps?.runBackfillSync??defaultRunBackfillBlocking,deps=bindDefaults({...opts.deps,runBackfillSync:defaultRunBackfillBlocking,log:opts.silent?()=>{}:opts.deps?.log});deps.runBackfillSync=async()=>{let startedAt2=logMaintenanceStepStart(deps.log,opts.silent,"Running session backfill convergence (can take minutes on large transcript history)");try{return await rawRunBackfillSync()}finally{logMaintenanceStepDone(deps.log,opts.silent,"session backfill convergence",startedAt2)}};let startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Collecting observability health"),health=await deps.collectHealth();logMaintenanceStepDone(deps.log,opts.silent,"observability health",startedAt);let results=[];startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking runtime event partitions"),results.push(await checkPartition(health,!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"runtime event partitions",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking watchdog install"),results.push(await checkWatchdog(health,!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"watchdog install",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking session backfill drift"),results.push(await checkBackfill(!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"session backfill drift",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking exhausted zombie rows"),results.push(await checkDeadPaneZombies(deps)),logMaintenanceStepDone(deps.log,opts.silent,"exhausted zombie rows",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking Claude team config orphans"),results.push(checkTeamConfigOrphans(!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"Claude team config orphans",startedAt),await emitAuditEvents(results,deps);let ok=results.every((r)=>r.status==="ok"||r.status==="fixed"||r.status==="skipped");return printReport(results,deps.log),{ok,results}}async function emitAuditEvents(results,deps){for(let result2 of results)if(result2.status==="fixed")await deps.recordAudit("serve.precondition.fixed",result2.name,{detail:result2.detail??null}).catch(()=>{});else if(result2.status==="refused")await deps.recordAudit("serve.precondition.refused",result2.name,{detail:result2.detail??null,fix_command:result2.fixCommand??null}).catch(()=>{})}function printReport(results,log){log(" Preconditions:");for(let r of results){let tag=statusTag(r.status),suffix=r.detail?` \u2014 ${r.detail}`:"";if(log(` ${tag} ${r.name}${suffix}`),r.status==="refused"&&r.fixCommand)log(` \u2192 ${r.fixCommand}`)}}function statusTag(status){switch(status){case"ok":return"[ok]";case"fixed":return"[fix]";case"refused":return"[!!]";case"skipped":return"[--]"}}var BACKFILL_DRIFT_THRESHOLD_PCT=5,ORPHAN_FRESH_WINDOW_MS=86400000;var init_ensure_ready=__esm(()=>{init_observability_health();init_audit();init_db()});var exports_doctor={};__export(exports_doctor,{runPostUpdateMaintenance:()=>runPostUpdateMaintenance,findStaleGenieCandidates:()=>findStaleGenieCandidates,findBundledTmuxConfigDir:()=>findBundledTmuxConfigDir,doctorCommand:()=>doctorCommand,checkTmuxConfigs:()=>checkTmuxConfigs,checkLegacyAgentFrontmatter:()=>checkLegacyAgentFrontmatter,checkGenieAgentTemplate:()=>checkGenieAgentTemplate});import{execFileSync}from"child_process";import{copyFileSync as copyFileSync2,existsSync as existsSync20,mkdirSync as mkdirSync10,readFileSync as readFileSync13,readdirSync as readdirSync7,statSync as statSync6,unlinkSync as unlinkSync6,writeFileSync as writeFileSync7}from"fs";import{homedir as homedir20}from"os";import{dirname as dirname8,join as join25,resolve as resolve3}from"path";import{fileURLToPath as fileURLToPath3}from"url";var{$:$3}=globalThis.Bun;function printSectionHeader(title){console.log(),console.log(`\x1B[1m${title}:\x1B[0m`)}function printCheckResult(result2){let icon={pass:"\x1B[32m\u2713\x1B[0m",fail:"\x1B[31m\u2717\x1B[0m",warn:"\x1B[33m!\x1B[0m"}[result2.status],message=result2.message?` ${result2.message}`:"";if(console.log(` ${icon} ${result2.name}${message}`),result2.suggestion)console.log(` \x1B[2m${result2.suggestion}\x1B[0m`)}async function checkPrerequisites(){let results=[],tmuxCheck=await checkCommand("tmux");if(tmuxCheck.exists)results.push({name:"tmux",status:"pass",message:tmuxCheck.version||""});else results.push({name:"tmux",status:"fail",suggestion:"Install with: brew install tmux (or apt install tmux)"});let jqCheck=await checkCommand("jq");if(jqCheck.exists)results.push({name:"jq",status:"pass",message:jqCheck.version||""});else results.push({name:"jq",status:"fail",suggestion:"Install with: brew install jq (or apt install jq)"});let bunCheck=await checkCommand("bun");if(bunCheck.exists)results.push({name:"bun",status:"pass",message:bunCheck.version||""});else results.push({name:"bun",status:"fail",suggestion:"Install with: curl -fsSL https://bun.sh/install | bash"});let claudeCheck=await checkCommand("claude");if(claudeCheck.exists)results.push({name:"Claude Code",status:"pass",message:claudeCheck.version||""});else results.push({name:"Claude Code",status:"warn",suggestion:"Install with: npm install -g @anthropic-ai/claude-code"});let codexCheck=await checkCommand("codex");if(codexCheck.exists)results.push({name:"Codex CLI",status:"pass",message:codexCheck.version||""});else results.push({name:"Codex CLI",status:"warn",suggestion:"Install via OpenAI account; codex is optional unless using --provider codex"});let requiredForSpawn=["genie","bun","node","npm","git","claude","codex"];for(let bin of requiredForSpawn){let interactivePath=await resolveBinaryInteractive(bin),nonInteractivePath=await resolveBinaryNonInteractive(bin);if(interactivePath&&nonInteractivePath)results.push({name:`Non-interactive PATH: ${bin}`,status:"pass",message:nonInteractivePath});else if(interactivePath&&!nonInteractivePath)results.push({name:`Non-interactive PATH: ${bin}`,status:"warn",message:"interactive-only",suggestion:`Move PATH export from ~/.bashrc to ~/.profile so spawn-scripts can resolve ${bin}. (Or use a stable symlink in ~/.local/bin.)`});else if(!interactivePath&&bin!=="codex"){if(bin==="genie"||bin==="node"||bin==="npm"||bin==="git")results.push({name:`Non-interactive PATH: ${bin}`,status:"warn",message:"not in non-interactive PATH",suggestion:`Add ${bin} to ~/.profile (not just ~/.bashrc). Some flows (e.g. genie update) shell out to bare '${bin}' from non-interactive subprocesses.`})}}return results}async function resolveBinaryInteractive(bin){try{return(await $3`command -v ${bin}`.quiet().text()).trim()||null}catch{return null}}async function resolveBinaryNonInteractive(bin){try{return(await $3`sh -c "command -v ${bin}"`.quiet().text()).trim()||null}catch{return null}}async function checkConfiguration(){let results=[];if(genieConfigExists())results.push({name:"Genie config exists",status:"pass",message:contractClaudePath(getGenieConfigPath())});else results.push({name:"Genie config exists",status:"warn",message:"not found",suggestion:"Run: genie setup"});if(isSetupComplete())results.push({name:"Setup complete",status:"pass"});else results.push({name:"Setup complete",status:"warn",message:"not completed",suggestion:"Run: genie setup"});let claudeSettingsPath=getClaudeSettingsPath();if(existsSync20(claudeSettingsPath))results.push({name:"Claude settings exists",status:"pass",message:contractClaudePath(claudeSettingsPath)});else results.push({name:"Claude settings exists",status:"warn",message:"not found",suggestion:"Claude Code creates this on first run"});return results}async function checkTmux(){let results=[];try{if((await $3`${tmuxBin()} -L genie list-sessions 2>/dev/null`.quiet()).exitCode===0)results.push({name:"Server running",status:"pass"});else return results.push({name:"Server running",status:"warn",message:"no sessions",suggestion:"Start with: tmux new-session -d -s genie"}),results}catch{return results.push({name:"Server running",status:"warn",message:"could not check"}),results}let sessionName=(await loadGenieConfig()).session.name;try{if((await $3`${tmuxBin()} -L genie has-session -t ${`=${sessionName}`} 2>/dev/null`.quiet()).exitCode===0)results.push({name:`Session '${sessionName}' exists`,status:"pass"});else results.push({name:`Session '${sessionName}' exists`,status:"warn",suggestion:`Start with: tmux new-session -d -s ${sessionName}`})}catch{results.push({name:`Session '${sessionName}' exists`,status:"warn",message:"could not check"})}return results}async function checkWorkerProfiles(){let results=[];if(!genieConfigExists())return results.push({name:"Worker profiles",status:"warn",message:"no genie config",suggestion:"Run: genie setup"}),results;let config=await loadGenieConfig(),profiles=config.workerProfiles;if(!profiles||Object.keys(profiles).length===0)return results.push({name:"Worker profiles",status:"pass",message:"none configured (using defaults)"}),results;let totalProfiles=Object.keys(profiles).length;results.push({name:"Profiles configured",status:"pass",message:`${totalProfiles} profile${totalProfiles===1?"":"s"}`});for(let name of Object.keys(profiles))results.push({name:`Profile '${name}'`,status:"pass",message:"claude (direct)"});if(config.defaultWorkerProfile)if(profiles[config.defaultWorkerProfile])results.push({name:"Default profile",status:"pass",message:config.defaultWorkerProfile});else results.push({name:"Default profile",status:"warn",message:`'${config.defaultWorkerProfile}' not found`,suggestion:"Run: genie profiles default <profile>"});return results}async function checkBridge(){let results=[];try{let{getBridgeStatus:getBridgeStatus2,removeBridgePidfile:removeBridgePidfile2}=await Promise.resolve().then(() => (init_bridge_status(),exports_bridge_status)),res=await getBridgeStatus2(void 0,{});if(res.state==="stopped")return results.push({name:"Bridge",status:"warn",message:"stopped (no pidfile)",suggestion:"Start the bridge with: genie serve"}),results;if(res.state==="stale"){if(res.pidfile)removeBridgePidfile2();return results.push({name:"Bridge",status:"fail",message:`stale: ${res.detail}`,suggestion:"Restart the bridge with: genie serve restart"}),results}let{pong,pidfile}=res;if(!pong||!pidfile)return results.push({name:"Bridge",status:"warn",message:"running state missing pong/pidfile metadata"}),results;let uptimeSec=Math.round(pong.uptimeMs/1000);results.push({name:"Bridge running",status:"pass",message:`running (pid ${pong.pid}, uptime ${uptimeSec}s)`}),results.push({name:"NATS ping",status:"pass",message:`pong in ${res.latencyMs??0}ms (${pidfile.natsUrl})`}),results.push({name:"Subjects",status:"pass",message:pong.subjects.join(", ")})}catch(err){let detail=err instanceof Error?err.message:String(err);results.push({name:"Bridge module",status:"warn",message:`could not probe bridge: ${detail}`})}return results}function checkGenieAgentTemplate(workspaceRoot){let root=workspaceRoot??findWorkspace()?.root;if(!root)return[];let genieDir=join25(root,"agents","genie");if(!existsSync20(genieDir))return[];let agentsMd=join25(genieDir,"AGENTS.md"),agentYaml=join25(genieDir,"agent.yaml"),issues=[];if(existsSync20(agentsMd))try{if(readFileSync13(agentsMd,"utf-8").includes(STALE_GENIE_AGENTS_MD_MARKER))issues.push("AGENTS.md uses generic placeholder template")}catch{}if(existsSync20(agentYaml))try{let text=readFileSync13(agentYaml,"utf-8");if(!STALE_GENIE_AGENT_YAML_MISSING_MODEL_REGEX.test(text))issues.push("agent.yaml missing model field (TUI falls back to gray)")}catch{}if(issues.length===0)return[{name:"agents/genie scaffold up to date",status:"pass"}];return[{name:"agents/genie stale scaffold",status:"warn",message:issues.join("; "),suggestion:"Run: genie doctor --fix (re-emits genie specialist templates, preserves user edits)"}]}function findBundledTmuxConfigDir(){try{let moduleDir=dirname8(fileURLToPath3(import.meta.url));for(let i2=0;i2<6;i2+=1){let candidate=resolve3(moduleDir,"../".repeat(i2+1),"scripts","tmux");if(existsSync20(join25(candidate,"tui-tmux.conf"))&&existsSync20(join25(candidate,"genie.tmux.conf")))return candidate}}catch{}return null}function checkTmuxConfigs(){if(!findBundledTmuxConfigDir())return[{name:"tmux configs",status:"pass",message:"bundled configs unavailable (skipped)"}];let home=join25(homedir20(),".genie"),stale=[],expectedSnippet="unbind -n MouseDown3Pane";for(let file of["tui-tmux.conf","tmux.conf"]){let installedPath=join25(home,file);if(!existsSync20(installedPath))continue;try{if(!readFileSync13(installedPath,"utf-8").includes(expectedSnippet))stale.push(file)}catch{stale.push(file)}}if(stale.length===0)return[{name:"~/.genie tmux configs up to date",status:"pass"}];return[{name:"~/.genie tmux configs stale",status:"warn",message:`missing right-click unbind in: ${stale.join(", ")}`,suggestion:"Run: genie doctor --fix (refreshes ~/.genie tmux configs from bundled scripts/tmux/)"}]}function isAgentDirectory(path2){try{return statSync6(path2).isDirectory()}catch{return!1}}function hasLegacyFrontmatter(agentDir){let yamlPath=join25(agentDir,"agent.yaml"),agentsMdPath=join25(agentDir,"AGENTS.md");if(!existsSync20(yamlPath)||!existsSync20(agentsMdPath))return!1;try{return readFileSync13(agentsMdPath,"utf-8").slice(0,4).startsWith("---")}catch{return!1}}function checkLegacyAgentFrontmatter(workspaceRoot){let results=[],root=workspaceRoot??findWorkspace()?.root;if(!root)return[];let agentsDir=join25(root,"agents");if(!existsSync20(agentsDir))return[];let entries;try{entries=readdirSync7(agentsDir)}catch{return[]}for(let name of entries){let agentDir=join25(agentsDir,name);if(!isAgentDirectory(agentDir))continue;if(!hasLegacyFrontmatter(agentDir))continue;results.push({name:`agents/${name}/AGENTS.md`,status:"warn",message:"legacy frontmatter detected (ignored by sync)",suggestion:`Move config into agents/${name}/agent.yaml \u2014 AGENTS.md is prompt-only post-migration.`})}if(results.length===0)results.push({name:"No legacy frontmatter in agents/*/AGENTS.md",status:"pass"});return results}async function checkPgserveCanonical(){let results=[],canonicalPort=null;try{let out=execFileSync("pgserve",["port"],{encoding:"utf8",timeout:3000,stdio:["ignore","pipe","ignore"]}),parsed=Number.parseInt(out.trim(),10);if(Number.isFinite(parsed)&&parsed>0&&parsed<=65535)canonicalPort=parsed}catch{}if(canonicalPort===null)return results.push({name:"pgserve binary",status:"warn",message:"not on PATH (or `pgserve port` failed)",suggestion:"Install canonical pgserve: bun add -g pgserve@^2.1.0 (then run `pgserve install` to register under pm2)"}),results;results.push({name:"pgserve binary",status:"pass",message:`canonical port ${canonicalPort}`});try{let status=execFileSync("pgserve",["status","--json"],{encoding:"utf8",timeout:3000,stdio:["ignore","pipe","ignore"]}),parsed=JSON.parse(status);if(parsed.installed===!0&&parsed.status==="online")results.push({name:"pgserve under pm2",status:"pass",message:`online \u2014 shared backbone for genie-serve + omni-api on :${canonicalPort}`});else if(parsed.installed===!0)if(await isAvailable())results.push({name:"pgserve under pm2",status:"pass",message:`pm2 entry status=${parsed.status??"unknown"} but runtime PG reachable (consumer-only)`,suggestion:"Optional cleanup: pm2 delete pgserve (the embedded backbone is the source of truth)"});else results.push({name:"pgserve under pm2",status:"warn",message:`registered but status=${parsed.status??"unknown"}; runtime PG also unreachable`,suggestion:"Recover with: pm2 restart pgserve (logs: ~/.pgserve/logs/)"});else results.push({name:"pgserve under pm2",status:"warn",message:"binary present but not registered under pm2",suggestion:"Register canonical pgserve: pgserve install"})}catch{results.push({name:"pgserve under pm2",status:"warn",message:"`pgserve status` failed (pm2 unreachable?)",suggestion:"Verify pm2: pm2 list | Re-register: pgserve install"})}return results}function runCheckSection(label,results,counts){printSectionHeader(label);for(let result2 of results){if(printCheckResult(result2),result2.status==="fail")counts.errors=!0;if(result2.status==="warn")counts.warnings=!0}}async function doctorCommand(options){if(options?.fix){await doctorFix();return}if(options?.fixTeamOrphans){await runFixTeamOrphans({dryRun:Boolean(options.dryRun),json:Boolean(options.json)});return}if(options?.observability){await runObservabilityCheck(Boolean(options.json));return}if(options?.perf){let{runPerfCheck:runPerfCheck2}=await Promise.resolve().then(() => (init_perf_check(),exports_perf_check));await runPerfCheck2(Boolean(options.json));return}console.log(),console.log("\x1B[1mGenie Doctor\x1B[0m"),console.log(`\x1B[2m${"\u2500".repeat(40)}\x1B[0m`);let counts={errors:!1,warnings:!1};if(runCheckSection("Prerequisites",await checkPrerequisites(),counts),runCheckSection("Installer Resolution",await collectInstallerResolution(),counts),runCheckSection("Configuration",await checkConfiguration(),counts),runCheckSection("Tmux",await checkTmux(),counts),runCheckSection("Tmux Configs",checkTmuxConfigs(),counts),runCheckSection("Worker Profiles",await checkWorkerProfiles(),counts),runCheckSection("Pgserve (canonical backbone)",await checkPgserveCanonical(),counts),runCheckSection("Omni Bridge",await checkBridge(),counts),runCheckSection("Agent Config",checkLegacyAgentFrontmatter(),counts),runCheckSection("Genie Specialist",checkGenieAgentTemplate(),counts),printDoctorSummary(counts),counts.errors)process.exit(1)}function printObservabilityReport(report){if(console.log(),console.log("\x1B[1mObservability Health\x1B[0m"),console.log(`\x1B[2m${"\u2500".repeat(40)}\x1B[0m`),console.log(` partition_health: ${report.partition_health}`),console.log(` partition_count: ${report.partition_count}`),console.log(` next_rotation_at: ${report.next_rotation_at??"n/a"}`),console.log(` oldest_partition: ${report.oldest_partition??"n/a"}`),console.log(` newest_partition: ${report.newest_partition??"n/a"}`),console.log(` GENIE_WIDE_EMIT: ${report.wide_emit_flag}`),report.message)console.log(` note: ${report.message}`);console.log()}async function runObservabilityCheck(json2){let report=await collectObservabilityHealth();if(json2)console.log(JSON.stringify(report,null,2));else printObservabilityReport(report);if(report.partition_health==="fail")process.exit(1)}async function runFixTeamOrphans(opts){let{archiveOrphanTeamConfigs:archiveOrphanTeamConfigs2}=await Promise.resolve().then(() => (init_archive_orphan_team_configs(),exports_archive_orphan_team_configs)),decisions=archiveOrphanTeamConfigs2({dryRun:opts.dryRun});if(opts.json){console.log(JSON.stringify({dryRun:opts.dryRun,decisions},null,2));return}if(decisions.length===0){console.log(" no team config dirs found \u2014 nothing to do");return}for(let d of decisions){let tag=d.classification==="stale"?opts.dryRun?"WOULD ARCHIVE":"ARCHIVED":d.classification.toUpperCase(),tail=d.archivedTo?` \u2192 ${d.archivedTo}`:"";console.log(` [${tag}] ${d.team} \u2014 ${d.reason}${tail}`)}let stale=decisions.filter((d)=>d.classification==="stale").length,active=decisions.filter((d)=>d.classification==="active").length;console.log(`
985
+ `;if(rows.length===0)return{driftPct:null,detail:"no prior backfill row \u2014 first run will seed"};let row=rows[0];if(row.total_bytes<=0)return{driftPct:0,detail:"no JSONL bytes discovered yet"};let pct=Math.max(0,row.total_bytes-row.processed_bytes)/row.total_bytes*100,display=pct.toFixed(1);return{driftPct:pct,detail:`processed ${row.processed_bytes}/${row.total_bytes} bytes (drift ${display}%)`}}catch(err){return{driftPct:null,detail:`drift probe failed: ${err.message}`}}}async function defaultRunBackfillSync(){if(!await isAvailable())return{ranSync:!1,driftPct:null,detail:"pg unavailable \u2014 backfill skipped"};return(async()=>{try{let sql=await getConnection(),{startBackfill:startBackfill2}=await Promise.resolve().then(() => (init_session_backfill(),exports_session_backfill));await startBackfill2(sql)}catch{}})(),{ranSync:!0,driftPct:null,detail:"background convergence kicked \u2014 `genie doctor --fix` to wait"}}async function defaultRunBackfillBlocking(){if(!await isAvailable())return{ranSync:!1,driftPct:null,detail:"pg unavailable \u2014 backfill skipped"};let sql=await getConnection(),{startBackfill:startBackfill2}=await Promise.resolve().then(() => (init_session_backfill(),exports_session_backfill));await startBackfill2(sql);let after=await defaultMeasureBackfillDrift();return{ranSync:!0,driftPct:after.driftPct,detail:after.detail}}async function defaultListOrphanedZombies(){try{let{listExhaustedZombies:listExhaustedZombies2}=await Promise.resolve().then(() => (init_agent_registry(),exports_agent_registry));return await listExhaustedZombies2()}catch{return[]}}function safeIsDirectory(path2){try{return statSync5(path2).isDirectory()}catch{return!1}}function summarizeInboxes(inboxesDir2){let inboxFiles=[];try{inboxFiles=readdirSync6(inboxesDir2).filter((f)=>f.endsWith(".json"))}catch{return{newestMs:null,hasContent:!1}}let newestMs=null,hasContent=!1;for(let f of inboxFiles)try{let st=statSync5(join24(inboxesDir2,f));if(newestMs===null||st.mtimeMs>newestMs)newestMs=st.mtimeMs;if(st.size>2)hasContent=!0}catch{}return{newestMs,hasContent}}function classifyTeamDir2(name,base,now){let dir=join24(base,name);if(!safeIsDirectory(dir))return null;if(existsSync19(join24(dir,"config.json")))return null;let inboxesDir2=join24(dir,"inboxes");if(!safeIsDirectory(inboxesDir2))return null;let{newestMs,hasContent}=summarizeInboxes(inboxesDir2),orphan={teamName:name,path:dir,newestInboxMs:newestMs,hasContent},active=hasContent&&newestMs!==null&&now-newestMs<ORPHAN_FRESH_WINDOW_MS;return{orphan,active}}function defaultScanTeamConfigOrphans(){let base=teamsBaseDir3(),result2={active:[],stale:[]};if(!existsSync19(base))return result2;let now=Date.now();for(let name of readdirSync6(base)){if(name.startsWith(".")||name==="_archive")continue;let classified=classifyTeamDir2(name,base,now);if(!classified)continue;(classified.active?result2.active:result2.stale).push(classified.orphan)}return result2}function defaultArchiveStaleTeamConfigs(orphans){if(orphans.length===0)return[];let archiveRoot=join24(teamsBaseDir3(),"_archive");mkdirSync9(archiveRoot,{recursive:!0});let ts3=new Date().toISOString().replace(/[:.]/g,"-"),archived=[];for(let o of orphans){let dest=join24(archiveRoot,`${o.teamName}-${ts3}`);try{renameSync4(o.path,dest),archived.push(dest)}catch{}}return archived}async function defaultRecordAudit(eventType,name,details){await recordAuditEvent("command","serve_start",eventType,"serve",{precondition:name,...details})}async function checkPartition(health,autoFix,deps){if(health.partition_health==="ok"||health.partition_health==="warn")return{name:"partition",status:"ok",detail:health.next_rotation_at?`next rotation: ${health.next_rotation_at}`:void 0};if(health.partition_health==="unknown")return{name:"partition",status:"skipped",detail:"pg unavailable \u2014 skipping partition probe"};if(!autoFix)return{name:"partition",status:"refused",detail:"today's partition is missing or rotation is overdue",fixCommand:"genie doctor --observability # then re-run; or `genie serve start` (without --no-fix)"};let result2=await deps.runPartitionMaintenance();return{name:"partition",status:"fixed",detail:`created/present ${result2.createdOrPresent}, dropped ${result2.dropped}; next rotation ${result2.nextRotationAt??"unknown"}`}}async function checkWatchdog(health,autoFix,deps){if(deps.platform!=="linux")return{name:"watchdog",status:"skipped",detail:"watchdog install is Linux/systemd only"};if(process.env.GENIE_WATCHDOG_SKIP==="1")return{name:"watchdog",status:"skipped",detail:"GENIE_WATCHDOG_SKIP=1"};if(health.watchdog==="ok")return{name:"watchdog",status:"ok"};if(!process.env.GENIE_WATCHDOG_INSTALL_CMD&&!resolveWatchdogCliPath())return{name:"watchdog",status:"skipped",detail:"watchdog optional in this install \u2014 set GENIE_WATCHDOG_SKIP=1 to silence, or run from source repo to enable"};if(!autoFix)return{name:"watchdog",status:"refused",detail:health.watchdog_detail??"watchdog units missing",fixCommand:"sudo bun run packages/watchdog/src/cli.ts install"};try{let result2=await deps.installWatchdog();return{name:"watchdog",status:"fixed",detail:`wrote ${result2.filesWritten.length}, skipped ${result2.filesSkipped.length}`}}catch(err){return{name:"watchdog",status:"refused",detail:`auto-install failed: ${err.message}`,fixCommand:"sudo bun run packages/watchdog/src/cli.ts install"}}}async function checkBackfill(autoFix,deps){let drift=await deps.measureBackfillDrift();if(drift.driftPct===null)return{name:"backfill",status:"skipped",detail:drift.detail};if(drift.driftPct<BACKFILL_DRIFT_THRESHOLD_PCT)return{name:"backfill",status:"ok",detail:drift.detail};if(!autoFix)return{name:"backfill",status:"refused",detail:drift.detail,fixCommand:`genie sessions sync # drift ${drift.driftPct.toFixed(1)}% > ${BACKFILL_DRIFT_THRESHOLD_PCT}%`};return{name:"backfill",status:"fixed",detail:(await deps.runBackfillSync()).detail}}async function checkDeadPaneZombies(deps){let orphans=await deps.listOrphanedZombies();if(orphans.length===0)return{name:"dead_pane_zombies",status:"ok"};return{name:"dead_pane_zombies",status:"refused",detail:`${orphans.length} exhausted zombie(s) past TTL; visible in \`genie status\``,fixCommand:"genie prune --zombies # archive eligible rows"}}function checkTeamConfigOrphans(autoFix,deps){let scan=deps.scanTeamConfigOrphans();if(scan.active.length===0&&scan.stale.length===0)return{name:"team_config_orphans",status:"ok"};if(!autoFix){let summary=`active=${scan.active.length} stale=${scan.stale.length}`,firstActive=scan.active[0]?.teamName;return{name:"team_config_orphans",status:"refused",detail:summary,fixCommand:firstActive?`genie team repair ${firstActive} # active orphan; stale dirs archive on auto-fix`:"genie serve start # auto-fix archives stale orphans"}}let archivedPaths=deps.archiveStaleTeamConfigs(scan.stale);if(scan.active.length>0)return{name:"team_config_orphans",status:"refused",detail:`archived ${archivedPaths.length} stale; ${scan.active.length} active orphan(s) need repair`,fixCommand:`genie team repair ${scan.active[0].teamName}`};return{name:"team_config_orphans",status:"fixed",detail:`archived ${archivedPaths.length} stale orphan(s)`}}function bindDefaults(deps){return{collectHealth:deps?.collectHealth??collectObservabilityHealth,runPartitionMaintenance:deps?.runPartitionMaintenance??defaultRunPartitionMaintenance,installWatchdog:deps?.installWatchdog??defaultInstallWatchdog,runBackfillSync:deps?.runBackfillSync??defaultRunBackfillSync,measureBackfillDrift:deps?.measureBackfillDrift??defaultMeasureBackfillDrift,listOrphanedZombies:deps?.listOrphanedZombies??defaultListOrphanedZombies,scanTeamConfigOrphans:deps?.scanTeamConfigOrphans??defaultScanTeamConfigOrphans,archiveStaleTeamConfigs:deps?.archiveStaleTeamConfigs??defaultArchiveStaleTeamConfigs,platform:deps?.platform??process.platform,recordAudit:deps?.recordAudit??defaultRecordAudit,log:deps?.log??((line)=>console.log(line))}}async function ensureServeReady(opts){let deps=bindDefaults(opts.deps),health=await deps.collectHealth(),results=[];results.push(await checkPartition(health,opts.autoFix,deps)),results.push(await checkBackfill(opts.autoFix,deps)),results.push(await checkDeadPaneZombies(deps)),await emitAuditEvents(results,deps);let ok=results.every((r)=>r.status==="ok"||r.status==="fixed"||r.status==="skipped");return printReport(results,deps.log),{ok,results}}function formatDuration(ms){if(ms<1000)return`${ms}ms`;return`${(ms/1000).toFixed(1)}s`}function logMaintenanceStepStart(log,silent,label){if(!silent)log(` ${label}...`);return Date.now()}function logMaintenanceStepDone(log,silent,label,startedAt){if(!silent)log(` done ${label} (${formatDuration(Date.now()-startedAt)})`)}async function runDoctorMaintenance(opts={}){let rawRunBackfillSync=opts.deps?.runBackfillSync??defaultRunBackfillBlocking,deps=bindDefaults({...opts.deps,runBackfillSync:defaultRunBackfillBlocking,log:opts.silent?()=>{}:opts.deps?.log});deps.runBackfillSync=async()=>{let startedAt2=logMaintenanceStepStart(deps.log,opts.silent,"Running session backfill convergence (can take minutes on large transcript history)");try{return await rawRunBackfillSync()}finally{logMaintenanceStepDone(deps.log,opts.silent,"session backfill convergence",startedAt2)}};let startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Collecting observability health"),health=await deps.collectHealth();logMaintenanceStepDone(deps.log,opts.silent,"observability health",startedAt);let results=[];startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking runtime event partitions"),results.push(await checkPartition(health,!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"runtime event partitions",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking watchdog install"),results.push(await checkWatchdog(health,!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"watchdog install",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking session backfill drift"),results.push(await checkBackfill(!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"session backfill drift",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking exhausted zombie rows"),results.push(await checkDeadPaneZombies(deps)),logMaintenanceStepDone(deps.log,opts.silent,"exhausted zombie rows",startedAt),startedAt=logMaintenanceStepStart(deps.log,opts.silent,"Checking Claude team config orphans"),results.push(checkTeamConfigOrphans(!0,deps)),logMaintenanceStepDone(deps.log,opts.silent,"Claude team config orphans",startedAt),await emitAuditEvents(results,deps);let ok=results.every((r)=>r.status==="ok"||r.status==="fixed"||r.status==="skipped");return printReport(results,deps.log),{ok,results}}async function emitAuditEvents(results,deps){for(let result2 of results)if(result2.status==="fixed")await deps.recordAudit("serve.precondition.fixed",result2.name,{detail:result2.detail??null}).catch(()=>{});else if(result2.status==="refused")await deps.recordAudit("serve.precondition.refused",result2.name,{detail:result2.detail??null,fix_command:result2.fixCommand??null}).catch(()=>{})}function printReport(results,log){log(" Preconditions:");for(let r of results){let tag=statusTag(r.status),suffix=r.detail?` \u2014 ${r.detail}`:"";if(log(` ${tag} ${r.name}${suffix}`),r.status==="refused"&&r.fixCommand)log(` \u2192 ${r.fixCommand}`)}}function statusTag(status){switch(status){case"ok":return"[ok]";case"fixed":return"[fix]";case"refused":return"[!!]";case"skipped":return"[--]"}}var BACKFILL_DRIFT_THRESHOLD_PCT=5,ORPHAN_FRESH_WINDOW_MS=86400000;var init_ensure_ready=__esm(()=>{init_observability_health();init_audit();init_db()});var exports_doctor={};__export(exports_doctor,{runPostUpdateMaintenance:()=>runPostUpdateMaintenance,findStaleGenieCandidates:()=>findStaleGenieCandidates,findBundledTmuxConfigDir:()=>findBundledTmuxConfigDir,doctorCommand:()=>doctorCommand,checkTmuxConfigs:()=>checkTmuxConfigs,checkLegacyAgentFrontmatter:()=>checkLegacyAgentFrontmatter,checkGenieAgentTemplate:()=>checkGenieAgentTemplate});import{execFileSync}from"child_process";import{copyFileSync as copyFileSync2,existsSync as existsSync20,mkdirSync as mkdirSync10,readFileSync as readFileSync13,readdirSync as readdirSync7,statSync as statSync6,unlinkSync as unlinkSync6,writeFileSync as writeFileSync7}from"fs";import{homedir as homedir20}from"os";import{dirname as dirname8,join as join25,resolve as resolve3}from"path";import{fileURLToPath as fileURLToPath3}from"url";var{$:$3}=globalThis.Bun;function printSectionHeader(title){console.log(),console.log(`\x1B[1m${title}:\x1B[0m`)}function printCheckResult(result2){let icon={pass:"\x1B[32m\u2713\x1B[0m",fail:"\x1B[31m\u2717\x1B[0m",warn:"\x1B[33m!\x1B[0m"}[result2.status],message=result2.message?` ${result2.message}`:"";if(console.log(` ${icon} ${result2.name}${message}`),result2.suggestion)console.log(` \x1B[2m${result2.suggestion}\x1B[0m`)}async function checkPrerequisites(){let results=[];for(let spec of PREREQ_BINARIES)results.push(await checkBinaryPrereq(spec));let requiredForSpawn=["genie","bun","node","npm","git","claude","codex"];for(let bin of requiredForSpawn){let result2=await checkNonInteractivePath(bin);if(result2)results.push(result2)}return results}async function checkBinaryPrereq(spec){let check=await checkCommand(spec.cmd);if(check.exists)return{name:spec.displayName,status:"pass",message:check.version||""};return{name:spec.displayName,status:spec.missingStatus,suggestion:spec.missingSuggestion}}async function checkNonInteractivePath(bin){let interactivePath=await resolveBinaryInteractive(bin),nonInteractivePath=await resolveBinaryNonInteractive(bin);if(interactivePath&&nonInteractivePath)return{name:`Non-interactive PATH: ${bin}`,status:"pass",message:nonInteractivePath};if(interactivePath&&!nonInteractivePath)return{name:`Non-interactive PATH: ${bin}`,status:"warn",message:"interactive-only",suggestion:`Move PATH export from ~/.bashrc to ~/.profile so spawn-scripts can resolve ${bin}. (Or use a stable symlink in ~/.local/bin.)`};if(!interactivePath&&(bin==="genie"||bin==="node"||bin==="npm"||bin==="git"))return{name:`Non-interactive PATH: ${bin}`,status:"warn",message:"not in non-interactive PATH",suggestion:`Add ${bin} to ~/.profile (not just ~/.bashrc). Some flows (e.g. genie update) shell out to bare '${bin}' from non-interactive subprocesses.`};return null}async function resolveBinaryInteractive(bin){try{return(await $3`command -v ${bin}`.quiet().text()).trim()||null}catch{return null}}async function resolveBinaryNonInteractive(bin){try{return(await $3`sh -c "command -v ${bin}"`.quiet().text()).trim()||null}catch{return null}}async function checkConfiguration(){let results=[];if(genieConfigExists())results.push({name:"Genie config exists",status:"pass",message:contractClaudePath(getGenieConfigPath())});else results.push({name:"Genie config exists",status:"warn",message:"not found",suggestion:"Run: genie setup"});if(isSetupComplete())results.push({name:"Setup complete",status:"pass"});else results.push({name:"Setup complete",status:"warn",message:"not completed",suggestion:"Run: genie setup"});let claudeSettingsPath=getClaudeSettingsPath();if(existsSync20(claudeSettingsPath))results.push({name:"Claude settings exists",status:"pass",message:contractClaudePath(claudeSettingsPath)});else results.push({name:"Claude settings exists",status:"warn",message:"not found",suggestion:"Claude Code creates this on first run"});return results}async function checkTmux(){let results=[];try{if((await $3`${tmuxBin()} -L genie list-sessions 2>/dev/null`.quiet()).exitCode===0)results.push({name:"Server running",status:"pass"});else return results.push({name:"Server running",status:"warn",message:"no sessions",suggestion:"Start with: tmux new-session -d -s genie"}),results}catch{return results.push({name:"Server running",status:"warn",message:"could not check"}),results}let sessionName=(await loadGenieConfig()).session.name;try{if((await $3`${tmuxBin()} -L genie has-session -t ${`=${sessionName}`} 2>/dev/null`.quiet()).exitCode===0)results.push({name:`Session '${sessionName}' exists`,status:"pass"});else results.push({name:`Session '${sessionName}' exists`,status:"warn",suggestion:`Start with: tmux new-session -d -s ${sessionName}`})}catch{results.push({name:`Session '${sessionName}' exists`,status:"warn",message:"could not check"})}return results}async function checkWorkerProfiles(){let results=[];if(!genieConfigExists())return results.push({name:"Worker profiles",status:"warn",message:"no genie config",suggestion:"Run: genie setup"}),results;let config=await loadGenieConfig(),profiles=config.workerProfiles;if(!profiles||Object.keys(profiles).length===0)return results.push({name:"Worker profiles",status:"pass",message:"none configured (using defaults)"}),results;let totalProfiles=Object.keys(profiles).length;results.push({name:"Profiles configured",status:"pass",message:`${totalProfiles} profile${totalProfiles===1?"":"s"}`});for(let name of Object.keys(profiles))results.push({name:`Profile '${name}'`,status:"pass",message:"claude (direct)"});if(config.defaultWorkerProfile)if(profiles[config.defaultWorkerProfile])results.push({name:"Default profile",status:"pass",message:config.defaultWorkerProfile});else results.push({name:"Default profile",status:"warn",message:`'${config.defaultWorkerProfile}' not found`,suggestion:"Run: genie profiles default <profile>"});return results}async function checkBridge(){let results=[];try{let{getBridgeStatus:getBridgeStatus2,removeBridgePidfile:removeBridgePidfile2}=await Promise.resolve().then(() => (init_bridge_status(),exports_bridge_status)),res=await getBridgeStatus2(void 0,{});if(res.state==="stopped")return results.push({name:"Bridge",status:"warn",message:"stopped (no pidfile)",suggestion:"Start the bridge with: genie serve"}),results;if(res.state==="stale"){if(res.pidfile)removeBridgePidfile2();return results.push({name:"Bridge",status:"fail",message:`stale: ${res.detail}`,suggestion:"Restart the bridge with: genie serve restart"}),results}let{pong,pidfile}=res;if(!pong||!pidfile)return results.push({name:"Bridge",status:"warn",message:"running state missing pong/pidfile metadata"}),results;let uptimeSec=Math.round(pong.uptimeMs/1000);results.push({name:"Bridge running",status:"pass",message:`running (pid ${pong.pid}, uptime ${uptimeSec}s)`}),results.push({name:"NATS ping",status:"pass",message:`pong in ${res.latencyMs??0}ms (${pidfile.natsUrl})`}),results.push({name:"Subjects",status:"pass",message:pong.subjects.join(", ")})}catch(err){let detail=err instanceof Error?err.message:String(err);results.push({name:"Bridge module",status:"warn",message:`could not probe bridge: ${detail}`})}return results}function checkGenieAgentTemplate(workspaceRoot){let root=workspaceRoot??findWorkspace()?.root;if(!root)return[];let genieDir=join25(root,"agents","genie");if(!existsSync20(genieDir))return[];let agentsMd=join25(genieDir,"AGENTS.md"),agentYaml=join25(genieDir,"agent.yaml"),issues=[];if(existsSync20(agentsMd))try{if(readFileSync13(agentsMd,"utf-8").includes(STALE_GENIE_AGENTS_MD_MARKER))issues.push("AGENTS.md uses generic placeholder template")}catch{}if(existsSync20(agentYaml))try{let text=readFileSync13(agentYaml,"utf-8");if(!STALE_GENIE_AGENT_YAML_MISSING_MODEL_REGEX.test(text))issues.push("agent.yaml missing model field (TUI falls back to gray)")}catch{}if(issues.length===0)return[{name:"agents/genie scaffold up to date",status:"pass"}];return[{name:"agents/genie stale scaffold",status:"warn",message:issues.join("; "),suggestion:"Run: genie doctor --fix (re-emits genie specialist templates, preserves user edits)"}]}function findBundledTmuxConfigDir(){try{let moduleDir=dirname8(fileURLToPath3(import.meta.url));for(let i2=0;i2<6;i2+=1){let candidate=resolve3(moduleDir,"../".repeat(i2+1),"scripts","tmux");if(existsSync20(join25(candidate,"tui-tmux.conf"))&&existsSync20(join25(candidate,"genie.tmux.conf")))return candidate}}catch{}return null}function checkTmuxConfigs(){if(!findBundledTmuxConfigDir())return[{name:"tmux configs",status:"pass",message:"bundled configs unavailable (skipped)"}];let home=join25(homedir20(),".genie"),stale=[],expectedSnippet="unbind -n MouseDown3Pane";for(let file of["tui-tmux.conf","tmux.conf"]){let installedPath=join25(home,file);if(!existsSync20(installedPath))continue;try{if(!readFileSync13(installedPath,"utf-8").includes(expectedSnippet))stale.push(file)}catch{stale.push(file)}}if(stale.length===0)return[{name:"~/.genie tmux configs up to date",status:"pass"}];return[{name:"~/.genie tmux configs stale",status:"warn",message:`missing right-click unbind in: ${stale.join(", ")}`,suggestion:"Run: genie doctor --fix (refreshes ~/.genie tmux configs from bundled scripts/tmux/)"}]}function isAgentDirectory(path2){try{return statSync6(path2).isDirectory()}catch{return!1}}function hasLegacyFrontmatter(agentDir){let yamlPath=join25(agentDir,"agent.yaml"),agentsMdPath=join25(agentDir,"AGENTS.md");if(!existsSync20(yamlPath)||!existsSync20(agentsMdPath))return!1;try{return readFileSync13(agentsMdPath,"utf-8").slice(0,4).startsWith("---")}catch{return!1}}function checkLegacyAgentFrontmatter(workspaceRoot){let results=[],root=workspaceRoot??findWorkspace()?.root;if(!root)return[];let agentsDir=join25(root,"agents");if(!existsSync20(agentsDir))return[];let entries;try{entries=readdirSync7(agentsDir)}catch{return[]}for(let name of entries){let agentDir=join25(agentsDir,name);if(!isAgentDirectory(agentDir))continue;if(!hasLegacyFrontmatter(agentDir))continue;results.push({name:`agents/${name}/AGENTS.md`,status:"warn",message:"legacy frontmatter detected (ignored by sync)",suggestion:`Move config into agents/${name}/agent.yaml \u2014 AGENTS.md is prompt-only post-migration.`})}if(results.length===0)results.push({name:"No legacy frontmatter in agents/*/AGENTS.md",status:"pass"});return results}async function checkPgserveCanonical(){let results=[],canonicalPort=null;try{let out=execFileSync("pgserve",["port"],{encoding:"utf8",timeout:3000,stdio:["ignore","pipe","ignore"]}),parsed=Number.parseInt(out.trim(),10);if(Number.isFinite(parsed)&&parsed>0&&parsed<=65535)canonicalPort=parsed}catch{}if(canonicalPort===null)return results.push({name:"pgserve binary",status:"warn",message:"not on PATH (or `pgserve port` failed)",suggestion:"Install canonical pgserve: bun add -g pgserve@^2.1.0 (then run `pgserve install` to register under pm2)"}),results;results.push({name:"pgserve binary",status:"pass",message:`canonical port ${canonicalPort}`});try{let status=execFileSync("pgserve",["status","--json"],{encoding:"utf8",timeout:3000,stdio:["ignore","pipe","ignore"]}),parsed=JSON.parse(status);if(parsed.installed===!0&&parsed.status==="online")results.push({name:"pgserve under pm2",status:"pass",message:`online \u2014 shared backbone for genie-serve + omni-api on :${canonicalPort}`});else if(parsed.installed===!0)if(await isAvailable())results.push({name:"pgserve under pm2",status:"pass",message:`pm2 entry status=${parsed.status??"unknown"} but runtime PG reachable (consumer-only)`,suggestion:"Optional cleanup: pm2 delete pgserve (the embedded backbone is the source of truth)"});else results.push({name:"pgserve under pm2",status:"warn",message:`registered but status=${parsed.status??"unknown"}; runtime PG also unreachable`,suggestion:"Recover with: pm2 restart pgserve (logs: ~/.pgserve/logs/)"});else results.push({name:"pgserve under pm2",status:"warn",message:"binary present but not registered under pm2",suggestion:"Register canonical pgserve: pgserve install"})}catch{results.push({name:"pgserve under pm2",status:"warn",message:"`pgserve status` failed (pm2 unreachable?)",suggestion:"Verify pm2: pm2 list | Re-register: pgserve install"})}return results}function runCheckSection(label,results,counts){printSectionHeader(label);for(let result2 of results){if(printCheckResult(result2),result2.status==="fail")counts.errors=!0;if(result2.status==="warn")counts.warnings=!0}}async function doctorCommand(options){if(options?.fix){await doctorFix();return}if(options?.fixTeamOrphans){await runFixTeamOrphans({dryRun:Boolean(options.dryRun),json:Boolean(options.json)});return}if(options?.observability){await runObservabilityCheck(Boolean(options.json));return}if(options?.perf){let{runPerfCheck:runPerfCheck2}=await Promise.resolve().then(() => (init_perf_check(),exports_perf_check));await runPerfCheck2(Boolean(options.json));return}console.log(),console.log("\x1B[1mGenie Doctor\x1B[0m"),console.log(`\x1B[2m${"\u2500".repeat(40)}\x1B[0m`);let counts={errors:!1,warnings:!1};if(runCheckSection("Prerequisites",await checkPrerequisites(),counts),runCheckSection("Installer Resolution",await collectInstallerResolution(),counts),runCheckSection("Configuration",await checkConfiguration(),counts),runCheckSection("Tmux",await checkTmux(),counts),runCheckSection("Tmux Configs",checkTmuxConfigs(),counts),runCheckSection("Worker Profiles",await checkWorkerProfiles(),counts),runCheckSection("Pgserve (canonical backbone)",await checkPgserveCanonical(),counts),runCheckSection("Omni Bridge",await checkBridge(),counts),runCheckSection("Agent Config",checkLegacyAgentFrontmatter(),counts),runCheckSection("Genie Specialist",checkGenieAgentTemplate(),counts),printDoctorSummary(counts),counts.errors)process.exit(1)}function printObservabilityReport(report){if(console.log(),console.log("\x1B[1mObservability Health\x1B[0m"),console.log(`\x1B[2m${"\u2500".repeat(40)}\x1B[0m`),console.log(` partition_health: ${report.partition_health}`),console.log(` partition_count: ${report.partition_count}`),console.log(` next_rotation_at: ${report.next_rotation_at??"n/a"}`),console.log(` oldest_partition: ${report.oldest_partition??"n/a"}`),console.log(` newest_partition: ${report.newest_partition??"n/a"}`),console.log(` GENIE_WIDE_EMIT: ${report.wide_emit_flag}`),report.message)console.log(` note: ${report.message}`);console.log()}async function runObservabilityCheck(json2){let report=await collectObservabilityHealth();if(json2)console.log(JSON.stringify(report,null,2));else printObservabilityReport(report);if(report.partition_health==="fail")process.exit(1)}async function runFixTeamOrphans(opts){let{archiveOrphanTeamConfigs:archiveOrphanTeamConfigs2}=await Promise.resolve().then(() => (init_archive_orphan_team_configs(),exports_archive_orphan_team_configs)),decisions=archiveOrphanTeamConfigs2({dryRun:opts.dryRun});if(opts.json){console.log(JSON.stringify({dryRun:opts.dryRun,decisions},null,2));return}if(decisions.length===0){console.log(" no team config dirs found \u2014 nothing to do");return}for(let d of decisions){let tag=d.classification==="stale"?opts.dryRun?"WOULD ARCHIVE":"ARCHIVED":d.classification.toUpperCase(),tail=d.archivedTo?` \u2192 ${d.archivedTo}`:"";console.log(` [${tag}] ${d.team} \u2014 ${d.reason}${tail}`)}let stale=decisions.filter((d)=>d.classification==="stale").length,active=decisions.filter((d)=>d.classification==="active").length;console.log(`
986
986
  ${decisions.length} dirs inspected, ${stale} archived, ${active} flagged active.`)}function printDoctorSummary(counts){if(console.log(),console.log(`\x1B[2m${"\u2500".repeat(40)}\x1B[0m`),counts.errors)console.log("\x1B[31mSome checks failed.\x1B[0m Run \x1B[36mgenie setup\x1B[0m to fix.");else if(counts.warnings)console.log("\x1B[33mSome warnings detected.\x1B[0m Everything should still work.");else console.log("\x1B[32mAll checks passed!\x1B[0m");console.log()}function legacyPgserveRepairEnabled(){return process.env.GENIE_PG_FORCE_TCP==="1"||process.env.GENIE_DOCTOR_FIX_LEGACY_PGSERVE==="1"}function printPgserveRecoveryHint(){console.log(" \x1B[33m[!!] pgserve unreachable \u2014 canonical daemon may not be running.\x1B[0m"),console.log(" Recovery (run as the operator, not the doctor):"),console.log(" pm2 status # is pgserve registered?"),console.log(" pm2 restart pgserve # OR: autopg restart"),console.log(" pgserve install # if not registered yet"),console.log(" See https://github.com/automagik-dev/genie/blob/main/docs/install.md")}async function cleanSharedMemory(){console.log(" Cleaning shared memory...");try{let{execSync:execSync3}=await import("child_process");if(process.platform==="darwin")execSync3("ipcs -m 2>/dev/null | awk '/^m/ {print $2}' | xargs -I{} ipcrm -m {} 2>/dev/null || true",{stdio:"ignore",timeout:5000});else execSync3("ipcs -m 2>/dev/null | awk '$6 == 0 {print $2}' | xargs -I{} ipcrm -m {} 2>/dev/null || true",{stdio:"ignore",timeout:5000});console.log(" \x1B[32m\u2713\x1B[0m Shared memory cleaned")}catch{console.log(" \x1B[32m\u2713\x1B[0m No stale shared memory")}}async function stopExistingDaemon(pidFile){try{let{readFileSync:readFileSync14}=await import("fs"),pid=Number.parseInt(readFileSync14(pidFile,"utf-8").trim(),10);if(!Number.isNaN(pid)&&pid>0)try{process.kill(pid,"SIGTERM"),console.log(` \x1B[32m\u2713\x1B[0m Stopped existing daemon (PID ${pid})`),await new Promise((r)=>setTimeout(r,1000))}catch{}}catch{}}function removeStaleFiles(genieHome3,pidFile){let files=[pidFile];if(legacyPgserveRepairEnabled())files.push(join25(genieHome3,"pgserve.port"),join25(genieHome3,"data","pgserve","postmaster.pid"));else console.log(" Leaving legacy pgserve v1 port/data files untouched (v1/v2 coexistence)");for(let file of files)if(existsSync20(file))try{unlinkSync6(file),console.log(` \x1B[32m\u2713\x1B[0m Removed ${file}`)}catch{console.log(` \x1B[33m!\x1B[0m Could not remove ${file}`)}}async function restartDaemon(){console.log(" Restarting daemon...");try{let{spawn:spawn2}=await import("child_process"),bunPath=process.execPath??"bun",genieBin=process.argv[1]??"genie";spawn2(bunPath,[genieBin,"daemon","start"],{detached:!0,stdio:"ignore"}).unref(),await new Promise((resolve4)=>setTimeout(resolve4,2000)),console.log(" \x1B[32m\u2713\x1B[0m Daemon restart initiated")}catch{console.log(" \x1B[33m!\x1B[0m Could not restart daemon \u2014 run: genie daemon start")}}function isAgentsMdUserEdited(target,fresh){if(!existsSync20(target))return!1;try{let current=readFileSync13(target,"utf-8");if(current.trim().length===0)return!1;if(current.includes(STALE_GENIE_AGENTS_MD_MARKER))return!1;return current!==fresh}catch{return!1}}function writeGenieTemplate(targetDir,name,content){let target=join25(targetDir,name),userEdited=name==="AGENTS.md"&&isAgentsMdUserEdited(target,content),writeTo=userEdited?`${target}.new`:target;try{writeFileSync7(writeTo,content);let marker=userEdited?`wrote ${name}.new (user edits preserved \u2014 merge manually)`:`wrote ${name}`;console.log(` \x1B[32m\u2713\x1B[0m ${marker}`)}catch(err){let detail=err instanceof Error?err.message:String(err);console.log(` \x1B[31m\u2717\x1B[0m ${name}: ${detail}`)}}function fixGenieAgentTemplate(workspaceRoot){let root=workspaceRoot??findWorkspace()?.root;if(!root){console.log(" \x1B[33m!\x1B[0m No workspace detected \u2014 skipping genie-template repair");return}let genieDir=join25(root,"agents","genie");if(!existsSync20(genieDir)){console.log(" \x1B[2m\xB7\x1B[0m No agents/genie directory \u2014 skipping");return}console.log(" Refreshing agents/genie scaffold..."),writeGenieTemplate(genieDir,"AGENTS.md",GENIE_AGENTS_TEMPLATE),writeGenieTemplate(genieDir,"SOUL.md",GENIE_SOUL_TEMPLATE),writeGenieTemplate(genieDir,"HEARTBEAT.md",GENIE_HEARTBEAT_TEMPLATE)}function ensureGenieHomeDir(home){if(existsSync20(home))return!0;try{return mkdirSync10(home,{recursive:!0}),!0}catch{return console.log(` \x1B[31m\u2717\x1B[0m Could not create ${home}`),!1}}function refreshTmuxConfFile(bundledDir,home,srcFile,dstFile){let src=join25(bundledDir,srcFile),dst=join25(home,dstFile);if(!existsSync20(src))return;if(existsSync20(dst))try{copyFileSync2(dst,`${dst}.bak`)}catch{}try{copyFileSync2(src,dst),console.log(` \x1B[32m\u2713\x1B[0m wrote ${dstFile} (previous saved as ${dstFile}.bak)`)}catch(err){let detail=err instanceof Error?err.message:String(err);console.log(` \x1B[31m\u2717\x1B[0m ${dstFile}: ${detail}`)}}function fixTmuxConfigs(){let bundledDir=findBundledTmuxConfigDir();if(!bundledDir){console.log(" \x1B[33m!\x1B[0m Bundled tmux configs not found \u2014 skipping");return}let home=join25(homedir20(),".genie");if(!ensureGenieHomeDir(home))return;console.log(" Refreshing ~/.genie tmux configs..."),refreshTmuxConfFile(bundledDir,home,"tui-tmux.conf","tui-tmux.conf"),refreshTmuxConfFile(bundledDir,home,"genie.tmux.conf","tmux.conf")}async function runMaintenancePreconditions(silent=!1,log){try{let{runDoctorMaintenance:runDoctorMaintenance2}=await Promise.resolve().then(() => (init_ensure_ready(),exports_ensure_ready));await runDoctorMaintenance2({silent,deps:log?{log}:void 0})}catch(err){let msg=err instanceof Error?err.message:String(err);if(!silent)console.warn(` Maintenance preconditions skipped: ${msg}`)}}async function doctorFix(){console.log(`
987
987
  \x1B[1mGenie Doctor \u2014 Auto Fix\x1B[0m`),console.log(`\x1B[2m${"\u2500".repeat(40)}\x1B[0m
988
988
  `);let genieHome3=process.env.GENIE_HOME??join25(homedir20(),".genie");printPgserveRecoveryHint(),await cleanSharedMemory();let pidFile=join25(genieHome3,"scheduler.pid");await stopExistingDaemon(pidFile),removeStaleFiles(genieHome3,pidFile),fixGenieAgentTemplate(),fixTmuxConfigs(),await runMaintenancePreconditions(),await restartDaemon(),console.log(`
989
989
  \x1B[2m${"\u2500".repeat(40)}\x1B[0m`),console.log(`\x1B[32mFix complete.\x1B[0m Run \x1B[36mgenie doctor\x1B[0m to verify.
990
- `)}async function runPostUpdateMaintenance(options={}){await reapStaleGenieProcessesSafe(options),await runMaintenancePreconditions(options.silent??!1,options.log)}function getParentChain(pid){let chain=new Set,current=pid;while(current>1&&!chain.has(current)){chain.add(current);try{let match=readFileSync13(`/proc/${current}/status`,"utf-8").match(/^PPid:\s+(\d+)/m);if(!match)break;let next=Number.parseInt(match[1],10);if(!Number.isFinite(next)||next<=0)break;current=next}catch{break}}return chain}function findStaleGenieCandidates(exclude){if(process.platform!=="linux")return[];let entries=[];try{entries=readdirSync7("/proc")}catch{return[]}let candidates=[];for(let entry2 of entries){let pid=Number.parseInt(entry2,10);if(!Number.isFinite(pid)||pid<=1)continue;if(exclude.has(pid))continue;let cmdline="";try{cmdline=readFileSync13(`/proc/${pid}/cmdline`,"utf-8")}catch{continue}if(!cmdline.includes("dist/genie.js"))continue;candidates.push(pid)}return candidates}function safePm2List(){try{let out=execFileSync("pm2",["jlist"],{encoding:"utf-8",timeout:5000,stdio:["ignore","pipe","ignore"]}),parsed=JSON.parse(out);return Array.isArray(parsed)?parsed:[]}catch{return[]}}function safePm2Delete(name){try{return execFileSync("pm2",["delete",name],{timeout:5000,stdio:"ignore"}),!0}catch{return!1}}function cleanupStalePm2Entries(log){let entries=safePm2List();if(entries.length===0)return;let stale=[];for(let entry2 of entries){if(!entry2.name)continue;if(entry2.name==="genie-serve.ecosystem")stale.push({name:entry2.name,reason:"legacy broken filename pattern"})}for(let{name,reason}of stale)if(log(` [fix] pm2 delete ${name} (${reason})`),!safePm2Delete(name))log(` [!!] pm2 delete ${name} failed (non-blocking)`)}async function reapStaleGenieProcesses(opts={}){let log=opts.log??((line)=>console.log(line));if(process.env.GENIE_UPDATE_NO_REAP==="1"){log(" [--] Stale genie reap skipped (GENIE_UPDATE_NO_REAP=1)");return}if(process.platform!=="linux"){log(" [--] Stale genie reap: Linux-only (procfs); skipping on this platform");return}let exclude=getParentChain(process.pid),candidates=findStaleGenieCandidates(exclude);if(candidates.length===0)log(" [ok] No stale genie processes to reap");else{log(` [fix] Reaping ${candidates.length} stale genie process(es) (incl. serve daemon): ${candidates.join(", ")}`);for(let pid of candidates)try{process.kill(pid,"SIGTERM")}catch{}await new Promise((r)=>setTimeout(r,2000));let stragglers=[];for(let pid of candidates)try{process.kill(pid,0),stragglers.push(pid)}catch{}if(stragglers.length>0){log(` [fix] SIGKILL stragglers: ${stragglers.join(", ")}`);for(let pid of stragglers)try{process.kill(pid,"SIGKILL")}catch{}}try{let home=process.env.GENIE_HOME??join25(homedir20(),".genie"),servePidPath=join25(home,"serve.pid");if(existsSync20(servePidPath))unlinkSync6(servePidPath)}catch{}}cleanupStalePm2Entries(log),log(" [ok] Stale genie reap complete")}async function reapStaleGenieProcessesSafe(opts){try{await reapStaleGenieProcesses({log:opts.log})}catch(err){let msg=err instanceof Error?err.message:String(err);(opts.log??((line)=>console.log(line)))(` [!!] Stale genie reap failed (non-blocking): ${msg}`)}}var init_doctor=__esm(()=>{init_claude_settings();init_db();init_ensure_tmux();init_genie_config2();init_system_detect();init_workspace();init_templates();init_installer_resolution();init_observability_health()});var isUpKey=(key,keybindings=[])=>key.name==="up"||keybindings.includes("vim")&&key.name==="k"||keybindings.includes("emacs")&&key.ctrl&&key.name==="p",isDownKey=(key,keybindings=[])=>key.name==="down"||keybindings.includes("vim")&&key.name==="j"||keybindings.includes("emacs")&&key.ctrl&&key.name==="n",isSpaceKey=(key)=>key.name==="space",isBackspaceKey=(key)=>key.name==="backspace",isTabKey=(key)=>key.name==="tab",isNumberKey=(key)=>"1234567890".includes(key.name),isEnterKey=(key)=>key.name==="enter"||key.name==="return";var AbortPromptError,CancelPromptError,ExitPromptError,HookError,ValidationError;var init_errors3=__esm(()=>{AbortPromptError=class AbortPromptError extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(options){super();this.cause=options?.cause}};CancelPromptError=class CancelPromptError extends Error{name="CancelPromptError";message="Prompt was canceled"};ExitPromptError=class ExitPromptError extends Error{name="ExitPromptError"};HookError=class HookError extends Error{name="HookError"};ValidationError=class ValidationError extends Error{name="ValidationError"}});import{AsyncLocalStorage,AsyncResource}from"async_hooks";function createStore(rl){return{rl,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function withHooks(rl,cb){let store=createStore(rl);return hookStorage.run(store,()=>{function cycle(render){store.handleChange=()=>{store.index=0,render()},store.handleChange()}return cb(cycle)})}function getStore(){let store=hookStorage.getStore();if(!store)throw new HookError("[Inquirer] Hook functions can only be called from within a prompt");return store}function readline(){return getStore().rl}function withUpdates(fn){let wrapped=(...args)=>{let store=getStore(),shouldUpdate=!1,oldHandleChange=store.handleChange;store.handleChange=()=>{shouldUpdate=!0};let returnValue=fn(...args);if(shouldUpdate)oldHandleChange();return store.handleChange=oldHandleChange,returnValue};return AsyncResource.bind(wrapped)}function withPointer(cb){let store=getStore(),{index}=store,pointer={get(){return store.hooks[index]},set(value){store.hooks[index]=value},initialized:index in store.hooks},returnValue=cb(pointer);return store.index++,returnValue}function handleChange(){getStore().handleChange()}var hookStorage,effectScheduler;var init_hook_engine=__esm(()=>{init_errors3();hookStorage=new AsyncLocalStorage;effectScheduler={queue(cb){let store=getStore(),{index}=store;store.hooksEffect.push(()=>{store.hooksCleanup[index]?.();let cleanFn=cb(readline());if(cleanFn!=null&&typeof cleanFn!=="function")throw new ValidationError("useEffect return value must be a cleanup function or nothing.");store.hooksCleanup[index]=cleanFn})},run(){let store=getStore();withUpdates(()=>{store.hooksEffect.forEach((effect)=>{effect()}),store.hooksEffect.length=0})()},clearAll(){let store=getStore();store.hooksCleanup.forEach((cleanFn)=>{cleanFn?.()}),store.hooksEffect.length=0,store.hooksCleanup.length=0}}});import{AsyncResource as AsyncResource2}from"async_hooks";function useState(defaultValue){return withPointer((pointer)=>{let setState=AsyncResource2.bind(function(newValue){if(pointer.get()!==newValue)pointer.set(newValue),handleChange()});if(pointer.initialized)return[pointer.get(),setState];let value=typeof defaultValue==="function"?defaultValue():defaultValue;return pointer.set(value),[value,setState]})}var init_use_state=__esm(()=>{init_hook_engine()});function useEffect(cb,depArray){withPointer((pointer)=>{let oldDeps=pointer.get();if(!Array.isArray(oldDeps)||depArray.some((dep,i2)=>!Object.is(dep,oldDeps[i2])))effectScheduler.queue(cb);pointer.set(depArray)})}var init_use_effect=__esm(()=>{init_hook_engine()});var require_yoctocolors_cjs=__commonJS((exports,module)=>{var tty=__require("tty"),hasColors=tty?.WriteStream?.prototype?.hasColors?.()??!1,format=(open4,close)=>{if(!hasColors)return(input)=>input;let openCode=`\x1B[${open4}m`,closeCode=`\x1B[${close}m`;return(input)=>{let string=input+"",index=string.indexOf(closeCode);if(index===-1)return openCode+string+closeCode;let result2=openCode,lastIndex=0,replaceCode=(close===22?closeCode:"")+openCode;while(index!==-1)result2+=string.slice(lastIndex,index)+replaceCode,lastIndex=index+closeCode.length,index=string.indexOf(closeCode,lastIndex);return result2+=string.slice(lastIndex)+closeCode,result2}},colors={};colors.reset=format(0,0);colors.bold=format(1,22);colors.dim=format(2,22);colors.italic=format(3,23);colors.underline=format(4,24);colors.overline=format(53,55);colors.inverse=format(7,27);colors.hidden=format(8,28);colors.strikethrough=format(9,29);colors.black=format(30,39);colors.red=format(31,39);colors.green=format(32,39);colors.yellow=format(33,39);colors.blue=format(34,39);colors.magenta=format(35,39);colors.cyan=format(36,39);colors.white=format(37,39);colors.gray=format(90,39);colors.bgBlack=format(40,49);colors.bgRed=format(41,49);colors.bgGreen=format(42,49);colors.bgYellow=format(43,49);colors.bgBlue=format(44,49);colors.bgMagenta=format(45,49);colors.bgCyan=format(46,49);colors.bgWhite=format(47,49);colors.bgGray=format(100,49);colors.redBright=format(91,39);colors.greenBright=format(92,39);colors.yellowBright=format(93,39);colors.blueBright=format(94,39);colors.magentaBright=format(95,39);colors.cyanBright=format(96,39);colors.whiteBright=format(97,39);colors.bgRedBright=format(101,49);colors.bgGreenBright=format(102,49);colors.bgYellowBright=format(103,49);colors.bgBlueBright=format(104,49);colors.bgMagentaBright=format(105,49);colors.bgCyanBright=format(106,49);colors.bgWhiteBright=format(107,49);module.exports=colors});import process2 from"process";function isUnicodeSupported(){if(process2.platform!=="win32")return process2.env.TERM!=="linux";return Boolean(process2.env.WT_SESSION)||Boolean(process2.env.TERMINUS_SUBLIME)||process2.env.ConEmuTask==="{cmd::Cmder}"||process2.env.TERM_PROGRAM==="Terminus-Sublime"||process2.env.TERM_PROGRAM==="vscode"||process2.env.TERM==="xterm-256color"||process2.env.TERM==="alacritty"||process2.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var common2,specialMainSymbols,specialFallbackSymbols,mainSymbols,fallbackSymbols,shouldUseMain,figures,esm_default,replacements;var init_esm=__esm(()=>{common2={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},specialMainSymbols={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},specialFallbackSymbols={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},mainSymbols={...common2,...specialMainSymbols},fallbackSymbols={...common2,...specialFallbackSymbols},shouldUseMain=isUnicodeSupported(),figures=shouldUseMain?mainSymbols:fallbackSymbols,esm_default=figures,replacements=Object.entries(specialMainSymbols)});var import_yoctocolors_cjs,defaultTheme;var init_theme=__esm(()=>{init_esm();import_yoctocolors_cjs=__toESM(require_yoctocolors_cjs(),1),defaultTheme={prefix:{idle:import_yoctocolors_cjs.default.blue("?"),done:import_yoctocolors_cjs.default.green(esm_default.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((frame)=>import_yoctocolors_cjs.default.yellow(frame))},style:{answer:import_yoctocolors_cjs.default.cyan,message:import_yoctocolors_cjs.default.bold,error:(text)=>import_yoctocolors_cjs.default.red(`> ${text}`),defaultAnswer:(text)=>import_yoctocolors_cjs.default.dim(`(${text})`),help:import_yoctocolors_cjs.default.dim,highlight:import_yoctocolors_cjs.default.cyan,key:(text)=>import_yoctocolors_cjs.default.cyan(import_yoctocolors_cjs.default.bold(`<${text}>`))}}});function isPlainObject(value){if(typeof value!=="object"||value===null)return!1;let proto=value;while(Object.getPrototypeOf(proto)!==null)proto=Object.getPrototypeOf(proto);return Object.getPrototypeOf(value)===proto}function deepMerge(...objects){let output={};for(let obj of objects)for(let[key,value]of Object.entries(obj)){let prevValue=output[key];output[key]=isPlainObject(prevValue)&&isPlainObject(value)?deepMerge(prevValue,value):value}return output}function makeTheme(...themes){let themesToMerge=[defaultTheme,...themes.filter((theme)=>theme!=null)];return deepMerge(...themesToMerge)}var init_make_theme=__esm(()=>{init_theme()});function usePrefix({status:status2="idle",theme}){let[showLoader,setShowLoader]=useState(!1),[tick,setTick]=useState(0),{prefix,spinner}=makeTheme(theme);if(useEffect(()=>{if(status2==="loading"){let tickInterval,inc=-1,delayTimeout=setTimeout(()=>{setShowLoader(!0),tickInterval=setInterval(()=>{inc=inc+1,setTick(inc%spinner.frames.length)},spinner.interval)},300);return()=>{clearTimeout(delayTimeout),clearInterval(tickInterval)}}else setShowLoader(!1)},[status2]),showLoader)return spinner.frames[tick];return typeof prefix==="string"?prefix:prefix[status2==="loading"?"idle":status2]??prefix.idle}var init_use_prefix=__esm(()=>{init_use_state();init_use_effect();init_make_theme()});function useMemo(fn,dependencies){return withPointer((pointer)=>{let prev=pointer.get();if(!prev||prev.dependencies.length!==dependencies.length||prev.dependencies.some((dep,i2)=>dep!==dependencies[i2])){let value=fn();return pointer.set({value,dependencies}),value}return prev.value})}var init_use_memo=__esm(()=>{init_hook_engine()});function useRef(val){return useState({current:val})[0]}var init_use_ref=__esm(()=>{init_use_state()});function useKeypress(userHandler){let signal=useRef(userHandler);signal.current=userHandler,useEffect((rl)=>{let ignore=!1,handler=withUpdates((_input,event)=>{if(ignore)return;signal.current(event,rl)});return rl.input.on("keypress",handler),()=>{ignore=!0,rl.input.removeListener("keypress",handler)}},[])}var init_use_keypress=__esm(()=>{init_use_ref();init_use_effect();init_hook_engine()});var require_cli_width=__commonJS((exports,module)=>{module.exports=cliWidth;function normalizeOpts(options){let defaultOpts={defaultWidth:0,output:process.stdout,tty:__require("tty")};if(!options)return defaultOpts;return Object.keys(defaultOpts).forEach(function(key){if(!options[key])options[key]=defaultOpts[key]}),options}function cliWidth(options){let opts=normalizeOpts(options);if(opts.output.getWindowSize)return opts.output.getWindowSize()[0]||opts.defaultWidth;if(opts.tty.getWindowSize)return opts.tty.getWindowSize()[1]||opts.defaultWidth;if(opts.output.columns)return opts.output.columns;if(process.env.CLI_WIDTH){let width=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(width)&&width!==0)return width}return opts.defaultWidth}});var require_ansi_regex=__commonJS((exports,module)=>{module.exports=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}});var require_strip_ansi=__commonJS((exports,module)=>{var ansiRegex=require_ansi_regex();module.exports=(string)=>typeof string==="string"?string.replace(ansiRegex(),""):string});var require_is_fullwidth_code_point=__commonJS((exports,module)=>{var isFullwidthCodePoint=(codePoint)=>{if(Number.isNaN(codePoint))return!1;if(codePoint>=4352&&(codePoint<=4447||codePoint===9001||codePoint===9002||11904<=codePoint&&codePoint<=12871&&codePoint!==12351||12880<=codePoint&&codePoint<=19903||19968<=codePoint&&codePoint<=42182||43360<=codePoint&&codePoint<=43388||44032<=codePoint&&codePoint<=55203||63744<=codePoint&&codePoint<=64255||65040<=codePoint&&codePoint<=65049||65072<=codePoint&&codePoint<=65131||65281<=codePoint&&codePoint<=65376||65504<=codePoint&&codePoint<=65510||110592<=codePoint&&codePoint<=110593||127488<=codePoint&&codePoint<=127569||131072<=codePoint&&codePoint<=262141))return!0;return!1};module.exports=isFullwidthCodePoint;module.exports.default=isFullwidthCodePoint});var require_emoji_regex=__commonJS((exports,module)=>{module.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var require_string_width=__commonJS((exports,module)=>{var stripAnsi=require_strip_ansi(),isFullwidthCodePoint=require_is_fullwidth_code_point(),emojiRegex2=require_emoji_regex(),stringWidth=(string)=>{if(typeof string!=="string"||string.length===0)return 0;if(string=stripAnsi(string),string.length===0)return 0;string=string.replace(emojiRegex2()," ");let width=0;for(let i2=0;i2<string.length;i2++){let code=string.codePointAt(i2);if(code<=31||code>=127&&code<=159)continue;if(code>=768&&code<=879)continue;if(code>65535)i2++;width+=isFullwidthCodePoint(code)?2:1}return width};module.exports=stringWidth;module.exports.default=stringWidth});var require_color_name=__commonJS((exports,module)=>{module.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var require_conversions=__commonJS((exports,module)=>{var cssKeywords=require_color_name(),reverseKeywords={};for(let key of Object.keys(cssKeywords))reverseKeywords[cssKeywords[key]]=key;var convert={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};module.exports=convert;for(let model of Object.keys(convert)){if(!("channels"in convert[model]))throw Error("missing channels property: "+model);if(!("labels"in convert[model]))throw Error("missing channel labels property: "+model);if(convert[model].labels.length!==convert[model].channels)throw Error("channel and label counts mismatch: "+model);let{channels,labels}=convert[model];delete convert[model].channels,delete convert[model].labels,Object.defineProperty(convert[model],"channels",{value:channels}),Object.defineProperty(convert[model],"labels",{value:labels})}convert.rgb.hsl=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,min=Math.min(r,g,b2),max=Math.max(r,g,b2),delta=max-min,h,s;if(max===min)h=0;else if(r===max)h=(g-b2)/delta;else if(g===max)h=2+(b2-r)/delta;else if(b2===max)h=4+(r-g)/delta;if(h=Math.min(h*60,360),h<0)h+=360;let l=(min+max)/2;if(max===min)s=0;else if(l<=0.5)s=delta/(max+min);else s=delta/(2-max-min);return[h,s*100,l*100]};convert.rgb.hsv=function(rgb){let rdif,gdif,bdif,h,s,r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,v=Math.max(r,g,b2),diff=v-Math.min(r,g,b2),diffc=function(c){return(v-c)/6/diff+0.5};if(diff===0)h=0,s=0;else{if(s=diff/v,rdif=diffc(r),gdif=diffc(g),bdif=diffc(b2),r===v)h=bdif-gdif;else if(g===v)h=0.3333333333333333+rdif-bdif;else if(b2===v)h=0.6666666666666666+gdif-rdif;if(h<0)h+=1;else if(h>1)h-=1}return[h*360,s*100,v*100]};convert.rgb.hwb=function(rgb){let r=rgb[0],g=rgb[1],b2=rgb[2],h=convert.rgb.hsl(rgb)[0],w=0.00392156862745098*Math.min(r,Math.min(g,b2));return b2=1-0.00392156862745098*Math.max(r,Math.max(g,b2)),[h,w*100,b2*100]};convert.rgb.cmyk=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,k=Math.min(1-r,1-g,1-b2),c=(1-r-k)/(1-k)||0,m=(1-g-k)/(1-k)||0,y=(1-b2-k)/(1-k)||0;return[c*100,m*100,y*100,k*100]};function comparativeDistance(x,y){return(x[0]-y[0])**2+(x[1]-y[1])**2+(x[2]-y[2])**2}convert.rgb.keyword=function(rgb){let reversed=reverseKeywords[rgb];if(reversed)return reversed;let currentClosestDistance=1/0,currentClosestKeyword;for(let keyword of Object.keys(cssKeywords)){let value=cssKeywords[keyword],distance=comparativeDistance(rgb,value);if(distance<currentClosestDistance)currentClosestDistance=distance,currentClosestKeyword=keyword}return currentClosestKeyword};convert.keyword.rgb=function(keyword){return cssKeywords[keyword]};convert.rgb.xyz=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255;r=r>0.04045?((r+0.055)/1.055)**2.4:r/12.92,g=g>0.04045?((g+0.055)/1.055)**2.4:g/12.92,b2=b2>0.04045?((b2+0.055)/1.055)**2.4:b2/12.92;let x=r*0.4124+g*0.3576+b2*0.1805,y=r*0.2126+g*0.7152+b2*0.0722,z=r*0.0193+g*0.1192+b2*0.9505;return[x*100,y*100,z*100]};convert.rgb.lab=function(rgb){let xyz=convert.rgb.xyz(rgb),x=xyz[0],y=xyz[1],z=xyz[2];x/=95.047,y/=100,z/=108.883,x=x>0.008856?x**0.3333333333333333:7.787*x+0.13793103448275862,y=y>0.008856?y**0.3333333333333333:7.787*y+0.13793103448275862,z=z>0.008856?z**0.3333333333333333:7.787*z+0.13793103448275862;let l=116*y-16,a=500*(x-y),b2=200*(y-z);return[l,a,b2]};convert.hsl.rgb=function(hsl){let h=hsl[0]/360,s=hsl[1]/100,l=hsl[2]/100,t2,t3,val;if(s===0)return val=l*255,[val,val,val];if(l<0.5)t2=l*(1+s);else t2=l+s-l*s;let t1=2*l-t2,rgb=[0,0,0];for(let i2=0;i2<3;i2++){if(t3=h+0.3333333333333333*-(i2-1),t3<0)t3++;if(t3>1)t3--;if(6*t3<1)val=t1+(t2-t1)*6*t3;else if(2*t3<1)val=t2;else if(3*t3<2)val=t1+(t2-t1)*(0.6666666666666666-t3)*6;else val=t1;rgb[i2]=val*255}return rgb};convert.hsl.hsv=function(hsl){let h=hsl[0],s=hsl[1]/100,l=hsl[2]/100,smin=s,lmin=Math.max(l,0.01);l*=2,s*=l<=1?l:2-l,smin*=lmin<=1?lmin:2-lmin;let v=(l+s)/2,sv=l===0?2*smin/(lmin+smin):2*s/(l+s);return[h,sv*100,v*100]};convert.hsv.rgb=function(hsv){let h=hsv[0]/60,s=hsv[1]/100,v=hsv[2]/100,hi=Math.floor(h)%6,f=h-Math.floor(h),p=255*v*(1-s),q=255*v*(1-s*f),t=255*v*(1-s*(1-f));switch(v*=255,hi){case 0:return[v,t,p];case 1:return[q,v,p];case 2:return[p,v,t];case 3:return[p,q,v];case 4:return[t,p,v];case 5:return[v,p,q]}};convert.hsv.hsl=function(hsv){let h=hsv[0],s=hsv[1]/100,v=hsv[2]/100,vmin=Math.max(v,0.01),sl,l;l=(2-s)*v;let lmin=(2-s)*vmin;return sl=s*vmin,sl/=lmin<=1?lmin:2-lmin,sl=sl||0,l/=2,[h,sl*100,l*100]};convert.hwb.rgb=function(hwb){let h=hwb[0]/360,wh=hwb[1]/100,bl=hwb[2]/100,ratio=wh+bl,f;if(ratio>1)wh/=ratio,bl/=ratio;let i2=Math.floor(6*h),v=1-bl;if(f=6*h-i2,(i2&1)!==0)f=1-f;let n=wh+f*(v-wh),r,g,b2;switch(i2){default:case 6:case 0:r=v,g=n,b2=wh;break;case 1:r=n,g=v,b2=wh;break;case 2:r=wh,g=v,b2=n;break;case 3:r=wh,g=n,b2=v;break;case 4:r=n,g=wh,b2=v;break;case 5:r=v,g=wh,b2=n;break}return[r*255,g*255,b2*255]};convert.cmyk.rgb=function(cmyk){let c=cmyk[0]/100,m=cmyk[1]/100,y=cmyk[2]/100,k=cmyk[3]/100,r=1-Math.min(1,c*(1-k)+k),g=1-Math.min(1,m*(1-k)+k),b2=1-Math.min(1,y*(1-k)+k);return[r*255,g*255,b2*255]};convert.xyz.rgb=function(xyz){let x=xyz[0]/100,y=xyz[1]/100,z=xyz[2]/100,r,g,b2;return r=x*3.2406+y*-1.5372+z*-0.4986,g=x*-0.9689+y*1.8758+z*0.0415,b2=x*0.0557+y*-0.204+z*1.057,r=r>0.0031308?1.055*r**0.4166666666666667-0.055:r*12.92,g=g>0.0031308?1.055*g**0.4166666666666667-0.055:g*12.92,b2=b2>0.0031308?1.055*b2**0.4166666666666667-0.055:b2*12.92,r=Math.min(Math.max(0,r),1),g=Math.min(Math.max(0,g),1),b2=Math.min(Math.max(0,b2),1),[r*255,g*255,b2*255]};convert.xyz.lab=function(xyz){let x=xyz[0],y=xyz[1],z=xyz[2];x/=95.047,y/=100,z/=108.883,x=x>0.008856?x**0.3333333333333333:7.787*x+0.13793103448275862,y=y>0.008856?y**0.3333333333333333:7.787*y+0.13793103448275862,z=z>0.008856?z**0.3333333333333333:7.787*z+0.13793103448275862;let l=116*y-16,a=500*(x-y),b2=200*(y-z);return[l,a,b2]};convert.lab.xyz=function(lab){let l=lab[0],a=lab[1],b2=lab[2],x,y,z;y=(l+16)/116,x=a/500+y,z=y-b2/200;let y2=y**3,x2=x**3,z2=z**3;return y=y2>0.008856?y2:(y-0.13793103448275862)/7.787,x=x2>0.008856?x2:(x-0.13793103448275862)/7.787,z=z2>0.008856?z2:(z-0.13793103448275862)/7.787,x*=95.047,y*=100,z*=108.883,[x,y,z]};convert.lab.lch=function(lab){let l=lab[0],a=lab[1],b2=lab[2],h;if(h=Math.atan2(b2,a)*360/2/Math.PI,h<0)h+=360;let c=Math.sqrt(a*a+b2*b2);return[l,c,h]};convert.lch.lab=function(lch){let l=lch[0],c=lch[1],hr=lch[2]/360*2*Math.PI,a=c*Math.cos(hr),b2=c*Math.sin(hr);return[l,a,b2]};convert.rgb.ansi16=function(args,saturation=null){let[r,g,b2]=args,value=saturation===null?convert.rgb.hsv(args)[2]:saturation;if(value=Math.round(value/50),value===0)return 30;let ansi=30+(Math.round(b2/255)<<2|Math.round(g/255)<<1|Math.round(r/255));if(value===2)ansi+=60;return ansi};convert.hsv.ansi16=function(args){return convert.rgb.ansi16(convert.hsv.rgb(args),args[2])};convert.rgb.ansi256=function(args){let r=args[0],g=args[1],b2=args[2];if(r===g&&g===b2){if(r<8)return 16;if(r>248)return 231;return Math.round((r-8)/247*24)+232}return 16+36*Math.round(r/255*5)+6*Math.round(g/255*5)+Math.round(b2/255*5)};convert.ansi16.rgb=function(args){let color=args%10;if(color===0||color===7){if(args>50)color+=3.5;return color=color/10.5*255,[color,color,color]}let mult=(~~(args>50)+1)*0.5,r=(color&1)*mult*255,g=(color>>1&1)*mult*255,b2=(color>>2&1)*mult*255;return[r,g,b2]};convert.ansi256.rgb=function(args){if(args>=232){let c=(args-232)*10+8;return[c,c,c]}args-=16;let rem,r=Math.floor(args/36)/5*255,g=Math.floor((rem=args%36)/6)/5*255,b2=rem%6/5*255;return[r,g,b2]};convert.rgb.hex=function(args){let string=(((Math.round(args[0])&255)<<16)+((Math.round(args[1])&255)<<8)+(Math.round(args[2])&255)).toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.hex.rgb=function(args){let match=args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!match)return[0,0,0];let colorString=match[0];if(match[0].length===3)colorString=colorString.split("").map((char)=>{return char+char}).join("");let integer=parseInt(colorString,16),r=integer>>16&255,g=integer>>8&255,b2=integer&255;return[r,g,b2]};convert.rgb.hcg=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,max=Math.max(Math.max(r,g),b2),min=Math.min(Math.min(r,g),b2),chroma=max-min,grayscale,hue;if(chroma<1)grayscale=min/(1-chroma);else grayscale=0;if(chroma<=0)hue=0;else if(max===r)hue=(g-b2)/chroma%6;else if(max===g)hue=2+(b2-r)/chroma;else hue=4+(r-g)/chroma;return hue/=6,hue%=1,[hue*360,chroma*100,grayscale*100]};convert.hsl.hcg=function(hsl){let s=hsl[1]/100,l=hsl[2]/100,c=l<0.5?2*s*l:2*s*(1-l),f=0;if(c<1)f=(l-0.5*c)/(1-c);return[hsl[0],c*100,f*100]};convert.hsv.hcg=function(hsv){let s=hsv[1]/100,v=hsv[2]/100,c=s*v,f=0;if(c<1)f=(v-c)/(1-c);return[hsv[0],c*100,f*100]};convert.hcg.rgb=function(hcg){let h=hcg[0]/360,c=hcg[1]/100,g=hcg[2]/100;if(c===0)return[g*255,g*255,g*255];let pure=[0,0,0],hi=h%1*6,v=hi%1,w=1-v,mg=0;switch(Math.floor(hi)){case 0:pure[0]=1,pure[1]=v,pure[2]=0;break;case 1:pure[0]=w,pure[1]=1,pure[2]=0;break;case 2:pure[0]=0,pure[1]=1,pure[2]=v;break;case 3:pure[0]=0,pure[1]=w,pure[2]=1;break;case 4:pure[0]=v,pure[1]=0,pure[2]=1;break;default:pure[0]=1,pure[1]=0,pure[2]=w}return mg=(1-c)*g,[(c*pure[0]+mg)*255,(c*pure[1]+mg)*255,(c*pure[2]+mg)*255]};convert.hcg.hsv=function(hcg){let c=hcg[1]/100,g=hcg[2]/100,v=c+g*(1-c),f=0;if(v>0)f=c/v;return[hcg[0],f*100,v*100]};convert.hcg.hsl=function(hcg){let c=hcg[1]/100,l=hcg[2]/100*(1-c)+0.5*c,s=0;if(l>0&&l<0.5)s=c/(2*l);else if(l>=0.5&&l<1)s=c/(2*(1-l));return[hcg[0],s*100,l*100]};convert.hcg.hwb=function(hcg){let c=hcg[1]/100,g=hcg[2]/100,v=c+g*(1-c);return[hcg[0],(v-c)*100,(1-v)*100]};convert.hwb.hcg=function(hwb){let w=hwb[1]/100,v=1-hwb[2]/100,c=v-w,g=0;if(c<1)g=(v-c)/(1-c);return[hwb[0],c*100,g*100]};convert.apple.rgb=function(apple){return[apple[0]/65535*255,apple[1]/65535*255,apple[2]/65535*255]};convert.rgb.apple=function(rgb){return[rgb[0]/255*65535,rgb[1]/255*65535,rgb[2]/255*65535]};convert.gray.rgb=function(args){return[args[0]/100*255,args[0]/100*255,args[0]/100*255]};convert.gray.hsl=function(args){return[0,0,args[0]]};convert.gray.hsv=convert.gray.hsl;convert.gray.hwb=function(gray){return[0,100,gray[0]]};convert.gray.cmyk=function(gray){return[0,0,0,gray[0]]};convert.gray.lab=function(gray){return[gray[0],0,0]};convert.gray.hex=function(gray){let val=Math.round(gray[0]/100*255)&255,string=((val<<16)+(val<<8)+val).toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.rgb.gray=function(rgb){return[(rgb[0]+rgb[1]+rgb[2])/3/255*100]}});var require_route=__commonJS((exports,module)=>{var conversions=require_conversions();function buildGraph(){let graph={},models=Object.keys(conversions);for(let len=models.length,i2=0;i2<len;i2++)graph[models[i2]]={distance:-1,parent:null};return graph}function deriveBFS(fromModel){let graph=buildGraph(),queue2=[fromModel];graph[fromModel].distance=0;while(queue2.length){let current=queue2.pop(),adjacents=Object.keys(conversions[current]);for(let len=adjacents.length,i2=0;i2<len;i2++){let adjacent=adjacents[i2],node=graph[adjacent];if(node.distance===-1)node.distance=graph[current].distance+1,node.parent=current,queue2.unshift(adjacent)}}return graph}function link(from,to){return function(args){return to(from(args))}}function wrapConversion(toModel,graph){let path2=[graph[toModel].parent,toModel],fn=conversions[graph[toModel].parent][toModel],cur=graph[toModel].parent;while(graph[cur].parent)path2.unshift(graph[cur].parent),fn=link(conversions[graph[cur].parent][cur],fn),cur=graph[cur].parent;return fn.conversion=path2,fn}module.exports=function(fromModel){let graph=deriveBFS(fromModel),conversion={},models=Object.keys(graph);for(let len=models.length,i2=0;i2<len;i2++){let toModel=models[i2];if(graph[toModel].parent===null)continue;conversion[toModel]=wrapConversion(toModel,graph)}return conversion}});var require_color_convert=__commonJS((exports,module)=>{var conversions=require_conversions(),route=require_route(),convert={},models=Object.keys(conversions);function wrapRaw(fn){let wrappedFn=function(...args){let arg0=args[0];if(arg0===void 0||arg0===null)return arg0;if(arg0.length>1)args=arg0;return fn(args)};if("conversion"in fn)wrappedFn.conversion=fn.conversion;return wrappedFn}function wrapRounded(fn){let wrappedFn=function(...args){let arg0=args[0];if(arg0===void 0||arg0===null)return arg0;if(arg0.length>1)args=arg0;let result2=fn(args);if(typeof result2==="object")for(let len=result2.length,i2=0;i2<len;i2++)result2[i2]=Math.round(result2[i2]);return result2};if("conversion"in fn)wrappedFn.conversion=fn.conversion;return wrappedFn}models.forEach((fromModel)=>{convert[fromModel]={},Object.defineProperty(convert[fromModel],"channels",{value:conversions[fromModel].channels}),Object.defineProperty(convert[fromModel],"labels",{value:conversions[fromModel].labels});let routes=route(fromModel);Object.keys(routes).forEach((toModel)=>{let fn=routes[toModel];convert[fromModel][toModel]=wrapRounded(fn),convert[fromModel][toModel].raw=wrapRaw(fn)})});module.exports=convert});var require_ansi_styles=__commonJS((exports,module)=>{var wrapAnsi16=(fn,offset)=>(...args)=>{return`\x1B[${fn(...args)+offset}m`},wrapAnsi256=(fn,offset)=>(...args)=>{let code=fn(...args);return`\x1B[${38+offset};5;${code}m`},wrapAnsi16m=(fn,offset)=>(...args)=>{let rgb=fn(...args);return`\x1B[${38+offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`},ansi2ansi=(n)=>n,rgb2rgb=(r,g,b2)=>[r,g,b2],setLazyProperty=(object,property,get2)=>{Object.defineProperty(object,property,{get:()=>{let value=get2();return Object.defineProperty(object,property,{value,enumerable:!0,configurable:!0}),value},enumerable:!0,configurable:!0})},colorConvert,makeDynamicStyles=(wrap,targetSpace,identity,isBackground)=>{if(colorConvert===void 0)colorConvert=require_color_convert();let offset=isBackground?10:0,styles={};for(let[sourceSpace,suite]of Object.entries(colorConvert)){let name=sourceSpace==="ansi16"?"ansi":sourceSpace;if(sourceSpace===targetSpace)styles[name]=wrap(identity,offset);else if(typeof suite==="object")styles[name]=wrap(suite[targetSpace],offset)}return styles};function assembleStyles(){let codes=new Map,styles={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};styles.color.gray=styles.color.blackBright,styles.bgColor.bgGray=styles.bgColor.bgBlackBright,styles.color.grey=styles.color.blackBright,styles.bgColor.bgGrey=styles.bgColor.bgBlackBright;for(let[groupName,group]of Object.entries(styles)){for(let[styleName,style]of Object.entries(group))styles[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles,groupName,{value:group,enumerable:!1})}return Object.defineProperty(styles,"codes",{value:codes,enumerable:!1}),styles.color.close="\x1B[39m",styles.bgColor.close="\x1B[49m",setLazyProperty(styles.color,"ansi",()=>makeDynamicStyles(wrapAnsi16,"ansi16",ansi2ansi,!1)),setLazyProperty(styles.color,"ansi256",()=>makeDynamicStyles(wrapAnsi256,"ansi256",ansi2ansi,!1)),setLazyProperty(styles.color,"ansi16m",()=>makeDynamicStyles(wrapAnsi16m,"rgb",rgb2rgb,!1)),setLazyProperty(styles.bgColor,"ansi",()=>makeDynamicStyles(wrapAnsi16,"ansi16",ansi2ansi,!0)),setLazyProperty(styles.bgColor,"ansi256",()=>makeDynamicStyles(wrapAnsi256,"ansi256",ansi2ansi,!0)),setLazyProperty(styles.bgColor,"ansi16m",()=>makeDynamicStyles(wrapAnsi16m,"rgb",rgb2rgb,!0)),styles}Object.defineProperty(module,"exports",{enumerable:!0,get:assembleStyles})});var require_wrap_ansi=__commonJS((exports,module)=>{var stringWidth=require_string_width(),stripAnsi=require_strip_ansi(),ansiStyles=require_ansi_styles(),ESCAPES=new Set(["\x1B","\x9B"]),wrapAnsi=(code)=>`${ESCAPES.values().next().value}[${code}m`,wordLengths=(string)=>string.split(" ").map((character)=>stringWidth(character)),wrapWord=(rows,word,columns)=>{let characters=[...word],isInsideEscape=!1,visible=stringWidth(stripAnsi(rows[rows.length-1]));for(let[index,character]of characters.entries()){let characterLength=stringWidth(character);if(visible+characterLength<=columns)rows[rows.length-1]+=character;else rows.push(character),visible=0;if(ESCAPES.has(character))isInsideEscape=!0;else if(isInsideEscape&&character==="m"){isInsideEscape=!1;continue}if(isInsideEscape)continue;if(visible+=characterLength,visible===columns&&index<characters.length-1)rows.push(""),visible=0}if(!visible&&rows[rows.length-1].length>0&&rows.length>1)rows[rows.length-2]+=rows.pop()},stringVisibleTrimSpacesRight=(str2)=>{let words=str2.split(" "),last=words.length;while(last>0){if(stringWidth(words[last-1])>0)break;last--}if(last===words.length)return str2;return words.slice(0,last).join(" ")+words.slice(last).join("")},exec2=(string,columns,options={})=>{if(options.trim!==!1&&string.trim()==="")return"";let pre="",ret="",escapeCode,lengths=wordLengths(string),rows=[""];for(let[index,word]of string.split(" ").entries()){if(options.trim!==!1)rows[rows.length-1]=rows[rows.length-1].trimLeft();let rowLength=stringWidth(rows[rows.length-1]);if(index!==0){if(rowLength>=columns&&(options.wordWrap===!1||options.trim===!1))rows.push(""),rowLength=0;if(rowLength>0||options.trim===!1)rows[rows.length-1]+=" ",rowLength++}if(options.hard&&lengths[index]>columns){let remainingColumns=columns-rowLength,breaksStartingThisLine=1+Math.floor((lengths[index]-remainingColumns-1)/columns);if(Math.floor((lengths[index]-1)/columns)<breaksStartingThisLine)rows.push("");wrapWord(rows,word,columns);continue}if(rowLength+lengths[index]>columns&&rowLength>0&&lengths[index]>0){if(options.wordWrap===!1&&rowLength<columns){wrapWord(rows,word,columns);continue}rows.push("")}if(rowLength+lengths[index]>columns&&options.wordWrap===!1){wrapWord(rows,word,columns);continue}rows[rows.length-1]+=word}if(options.trim!==!1)rows=rows.map(stringVisibleTrimSpacesRight);pre=rows.join(`
990
+ `)}async function runPostUpdateMaintenance(options={}){await reapStaleGenieProcessesSafe(options),await runMaintenancePreconditions(options.silent??!1,options.log)}function getParentChain(pid){let chain=new Set,current=pid;while(current>1&&!chain.has(current)){chain.add(current);try{let match=readFileSync13(`/proc/${current}/status`,"utf-8").match(/^PPid:\s+(\d+)/m);if(!match)break;let next=Number.parseInt(match[1],10);if(!Number.isFinite(next)||next<=0)break;current=next}catch{break}}return chain}function findStaleGenieCandidates(exclude){if(process.platform!=="linux")return[];let entries=[];try{entries=readdirSync7("/proc")}catch{return[]}let candidates=[];for(let entry2 of entries){let pid=Number.parseInt(entry2,10);if(!Number.isFinite(pid)||pid<=1)continue;if(exclude.has(pid))continue;let cmdline="";try{cmdline=readFileSync13(`/proc/${pid}/cmdline`,"utf-8")}catch{continue}if(!cmdline.includes("dist/genie.js"))continue;candidates.push(pid)}return candidates}function safePm2List(){try{let out=execFileSync("pm2",["jlist"],{encoding:"utf-8",timeout:5000,stdio:["ignore","pipe","ignore"]}),parsed=JSON.parse(out);return Array.isArray(parsed)?parsed:[]}catch{return[]}}function safePm2Delete(name){try{return execFileSync("pm2",["delete",name],{timeout:5000,stdio:"ignore"}),!0}catch{return!1}}function cleanupStalePm2Entries(log){let entries=safePm2List();if(entries.length===0)return;let stale=[];for(let entry2 of entries){if(!entry2.name)continue;if(entry2.name==="genie-serve.ecosystem")stale.push({name:entry2.name,reason:"legacy broken filename pattern"})}for(let{name,reason}of stale)if(log(` [fix] pm2 delete ${name} (${reason})`),!safePm2Delete(name))log(` [!!] pm2 delete ${name} failed (non-blocking)`)}async function reapStaleGenieProcesses(opts={}){let log=opts.log??((line)=>console.log(line));if(process.env.GENIE_UPDATE_NO_REAP==="1"){log(" [--] Stale genie reap skipped (GENIE_UPDATE_NO_REAP=1)");return}if(process.platform!=="linux"){log(" [--] Stale genie reap: Linux-only (procfs); skipping on this platform");return}let exclude=getParentChain(process.pid),candidates=findStaleGenieCandidates(exclude);if(candidates.length===0)log(" [ok] No stale genie processes to reap");else{log(` [fix] Reaping ${candidates.length} stale genie process(es) (incl. serve daemon): ${candidates.join(", ")}`);for(let pid of candidates)try{process.kill(pid,"SIGTERM")}catch{}await new Promise((r)=>setTimeout(r,2000));let stragglers=[];for(let pid of candidates)try{process.kill(pid,0),stragglers.push(pid)}catch{}if(stragglers.length>0){log(` [fix] SIGKILL stragglers: ${stragglers.join(", ")}`);for(let pid of stragglers)try{process.kill(pid,"SIGKILL")}catch{}}try{let home=process.env.GENIE_HOME??join25(homedir20(),".genie"),servePidPath=join25(home,"serve.pid");if(existsSync20(servePidPath))unlinkSync6(servePidPath)}catch{}}cleanupStalePm2Entries(log),log(" [ok] Stale genie reap complete")}async function reapStaleGenieProcessesSafe(opts){try{await reapStaleGenieProcesses({log:opts.log})}catch(err){let msg=err instanceof Error?err.message:String(err);(opts.log??((line)=>console.log(line)))(` [!!] Stale genie reap failed (non-blocking): ${msg}`)}}var PREREQ_BINARIES;var init_doctor=__esm(()=>{init_claude_settings();init_db();init_ensure_tmux();init_genie_config2();init_system_detect();init_workspace();init_templates();init_installer_resolution();init_observability_health();PREREQ_BINARIES=[{cmd:"tmux",displayName:"tmux",missingStatus:"fail",missingSuggestion:"Install with: brew install tmux (or apt install tmux)"},{cmd:"jq",displayName:"jq",missingStatus:"fail",missingSuggestion:"Install with: brew install jq (or apt install jq)"},{cmd:"bun",displayName:"bun",missingStatus:"fail",missingSuggestion:"Install with: curl -fsSL https://bun.sh/install | bash"},{cmd:"claude",displayName:"Claude Code",missingStatus:"warn",missingSuggestion:"Install with: npm install -g @anthropic-ai/claude-code"},{cmd:"codex",displayName:"Codex CLI",missingStatus:"warn",missingSuggestion:"Install via OpenAI account; codex is optional unless using --provider codex"}]});var isUpKey=(key,keybindings=[])=>key.name==="up"||keybindings.includes("vim")&&key.name==="k"||keybindings.includes("emacs")&&key.ctrl&&key.name==="p",isDownKey=(key,keybindings=[])=>key.name==="down"||keybindings.includes("vim")&&key.name==="j"||keybindings.includes("emacs")&&key.ctrl&&key.name==="n",isSpaceKey=(key)=>key.name==="space",isBackspaceKey=(key)=>key.name==="backspace",isTabKey=(key)=>key.name==="tab",isNumberKey=(key)=>"1234567890".includes(key.name),isEnterKey=(key)=>key.name==="enter"||key.name==="return";var AbortPromptError,CancelPromptError,ExitPromptError,HookError,ValidationError;var init_errors3=__esm(()=>{AbortPromptError=class AbortPromptError extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(options){super();this.cause=options?.cause}};CancelPromptError=class CancelPromptError extends Error{name="CancelPromptError";message="Prompt was canceled"};ExitPromptError=class ExitPromptError extends Error{name="ExitPromptError"};HookError=class HookError extends Error{name="HookError"};ValidationError=class ValidationError extends Error{name="ValidationError"}});import{AsyncLocalStorage,AsyncResource}from"async_hooks";function createStore(rl){return{rl,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function withHooks(rl,cb){let store=createStore(rl);return hookStorage.run(store,()=>{function cycle(render){store.handleChange=()=>{store.index=0,render()},store.handleChange()}return cb(cycle)})}function getStore(){let store=hookStorage.getStore();if(!store)throw new HookError("[Inquirer] Hook functions can only be called from within a prompt");return store}function readline(){return getStore().rl}function withUpdates(fn){let wrapped=(...args)=>{let store=getStore(),shouldUpdate=!1,oldHandleChange=store.handleChange;store.handleChange=()=>{shouldUpdate=!0};let returnValue=fn(...args);if(shouldUpdate)oldHandleChange();return store.handleChange=oldHandleChange,returnValue};return AsyncResource.bind(wrapped)}function withPointer(cb){let store=getStore(),{index}=store,pointer={get(){return store.hooks[index]},set(value){store.hooks[index]=value},initialized:index in store.hooks},returnValue=cb(pointer);return store.index++,returnValue}function handleChange(){getStore().handleChange()}var hookStorage,effectScheduler;var init_hook_engine=__esm(()=>{init_errors3();hookStorage=new AsyncLocalStorage;effectScheduler={queue(cb){let store=getStore(),{index}=store;store.hooksEffect.push(()=>{store.hooksCleanup[index]?.();let cleanFn=cb(readline());if(cleanFn!=null&&typeof cleanFn!=="function")throw new ValidationError("useEffect return value must be a cleanup function or nothing.");store.hooksCleanup[index]=cleanFn})},run(){let store=getStore();withUpdates(()=>{store.hooksEffect.forEach((effect)=>{effect()}),store.hooksEffect.length=0})()},clearAll(){let store=getStore();store.hooksCleanup.forEach((cleanFn)=>{cleanFn?.()}),store.hooksEffect.length=0,store.hooksCleanup.length=0}}});import{AsyncResource as AsyncResource2}from"async_hooks";function useState(defaultValue){return withPointer((pointer)=>{let setState=AsyncResource2.bind(function(newValue){if(pointer.get()!==newValue)pointer.set(newValue),handleChange()});if(pointer.initialized)return[pointer.get(),setState];let value=typeof defaultValue==="function"?defaultValue():defaultValue;return pointer.set(value),[value,setState]})}var init_use_state=__esm(()=>{init_hook_engine()});function useEffect(cb,depArray){withPointer((pointer)=>{let oldDeps=pointer.get();if(!Array.isArray(oldDeps)||depArray.some((dep,i2)=>!Object.is(dep,oldDeps[i2])))effectScheduler.queue(cb);pointer.set(depArray)})}var init_use_effect=__esm(()=>{init_hook_engine()});var require_yoctocolors_cjs=__commonJS((exports,module)=>{var tty=__require("tty"),hasColors=tty?.WriteStream?.prototype?.hasColors?.()??!1,format=(open4,close)=>{if(!hasColors)return(input)=>input;let openCode=`\x1B[${open4}m`,closeCode=`\x1B[${close}m`;return(input)=>{let string=input+"",index=string.indexOf(closeCode);if(index===-1)return openCode+string+closeCode;let result2=openCode,lastIndex=0,replaceCode=(close===22?closeCode:"")+openCode;while(index!==-1)result2+=string.slice(lastIndex,index)+replaceCode,lastIndex=index+closeCode.length,index=string.indexOf(closeCode,lastIndex);return result2+=string.slice(lastIndex)+closeCode,result2}},colors={};colors.reset=format(0,0);colors.bold=format(1,22);colors.dim=format(2,22);colors.italic=format(3,23);colors.underline=format(4,24);colors.overline=format(53,55);colors.inverse=format(7,27);colors.hidden=format(8,28);colors.strikethrough=format(9,29);colors.black=format(30,39);colors.red=format(31,39);colors.green=format(32,39);colors.yellow=format(33,39);colors.blue=format(34,39);colors.magenta=format(35,39);colors.cyan=format(36,39);colors.white=format(37,39);colors.gray=format(90,39);colors.bgBlack=format(40,49);colors.bgRed=format(41,49);colors.bgGreen=format(42,49);colors.bgYellow=format(43,49);colors.bgBlue=format(44,49);colors.bgMagenta=format(45,49);colors.bgCyan=format(46,49);colors.bgWhite=format(47,49);colors.bgGray=format(100,49);colors.redBright=format(91,39);colors.greenBright=format(92,39);colors.yellowBright=format(93,39);colors.blueBright=format(94,39);colors.magentaBright=format(95,39);colors.cyanBright=format(96,39);colors.whiteBright=format(97,39);colors.bgRedBright=format(101,49);colors.bgGreenBright=format(102,49);colors.bgYellowBright=format(103,49);colors.bgBlueBright=format(104,49);colors.bgMagentaBright=format(105,49);colors.bgCyanBright=format(106,49);colors.bgWhiteBright=format(107,49);module.exports=colors});import process2 from"process";function isUnicodeSupported(){if(process2.platform!=="win32")return process2.env.TERM!=="linux";return Boolean(process2.env.WT_SESSION)||Boolean(process2.env.TERMINUS_SUBLIME)||process2.env.ConEmuTask==="{cmd::Cmder}"||process2.env.TERM_PROGRAM==="Terminus-Sublime"||process2.env.TERM_PROGRAM==="vscode"||process2.env.TERM==="xterm-256color"||process2.env.TERM==="alacritty"||process2.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var common2,specialMainSymbols,specialFallbackSymbols,mainSymbols,fallbackSymbols,shouldUseMain,figures,esm_default,replacements;var init_esm=__esm(()=>{common2={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},specialMainSymbols={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},specialFallbackSymbols={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},mainSymbols={...common2,...specialMainSymbols},fallbackSymbols={...common2,...specialFallbackSymbols},shouldUseMain=isUnicodeSupported(),figures=shouldUseMain?mainSymbols:fallbackSymbols,esm_default=figures,replacements=Object.entries(specialMainSymbols)});var import_yoctocolors_cjs,defaultTheme;var init_theme=__esm(()=>{init_esm();import_yoctocolors_cjs=__toESM(require_yoctocolors_cjs(),1),defaultTheme={prefix:{idle:import_yoctocolors_cjs.default.blue("?"),done:import_yoctocolors_cjs.default.green(esm_default.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map((frame)=>import_yoctocolors_cjs.default.yellow(frame))},style:{answer:import_yoctocolors_cjs.default.cyan,message:import_yoctocolors_cjs.default.bold,error:(text)=>import_yoctocolors_cjs.default.red(`> ${text}`),defaultAnswer:(text)=>import_yoctocolors_cjs.default.dim(`(${text})`),help:import_yoctocolors_cjs.default.dim,highlight:import_yoctocolors_cjs.default.cyan,key:(text)=>import_yoctocolors_cjs.default.cyan(import_yoctocolors_cjs.default.bold(`<${text}>`))}}});function isPlainObject(value){if(typeof value!=="object"||value===null)return!1;let proto=value;while(Object.getPrototypeOf(proto)!==null)proto=Object.getPrototypeOf(proto);return Object.getPrototypeOf(value)===proto}function deepMerge(...objects){let output={};for(let obj of objects)for(let[key,value]of Object.entries(obj)){let prevValue=output[key];output[key]=isPlainObject(prevValue)&&isPlainObject(value)?deepMerge(prevValue,value):value}return output}function makeTheme(...themes){let themesToMerge=[defaultTheme,...themes.filter((theme)=>theme!=null)];return deepMerge(...themesToMerge)}var init_make_theme=__esm(()=>{init_theme()});function usePrefix({status:status2="idle",theme}){let[showLoader,setShowLoader]=useState(!1),[tick,setTick]=useState(0),{prefix,spinner}=makeTheme(theme);if(useEffect(()=>{if(status2==="loading"){let tickInterval,inc=-1,delayTimeout=setTimeout(()=>{setShowLoader(!0),tickInterval=setInterval(()=>{inc=inc+1,setTick(inc%spinner.frames.length)},spinner.interval)},300);return()=>{clearTimeout(delayTimeout),clearInterval(tickInterval)}}else setShowLoader(!1)},[status2]),showLoader)return spinner.frames[tick];return typeof prefix==="string"?prefix:prefix[status2==="loading"?"idle":status2]??prefix.idle}var init_use_prefix=__esm(()=>{init_use_state();init_use_effect();init_make_theme()});function useMemo(fn,dependencies){return withPointer((pointer)=>{let prev=pointer.get();if(!prev||prev.dependencies.length!==dependencies.length||prev.dependencies.some((dep,i2)=>dep!==dependencies[i2])){let value=fn();return pointer.set({value,dependencies}),value}return prev.value})}var init_use_memo=__esm(()=>{init_hook_engine()});function useRef(val){return useState({current:val})[0]}var init_use_ref=__esm(()=>{init_use_state()});function useKeypress(userHandler){let signal=useRef(userHandler);signal.current=userHandler,useEffect((rl)=>{let ignore=!1,handler=withUpdates((_input,event)=>{if(ignore)return;signal.current(event,rl)});return rl.input.on("keypress",handler),()=>{ignore=!0,rl.input.removeListener("keypress",handler)}},[])}var init_use_keypress=__esm(()=>{init_use_ref();init_use_effect();init_hook_engine()});var require_cli_width=__commonJS((exports,module)=>{module.exports=cliWidth;function normalizeOpts(options){let defaultOpts={defaultWidth:0,output:process.stdout,tty:__require("tty")};if(!options)return defaultOpts;return Object.keys(defaultOpts).forEach(function(key){if(!options[key])options[key]=defaultOpts[key]}),options}function cliWidth(options){let opts=normalizeOpts(options);if(opts.output.getWindowSize)return opts.output.getWindowSize()[0]||opts.defaultWidth;if(opts.tty.getWindowSize)return opts.tty.getWindowSize()[1]||opts.defaultWidth;if(opts.output.columns)return opts.output.columns;if(process.env.CLI_WIDTH){let width=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(width)&&width!==0)return width}return opts.defaultWidth}});var require_ansi_regex=__commonJS((exports,module)=>{module.exports=({onlyFirst=!1}={})=>{let pattern=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(pattern,onlyFirst?void 0:"g")}});var require_strip_ansi=__commonJS((exports,module)=>{var ansiRegex=require_ansi_regex();module.exports=(string)=>typeof string==="string"?string.replace(ansiRegex(),""):string});var require_is_fullwidth_code_point=__commonJS((exports,module)=>{var isFullwidthCodePoint=(codePoint)=>{if(Number.isNaN(codePoint))return!1;if(codePoint>=4352&&(codePoint<=4447||codePoint===9001||codePoint===9002||11904<=codePoint&&codePoint<=12871&&codePoint!==12351||12880<=codePoint&&codePoint<=19903||19968<=codePoint&&codePoint<=42182||43360<=codePoint&&codePoint<=43388||44032<=codePoint&&codePoint<=55203||63744<=codePoint&&codePoint<=64255||65040<=codePoint&&codePoint<=65049||65072<=codePoint&&codePoint<=65131||65281<=codePoint&&codePoint<=65376||65504<=codePoint&&codePoint<=65510||110592<=codePoint&&codePoint<=110593||127488<=codePoint&&codePoint<=127569||131072<=codePoint&&codePoint<=262141))return!0;return!1};module.exports=isFullwidthCodePoint;module.exports.default=isFullwidthCodePoint});var require_emoji_regex=__commonJS((exports,module)=>{module.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var require_string_width=__commonJS((exports,module)=>{var stripAnsi=require_strip_ansi(),isFullwidthCodePoint=require_is_fullwidth_code_point(),emojiRegex2=require_emoji_regex(),stringWidth=(string)=>{if(typeof string!=="string"||string.length===0)return 0;if(string=stripAnsi(string),string.length===0)return 0;string=string.replace(emojiRegex2()," ");let width=0;for(let i2=0;i2<string.length;i2++){let code=string.codePointAt(i2);if(code<=31||code>=127&&code<=159)continue;if(code>=768&&code<=879)continue;if(code>65535)i2++;width+=isFullwidthCodePoint(code)?2:1}return width};module.exports=stringWidth;module.exports.default=stringWidth});var require_color_name=__commonJS((exports,module)=>{module.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var require_conversions=__commonJS((exports,module)=>{var cssKeywords=require_color_name(),reverseKeywords={};for(let key of Object.keys(cssKeywords))reverseKeywords[cssKeywords[key]]=key;var convert={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};module.exports=convert;for(let model of Object.keys(convert)){if(!("channels"in convert[model]))throw Error("missing channels property: "+model);if(!("labels"in convert[model]))throw Error("missing channel labels property: "+model);if(convert[model].labels.length!==convert[model].channels)throw Error("channel and label counts mismatch: "+model);let{channels,labels}=convert[model];delete convert[model].channels,delete convert[model].labels,Object.defineProperty(convert[model],"channels",{value:channels}),Object.defineProperty(convert[model],"labels",{value:labels})}convert.rgb.hsl=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,min=Math.min(r,g,b2),max=Math.max(r,g,b2),delta=max-min,h,s;if(max===min)h=0;else if(r===max)h=(g-b2)/delta;else if(g===max)h=2+(b2-r)/delta;else if(b2===max)h=4+(r-g)/delta;if(h=Math.min(h*60,360),h<0)h+=360;let l=(min+max)/2;if(max===min)s=0;else if(l<=0.5)s=delta/(max+min);else s=delta/(2-max-min);return[h,s*100,l*100]};convert.rgb.hsv=function(rgb){let rdif,gdif,bdif,h,s,r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,v=Math.max(r,g,b2),diff=v-Math.min(r,g,b2),diffc=function(c){return(v-c)/6/diff+0.5};if(diff===0)h=0,s=0;else{if(s=diff/v,rdif=diffc(r),gdif=diffc(g),bdif=diffc(b2),r===v)h=bdif-gdif;else if(g===v)h=0.3333333333333333+rdif-bdif;else if(b2===v)h=0.6666666666666666+gdif-rdif;if(h<0)h+=1;else if(h>1)h-=1}return[h*360,s*100,v*100]};convert.rgb.hwb=function(rgb){let r=rgb[0],g=rgb[1],b2=rgb[2],h=convert.rgb.hsl(rgb)[0],w=0.00392156862745098*Math.min(r,Math.min(g,b2));return b2=1-0.00392156862745098*Math.max(r,Math.max(g,b2)),[h,w*100,b2*100]};convert.rgb.cmyk=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,k=Math.min(1-r,1-g,1-b2),c=(1-r-k)/(1-k)||0,m=(1-g-k)/(1-k)||0,y=(1-b2-k)/(1-k)||0;return[c*100,m*100,y*100,k*100]};function comparativeDistance(x,y){return(x[0]-y[0])**2+(x[1]-y[1])**2+(x[2]-y[2])**2}convert.rgb.keyword=function(rgb){let reversed=reverseKeywords[rgb];if(reversed)return reversed;let currentClosestDistance=1/0,currentClosestKeyword;for(let keyword of Object.keys(cssKeywords)){let value=cssKeywords[keyword],distance=comparativeDistance(rgb,value);if(distance<currentClosestDistance)currentClosestDistance=distance,currentClosestKeyword=keyword}return currentClosestKeyword};convert.keyword.rgb=function(keyword){return cssKeywords[keyword]};convert.rgb.xyz=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255;r=r>0.04045?((r+0.055)/1.055)**2.4:r/12.92,g=g>0.04045?((g+0.055)/1.055)**2.4:g/12.92,b2=b2>0.04045?((b2+0.055)/1.055)**2.4:b2/12.92;let x=r*0.4124+g*0.3576+b2*0.1805,y=r*0.2126+g*0.7152+b2*0.0722,z=r*0.0193+g*0.1192+b2*0.9505;return[x*100,y*100,z*100]};convert.rgb.lab=function(rgb){let xyz=convert.rgb.xyz(rgb),x=xyz[0],y=xyz[1],z=xyz[2];x/=95.047,y/=100,z/=108.883,x=x>0.008856?x**0.3333333333333333:7.787*x+0.13793103448275862,y=y>0.008856?y**0.3333333333333333:7.787*y+0.13793103448275862,z=z>0.008856?z**0.3333333333333333:7.787*z+0.13793103448275862;let l=116*y-16,a=500*(x-y),b2=200*(y-z);return[l,a,b2]};convert.hsl.rgb=function(hsl){let h=hsl[0]/360,s=hsl[1]/100,l=hsl[2]/100,t2,t3,val;if(s===0)return val=l*255,[val,val,val];if(l<0.5)t2=l*(1+s);else t2=l+s-l*s;let t1=2*l-t2,rgb=[0,0,0];for(let i2=0;i2<3;i2++){if(t3=h+0.3333333333333333*-(i2-1),t3<0)t3++;if(t3>1)t3--;if(6*t3<1)val=t1+(t2-t1)*6*t3;else if(2*t3<1)val=t2;else if(3*t3<2)val=t1+(t2-t1)*(0.6666666666666666-t3)*6;else val=t1;rgb[i2]=val*255}return rgb};convert.hsl.hsv=function(hsl){let h=hsl[0],s=hsl[1]/100,l=hsl[2]/100,smin=s,lmin=Math.max(l,0.01);l*=2,s*=l<=1?l:2-l,smin*=lmin<=1?lmin:2-lmin;let v=(l+s)/2,sv=l===0?2*smin/(lmin+smin):2*s/(l+s);return[h,sv*100,v*100]};convert.hsv.rgb=function(hsv){let h=hsv[0]/60,s=hsv[1]/100,v=hsv[2]/100,hi=Math.floor(h)%6,f=h-Math.floor(h),p=255*v*(1-s),q=255*v*(1-s*f),t=255*v*(1-s*(1-f));switch(v*=255,hi){case 0:return[v,t,p];case 1:return[q,v,p];case 2:return[p,v,t];case 3:return[p,q,v];case 4:return[t,p,v];case 5:return[v,p,q]}};convert.hsv.hsl=function(hsv){let h=hsv[0],s=hsv[1]/100,v=hsv[2]/100,vmin=Math.max(v,0.01),sl,l;l=(2-s)*v;let lmin=(2-s)*vmin;return sl=s*vmin,sl/=lmin<=1?lmin:2-lmin,sl=sl||0,l/=2,[h,sl*100,l*100]};convert.hwb.rgb=function(hwb){let h=hwb[0]/360,wh=hwb[1]/100,bl=hwb[2]/100,ratio=wh+bl,f;if(ratio>1)wh/=ratio,bl/=ratio;let i2=Math.floor(6*h),v=1-bl;if(f=6*h-i2,(i2&1)!==0)f=1-f;let n=wh+f*(v-wh),r,g,b2;switch(i2){default:case 6:case 0:r=v,g=n,b2=wh;break;case 1:r=n,g=v,b2=wh;break;case 2:r=wh,g=v,b2=n;break;case 3:r=wh,g=n,b2=v;break;case 4:r=n,g=wh,b2=v;break;case 5:r=v,g=wh,b2=n;break}return[r*255,g*255,b2*255]};convert.cmyk.rgb=function(cmyk){let c=cmyk[0]/100,m=cmyk[1]/100,y=cmyk[2]/100,k=cmyk[3]/100,r=1-Math.min(1,c*(1-k)+k),g=1-Math.min(1,m*(1-k)+k),b2=1-Math.min(1,y*(1-k)+k);return[r*255,g*255,b2*255]};convert.xyz.rgb=function(xyz){let x=xyz[0]/100,y=xyz[1]/100,z=xyz[2]/100,r,g,b2;return r=x*3.2406+y*-1.5372+z*-0.4986,g=x*-0.9689+y*1.8758+z*0.0415,b2=x*0.0557+y*-0.204+z*1.057,r=r>0.0031308?1.055*r**0.4166666666666667-0.055:r*12.92,g=g>0.0031308?1.055*g**0.4166666666666667-0.055:g*12.92,b2=b2>0.0031308?1.055*b2**0.4166666666666667-0.055:b2*12.92,r=Math.min(Math.max(0,r),1),g=Math.min(Math.max(0,g),1),b2=Math.min(Math.max(0,b2),1),[r*255,g*255,b2*255]};convert.xyz.lab=function(xyz){let x=xyz[0],y=xyz[1],z=xyz[2];x/=95.047,y/=100,z/=108.883,x=x>0.008856?x**0.3333333333333333:7.787*x+0.13793103448275862,y=y>0.008856?y**0.3333333333333333:7.787*y+0.13793103448275862,z=z>0.008856?z**0.3333333333333333:7.787*z+0.13793103448275862;let l=116*y-16,a=500*(x-y),b2=200*(y-z);return[l,a,b2]};convert.lab.xyz=function(lab){let l=lab[0],a=lab[1],b2=lab[2],x,y,z;y=(l+16)/116,x=a/500+y,z=y-b2/200;let y2=y**3,x2=x**3,z2=z**3;return y=y2>0.008856?y2:(y-0.13793103448275862)/7.787,x=x2>0.008856?x2:(x-0.13793103448275862)/7.787,z=z2>0.008856?z2:(z-0.13793103448275862)/7.787,x*=95.047,y*=100,z*=108.883,[x,y,z]};convert.lab.lch=function(lab){let l=lab[0],a=lab[1],b2=lab[2],h;if(h=Math.atan2(b2,a)*360/2/Math.PI,h<0)h+=360;let c=Math.sqrt(a*a+b2*b2);return[l,c,h]};convert.lch.lab=function(lch){let l=lch[0],c=lch[1],hr=lch[2]/360*2*Math.PI,a=c*Math.cos(hr),b2=c*Math.sin(hr);return[l,a,b2]};convert.rgb.ansi16=function(args,saturation=null){let[r,g,b2]=args,value=saturation===null?convert.rgb.hsv(args)[2]:saturation;if(value=Math.round(value/50),value===0)return 30;let ansi=30+(Math.round(b2/255)<<2|Math.round(g/255)<<1|Math.round(r/255));if(value===2)ansi+=60;return ansi};convert.hsv.ansi16=function(args){return convert.rgb.ansi16(convert.hsv.rgb(args),args[2])};convert.rgb.ansi256=function(args){let r=args[0],g=args[1],b2=args[2];if(r===g&&g===b2){if(r<8)return 16;if(r>248)return 231;return Math.round((r-8)/247*24)+232}return 16+36*Math.round(r/255*5)+6*Math.round(g/255*5)+Math.round(b2/255*5)};convert.ansi16.rgb=function(args){let color=args%10;if(color===0||color===7){if(args>50)color+=3.5;return color=color/10.5*255,[color,color,color]}let mult=(~~(args>50)+1)*0.5,r=(color&1)*mult*255,g=(color>>1&1)*mult*255,b2=(color>>2&1)*mult*255;return[r,g,b2]};convert.ansi256.rgb=function(args){if(args>=232){let c=(args-232)*10+8;return[c,c,c]}args-=16;let rem,r=Math.floor(args/36)/5*255,g=Math.floor((rem=args%36)/6)/5*255,b2=rem%6/5*255;return[r,g,b2]};convert.rgb.hex=function(args){let string=(((Math.round(args[0])&255)<<16)+((Math.round(args[1])&255)<<8)+(Math.round(args[2])&255)).toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.hex.rgb=function(args){let match=args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!match)return[0,0,0];let colorString=match[0];if(match[0].length===3)colorString=colorString.split("").map((char)=>{return char+char}).join("");let integer=parseInt(colorString,16),r=integer>>16&255,g=integer>>8&255,b2=integer&255;return[r,g,b2]};convert.rgb.hcg=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b2=rgb[2]/255,max=Math.max(Math.max(r,g),b2),min=Math.min(Math.min(r,g),b2),chroma=max-min,grayscale,hue;if(chroma<1)grayscale=min/(1-chroma);else grayscale=0;if(chroma<=0)hue=0;else if(max===r)hue=(g-b2)/chroma%6;else if(max===g)hue=2+(b2-r)/chroma;else hue=4+(r-g)/chroma;return hue/=6,hue%=1,[hue*360,chroma*100,grayscale*100]};convert.hsl.hcg=function(hsl){let s=hsl[1]/100,l=hsl[2]/100,c=l<0.5?2*s*l:2*s*(1-l),f=0;if(c<1)f=(l-0.5*c)/(1-c);return[hsl[0],c*100,f*100]};convert.hsv.hcg=function(hsv){let s=hsv[1]/100,v=hsv[2]/100,c=s*v,f=0;if(c<1)f=(v-c)/(1-c);return[hsv[0],c*100,f*100]};convert.hcg.rgb=function(hcg){let h=hcg[0]/360,c=hcg[1]/100,g=hcg[2]/100;if(c===0)return[g*255,g*255,g*255];let pure=[0,0,0],hi=h%1*6,v=hi%1,w=1-v,mg=0;switch(Math.floor(hi)){case 0:pure[0]=1,pure[1]=v,pure[2]=0;break;case 1:pure[0]=w,pure[1]=1,pure[2]=0;break;case 2:pure[0]=0,pure[1]=1,pure[2]=v;break;case 3:pure[0]=0,pure[1]=w,pure[2]=1;break;case 4:pure[0]=v,pure[1]=0,pure[2]=1;break;default:pure[0]=1,pure[1]=0,pure[2]=w}return mg=(1-c)*g,[(c*pure[0]+mg)*255,(c*pure[1]+mg)*255,(c*pure[2]+mg)*255]};convert.hcg.hsv=function(hcg){let c=hcg[1]/100,g=hcg[2]/100,v=c+g*(1-c),f=0;if(v>0)f=c/v;return[hcg[0],f*100,v*100]};convert.hcg.hsl=function(hcg){let c=hcg[1]/100,l=hcg[2]/100*(1-c)+0.5*c,s=0;if(l>0&&l<0.5)s=c/(2*l);else if(l>=0.5&&l<1)s=c/(2*(1-l));return[hcg[0],s*100,l*100]};convert.hcg.hwb=function(hcg){let c=hcg[1]/100,g=hcg[2]/100,v=c+g*(1-c);return[hcg[0],(v-c)*100,(1-v)*100]};convert.hwb.hcg=function(hwb){let w=hwb[1]/100,v=1-hwb[2]/100,c=v-w,g=0;if(c<1)g=(v-c)/(1-c);return[hwb[0],c*100,g*100]};convert.apple.rgb=function(apple){return[apple[0]/65535*255,apple[1]/65535*255,apple[2]/65535*255]};convert.rgb.apple=function(rgb){return[rgb[0]/255*65535,rgb[1]/255*65535,rgb[2]/255*65535]};convert.gray.rgb=function(args){return[args[0]/100*255,args[0]/100*255,args[0]/100*255]};convert.gray.hsl=function(args){return[0,0,args[0]]};convert.gray.hsv=convert.gray.hsl;convert.gray.hwb=function(gray){return[0,100,gray[0]]};convert.gray.cmyk=function(gray){return[0,0,0,gray[0]]};convert.gray.lab=function(gray){return[gray[0],0,0]};convert.gray.hex=function(gray){let val=Math.round(gray[0]/100*255)&255,string=((val<<16)+(val<<8)+val).toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.rgb.gray=function(rgb){return[(rgb[0]+rgb[1]+rgb[2])/3/255*100]}});var require_route=__commonJS((exports,module)=>{var conversions=require_conversions();function buildGraph(){let graph={},models=Object.keys(conversions);for(let len=models.length,i2=0;i2<len;i2++)graph[models[i2]]={distance:-1,parent:null};return graph}function deriveBFS(fromModel){let graph=buildGraph(),queue2=[fromModel];graph[fromModel].distance=0;while(queue2.length){let current=queue2.pop(),adjacents=Object.keys(conversions[current]);for(let len=adjacents.length,i2=0;i2<len;i2++){let adjacent=adjacents[i2],node=graph[adjacent];if(node.distance===-1)node.distance=graph[current].distance+1,node.parent=current,queue2.unshift(adjacent)}}return graph}function link(from,to){return function(args){return to(from(args))}}function wrapConversion(toModel,graph){let path2=[graph[toModel].parent,toModel],fn=conversions[graph[toModel].parent][toModel],cur=graph[toModel].parent;while(graph[cur].parent)path2.unshift(graph[cur].parent),fn=link(conversions[graph[cur].parent][cur],fn),cur=graph[cur].parent;return fn.conversion=path2,fn}module.exports=function(fromModel){let graph=deriveBFS(fromModel),conversion={},models=Object.keys(graph);for(let len=models.length,i2=0;i2<len;i2++){let toModel=models[i2];if(graph[toModel].parent===null)continue;conversion[toModel]=wrapConversion(toModel,graph)}return conversion}});var require_color_convert=__commonJS((exports,module)=>{var conversions=require_conversions(),route=require_route(),convert={},models=Object.keys(conversions);function wrapRaw(fn){let wrappedFn=function(...args){let arg0=args[0];if(arg0===void 0||arg0===null)return arg0;if(arg0.length>1)args=arg0;return fn(args)};if("conversion"in fn)wrappedFn.conversion=fn.conversion;return wrappedFn}function wrapRounded(fn){let wrappedFn=function(...args){let arg0=args[0];if(arg0===void 0||arg0===null)return arg0;if(arg0.length>1)args=arg0;let result2=fn(args);if(typeof result2==="object")for(let len=result2.length,i2=0;i2<len;i2++)result2[i2]=Math.round(result2[i2]);return result2};if("conversion"in fn)wrappedFn.conversion=fn.conversion;return wrappedFn}models.forEach((fromModel)=>{convert[fromModel]={},Object.defineProperty(convert[fromModel],"channels",{value:conversions[fromModel].channels}),Object.defineProperty(convert[fromModel],"labels",{value:conversions[fromModel].labels});let routes=route(fromModel);Object.keys(routes).forEach((toModel)=>{let fn=routes[toModel];convert[fromModel][toModel]=wrapRounded(fn),convert[fromModel][toModel].raw=wrapRaw(fn)})});module.exports=convert});var require_ansi_styles=__commonJS((exports,module)=>{var wrapAnsi16=(fn,offset)=>(...args)=>{return`\x1B[${fn(...args)+offset}m`},wrapAnsi256=(fn,offset)=>(...args)=>{let code=fn(...args);return`\x1B[${38+offset};5;${code}m`},wrapAnsi16m=(fn,offset)=>(...args)=>{let rgb=fn(...args);return`\x1B[${38+offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`},ansi2ansi=(n)=>n,rgb2rgb=(r,g,b2)=>[r,g,b2],setLazyProperty=(object,property,get2)=>{Object.defineProperty(object,property,{get:()=>{let value=get2();return Object.defineProperty(object,property,{value,enumerable:!0,configurable:!0}),value},enumerable:!0,configurable:!0})},colorConvert,makeDynamicStyles=(wrap,targetSpace,identity,isBackground)=>{if(colorConvert===void 0)colorConvert=require_color_convert();let offset=isBackground?10:0,styles={};for(let[sourceSpace,suite]of Object.entries(colorConvert)){let name=sourceSpace==="ansi16"?"ansi":sourceSpace;if(sourceSpace===targetSpace)styles[name]=wrap(identity,offset);else if(typeof suite==="object")styles[name]=wrap(suite[targetSpace],offset)}return styles};function assembleStyles(){let codes=new Map,styles={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};styles.color.gray=styles.color.blackBright,styles.bgColor.bgGray=styles.bgColor.bgBlackBright,styles.color.grey=styles.color.blackBright,styles.bgColor.bgGrey=styles.bgColor.bgBlackBright;for(let[groupName,group]of Object.entries(styles)){for(let[styleName,style]of Object.entries(group))styles[styleName]={open:`\x1B[${style[0]}m`,close:`\x1B[${style[1]}m`},group[styleName]=styles[styleName],codes.set(style[0],style[1]);Object.defineProperty(styles,groupName,{value:group,enumerable:!1})}return Object.defineProperty(styles,"codes",{value:codes,enumerable:!1}),styles.color.close="\x1B[39m",styles.bgColor.close="\x1B[49m",setLazyProperty(styles.color,"ansi",()=>makeDynamicStyles(wrapAnsi16,"ansi16",ansi2ansi,!1)),setLazyProperty(styles.color,"ansi256",()=>makeDynamicStyles(wrapAnsi256,"ansi256",ansi2ansi,!1)),setLazyProperty(styles.color,"ansi16m",()=>makeDynamicStyles(wrapAnsi16m,"rgb",rgb2rgb,!1)),setLazyProperty(styles.bgColor,"ansi",()=>makeDynamicStyles(wrapAnsi16,"ansi16",ansi2ansi,!0)),setLazyProperty(styles.bgColor,"ansi256",()=>makeDynamicStyles(wrapAnsi256,"ansi256",ansi2ansi,!0)),setLazyProperty(styles.bgColor,"ansi16m",()=>makeDynamicStyles(wrapAnsi16m,"rgb",rgb2rgb,!0)),styles}Object.defineProperty(module,"exports",{enumerable:!0,get:assembleStyles})});var require_wrap_ansi=__commonJS((exports,module)=>{var stringWidth=require_string_width(),stripAnsi=require_strip_ansi(),ansiStyles=require_ansi_styles(),ESCAPES=new Set(["\x1B","\x9B"]),wrapAnsi=(code)=>`${ESCAPES.values().next().value}[${code}m`,wordLengths=(string)=>string.split(" ").map((character)=>stringWidth(character)),wrapWord=(rows,word,columns)=>{let characters=[...word],isInsideEscape=!1,visible=stringWidth(stripAnsi(rows[rows.length-1]));for(let[index,character]of characters.entries()){let characterLength=stringWidth(character);if(visible+characterLength<=columns)rows[rows.length-1]+=character;else rows.push(character),visible=0;if(ESCAPES.has(character))isInsideEscape=!0;else if(isInsideEscape&&character==="m"){isInsideEscape=!1;continue}if(isInsideEscape)continue;if(visible+=characterLength,visible===columns&&index<characters.length-1)rows.push(""),visible=0}if(!visible&&rows[rows.length-1].length>0&&rows.length>1)rows[rows.length-2]+=rows.pop()},stringVisibleTrimSpacesRight=(str2)=>{let words=str2.split(" "),last=words.length;while(last>0){if(stringWidth(words[last-1])>0)break;last--}if(last===words.length)return str2;return words.slice(0,last).join(" ")+words.slice(last).join("")},exec2=(string,columns,options={})=>{if(options.trim!==!1&&string.trim()==="")return"";let pre="",ret="",escapeCode,lengths=wordLengths(string),rows=[""];for(let[index,word]of string.split(" ").entries()){if(options.trim!==!1)rows[rows.length-1]=rows[rows.length-1].trimLeft();let rowLength=stringWidth(rows[rows.length-1]);if(index!==0){if(rowLength>=columns&&(options.wordWrap===!1||options.trim===!1))rows.push(""),rowLength=0;if(rowLength>0||options.trim===!1)rows[rows.length-1]+=" ",rowLength++}if(options.hard&&lengths[index]>columns){let remainingColumns=columns-rowLength,breaksStartingThisLine=1+Math.floor((lengths[index]-remainingColumns-1)/columns);if(Math.floor((lengths[index]-1)/columns)<breaksStartingThisLine)rows.push("");wrapWord(rows,word,columns);continue}if(rowLength+lengths[index]>columns&&rowLength>0&&lengths[index]>0){if(options.wordWrap===!1&&rowLength<columns){wrapWord(rows,word,columns);continue}rows.push("")}if(rowLength+lengths[index]>columns&&options.wordWrap===!1){wrapWord(rows,word,columns);continue}rows[rows.length-1]+=word}if(options.trim!==!1)rows=rows.map(stringVisibleTrimSpacesRight);pre=rows.join(`
991
991
  `);for(let[index,character]of[...pre].entries()){if(ret+=character,ESCAPES.has(character)){let code2=parseFloat(/\d[^m]*/.exec(pre.slice(index,index+4)));escapeCode=code2===39?null:code2}let code=ansiStyles.codes.get(Number(escapeCode));if(escapeCode&&code){if(pre[index+1]===`
992
992
  `)ret+=wrapAnsi(code);else if(character===`
993
993
  `)ret+=wrapAnsi(escapeCode)}}return ret};module.exports=(string,columns,options)=>{return String(string).normalize().replace(/\r\n/g,`
@@ -1110,7 +1110,7 @@ Next steps:`),console.log(" 1. Reload tmux: tmux source ~/.tmux.conf"),console.
1110
1110
  `),await promptUninstallFrom(join30(home,".tmux.conf"),"generated by genie-cli","tmux.conf");for(let shellRc of[join30(home,".zshrc"),join30(home,".bashrc")])await promptUninstallFrom(shellRc,"generated by genie-cli",shellRc);let termuxDir=join30(home,".termux"),isTermux=existsSync25(termuxDir)||process.env.TERMUX_VERSION;if(isTermux){let termuxProps=join30(termuxDir,"termux.properties");if(await promptUninstallFrom(termuxProps,"generated by genie-cli","termux.properties"),!contentExists(termuxProps,"generated by genie-cli"))console.log(" Run: termux-reload-settings")}if(console.log(`
1111
1111
  \u2705 Uninstallation complete!`),console.log(`
1112
1112
  Next steps:`),console.log(" 1. Reload tmux: tmux source ~/.tmux.conf"),console.log(" 2. Restart your shell or run: source ~/.bashrc"),isTermux)console.log(" 3. Reload Termux: termux-reload-settings")}var GENIE_CONTENT_MARKERS;var init_shortcuts=__esm(()=>{GENIE_CONTENT_MARKERS=["genie","Ctrl+","split-window","new-window","stty -ixon","Warp-like","bind-key -n","extra-keys","F1=","bind -x"]});var exports_setup={};__export(exports_setup,{setupCommand:()=>setupCommand});import{homedir as homedir25}from"os";import{join as join31}from"path";function printHeader(){console.log(),console.log(`\x1B[1m\x1B[36m${"=".repeat(64)}\x1B[0m`),console.log("\x1B[1m\x1B[36m Genie Setup Wizard\x1B[0m"),console.log(`\x1B[1m\x1B[36m${"=".repeat(64)}\x1B[0m`),console.log()}function printSection(title,description){if(console.log(),console.log(`\x1B[1m${title}\x1B[0m`),description)console.log(`\x1B[2m${description}\x1B[0m`);console.log()}async function configureSession(config,quick){if(printSection("2. Session Configuration","Configure tmux session settings"),quick)return console.log(` Using defaults: session="${config.session.name}", window="${config.session.defaultWindow}"`),config;let sessionName=await esm_default5({message:"Session name:",default:config.session.name}),defaultWindow=await esm_default5({message:"Default window name:",default:config.session.defaultWindow}),autoCreate=await esm_default4({message:"Auto-create session on connect?",default:config.session.autoCreate});return config.session={name:sessionName,defaultWindow,autoCreate},config}async function configureTerminal(config,quick){if(printSection("3. Terminal Defaults","Configure default values for term commands"),quick)return console.log(` Using defaults: timeout=${config.terminal.execTimeout}ms, lines=${config.terminal.readLines}`),config;let timeoutStr=await esm_default5({message:"Exec timeout (milliseconds):",default:String(config.terminal.execTimeout),validate:(v)=>{let n=Number.parseInt(v,10);return!Number.isNaN(n)&&n>0?!0:"Must be a positive number"}}),linesStr=await esm_default5({message:"Read lines (default for genie agent read):",default:String(config.terminal.readLines),validate:(v)=>{let n=Number.parseInt(v,10);return!Number.isNaN(n)&&n>0?!0:"Must be a positive number"}}),worktreeBase=await esm_default5({message:"Worktree base directory (leave empty for ~/.genie/worktrees/<project>/):",default:config.terminal.worktreeBase??""});return config.terminal={execTimeout:Number.parseInt(timeoutStr,10),readLines:Number.parseInt(linesStr,10),...worktreeBase?{worktreeBase}:{}},config}async function configureShortcuts(config,quick){printSection("4. Keyboard Shortcuts","Warp-like tmux shortcuts for quick navigation");let home=homedir25(),tmuxConf=join31(home,".tmux.conf");if(isShortcutsInstalled(tmuxConf))return console.log(" \x1B[32m\u2713\x1B[0m Tmux shortcuts already installed"),config.shortcuts.tmuxInstalled=!0,config;if(console.log(" Available shortcuts:"),console.log(" \x1B[36mCtrl+T\x1B[0m \u2192 New tab (window)"),console.log(" \x1B[36mCtrl+S\x1B[0m \u2192 Vertical split"),console.log(" \x1B[36mCtrl+H\x1B[0m \u2192 Horizontal split"),console.log(),quick)return console.log(" Skipped in quick mode. Run \x1B[36mgenie setup --shortcuts\x1B[0m to install."),config;if(await esm_default4({message:"Install tmux keyboard shortcuts?",default:!1}))console.log(),await installShortcuts(),config.shortcuts.tmuxInstalled=!0,await updateShortcutsConfig({tmuxInstalled:!0});else console.log(" Skipped. Run \x1B[36mgenie shortcuts install\x1B[0m later.");return config}function printCodexResult(result2){if(result2==="changed")console.log(" \x1B[32m\u2713\x1B[0m Codex config updated");else if(result2==="unchanged")console.log(" \x1B[32m\u2713\x1B[0m Codex config already up to date");else console.log(" \x1B[31m\u2717\x1B[0m Failed to update codex config")}async function configureCodex(config,quick){printSection("5. Codex Integration","Configure OpenAI Codex for genie agents");let codexCheck=await checkCommand("codex");if(!codexCheck.exists)return console.log(" \x1B[33m!\x1B[0m Codex CLI not found. Skipping codex integration."),config;if(console.log(` \x1B[32m\u2713\x1B[0m Codex CLI found (${codexCheck.version??"unknown version"})`),isCodexConfigured())return console.log(" \x1B[32m\u2713\x1B[0m Codex config already configured"),config.codex={configured:!0},config;if(console.log(),console.log(" Genie needs to configure codex for agent communication:"),console.log(" \x1B[36mdisable_paste_burst\x1B[0m \u2192 Reliable tmux command injection"),console.log(" \x1B[36mOTel exporter\x1B[0m \u2192 Telemetry relay for state detection"),console.log(` Config: \x1B[2m${contractPath(getCodexConfigPath())}\x1B[0m`),console.log(),quick){let result2=ensureCodexOtelConfig();return printCodexResult(result2),config.codex={configured:result2!=="error"},config}if(await esm_default4({message:"Configure Codex for genie agent integration?",default:!0})){let result2=ensureCodexOtelConfig();printCodexResult(result2),config.codex={configured:result2!=="error"}}else console.log(" Skipped. Run \x1B[36mgenie setup --codex\x1B[0m later.");return config}async function configureDebug(config,quick){if(printSection("6. Debug Options","Logging and debugging settings"),quick)return console.log(" Using defaults: tmuxDebug=false, verbose=false"),config;let tmuxDebug=await esm_default4({message:"Enable tmux debug logging?",default:config.logging.tmuxDebug}),verbose=await esm_default4({message:"Enable verbose mode?",default:config.logging.verbose});return config.logging={tmuxDebug,verbose},config}async function configurePromptMode(config,quick){if(printSection("7. Prompt Mode","Controls how genie injects system prompts into Claude Code"),quick)return console.log(` Using default: promptMode="${config.promptMode}"`),config;console.log(" append \u2014 Uses --append-system-prompt-file (preserves Claude Code default system prompt)"),console.log(" system \u2014 Uses --system-prompt-file (replaces Claude Code default system prompt)"),console.log();let promptMode=await esm_default11({message:"Prompt mode:",choices:[{name:"append (recommended \u2014 preserves CC default)",value:"append"},{name:"system (replaces CC default)",value:"system"}],default:config.promptMode});return config.promptMode=promptMode,config}async function showSummaryAndSave(config){printSection("Summary",`Configuration will be saved to ${contractPath(getGenieConfigPath())}`),console.log(` Session: \x1B[36m${config.session.name}\x1B[0m (window: ${config.session.defaultWindow})`),console.log(` Terminal: timeout=${config.terminal.execTimeout}ms, lines=${config.terminal.readLines}`),console.log(` Shortcuts: ${config.shortcuts.tmuxInstalled?"\x1B[32minstalled\x1B[0m":"\x1B[2mnot installed\x1B[0m"}`),console.log(` Codex: ${config.codex?.configured?"\x1B[32mconfigured\x1B[0m":"\x1B[2mnot configured\x1B[0m"}`),console.log(` Debug: tmux=${config.logging.tmuxDebug}, verbose=${config.logging.verbose}`),console.log(` Prompt mode: \x1B[36m${config.promptMode}\x1B[0m`),console.log(),config.setupComplete=!0,config.lastSetupAt=new Date().toISOString(),await saveGenieConfig(config),console.log("\x1B[32m\u2713 Configuration saved!\x1B[0m")}async function showCurrentConfig(){let config=await loadGenieConfig();console.log(),console.log("\x1B[1mCurrent Genie Configuration\x1B[0m"),console.log(`\x1B[2m${contractPath(getGenieConfigPath())}\x1B[0m`),console.log(),console.log(JSON.stringify(config,null,2)),console.log()}function printNextSteps(){console.log(),console.log("\x1B[1mNext Steps:\x1B[0m"),console.log(),console.log(" Start a session: \x1B[36mgenie\x1B[0m"),console.log(" Watch AI work: \x1B[36mtmux attach -t genie\x1B[0m"),console.log(" Check health: \x1B[36mgenie doctor\x1B[0m"),console.log()}async function setupCommand(options={}){if(options.show){await showCurrentConfig();return}if(options.reset){await resetConfig(),console.log("\x1B[32m\u2713 Configuration reset to defaults.\x1B[0m"),console.log();return}let config=await loadGenieConfig();if(options.shortcuts){printHeader(),await configureShortcuts(config,!1),await markSetupComplete();return}if(options.terminal){printHeader(),config=await configureTerminal(config,!1),await saveGenieConfig(config),console.log("\x1B[32m\u2713 Terminal configuration saved.\x1B[0m");return}if(options.session){printHeader(),config=await configureSession(config,!1),await saveGenieConfig(config),console.log("\x1B[32m\u2713 Session configuration saved.\x1B[0m");return}if(options.codex){if(printHeader(),config=await configureCodex(config,!1),await saveGenieConfig(config),config.codex?.configured)console.log("\x1B[32m\u2713 Codex configuration saved.\x1B[0m");return}let quick=options.quick??!1;if(printHeader(),quick)console.log("\x1B[2mQuick mode: accepting all defaults\x1B[0m");config=await configureSession(config,quick),config=await configureTerminal(config,quick),config=await configureShortcuts(config,quick),config=await configureCodex(config,quick),config=await configureDebug(config,quick),config=await configurePromptMode(config,quick),await showSummaryAndSave(config),installGenieTmuxConf(),printNextSteps()}function installGenieTmuxConf(){let{existsSync:existsSync26,copyFileSync:copyFileSync3,mkdirSync:mkdirSync15,chmodSync:chmodSync2}=__require("fs"),{resolve:resolve4,dirname:dirname12}=__require("path"),genieHome3=process.env.GENIE_HOME??join31(homedir25(),".genie"),dest=join31(genieHome3,"tmux.conf");if(existsSync26(dest))return;let src=[resolve4(__dirname,"..","..","scripts","tmux","genie.tmux.conf"),resolve4(__dirname,"..","scripts","tmux","genie.tmux.conf")].find((p)=>existsSync26(p));if(!src)return;try{mkdirSync15(genieHome3,{recursive:!0}),copyFileSync3(src,dest),console.log(`\x1B[32m\u2713\x1B[0m Installed genie tmux config to ${dest}`)}catch{}let osc52Src=join31(dirname12(src),"osc52-copy.sh"),osc52Dest=join31(genieHome3,"osc52-copy.sh");if(existsSync26(osc52Src))try{copyFileSync3(osc52Src,osc52Dest),chmodSync2(osc52Dest,493)}catch{}}var __dirname="/home/runner/_work/genie/genie/src/genie-commands";var init_setup=__esm(()=>{init_esm14();init_codex_config();init_genie_config2();init_system_detect();init_shortcuts()});var exports_version={};__export(exports_version,{VERSION:()=>VERSION});import{existsSync as existsSync29,readFileSync as readFileSync20}from"fs";import{dirname as dirname12,resolve as resolve4}from"path";function readPackageJson(path3){try{if(!existsSync29(path3))return null;return JSON.parse(readFileSync20(path3,"utf-8"))}catch{return null}}function readVersionFromPackageJson(){let startDir=dirname12(import.meta.dir??__dirname),current=startDir;for(let depth=0;depth<MAX_WALK_DEPTH;depth++){let candidate=resolve4(current,"package.json"),pkg=readPackageJson(candidate);if(pkg?.name===PACKAGE_NAME&&pkg.version)return pkg.version;let parent=dirname12(current);if(parent===current)break;current=parent}current=startDir;for(let depth=0;depth<MAX_WALK_DEPTH;depth++){let candidate=resolve4(current,"package.json"),pkg=readPackageJson(candidate);if(pkg?.version)return pkg.version;let parent=dirname12(current);if(parent===current)break;current=parent}return FALLBACK_VERSION}var __dirname="/home/runner/_work/genie/genie/src/lib",FALLBACK_VERSION="0.0.0-unknown",PACKAGE_NAME="@automagik/genie",MAX_WALK_DEPTH=10,VERSION;var init_version=__esm(()=>{VERSION=readVersionFromPackageJson()});import{createHash as createHash3}from"crypto";import{existsSync as existsSync30,readFileSync as readFileSync21}from"fs";import{homedir as homedir29}from"os";import{join as join35}from"path";function defaultTrustPath(){let home=process.env.GENIE_HOME??join35(homedir29(),".genie");return join35(home,"hooks","trusted.json")}function sha256OfFile(path3){let hash=createHash3("sha256");return hash.update(readFileSync21(path3)),hash.digest("hex")}function readTrustFile(path3=defaultTrustPath()){if(!existsSync30(path3))return{version:1,entries:[]};let raw=readFileSync21(path3,"utf-8");if(raw.trim().length===0)return{version:1,entries:[]};let parsed=JSON.parse(raw);if(parsed.version!==1)throw Error(`Unsupported trust file version: ${parsed.version} (expected 1)`);if(!Array.isArray(parsed.entries))throw Error("Malformed trust file: entries must be an array");return parsed}function verifyTrust(filePath,trustFile,options={}){if(!existsSync30(filePath))return{trusted:!1,reason:"file_missing"};let entry2=trustFile.entries.find((e)=>e.path===filePath);if(!entry2)return{trusted:!1,reason:"not_in_trust_file"};if(sha256OfFile(filePath)!==entry2.sha256)return{trusted:!1,reason:"sha256_mismatch"};if(entry2.scope==="repo"){if(!entry2.repoRemoteUrl)return{trusted:!1,reason:"missing_repo_remote"};if(options.currentRepoRemoteUrl!==entry2.repoRemoteUrl)return{trusted:!1,reason:"repo_remote_mismatch"}}return{trusted:!0,entry:entry2}}function parseCapabilities(source){let match=source.match(/^\/\/\s*@capabilities:\s*(.+)$/m);if(!match)return[];return match[1].split(",").map((c)=>c.trim()).filter((c)=>c.length>0)}var init_trust=()=>{};import{execSync as execSync5}from"child_process";function getRecentGitHistory(filePath,cwd){try{let trimmed=execSync5(`git log --oneline -n ${MAX_COMMITS} -- ${JSON.stringify(filePath)}`,{encoding:"utf-8",timeout:5000,cwd,stdio:["pipe","pipe","pipe"]}).trim();if(!trimmed)return null;return trimmed}catch{return null}}async function auditContext(payload){let input=payload.tool_input;if(!input)return;let filePath=input.file_path;if(!filePath)return;let cwd=payload.cwd??process.cwd(),history=getRecentGitHistory(filePath,cwd);if(!history)return;return{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",additionalContext:`[audit-context] Recent git history for ${filePath}:
1113
- ${history}`}}}var MAX_COMMITS=5;var init_audit_context=()=>{};var exports_agent_directory={};__export(exports_agent_directory,{rm:()=>rm3,resolve:()=>resolve6,ls:()=>ls,loadIdentity:()=>loadIdentity,getProjectRoot:()=>getProjectRoot,get:()=>get2,findSessionByRepo:()=>findSessionByRepo,edit:()=>edit,add:()=>add});import{existsSync as existsSync32,lstatSync as lstatSync2}from"fs";import{join as join38}from"path";function validateAgentsMd(dir,allowSymlink){let agentsPath=join38(dir,"AGENTS.md");if(!existsSync32(agentsPath))throw Error(`AGENTS.md not found in ${dir}. Each agent directory must contain an AGENTS.md file.`);if(allowSymlink)return;let stat4=lstatSync2(agentsPath);if(!stat4)throw Error(`AGENTS.md in ${dir} disappeared between exists check and stat.`);if(stat4.isSymbolicLink())throw Error(`AGENTS.md in ${dir} is a symlink. Refusing to register: a symlinked AGENTS.md usually means --dir was pointed at a containing folder rather than the agent's real home (the cwd will be wrong and the agent's brain/runbooks won't be visible). Pass --allow-symlink to override if this is intentional.`);if(!stat4.isFile())throw Error(`AGENTS.md in ${dir} is not a regular file (got ${describeFileType(stat4)}).`)}function describeFileType(stat4){if(stat4.isDirectory())return"directory";if(stat4.isBlockDevice())return"block device";if(stat4.isCharacterDevice())return"character device";if(stat4.isFIFO())return"FIFO";if(stat4.isSocket())return"socket";return"unknown special file"}function getProjectRoot(){if(process.env.GENIE_PROJECT_ROOT)return process.env.GENIE_PROJECT_ROOT;try{let{execSync:execSync6}=__require("child_process");return execSync6("git rev-parse --show-toplevel",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{return process.cwd()}}async function add(entry2,options){if(!entry2.name||entry2.name.trim()==="")throw Error("Agent name is required.");if(!entry2.dir||entry2.dir.trim()==="")throw Error("Agent directory (--dir) is required.");if(!existsSync32(entry2.dir))throw Error(`Directory does not exist: ${entry2.dir}`);validateAgentsMd(entry2.dir,options?.allowSymlink??!1);let full={...entry2,promptMode:entry2.promptMode??"append",registeredAt:new Date().toISOString()},existing=await resolve6(entry2.name);if(existing&&!existing.builtin)throw Error(`Agent "${entry2.name}" already exists. Use "genie dir edit" to update or "genie dir rm" first.`);let metadata=buildMetadata(full),team=entry2.team??entry2.bridgeTmuxSession??null,{getConnection:getConnection2}=await Promise.resolve().then(() => (init_db(),exports_db)),sql=await getConnection2();return await sql`
1113
+ ${history}`}}}var MAX_COMMITS=5;var init_audit_context=()=>{};var exports_agent_directory={};__export(exports_agent_directory,{rm:()=>rm2,resolve:()=>resolve6,ls:()=>ls,loadIdentity:()=>loadIdentity,getProjectRoot:()=>getProjectRoot,get:()=>get2,findSessionByRepo:()=>findSessionByRepo,edit:()=>edit,add:()=>add});import{existsSync as existsSync32,lstatSync as lstatSync2}from"fs";import{join as join38}from"path";function validateAgentsMd(dir,allowSymlink){let agentsPath=join38(dir,"AGENTS.md");if(!existsSync32(agentsPath))throw Error(`AGENTS.md not found in ${dir}. Each agent directory must contain an AGENTS.md file.`);if(allowSymlink)return;let stat4=lstatSync2(agentsPath);if(!stat4)throw Error(`AGENTS.md in ${dir} disappeared between exists check and stat.`);if(stat4.isSymbolicLink())throw Error(`AGENTS.md in ${dir} is a symlink. Refusing to register: a symlinked AGENTS.md usually means --dir was pointed at a containing folder rather than the agent's real home (the cwd will be wrong and the agent's brain/runbooks won't be visible). Pass --allow-symlink to override if this is intentional.`);if(!stat4.isFile())throw Error(`AGENTS.md in ${dir} is not a regular file (got ${describeFileType(stat4)}).`)}function describeFileType(stat4){if(stat4.isDirectory())return"directory";if(stat4.isBlockDevice())return"block device";if(stat4.isCharacterDevice())return"character device";if(stat4.isFIFO())return"FIFO";if(stat4.isSocket())return"socket";return"unknown special file"}function getProjectRoot(){if(process.env.GENIE_PROJECT_ROOT)return process.env.GENIE_PROJECT_ROOT;try{let{execSync:execSync6}=__require("child_process");return execSync6("git rev-parse --show-toplevel",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{return process.cwd()}}async function add(entry2,options){if(!entry2.name||entry2.name.trim()==="")throw Error("Agent name is required.");if(!entry2.dir||entry2.dir.trim()==="")throw Error("Agent directory (--dir) is required.");if(!existsSync32(entry2.dir))throw Error(`Directory does not exist: ${entry2.dir}`);validateAgentsMd(entry2.dir,options?.allowSymlink??!1);let full={...entry2,promptMode:entry2.promptMode??"append",registeredAt:new Date().toISOString()},existing=await resolve6(entry2.name);if(existing&&!existing.builtin)throw Error(`Agent "${entry2.name}" already exists. Use "genie dir edit" to update or "genie dir rm" first.`);let metadata=buildMetadata(full),team=entry2.team??entry2.bridgeTmuxSession??null,{getConnection:getConnection2}=await Promise.resolve().then(() => (init_db(),exports_db)),sql=await getConnection2();return await sql`
1114
1114
  INSERT INTO agents (id, role, custom_name, team, repo_path, started_at, state, metadata)
1115
1115
  VALUES (
1116
1116
  ${`dir:${entry2.name}`},
@@ -1126,7 +1126,7 @@ ${history}`}}}var MAX_COMMITS=5;var init_audit_context=()=>{};var exports_agent_
1126
1126
  team = COALESCE(EXCLUDED.team, agents.team),
1127
1127
  repo_path = COALESCE(NULLIF(EXCLUDED.repo_path, ''), agents.repo_path),
1128
1128
  metadata = ${sql.json(metadata)}
1129
- `,full}async function rm3(name,options){let{getConnection:getConnection2}=await Promise.resolve().then(() => (init_db(),exports_db)),sql=await getConnection2();if(!options?.explicitPermanent){let protectedRows=options?.force?await sql`
1129
+ `,full}async function rm2(name,options){let{getConnection:getConnection2}=await Promise.resolve().then(() => (init_db(),exports_db)),sql=await getConnection2();if(!options?.explicitPermanent){let protectedRows=options?.force?await sql`
1130
1130
  SELECT id FROM agents
1131
1131
  WHERE (id = ${`dir:${name}`} OR role = ${name})
1132
1132
  AND kind = 'permanent'
@@ -1315,7 +1315,7 @@ Run 'genie agent list' to list agents.`)}async function resolveTarget(target,opt
1315
1315
  `))return{frontmatter:null,body:content};let after=content.slice(4),frontmatter,afterClose;if(after.startsWith("---"))frontmatter="",afterClose=after.slice(3);else{let closeIdx=after.indexOf(`
1316
1316
  ---`);if(closeIdx===-1)return{frontmatter:null,body:content};frontmatter=after.slice(0,closeIdx),afterClose=after.slice(closeIdx+4)}let body=afterClose.startsWith(`
1317
1317
  `)?afterClose.slice(1):afterClose;return{frontmatter,body}}var SdkPermissionModeSchema,SdkEffortLevelSchema,SdkThinkingConfigSchema,SdkMcpStdioServerConfigSchema,SdkMcpSSEServerConfigSchema,SdkMcpHttpServerConfigSchema,SdkMcpServerConfigSchema,SdkSubagentConfigSchema,SdkCustomToolConfigSchema,SdkOutputFormatSchema,SdkPluginConfigSchema,SdkSandboxConfigSchema,SdkHookMatcherConfigSchema,SdkHookEventSchema,SdkBetaSchema,SdkSystemPromptSchema,SdkDirectoryConfigSchema,AgentConfigSchema,DERIVED_KEYS;var init_agent_yaml=__esm(()=>{init_js_yaml();init_zod();init_lockfile();SdkPermissionModeSchema=exports_external.enum(["default","acceptEdits","bypassPermissions","plan","dontAsk","auto","remoteApproval"]),SdkEffortLevelSchema=exports_external.union([exports_external.enum(["low","medium","high","max"]),exports_external.number()]),SdkThinkingConfigSchema=exports_external.union([exports_external.object({type:exports_external.literal("adaptive")}).strict(),exports_external.object({type:exports_external.literal("enabled"),budgetTokens:exports_external.number().optional()}).strict(),exports_external.object({type:exports_external.literal("disabled")}).strict()]),SdkMcpStdioServerConfigSchema=exports_external.object({type:exports_external.literal("stdio").optional(),command:exports_external.string(),args:exports_external.array(exports_external.string()).optional(),env:exports_external.record(exports_external.string()).optional()}).strict(),SdkMcpSSEServerConfigSchema=exports_external.object({type:exports_external.literal("sse"),url:exports_external.string(),headers:exports_external.record(exports_external.string()).optional()}).strict(),SdkMcpHttpServerConfigSchema=exports_external.object({type:exports_external.literal("http"),url:exports_external.string(),headers:exports_external.record(exports_external.string()).optional()}).strict(),SdkMcpServerConfigSchema=exports_external.union([SdkMcpStdioServerConfigSchema,SdkMcpSSEServerConfigSchema,SdkMcpHttpServerConfigSchema]),SdkSubagentConfigSchema=exports_external.object({description:exports_external.string(),prompt:exports_external.string(),tools:exports_external.array(exports_external.string()).optional(),disallowedTools:exports_external.array(exports_external.string()).optional(),model:exports_external.string().optional(),mcpServers:exports_external.array(exports_external.union([exports_external.string(),exports_external.record(SdkMcpStdioServerConfigSchema)])).optional(),skills:exports_external.array(exports_external.string()).optional(),maxTurns:exports_external.number().optional(),background:exports_external.boolean().optional(),memory:exports_external.enum(["user","project","local"]).optional(),effort:SdkEffortLevelSchema.optional(),permissionMode:SdkPermissionModeSchema.optional()}).strict(),SdkCustomToolConfigSchema=exports_external.object({name:exports_external.string(),description:exports_external.string(),inputSchema:exports_external.record(exports_external.unknown()),handler:exports_external.string().optional()}).strict(),SdkOutputFormatSchema=exports_external.object({type:exports_external.literal("json_schema"),schema:exports_external.record(exports_external.unknown())}).strict(),SdkPluginConfigSchema=exports_external.object({type:exports_external.literal("local"),path:exports_external.string()}).strict(),SdkSandboxConfigSchema=exports_external.object({enabled:exports_external.boolean().optional(),autoAllowBashIfSandboxed:exports_external.boolean().optional(),failIfUnavailable:exports_external.boolean().optional(),network:exports_external.object({allowLocalBinding:exports_external.boolean().optional(),allowUnixSockets:exports_external.array(exports_external.string()).optional()}).strict().optional()}).strict(),SdkHookMatcherConfigSchema=exports_external.object({toolName:exports_external.string().optional(),agentName:exports_external.string().optional()}).strict(),SdkHookEventSchema=exports_external.enum(["PreToolUse","PostToolUse","PostToolUseFailure","Notification","UserPromptSubmit","SessionStart","SessionEnd","Stop","StopFailure","SubagentStart","SubagentStop","PreCompact","PostCompact","PermissionRequest","PermissionDenied","Setup","TeammateIdle","TaskCreated","TaskCompleted","Elicitation","ElicitationResult","ConfigChange","WorktreeCreate","WorktreeRemove","InstructionsLoaded","CwdChanged","FileChanged"]),SdkBetaSchema=exports_external.enum(["context-1m-2025-08-07"]),SdkSystemPromptSchema=exports_external.union([exports_external.string(),exports_external.object({type:exports_external.literal("preset"),preset:exports_external.literal("claude_code"),append:exports_external.string().optional()}).strict()]),SdkDirectoryConfigSchema=exports_external.object({permissionMode:SdkPermissionModeSchema.optional(),tools:exports_external.union([exports_external.array(exports_external.string()),exports_external.object({type:exports_external.literal("preset"),preset:exports_external.literal("claude_code")}).strict()]).optional(),allowedTools:exports_external.array(exports_external.string()).optional(),disallowedTools:exports_external.array(exports_external.string()).optional(),maxTurns:exports_external.number().optional(),maxBudgetUsd:exports_external.number().optional(),effort:SdkEffortLevelSchema.optional(),thinking:SdkThinkingConfigSchema.optional(),agent:exports_external.string().optional(),agents:exports_external.record(SdkSubagentConfigSchema).optional(),mcpServers:exports_external.record(SdkMcpServerConfigSchema).optional(),plugins:exports_external.array(SdkPluginConfigSchema).optional(),customTools:exports_external.array(SdkCustomToolConfigSchema).optional(),persistSession:exports_external.boolean().optional(),enableFileCheckpointing:exports_external.boolean().optional(),outputFormat:SdkOutputFormatSchema.optional(),includePartialMessages:exports_external.boolean().optional(),includeHookEvents:exports_external.boolean().optional(),promptSuggestions:exports_external.boolean().optional(),agentProgressSummaries:exports_external.boolean().optional(),systemPrompt:SdkSystemPromptSchema.optional(),sandbox:SdkSandboxConfigSchema.optional(),betas:exports_external.array(SdkBetaSchema).optional(),settingSources:exports_external.array(exports_external.enum(["user","project","local"])).optional(),settings:exports_external.union([exports_external.string(),exports_external.record(exports_external.unknown())]).optional(),hooks:exports_external.record(SdkHookEventSchema,exports_external.array(SdkHookMatcherConfigSchema)).optional()}).strict(),AgentConfigSchema=exports_external.object({name:exports_external.string().optional(),dir:exports_external.string().optional(),repo:exports_external.string().optional(),team:exports_external.string().optional(),promptMode:exports_external.enum(["system","append"]).optional(),model:exports_external.string().optional(),roles:exports_external.array(exports_external.string()).optional(),omniAgentId:exports_external.string().optional(),registeredAt:exports_external.string().optional(),description:exports_external.string().optional(),color:exports_external.string().optional(),provider:exports_external.string().optional(),permissions:exports_external.object({preset:exports_external.string().optional(),allow:exports_external.array(exports_external.string()).optional(),deny:exports_external.array(exports_external.string()).optional(),bashAllowPatterns:exports_external.array(exports_external.string()).optional(),allowedTools:exports_external.array(exports_external.string()).optional(),permissionMode:SdkPermissionModeSchema.optional()}).strict().optional(),disallowedTools:exports_external.array(exports_external.string()).optional(),omniScopes:exports_external.array(exports_external.string()).optional(),hooks:exports_external.record(exports_external.unknown()).optional(),sdk:SdkDirectoryConfigSchema.optional(),bridgeTmuxSession:exports_external.string().optional()}).strict(),DERIVED_KEYS=["name","dir","registeredAt"]});import{existsSync as existsSync36}from"fs";import{copyFile as copyFile2,readFile as readFile6,writeFile as writeFile6}from"fs/promises";import{join as join42}from"path";async function migrateAgentToYaml(agentDir,dbRow){let yamlPath=join42(agentDir,"agent.yaml"),agentsMdPath=join42(agentDir,"AGENTS.md"),bakPath=`${agentsMdPath}.bak`;if(existsSync36(yamlPath))return{migrated:!1,reason:"already-migrated",yamlPath};let agentsMdRaw=await readFile6(agentsMdPath,"utf-8"),{frontmatter,body}=extractFrontmatterFromAgentsMd(agentsMdRaw);if(frontmatter===null)return{migrated:!1,reason:"no-frontmatter",yamlPath};let fmParsed=parseFrontmatter2(frontmatter,agentsMdPath),fmClean=pickYamlFields(fmParsed),merged={...dbRow?pickYamlFields(dbRow):{},...fmClean},config=AgentConfigSchema.parse(merged);return await writeAgentYaml(yamlPath,config),await copyFile2(agentsMdPath,bakPath),await writeFile6(agentsMdPath,body),{migrated:!0,yamlPath,bakPath}}function parseFrontmatter2(frontmatter,sourcePath){let raw;try{raw=load(frontmatter)}catch(err){let msg=err instanceof Error?err.message:String(err);throw Error(`Malformed frontmatter in ${sourcePath}: ${msg}`)}if(raw===null||typeof raw!=="object"||Array.isArray(raw))throw Error(`Malformed frontmatter in ${sourcePath}: expected a YAML mapping at the top level`);return raw}function pickYamlFields(source){let out={};for(let[k,v]of Object.entries(source))if(YAML_ALLOWED_KEYS.has(k)&&v!==null&&v!==void 0)out[k]=v;return out}var YAML_ALLOWED_KEYS;var init_agent_migrate=__esm(()=>{init_js_yaml();init_agent_yaml();YAML_ALLOWED_KEYS=(()=>{let shape=AgentConfigSchema._def.shape(),keys=new Set(Object.keys(shape));return keys.delete("name"),keys.delete("dir"),keys.delete("registeredAt"),keys})()});var exports_agent_sync={};__export(exports_agent_sync,{watchAgentDirectory:()=>watchAgentDirectory,syncSingleAgentByName:()=>syncSingleAgentByName,syncAgentDirectory:()=>syncAgentDirectory,printSyncResult:()=>printSyncResult,healAgentFile:()=>healAgentFile});import{execSync as execSync7}from"child_process";import{existsSync as existsSync37,watch as fsWatch,readFileSync as readFileSync25,readdirSync as readdirSync10,realpathSync as realpathSync4,writeFileSync as writeFileSync16}from"fs";import{join as join43}from"path";function getGitRemoteUrl(dir){try{return execSync7(`git -C "${dir}" config --get remote.origin.url`,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()||null}catch{return null}}function extractOrgRepo(remoteUrl){let sshMatch=remoteUrl.match(/[^/:]+\/[^/]+?(?:\.git)?$/);if(sshMatch)return sshMatch[0].replace(/\.git$/,"");return null}function getRepoPathForAgent(agentDir){let reposLink=join43(agentDir,"repos");try{if(!existsSync37(reposLink))return null;let target=realpathSync4(reposLink);if(!existsSync37(target))return null;return target}catch{return null}}function discoverAgents(workspaceRoot){let agentsDir=join43(workspaceRoot,"agents");if(!existsSync37(agentsDir))return[];let agents=[];try{let entries=readdirSync10(agentsDir,{withFileTypes:!0});for(let entry2 of entries){if(!entry2.isDirectory())continue;let agentDir=join43(agentsDir,entry2.name);if(!existsSync37(join43(agentDir,"AGENTS.md")))continue;agents.push({name:entry2.name,dir:agentDir,repoUrl:getGitRemoteUrl(agentDir),productRepo:getRepoPathForAgent(agentDir)}),discoverSubAgents(agentDir,entry2.name,agents)}}catch{}return agents}function discoverSubAgents(parentDir,parentName,agents){let subAgentsDir=join43(parentDir,".genie","agents");if(!existsSync37(subAgentsDir))return;try{let entries=readdirSync10(subAgentsDir,{withFileTypes:!0});for(let entry2 of entries){if(!entry2.isDirectory())continue;let subDir=join43(subAgentsDir,entry2.name);if(!existsSync37(join43(subDir,"AGENTS.md")))continue;agents.push({name:`${parentName}/${entry2.name}`,dir:subDir,repoUrl:getGitRemoteUrl(parentDir),productRepo:getRepoPathForAgent(parentDir)})}}catch{}}function discoverSingleAgent(workspaceRoot,agentName){let agentDir=join43(workspaceRoot,"agents",agentName);if(!existsSync37(join43(agentDir,"AGENTS.md")))return null;return{name:agentName,dir:agentDir,repoUrl:getGitRemoteUrl(agentDir),productRepo:getRepoPathForAgent(agentDir)}}function healAgentFile(agentsMdPath,agentName,healResult){let content=readFileSync25(agentsMdPath,"utf-8"),fmMatch=content.match(/^(---\n)([\s\S]*?)(\n---)/);if(!fmMatch)return!1;let prefix=fmMatch[1],fmBlock=fmMatch[2],suffix=fmMatch[3],rest=content.slice(fmMatch[0].length),modified=!1,healedBlock=fmBlock;for(let{field,value}of INVALID_LITERALS)if(new RegExp(`^${field}:\\s*${value}\\s*$`,"m").test(healedBlock))healedBlock=healedBlock.replace(new RegExp(`${field}:\\s*${value}\\s*\\n?`,"m"),""),healResult.healed.push({agent:agentName,field,value}),modified=!0;if(!modified)return!1;let newContent=prefix+healedBlock+suffix+rest,tmpPath=`${agentsMdPath}.tmp.${Date.now()}`;writeFileSync16(tmpPath,newContent,"utf-8");let{renameSync:renameSync8}=__require("fs");return renameSync8(tmpPath,agentsMdPath),!0}function buildResolveContext(workspaceRoot,agentName){let workspaceDefaults;try{workspaceDefaults=getWorkspaceConfig(workspaceRoot).agents?.defaults}catch{}let parent;if(agentName.includes("/")){let parentName=agentName.split("/")[0],parentAgentsMd=join43(workspaceRoot,"agents",parentName,"AGENTS.md");if(existsSync37(parentAgentsMd)){let parentContent=readFileSync25(parentAgentsMd,"utf-8"),parentFm=parseFrontmatter(parentContent);parent={name:parentName,fields:parentFm}}}return{workspaceDefaults,parent}}function computeResolvedMetadata(fm,ctx){let declared={},resolved={};for(let field of Object.keys(BUILTIN_DEFAULTS)){let fmValue=fm[field];if(fmValue!==void 0&&fmValue!==null&&fmValue!==""&&fmValue!=="inherit")declared[field]=fmValue;let result2=resolveFieldWithSource(fm,field,ctx);resolved[field]={value:result2.value,source:result2.source}}return{declared,resolved}}async function syncAgentDirectory(workspaceRoot){let result2={registered:[],updated:[],migrated:[],archived:[],reactivated:[],healed:[],errors:[]},agents=discoverAgents(workspaceRoot),discoveredNames=new Set(agents.map((a)=>a.name)),healResult={healed:[]};for(let agent of agents){let agentsMdPath=join43(agent.dir,"AGENTS.md");try{healAgentFile(agentsMdPath,agent.name,healResult)}catch{}}result2.healed=healResult.healed;for(let h of healResult.healed)console.log(`[sync] healed ${h.agent}/AGENTS.md: removed invalid '${h.field}: ${h.value}' line`);for(let agent of agents)try{await syncSingleAgent(agent,result2,workspaceRoot)}catch(err){result2.errors.push({name:agent.name,error:err instanceof Error?err.message:String(err)})}return await removeMissingAgents(discoveredNames,result2),result2}function printSyncResult(result2){if(result2.healed.length>0)console.log(` Healed: ${result2.healed.length} invalid literal(s) removed`);if(result2.migrated.length>0)console.log(` Migrated: ${result2.migrated.join(", ")} (AGENTS.md frontmatter \u2192 agent.yaml)`);if(result2.registered.length>0)console.log(` Registered: ${result2.registered.join(", ")}`);if(result2.updated.length>0)console.log(` Updated: ${result2.updated.join(", ")}`);if(result2.reactivated.length>0)console.log(` Reactivated: ${result2.reactivated.join(", ")}`);if(result2.archived.length>0)console.log(` Removed: ${result2.archived.join(", ")}`);for(let err of result2.errors)console.error(` Error (${err.name}): ${err.error}`);let total=result2.registered.length+result2.updated.length+result2.reactivated.length;console.log(`
1318
- Synced: ${total} agent(s), ${result2.archived.length} removed.`)}async function removeMissingAgents(discoveredNames,result2){try{let entries=await ls();for(let entry2 of entries){if(discoveredNames.has(entry2.name))continue;if(entry2.scope==="built-in")continue;if(!entry2.dir||!entry2.dir.includes("/agents/"))continue;let{removed}=await rm3(entry2.name);if(removed)result2.archived.push(entry2.name)}}catch{}}async function maybeMigrateFrontmatter(agent,result2){let yamlPath=join43(agent.dir,"agent.yaml"),agentsMdPath=join43(agent.dir,"AGENTS.md");if(existsSync37(yamlPath)||!existsSync37(agentsMdPath))return;let{frontmatter}=extractFrontmatterFromAgentsMd(readFileSync25(agentsMdPath,"utf-8"));if(frontmatter===null)return;let existingEntry=await resolve6(agent.name),dbRow=existingEntry&&!existingEntry.builtin?dbRowFromEntry(existingEntry.entry):void 0;if((await migrateAgentToYaml(agent.dir,dbRow)).migrated)result2.migrated.push(agent.name)}function buildDirectoryPayload(dir,repoPath,cf){return{dir,repo:repoPath,promptMode:cf.promptMode,model:cf.model,description:cf.description,color:cf.color,provider:cf.provider,roles:cf.roles,permissions:cf.permissions,disallowedTools:cf.disallowedTools,omniScopes:cf.omniScopes,hooks:cf.hooks,sdk:cf.sdk,bridgeTmuxSession:cf.bridgeTmuxSession}}async function syncSingleAgent(agent,result2,workspaceRoot){let repoPath=(agent.repoUrl?extractOrgRepo(agent.repoUrl):null)??agent.repoUrl??agent.dir,yamlPath=join43(agent.dir,"agent.yaml"),agentsMdPath=join43(agent.dir,"AGENTS.md");await maybeMigrateFrontmatter(agent,result2);let configFields=existsSync37(yamlPath)?await readYamlAsConfigFields(yamlPath):readFrontmatterAsConfigFields(agentsMdPath);if(workspaceRoot){let ctx=buildResolveContext(workspaceRoot,agent.name);computeResolvedMetadata(configFields.rawForResolution,ctx)}let resolved=await resolve6(agent.name),existing=resolved&&!resolved.builtin?resolved.entry:null,payload=buildDirectoryPayload(agent.dir,repoPath,configFields);if(!existing){await add({name:agent.name,...payload}),result2.registered.push(agent.name);return}await edit(agent.name,payload),result2.updated.push(agent.name)}async function readYamlAsConfigFields(yamlPath){let cfg=await parseAgentYaml(yamlPath);return{promptMode:cfg.promptMode??"append",model:cfg.model,description:cfg.description,color:cfg.color,provider:cfg.provider,roles:cfg.roles,permissions:cfg.permissions,disallowedTools:cfg.disallowedTools,omniScopes:cfg.omniScopes,hooks:cfg.hooks,sdk:cfg.sdk,bridgeTmuxSession:cfg.bridgeTmuxSession,rawForResolution:cfg}}function readFrontmatterAsConfigFields(agentsMdPath){let content=existsSync37(agentsMdPath)?readFileSync25(agentsMdPath,"utf-8"):"",fm=parseFrontmatter(content);return{promptMode:fm.promptMode??"append",model:fm.model,description:fm.description,color:fm.color,provider:fm.provider,roles:fm.roles,permissions:fm.permissions,disallowedTools:fm.disallowedTools,omniScopes:fm.omniScopes,hooks:fm.hooks,sdk:fm.sdk,bridgeTmuxSession:fm.bridgeTmuxSession,rawForResolution:fm}}function dbRowFromEntry(entry2){return{team:entry2.team,model:entry2.model,description:entry2.description,color:entry2.color,provider:entry2.provider,promptMode:entry2.promptMode,permissions:entry2.permissions,disallowedTools:entry2.disallowedTools,omniScopes:entry2.omniScopes,hooks:entry2.hooks,sdk:entry2.sdk,bridgeTmuxSession:entry2.bridgeTmuxSession}}async function syncSingleAgentByName(workspaceRoot,agentName){let agent=discoverSingleAgent(workspaceRoot,agentName);if(!agent)return"not-found";let result2={registered:[],updated:[],migrated:[],archived:[],reactivated:[],healed:[],errors:[]};if(await syncSingleAgent(agent,result2,workspaceRoot),result2.registered.length>0)return"registered";if(result2.migrated.length>0)return"migrated";if(result2.updated.length>0)return"updated";return"synced"}function watchAgentDirectory(workspaceRoot,options){let agentsDir=join43(workspaceRoot,"agents");if(!existsSync37(agentsDir))return null;let debounceTimer=null,pendingChanges=new Set,processChanges=async()=>{let names=[...pendingChanges];pendingChanges.clear();for(let name of names)try{let action=await processWatchedAgent(workspaceRoot,agentsDir,name);if(action)options?.onSync?.(name,action)}catch{}},watcher=fsWatch(agentsDir,{persistent:!1},(_event,filename)=>{if(!filename)return;let name=filename.split("/")[0];if(!name||name.startsWith("."))return;if(pendingChanges.add(name),debounceTimer)clearTimeout(debounceTimer);debounceTimer=setTimeout(processChanges,2000)});return{close:()=>{if(debounceTimer)clearTimeout(debounceTimer);watcher.close()}}}async function processWatchedAgent(workspaceRoot,agentsDir,name){let agentDir=join43(agentsDir,name);if(existsSync37(agentDir)&&existsSync37(join43(agentDir,"AGENTS.md"))){let action=await syncSingleAgentByName(workspaceRoot,name);return action!=="synced"&&action!=="not-found"?action:null}if(!existsSync37(agentDir)){let{removed}=await rm3(name);if(removed)return"removed"}return null}var INVALID_LITERALS;var init_agent_sync=__esm(()=>{init_agent_directory();init_agent_migrate();init_agent_yaml();init_defaults();init_frontmatter();init_workspace();INVALID_LITERALS=[{field:"model",value:"inherit"}]});var exports_term_format={};__export(exports_term_format,{truncate:()=>truncate2,stripAnsi:()=>stripAnsi2,padRight:()=>padRight,formatTimestamp:()=>formatTimestamp,formatTime:()=>formatTime,formatRelativeTimestamp:()=>formatRelativeTimestamp,formatDate:()=>formatDate,color:()=>color});function padRight(str2,len){return str2.length>=len?str2:str2+" ".repeat(len-str2.length)}function truncate2(str2,len){return str2.length<=len?str2:`${str2.slice(0,len-1)}\u2026`}function formatDate(iso){if(!iso)return"-";return new Date(iso).toLocaleDateString("en-US",{month:"short",day:"numeric"})}function formatRelativeTimestamp(ts3){let d=new Date(ts3),diffMs=Date.now()-d.getTime();if(diffMs<60000)return`${Math.floor(diffMs/1000)}s ago`;if(diffMs<3600000)return`${Math.floor(diffMs/60000)}m ago`;if(diffMs<86400000)return`${Math.floor(diffMs/3600000)}h ago`;return d.toISOString().replace("T"," ").slice(0,19)}function formatTimestamp(iso,opts){if(!iso)return opts?.fallback??"-";let d=iso instanceof Date?iso:new Date(iso),fmt={month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1};if(opts?.seconds)fmt.second="2-digit";return d.toLocaleString("en-US",fmt)}function formatTime(iso,opts){try{let date=new Date(iso),fmt={hour:"2-digit",minute:"2-digit",hour12:!1};if(opts?.seconds)fmt.second="2-digit";return date.toLocaleTimeString("en-US",fmt)}catch{return opts?.fallback??"??:??"}}function color(name,text){return isTTY?`${ANSI[name]}${text}${ANSI.reset}`:text}function stripAnsi2(str2){return str2.replace(ANSI_REGEX,"")}var ANSI,isTTY,ANSI_REGEX;var init_term_format=__esm(()=>{ANSI={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",gray:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightCyan:"\x1B[96m"},isTTY=process.stdout.isTTY&&!process.env.NO_COLOR;ANSI_REGEX=/\x1b\[[0-9;]*m/g});var exports_task_service={};__export(exports_task_service,{updateTask:()=>updateTask,updateMessage:()=>updateMessage,untagTask:()=>untagTask,unblockTask:()=>unblockTask,unarchiveTask:()=>unarchiveTask,unarchiveProject:()=>unarchiveProject,tagTask:()=>tagTask,setRelease:()=>setRelease,setPreference:()=>setPreference,sendMessage:()=>sendMessage,resolveTaskId:()=>resolveTaskId,resolveChannels:()=>resolveChannels,removeMember:()=>removeMember,removeDependency:()=>removeDependency,removeActor:()=>removeActor,releaseTask:()=>releaseTask,moveTask:()=>moveTask,markDone:()=>markDone,listTypes:()=>listTypes,listTasksForActor:()=>listTasksForActor,listTasks:()=>listTasks,listTags:()=>listTags,listReleases:()=>listReleases,listProjectsFiltered:()=>listProjectsFiltered,listProjects:()=>listProjects,listConversations:()=>listConversations,linkTask:()=>linkTask,getType:()=>getType,getTaskTags:()=>getTaskTags,getTaskActors:()=>getTaskActors,getTask:()=>getTask,getStageLog:()=>getStageLog,getProjectByRepoPath:()=>getProjectByRepoPath,getProjectByName:()=>getProjectByName,getPreferences:()=>getPreferences,getMessages:()=>getMessages,getMessage:()=>getMessage,getMembers:()=>getMembers,getDependents:()=>getDependents,getConversation:()=>getConversation,getCheckoutOwner:()=>getCheckoutOwner,getBlockingDependencies:()=>getBlockingDependencies,getBlockers:()=>getBlockers,forceUnlockTask:()=>forceUnlockTask,findOrCreateConversation:()=>findOrCreateConversation,expireStaleCheckouts:()=>expireStaleCheckouts,ensureProject:()=>ensureProject,deletePreference:()=>deletePreference,createType:()=>createType,createTask:()=>createTask,createTag:()=>createTag,createProject:()=>createProject,commentOnTask:()=>commentOnTask,checkoutTask:()=>checkoutTask,blockTask:()=>blockTask,assignTask:()=>assignTask,archiveTask:()=>archiveTask,archiveProject:()=>archiveProject,archiveBoard:()=>archiveBoard,addMember:()=>addMember,addDependency:()=>addDependency});import{execSync as execSync8}from"child_process";function str2(v){return v!=null?String(v):null}function strOrDefault(v,def){return v!=null?String(v):def}function mapTask(row){return{id:row.id,seq:row.seq,parentId:str2(row.parent_id),repoPath:row.repo_path,projectId:str2(row.project_id),genieOsFolderId:str2(row.genie_os_folder_id),wishFile:str2(row.wish_file),groupName:str2(row.group_name),title:row.title,description:str2(row.description),acceptanceCriteria:str2(row.acceptance_criteria),typeId:row.type_id,stage:row.stage,status:row.status,priority:row.priority,startDate:str2(row.start_date),dueDate:str2(row.due_date),estimatedEffort:str2(row.estimated_effort),startedAt:str2(row.started_at),endedAt:str2(row.ended_at),blockedReason:str2(row.blocked_reason),releaseId:str2(row.release_id),checkoutRunId:str2(row.checkout_run_id),executionLockedAt:str2(row.execution_locked_at),checkoutTimeoutMs:row.checkout_timeout_ms??600000,sessionId:str2(row.session_id),paneId:str2(row.pane_id),traceId:str2(row.trace_id),boardId:str2(row.board_id),columnId:str2(row.column_id),externalId:str2(row.external_id),externalUrl:str2(row.external_url),archivedAt:str2(row.archived_at),metadata:row.metadata??{},createdAt:strOrDefault(row.created_at,""),updatedAt:strOrDefault(row.updated_at,"")}}function mapConversation(row){return{id:row.id,parentMessageId:row.parent_message_id!=null?Number(row.parent_message_id):null,name:row.name??null,type:row.type,linkedEntity:row.linked_entity??null,linkedEntityId:row.linked_entity_id??null,createdByType:row.created_by_type??null,createdById:row.created_by_id??null,metadata:row.metadata??{},createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapMessage(row){return{id:Number(row.id),conversationId:row.conversation_id,replyToId:row.reply_to_id!=null?Number(row.reply_to_id):null,senderType:row.sender_type,senderId:row.sender_id,body:row.body,metadata:row.metadata??{},createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapTaskActor(row){return{taskId:row.task_id,actorType:row.actor_type,actorId:row.actor_id,role:row.role,permissions:row.permissions??{},createdAt:String(row.created_at)}}function mapDependency(row){return{taskId:row.task_id,dependsOnId:row.depends_on_id,depType:row.dep_type,createdAt:String(row.created_at)}}function mapTag(row){return{id:row.id,name:row.name,color:row.color??palette.textDim,typeId:row.type_id??null,createdAt:String(row.created_at)}}function mapTaskType(row){return{id:row.id,name:row.name,description:row.description??null,icon:row.icon??null,stages:row.stages,isBuiltin:row.is_builtin,createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapNotificationPref(row){return{actorType:row.actor_type,actorId:row.actor_id,channel:row.channel,priorityThreshold:row.priority_threshold,isDefault:row.is_default,enabled:row.enabled,metadata:row.metadata??{},createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapStageLog(row){return{id:Number(row.id),taskId:row.task_id,fromStage:row.from_stage??null,toStage:row.to_stage,actorType:row.actor_type??null,actorId:row.actor_id??null,runId:row.run_id??null,gateType:row.gate_type??null,createdAt:String(row.created_at)}}function mapConversationMember(row){return{conversationId:row.conversation_id,actorType:row.actor_type,actorId:row.actor_id,role:row.role,joinedAt:String(row.joined_at)}}function mapProject(row){return{id:row.id,name:row.name,repoPath:str2(row.repo_path),description:str2(row.description),leaderAgent:str2(row.leader_agent),tmuxSession:str2(row.tmux_session),status:strOrDefault(row.status,"active"),archivedAt:str2(row.archived_at),createdAt:String(row.created_at)}}function getRepoPath(){try{return execSync8("git rev-parse --show-toplevel",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{return process.cwd()}}async function resolveTaskId(idOrSeq,repoPath){let sql=await getConnection(),repo=repoPath??getRepoPath(),projectSeqMatch=idOrSeq.match(/^([^#]+)#(\d+)$/);if(projectSeqMatch&&!idOrSeq.startsWith("#")){let[,projectName,seqStr]=projectSeqMatch,seq2=Number.parseInt(seqStr,10);if(Number.isNaN(seq2))return null;let rows2=await sql`
1318
+ Synced: ${total} agent(s), ${result2.archived.length} removed.`)}async function removeMissingAgents(discoveredNames,result2){try{let entries=await ls();for(let entry2 of entries){if(discoveredNames.has(entry2.name))continue;if(entry2.scope==="built-in")continue;if(!entry2.dir||!entry2.dir.includes("/agents/"))continue;let{removed}=await rm2(entry2.name);if(removed)result2.archived.push(entry2.name)}}catch{}}async function maybeMigrateFrontmatter(agent,result2){let yamlPath=join43(agent.dir,"agent.yaml"),agentsMdPath=join43(agent.dir,"AGENTS.md");if(existsSync37(yamlPath)||!existsSync37(agentsMdPath))return;let{frontmatter}=extractFrontmatterFromAgentsMd(readFileSync25(agentsMdPath,"utf-8"));if(frontmatter===null)return;let existingEntry=await resolve6(agent.name),dbRow=existingEntry&&!existingEntry.builtin?dbRowFromEntry(existingEntry.entry):void 0;if((await migrateAgentToYaml(agent.dir,dbRow)).migrated)result2.migrated.push(agent.name)}function buildDirectoryPayload(dir,repoPath,cf){return{dir,repo:repoPath,promptMode:cf.promptMode,model:cf.model,description:cf.description,color:cf.color,provider:cf.provider,roles:cf.roles,permissions:cf.permissions,disallowedTools:cf.disallowedTools,omniScopes:cf.omniScopes,hooks:cf.hooks,sdk:cf.sdk,bridgeTmuxSession:cf.bridgeTmuxSession}}async function syncSingleAgent(agent,result2,workspaceRoot){let repoPath=(agent.repoUrl?extractOrgRepo(agent.repoUrl):null)??agent.repoUrl??agent.dir,yamlPath=join43(agent.dir,"agent.yaml"),agentsMdPath=join43(agent.dir,"AGENTS.md");await maybeMigrateFrontmatter(agent,result2);let configFields=existsSync37(yamlPath)?await readYamlAsConfigFields(yamlPath):readFrontmatterAsConfigFields(agentsMdPath);if(workspaceRoot){let ctx=buildResolveContext(workspaceRoot,agent.name);computeResolvedMetadata(configFields.rawForResolution,ctx)}let resolved=await resolve6(agent.name),existing=resolved&&!resolved.builtin?resolved.entry:null,payload=buildDirectoryPayload(agent.dir,repoPath,configFields);if(!existing){await add({name:agent.name,...payload}),result2.registered.push(agent.name);return}await edit(agent.name,payload),result2.updated.push(agent.name)}async function readYamlAsConfigFields(yamlPath){let cfg=await parseAgentYaml(yamlPath);return{promptMode:cfg.promptMode??"append",model:cfg.model,description:cfg.description,color:cfg.color,provider:cfg.provider,roles:cfg.roles,permissions:cfg.permissions,disallowedTools:cfg.disallowedTools,omniScopes:cfg.omniScopes,hooks:cfg.hooks,sdk:cfg.sdk,bridgeTmuxSession:cfg.bridgeTmuxSession,rawForResolution:cfg}}function readFrontmatterAsConfigFields(agentsMdPath){let content=existsSync37(agentsMdPath)?readFileSync25(agentsMdPath,"utf-8"):"",fm=parseFrontmatter(content);return{promptMode:fm.promptMode??"append",model:fm.model,description:fm.description,color:fm.color,provider:fm.provider,roles:fm.roles,permissions:fm.permissions,disallowedTools:fm.disallowedTools,omniScopes:fm.omniScopes,hooks:fm.hooks,sdk:fm.sdk,bridgeTmuxSession:fm.bridgeTmuxSession,rawForResolution:fm}}function dbRowFromEntry(entry2){return{team:entry2.team,model:entry2.model,description:entry2.description,color:entry2.color,provider:entry2.provider,promptMode:entry2.promptMode,permissions:entry2.permissions,disallowedTools:entry2.disallowedTools,omniScopes:entry2.omniScopes,hooks:entry2.hooks,sdk:entry2.sdk,bridgeTmuxSession:entry2.bridgeTmuxSession}}async function syncSingleAgentByName(workspaceRoot,agentName){let agent=discoverSingleAgent(workspaceRoot,agentName);if(!agent)return"not-found";let result2={registered:[],updated:[],migrated:[],archived:[],reactivated:[],healed:[],errors:[]};if(await syncSingleAgent(agent,result2,workspaceRoot),result2.registered.length>0)return"registered";if(result2.migrated.length>0)return"migrated";if(result2.updated.length>0)return"updated";return"synced"}function watchAgentDirectory(workspaceRoot,options){let agentsDir=join43(workspaceRoot,"agents");if(!existsSync37(agentsDir))return null;let debounceTimer=null,pendingChanges=new Set,processChanges=async()=>{let names=[...pendingChanges];pendingChanges.clear();for(let name of names)try{let action=await processWatchedAgent(workspaceRoot,agentsDir,name);if(action)options?.onSync?.(name,action)}catch{}},watcher=fsWatch(agentsDir,{persistent:!1},(_event,filename)=>{if(!filename)return;let name=filename.split("/")[0];if(!name||name.startsWith("."))return;if(pendingChanges.add(name),debounceTimer)clearTimeout(debounceTimer);debounceTimer=setTimeout(processChanges,2000)});return{close:()=>{if(debounceTimer)clearTimeout(debounceTimer);watcher.close()}}}async function processWatchedAgent(workspaceRoot,agentsDir,name){let agentDir=join43(agentsDir,name);if(existsSync37(agentDir)&&existsSync37(join43(agentDir,"AGENTS.md"))){let action=await syncSingleAgentByName(workspaceRoot,name);return action!=="synced"&&action!=="not-found"?action:null}if(!existsSync37(agentDir)){let{removed}=await rm2(name);if(removed)return"removed"}return null}var INVALID_LITERALS;var init_agent_sync=__esm(()=>{init_agent_directory();init_agent_migrate();init_agent_yaml();init_defaults();init_frontmatter();init_workspace();INVALID_LITERALS=[{field:"model",value:"inherit"}]});var exports_term_format={};__export(exports_term_format,{truncate:()=>truncate2,stripAnsi:()=>stripAnsi2,padRight:()=>padRight,formatTimestamp:()=>formatTimestamp,formatTime:()=>formatTime,formatRelativeTimestamp:()=>formatRelativeTimestamp,formatDate:()=>formatDate,color:()=>color});function padRight(str2,len){return str2.length>=len?str2:str2+" ".repeat(len-str2.length)}function truncate2(str2,len){return str2.length<=len?str2:`${str2.slice(0,len-1)}\u2026`}function formatDate(iso){if(!iso)return"-";return new Date(iso).toLocaleDateString("en-US",{month:"short",day:"numeric"})}function formatRelativeTimestamp(ts3){let d=new Date(ts3),diffMs=Date.now()-d.getTime();if(diffMs<60000)return`${Math.floor(diffMs/1000)}s ago`;if(diffMs<3600000)return`${Math.floor(diffMs/60000)}m ago`;if(diffMs<86400000)return`${Math.floor(diffMs/3600000)}h ago`;return d.toISOString().replace("T"," ").slice(0,19)}function formatTimestamp(iso,opts){if(!iso)return opts?.fallback??"-";let d=iso instanceof Date?iso:new Date(iso),fmt={month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1};if(opts?.seconds)fmt.second="2-digit";return d.toLocaleString("en-US",fmt)}function formatTime(iso,opts){try{let date=new Date(iso),fmt={hour:"2-digit",minute:"2-digit",hour12:!1};if(opts?.seconds)fmt.second="2-digit";return date.toLocaleTimeString("en-US",fmt)}catch{return opts?.fallback??"??:??"}}function color(name,text){return isTTY?`${ANSI[name]}${text}${ANSI.reset}`:text}function stripAnsi2(str2){return str2.replace(ANSI_REGEX,"")}var ANSI,isTTY,ANSI_REGEX;var init_term_format=__esm(()=>{ANSI={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",gray:"\x1B[90m",brightRed:"\x1B[91m",brightGreen:"\x1B[92m",brightYellow:"\x1B[93m",brightCyan:"\x1B[96m"},isTTY=process.stdout.isTTY&&!process.env.NO_COLOR;ANSI_REGEX=/\x1b\[[0-9;]*m/g});var exports_task_service={};__export(exports_task_service,{updateTask:()=>updateTask,updateMessage:()=>updateMessage,untagTask:()=>untagTask,unblockTask:()=>unblockTask,unarchiveTask:()=>unarchiveTask,unarchiveProject:()=>unarchiveProject,tagTask:()=>tagTask,setRelease:()=>setRelease,setPreference:()=>setPreference,sendMessage:()=>sendMessage,resolveTaskId:()=>resolveTaskId,resolveChannels:()=>resolveChannels,removeMember:()=>removeMember,removeDependency:()=>removeDependency,removeActor:()=>removeActor,releaseTask:()=>releaseTask,moveTask:()=>moveTask,markDone:()=>markDone,listTypes:()=>listTypes,listTasksForActor:()=>listTasksForActor,listTasks:()=>listTasks,listTags:()=>listTags,listReleases:()=>listReleases,listProjectsFiltered:()=>listProjectsFiltered,listProjects:()=>listProjects,listConversations:()=>listConversations,linkTask:()=>linkTask,getType:()=>getType,getTaskTags:()=>getTaskTags,getTaskActors:()=>getTaskActors,getTask:()=>getTask,getStageLog:()=>getStageLog,getProjectByRepoPath:()=>getProjectByRepoPath,getProjectByName:()=>getProjectByName,getPreferences:()=>getPreferences,getMessages:()=>getMessages,getMessage:()=>getMessage,getMembers:()=>getMembers,getDependents:()=>getDependents,getConversation:()=>getConversation,getCheckoutOwner:()=>getCheckoutOwner,getBlockingDependencies:()=>getBlockingDependencies,getBlockers:()=>getBlockers,forceUnlockTask:()=>forceUnlockTask,findOrCreateConversation:()=>findOrCreateConversation,expireStaleCheckouts:()=>expireStaleCheckouts,ensureProject:()=>ensureProject,deletePreference:()=>deletePreference,createType:()=>createType,createTask:()=>createTask,createTag:()=>createTag,createProject:()=>createProject,commentOnTask:()=>commentOnTask,checkoutTask:()=>checkoutTask,blockTask:()=>blockTask,assignTask:()=>assignTask,archiveTask:()=>archiveTask,archiveProject:()=>archiveProject,archiveBoard:()=>archiveBoard,addMember:()=>addMember,addDependency:()=>addDependency});import{execSync as execSync8}from"child_process";function str2(v){return v!=null?String(v):null}function strOrDefault(v,def){return v!=null?String(v):def}function mapTask(row){return{id:row.id,seq:row.seq,parentId:str2(row.parent_id),repoPath:row.repo_path,projectId:str2(row.project_id),genieOsFolderId:str2(row.genie_os_folder_id),wishFile:str2(row.wish_file),groupName:str2(row.group_name),title:row.title,description:str2(row.description),acceptanceCriteria:str2(row.acceptance_criteria),typeId:row.type_id,stage:row.stage,status:row.status,priority:row.priority,startDate:str2(row.start_date),dueDate:str2(row.due_date),estimatedEffort:str2(row.estimated_effort),startedAt:str2(row.started_at),endedAt:str2(row.ended_at),blockedReason:str2(row.blocked_reason),releaseId:str2(row.release_id),checkoutRunId:str2(row.checkout_run_id),executionLockedAt:str2(row.execution_locked_at),checkoutTimeoutMs:row.checkout_timeout_ms??600000,sessionId:str2(row.session_id),paneId:str2(row.pane_id),traceId:str2(row.trace_id),boardId:str2(row.board_id),columnId:str2(row.column_id),externalId:str2(row.external_id),externalUrl:str2(row.external_url),archivedAt:str2(row.archived_at),metadata:row.metadata??{},createdAt:strOrDefault(row.created_at,""),updatedAt:strOrDefault(row.updated_at,"")}}function mapConversation(row){return{id:row.id,parentMessageId:row.parent_message_id!=null?Number(row.parent_message_id):null,name:row.name??null,type:row.type,linkedEntity:row.linked_entity??null,linkedEntityId:row.linked_entity_id??null,createdByType:row.created_by_type??null,createdById:row.created_by_id??null,metadata:row.metadata??{},createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapMessage(row){return{id:Number(row.id),conversationId:row.conversation_id,replyToId:row.reply_to_id!=null?Number(row.reply_to_id):null,senderType:row.sender_type,senderId:row.sender_id,body:row.body,metadata:row.metadata??{},createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapTaskActor(row){return{taskId:row.task_id,actorType:row.actor_type,actorId:row.actor_id,role:row.role,permissions:row.permissions??{},createdAt:String(row.created_at)}}function mapDependency(row){return{taskId:row.task_id,dependsOnId:row.depends_on_id,depType:row.dep_type,createdAt:String(row.created_at)}}function mapTag(row){return{id:row.id,name:row.name,color:row.color??palette.textDim,typeId:row.type_id??null,createdAt:String(row.created_at)}}function mapTaskType(row){return{id:row.id,name:row.name,description:row.description??null,icon:row.icon??null,stages:row.stages,isBuiltin:row.is_builtin,createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapNotificationPref(row){return{actorType:row.actor_type,actorId:row.actor_id,channel:row.channel,priorityThreshold:row.priority_threshold,isDefault:row.is_default,enabled:row.enabled,metadata:row.metadata??{},createdAt:String(row.created_at),updatedAt:String(row.updated_at)}}function mapStageLog(row){return{id:Number(row.id),taskId:row.task_id,fromStage:row.from_stage??null,toStage:row.to_stage,actorType:row.actor_type??null,actorId:row.actor_id??null,runId:row.run_id??null,gateType:row.gate_type??null,createdAt:String(row.created_at)}}function mapConversationMember(row){return{conversationId:row.conversation_id,actorType:row.actor_type,actorId:row.actor_id,role:row.role,joinedAt:String(row.joined_at)}}function mapProject(row){return{id:row.id,name:row.name,repoPath:str2(row.repo_path),description:str2(row.description),leaderAgent:str2(row.leader_agent),tmuxSession:str2(row.tmux_session),status:strOrDefault(row.status,"active"),archivedAt:str2(row.archived_at),createdAt:String(row.created_at)}}function getRepoPath(){try{return execSync8("git rev-parse --show-toplevel",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{return process.cwd()}}async function resolveTaskId(idOrSeq,repoPath){let sql=await getConnection(),repo=repoPath??getRepoPath(),projectSeqMatch=idOrSeq.match(/^([^#]+)#(\d+)$/);if(projectSeqMatch&&!idOrSeq.startsWith("#")){let[,projectName,seqStr]=projectSeqMatch,seq2=Number.parseInt(seqStr,10);if(Number.isNaN(seq2))return null;let rows2=await sql`
1319
1319
  SELECT t.id FROM tasks t
1320
1320
  JOIN projects p ON t.project_id = p.id
1321
1321
  WHERE p.name = ${projectName} AND t.seq = ${seq2}
@@ -4043,7 +4043,7 @@ Behavior (idempotent):
4043
4043
  Exit codes:
4044
4044
  0 recovery succeeded (or agent already healed \u2014 second run is a no-op)
4045
4045
  1 resume failed; PG surgery state is preserved for retry
4046
- 2 agent not found by id, dir:<name>, custom_name, or role`).action(async(name,options)=>{try{await handleWorkerRecover(name,options)}catch(error2){if(error2 instanceof RecoverAgentNotFoundError)console.error(`Error: ${error2.message}`),process.exit(2);let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}})}init_agent_directory();init_genie_config2();import{resolve as resolvePath3}from"path";init_audit();init_genie_config2();init_omni_signature();async function resolveOmniApiUrl(){let envUrl=process.env.OMNI_API_URL;if(envUrl)return envUrl;return(await loadGenieConfig()).omni?.apiUrl??null}async function resolveOmniApiKey(){let envKey=process.env.OMNI_API_KEY;if(envKey)return envKey;return(await loadGenieConfig()).omni?.apiKey}async function registerAgentInOmni(agentName,options){let apiUrl=await resolveOmniApiUrl();if(!apiUrl)return null;let apiKey=await resolveOmniApiKey(),body={name:agentName,provider:"claude",model:options?.model,agentType:"assistant",capabilities:options?.roles??[],metadata:{source:"genie",sessionIsolation:{perPerson:!0,perChannel:!0},registeredAt:new Date().toISOString()}},traceId=generateTraceId();try{let headers={"Content-Type":"application/json","X-Trace-Id":traceId};if(apiKey)headers.Authorization=`Bearer ${apiKey}`;let bodyJson=JSON.stringify(body),sig=signOmniRequest("POST","/api/v2/agents",bodyJson);if(sig)Object.assign(headers,sig);let response=await fetch(`${apiUrl}/api/v2/agents`,{method:"POST",headers,body:bodyJson,signal:AbortSignal.timeout(1e4)});if(!response.ok){let text=await response.text().catch(()=>"");return console.warn(`Warning: Omni registration failed (HTTP ${response.status}): ${text}`),recordAuditEvent("omni",agentName,"registration_error",getActor(),{traceId,status:response.status,error:text.slice(0,200)}).catch(()=>{}),null}let result2=await response.json();return recordAuditEvent("omni",agentName,"registration_success",getActor(),{traceId,omniAgentId:result2.data.id}).catch(()=>{}),result2.data.id}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);return console.warn(`Warning: Omni registration failed: ${message}`),recordAuditEvent("omni",agentName,"registration_error",getActor(),{traceId,error:message.slice(0,200)}).catch(()=>{}),null}}async function findOmniAgent(agentName){let apiUrl=await resolveOmniApiUrl();if(!apiUrl)return null;let apiKey=await resolveOmniApiKey(),traceId=generateTraceId();try{let headers={"X-Trace-Id":traceId};if(apiKey)headers.Authorization=`Bearer ${apiKey}`;let path3=`/api/v2/agents?name=${encodeURIComponent(agentName)}`,sig=signOmniRequest("GET",path3,"");if(sig)Object.assign(headers,sig);let response=await fetch(`${apiUrl}${path3}`,{method:"GET",headers,signal:AbortSignal.timeout(1e4)});if(!response.ok)return null;return(await response.json()).data?.find((a)=>a.name===agentName&&a.isActive)?.id??null}catch{return null}}init_agent_directory();init_agent_migrate();init_agent_sync();init_agent_yaml();init_audit();init_builtin_agents();init_defaults();init_frontmatter();init_genie_config2();init_workspace();import{existsSync as existsSync44,mkdirSync as mkdirSync19,writeFileSync as writeFileSync18}from"fs";import{join as join53,resolve as resolvePath2}from"path";function registerDirNamespace(program2){let dir=program2.command("dir").description("Agent directory management"),addCmd=dir.command("add <name>").description("Register an agent in the directory").requiredOption("--dir <path>","Agent folder (CWD + AGENTS.md)").option("--repo <path>","Default git repo (overridden by team)").option("--prompt-mode <mode>","Prompt mode: append or system","append").option("--model <model>","Default model (sonnet, opus, codex)").option("--roles <roles...>","Built-in roles this agent can orchestrate").option("--permission-preset <preset>","Permission preset: full, read-only, chat-only").option("--allow <tools>",'Comma-separated tool allow list (e.g. "Read,Glob,Grep,Bash")').option("--bash-allow <patterns>","Comma-separated regex patterns for allowed bash commands").option("--global","Write to global directory instead of project");registerSdkFlags(addCmd),addCmd.action(async(name,options)=>{try{await handleDirAdd(name,options)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("rm <name>").description("Remove an agent from the directory").option("--global","Remove from global directory instead of project").option("--force","Also remove runtime/spawn rows sharing this role (id shapes: <team>-<role>, UUID)").option("--explicit-permanent","Override the heal-not-wipe guardrail and delete master agent rows (kind='permanent' with repo_path). Use with care \u2014 these rows own irreplaceable session identity.").action(async(name,options)=>{try{let result2=await rm3(name,{global:options.global,force:options.force,explicitPermanent:options.explicitPermanent});if(result2.removed){let scope=options.global?"global":"project";console.log(`Agent "${name}" removed from ${scope} directory.`),recordAuditEvent("item",name,"item_removed",getActor(),{type:"agent",source:"dir_rm"}).catch(()=>{})}else if(result2.message)console.error(result2.message),process.exit(1);else console.error(`Agent "${name}" not found in directory.`),process.exit(1)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("ls [name]").alias("list").description("List all agents or show single entry details").option("--json","Output as JSON").option("--builtins","Include built-in roles and council members").option("--all","Include archived agents").action(async(name,options)=>{try{if(name)await showEntry2(name,options.json);else await listEntries2(options.json,options.builtins,options.all)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}});let editCmd=dir.command("edit <name>").description("Update an agent directory entry").option("--dir <path>","Agent folder (CWD + AGENTS.md)").option("--repo <path>","Default git repo").option("--prompt-mode <mode>","Prompt mode: append or system").option("--model <model>","Default model").option("--provider <provider>","AI provider: claude or codex").option("--color <color>","Display color for TUI").option("--description <desc>","Agent description").option("--roles <roles...>","Built-in roles this agent can orchestrate").option("--permission-preset <preset>","Permission preset: full, read-only, chat-only").option("--allow <tools>",'Comma-separated tool allow list (e.g. "Read,Glob,Grep,Bash")').option("--bash-allow <patterns>","Comma-separated regex patterns for allowed bash commands").option("--global","Edit in global directory instead of project").option("--allow-symlink","Accept a symlinked AGENTS.md at the new --dir (default: rejected \u2014 usually indicates --dir was pointed at the wrong folder)");registerSdkFlags(editCmd),editCmd.action(async(name,options)=>{try{await handleEdit(name,options)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("sync").description("Sync agents from workspace agents/ directory").action(async()=>{try{await handleDirSync()}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("export <name>").description("Print full AGENTS.md frontmatter for an agent from PG state").option("--stdout","Print to stdout as raw YAML (default)").option("--json","Print resolved fields as nested JSON with declared/resolved/source").action(async(name,options)=>{try{await handleDirExport(name,options)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}})}async function handleDirAdd(name,options){let promptMode=validatePromptMode(options.promptMode),resolvedDir=resolvePath2(options.dir);if(options.repo)validateRepoPath(options.repo);let permissions=buildPermissions(options.permissionPreset,options.allow,options.bashAllow),sdk=buildSdkConfig(options),config={promptMode,...options.model!==void 0&&{model:options.model},...options.repo!==void 0&&{repo:resolvePath2(options.repo)},...options.roles!==void 0&&{roles:normalizeRoles(options.roles)},...permissions&&{permissions},...sdk&&{sdk}};mkdirSync19(resolvedDir,{recursive:!0});let agentsMdPath=join53(resolvedDir,"AGENTS.md");if(!existsSync44(agentsMdPath))writeFileSync18(agentsMdPath,scaffoldAgentsMdBody(name));await writeAgentYaml(join53(resolvedDir,"agent.yaml"),config);let directoryEntry={name,dir:resolvedDir,repo:options.repo?resolvePath2(options.repo):void 0,promptMode,model:options.model,roles:normalizeRoles(options.roles),...permissions&&{permissions},...sdk&&{sdk}},ws=findWorkspace();if((ws?await syncSingleAgentByName(ws.root,name):"not-found")==="not-found"){if(await add(directoryEntry,{global:options.global}),!ws)console.warn("Not in a genie workspace \u2014 directory row created; run `genie dir sync` in a workspace to re-sync.")}recordAuditEvent("item",name,"item_registered",getActor(),{type:"agent",source:"dir_add"}).catch(()=>{});let scope=options.global?"global":"project";console.log(`Agent "${name}" registered (${scope}).`);let entry2=await get2(name);if(entry2)printEntry(entry2)}function scaffoldAgentsMdBody(name){return`# Agent: ${name}
4046
+ 2 agent not found by id, dir:<name>, custom_name, or role`).action(async(name,options)=>{try{await handleWorkerRecover(name,options)}catch(error2){if(error2 instanceof RecoverAgentNotFoundError)console.error(`Error: ${error2.message}`),process.exit(2);let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}})}init_agent_directory();init_genie_config2();import{resolve as resolvePath3}from"path";init_audit();init_genie_config2();init_omni_signature();async function resolveOmniApiUrl(){let envUrl=process.env.OMNI_API_URL;if(envUrl)return envUrl;return(await loadGenieConfig()).omni?.apiUrl??null}async function resolveOmniApiKey(){let envKey=process.env.OMNI_API_KEY;if(envKey)return envKey;return(await loadGenieConfig()).omni?.apiKey}async function registerAgentInOmni(agentName,options){let apiUrl=await resolveOmniApiUrl();if(!apiUrl)return null;let apiKey=await resolveOmniApiKey(),body={name:agentName,provider:"claude",model:options?.model,agentType:"assistant",capabilities:options?.roles??[],metadata:{source:"genie",sessionIsolation:{perPerson:!0,perChannel:!0},registeredAt:new Date().toISOString()}},traceId=generateTraceId();try{let headers={"Content-Type":"application/json","X-Trace-Id":traceId};if(apiKey)headers.Authorization=`Bearer ${apiKey}`;let bodyJson=JSON.stringify(body),sig=signOmniRequest("POST","/api/v2/agents",bodyJson);if(sig)Object.assign(headers,sig);let response=await fetch(`${apiUrl}/api/v2/agents`,{method:"POST",headers,body:bodyJson,signal:AbortSignal.timeout(1e4)});if(!response.ok){let text=await response.text().catch(()=>"");return console.warn(`Warning: Omni registration failed (HTTP ${response.status}): ${text}`),recordAuditEvent("omni",agentName,"registration_error",getActor(),{traceId,status:response.status,error:text.slice(0,200)}).catch(()=>{}),null}let result2=await response.json();return recordAuditEvent("omni",agentName,"registration_success",getActor(),{traceId,omniAgentId:result2.data.id}).catch(()=>{}),result2.data.id}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);return console.warn(`Warning: Omni registration failed: ${message}`),recordAuditEvent("omni",agentName,"registration_error",getActor(),{traceId,error:message.slice(0,200)}).catch(()=>{}),null}}async function findOmniAgent(agentName){let apiUrl=await resolveOmniApiUrl();if(!apiUrl)return null;let apiKey=await resolveOmniApiKey(),traceId=generateTraceId();try{let headers={"X-Trace-Id":traceId};if(apiKey)headers.Authorization=`Bearer ${apiKey}`;let path3=`/api/v2/agents?name=${encodeURIComponent(agentName)}`,sig=signOmniRequest("GET",path3,"");if(sig)Object.assign(headers,sig);let response=await fetch(`${apiUrl}${path3}`,{method:"GET",headers,signal:AbortSignal.timeout(1e4)});if(!response.ok)return null;return(await response.json()).data?.find((a)=>a.name===agentName&&a.isActive)?.id??null}catch{return null}}init_agent_directory();init_agent_migrate();init_agent_sync();init_agent_yaml();init_audit();init_builtin_agents();init_defaults();init_frontmatter();init_genie_config2();init_workspace();import{existsSync as existsSync44,mkdirSync as mkdirSync19,writeFileSync as writeFileSync18}from"fs";import{join as join53,resolve as resolvePath2}from"path";function registerDirNamespace(program2){let dir=program2.command("dir").description("Agent directory management"),addCmd=dir.command("add <name>").description("Register an agent in the directory").requiredOption("--dir <path>","Agent folder (CWD + AGENTS.md)").option("--repo <path>","Default git repo (overridden by team)").option("--prompt-mode <mode>","Prompt mode: append or system","append").option("--model <model>","Default model (sonnet, opus, codex)").option("--roles <roles...>","Built-in roles this agent can orchestrate").option("--permission-preset <preset>","Permission preset: full, read-only, chat-only").option("--allow <tools>",'Comma-separated tool allow list (e.g. "Read,Glob,Grep,Bash")').option("--bash-allow <patterns>","Comma-separated regex patterns for allowed bash commands").option("--global","Write to global directory instead of project");registerSdkFlags(addCmd),addCmd.action(async(name,options)=>{try{await handleDirAdd(name,options)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("rm <name>").description("Remove an agent from the directory").option("--global","Remove from global directory instead of project").option("--force","Also remove runtime/spawn rows sharing this role (id shapes: <team>-<role>, UUID)").option("--explicit-permanent","Override the heal-not-wipe guardrail and delete master agent rows (kind='permanent' with repo_path). Use with care \u2014 these rows own irreplaceable session identity.").action(async(name,options)=>{try{let result2=await rm2(name,{global:options.global,force:options.force,explicitPermanent:options.explicitPermanent});if(result2.removed){let scope=options.global?"global":"project";console.log(`Agent "${name}" removed from ${scope} directory.`),recordAuditEvent("item",name,"item_removed",getActor(),{type:"agent",source:"dir_rm"}).catch(()=>{})}else if(result2.message)console.error(result2.message),process.exit(1);else console.error(`Agent "${name}" not found in directory.`),process.exit(1)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("ls [name]").alias("list").description("List all agents or show single entry details").option("--json","Output as JSON").option("--builtins","Include built-in roles and council members").option("--all","Include archived agents").action(async(name,options)=>{try{if(name)await showEntry2(name,options.json);else await listEntries2(options.json,options.builtins,options.all)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}});let editCmd=dir.command("edit <name>").description("Update an agent directory entry").option("--dir <path>","Agent folder (CWD + AGENTS.md)").option("--repo <path>","Default git repo").option("--prompt-mode <mode>","Prompt mode: append or system").option("--model <model>","Default model").option("--provider <provider>","AI provider: claude or codex").option("--color <color>","Display color for TUI").option("--description <desc>","Agent description").option("--roles <roles...>","Built-in roles this agent can orchestrate").option("--permission-preset <preset>","Permission preset: full, read-only, chat-only").option("--allow <tools>",'Comma-separated tool allow list (e.g. "Read,Glob,Grep,Bash")').option("--bash-allow <patterns>","Comma-separated regex patterns for allowed bash commands").option("--global","Edit in global directory instead of project").option("--allow-symlink","Accept a symlinked AGENTS.md at the new --dir (default: rejected \u2014 usually indicates --dir was pointed at the wrong folder)");registerSdkFlags(editCmd),editCmd.action(async(name,options)=>{try{await handleEdit(name,options)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("sync").description("Sync agents from workspace agents/ directory").action(async()=>{try{await handleDirSync()}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}}),dir.command("export <name>").description("Print full AGENTS.md frontmatter for an agent from PG state").option("--stdout","Print to stdout as raw YAML (default)").option("--json","Print resolved fields as nested JSON with declared/resolved/source").action(async(name,options)=>{try{await handleDirExport(name,options)}catch(error2){let message=error2 instanceof Error?error2.message:String(error2);console.error(`Error: ${message}`),process.exit(1)}})}async function handleDirAdd(name,options){let promptMode=validatePromptMode(options.promptMode),resolvedDir=resolvePath2(options.dir);if(options.repo)validateRepoPath(options.repo);let permissions=buildPermissions(options.permissionPreset,options.allow,options.bashAllow),sdk=buildSdkConfig(options),config={promptMode,...options.model!==void 0&&{model:options.model},...options.repo!==void 0&&{repo:resolvePath2(options.repo)},...options.roles!==void 0&&{roles:normalizeRoles(options.roles)},...permissions&&{permissions},...sdk&&{sdk}};mkdirSync19(resolvedDir,{recursive:!0});let agentsMdPath=join53(resolvedDir,"AGENTS.md");if(!existsSync44(agentsMdPath))writeFileSync18(agentsMdPath,scaffoldAgentsMdBody(name));await writeAgentYaml(join53(resolvedDir,"agent.yaml"),config);let directoryEntry={name,dir:resolvedDir,repo:options.repo?resolvePath2(options.repo):void 0,promptMode,model:options.model,roles:normalizeRoles(options.roles),...permissions&&{permissions},...sdk&&{sdk}},ws=findWorkspace();if((ws?await syncSingleAgentByName(ws.root,name):"not-found")==="not-found"){if(await add(directoryEntry,{global:options.global}),!ws)console.warn("Not in a genie workspace \u2014 directory row created; run `genie dir sync` in a workspace to re-sync.")}recordAuditEvent("item",name,"item_registered",getActor(),{type:"agent",source:"dir_add"}).catch(()=>{});let scope=options.global?"global":"project";console.log(`Agent "${name}" registered (${scope}).`);let entry2=await get2(name);if(entry2)printEntry(entry2)}function scaffoldAgentsMdBody(name){return`# Agent: ${name}
4047
4047
 
4048
4048
  Describe what this agent does, how it behaves, and what it owns.
4049
4049
  Runtime config (team, model, permissions, etc.) lives in \`agent.yaml\` \u2014
@@ -4366,8 +4366,8 @@ Event Throughput (last 60s):`),console.log(` Emitted: ${data.events_emitted_la
4366
4366
  Project: ${p.name}`),console.log("\u2500".repeat(50)),console.log(` ID: ${p.id}`),console.log(` Type: ${p.repoPath?"repo":"virtual"}`),p.repoPath)console.log(` Path: ${p.repoPath}`);if(p.description)console.log(` Desc: ${p.description}`);if(console.log(` Created: ${formatDate(p.createdAt)}`),console.log(` Tasks: ${tasks.length}`),tasks.length>0){console.log(`
4367
4367
  By status:`);for(let[status2,count]of Object.entries(byStatus).sort())console.log(` ${padRight(status2,15)} ${count}`);console.log(`
4368
4368
  By stage:`);for(let[stage,count]of Object.entries(byStage).sort())console.log(` ${padRight(stage,15)} ${count}`)}}function registerProjectCommands(program2){let project=program2.command("project").description("Project management \u2014 named task boards");project.command("list").description("List all projects").option("--all","Include archived projects").option("--json","Output as JSON").action(async(options)=>{try{let ts3=await getTaskService5(),projects=await ts3.listProjectsFiltered(options.all);if(options.json){console.log(JSON.stringify(projects,null,2));return}if(projects.length===0){console.log("No projects found. Projects are auto-created when you run `genie task create`.");return}await printProjectList(ts3,projects)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}}),project.command("create <name>").description("Create a new project").option("--virtual","Create a virtual project (not tied to a repo)").option("--repo <path>","Repo path for the project").option("--description <text>","Project description").action(async(name,options)=>{try{let ts3=await getTaskService5(),repoPath=options.virtual?null:options.repo??null,p=await ts3.createProject({name,repoPath,description:options.description});if(console.log(`Created project "${p.name}"`),console.log(` ID: ${p.id}`),console.log(` Type: ${p.repoPath?"repo":"virtual"}`),p.repoPath)console.log(` Path: ${p.repoPath}`);if(p.description)console.log(` Desc: ${p.description}`)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}}),project.command("show <name>").description("Show project detail with task stats").option("--json","Output as JSON").action(async(name,options)=>{try{let ts3=await getTaskService5(),p=await ts3.getProjectByName(name);if(!p){console.error(`Error: Project not found: ${name}`),process.exit(1);return}if(options.json){console.log(JSON.stringify(p,null,2));return}let tasks=await ts3.listTasks({projectName:name,allProjects:!0});printProjectDetail(p,tasks)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}}),project.command("archive <name>").description("Archive a project (cascades to boards and unfinished tasks)").action(async(name)=>{try{await(await getTaskService5()).archiveProject(name),console.log(`Archived project "${name}" and cascaded to boards + unfinished tasks.`)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}}),project.command("unarchive <name>").description("Restore an archived project and its boards (tasks stay as-is)").action(async(name)=>{try{await(await getTaskService5()).unarchiveProject(name),console.log(`Unarchived project "${name}" and restored boards.`)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}}),project.command("set-default <name>").description("Set default project for when outside any repo").action(async(name)=>{try{if(!await(await getTaskService5()).getProjectByName(name))console.error(`Error: Project not found: ${name}`),process.exit(1);let{loadGenieConfig:loadGenieConfig2,saveGenieConfig:saveGenieConfig2}=await Promise.resolve().then(() => (init_genie_config2(),exports_genie_config)),config=await loadGenieConfig2();config.defaultProject=name,await saveGenieConfig2(config),console.log(`Default project set to "${name}"`)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}})}init_agent_registry();init_db();var DEFAULT_TTL_HOURS={zombies:24,errored:1},TARGET_LABEL={zombies:"zombie agent",errored:"errored agent"};function parsePositiveInt(value,name){let parsed=Number.parseInt(value,10);if(!Number.isFinite(parsed)||parsed<=0)throw Error(`Invalid ${name}: ${value} (expected a positive integer)`);return parsed}async function listTargets(mode,ttlHours){return mode==="zombies"?listExhaustedZombies(ttlHours):listAllExhaustedErrored(ttlHours)}async function archiveTargets(mode,ttlHours){return mode==="zombies"?archiveExhaustedZombies(ttlHours):archiveAllExhaustedErrored(ttlHours)}async function runDryRun(mode,ttlHours){let rows=await listTargets(mode,ttlHours);if(rows.length===0){console.log(`No exhausted ${TARGET_LABEL[mode]}s older than ${ttlHours}h.`);return}let plural=rows.length===1?"":"s";console.log(`Would archive ${rows.length} ${TARGET_LABEL[mode]}${plural} older than ${ttlHours}h:`);for(let r of rows)console.log(` ${r.id} (last state change: ${r.lastStateChange})`)}async function runArchive(mode,ttlHours){let ids=await archiveTargets(mode,ttlHours);if(ids.length===0){console.log(`No exhausted ${TARGET_LABEL[mode]}s older than ${ttlHours}h. Nothing to archive.`);return}let plural=ids.length===1?"":"s";console.log(`Archived ${ids.length} ${TARGET_LABEL[mode]}${plural} older than ${ttlHours}h:`);for(let id of ids)console.log(` ${id}`)}function resolveMode(options){if(options.zombies&&options.errored)console.error("Error: --zombies and --errored are mutually exclusive."),process.exit(2);if(options.zombies)return"zombies";if(options.errored)return"errored";console.error("Error: no prune target specified. Use `--zombies` or `--errored`."),console.error("See `genie prune --help` for available targets."),process.exit(2)}async function pruneCommand(options){let mode=resolveMode(options),ttlHours=options.ttlHours??DEFAULT_TTL_HOURS[mode];if(!await isAvailable())console.error("Database is not running. Start it with: genie db status"),process.exit(1);try{await(options.dryRun?runDryRun(mode,ttlHours):runArchive(mode,ttlHours))}catch(err){let message=err instanceof Error?err.message:String(err);console.error(`Prune failed: ${message}`),process.exit(1)}finally{await shutdown().catch(()=>{})}}function registerPruneCommands(program2){program2.command("prune").description("Bulk cleanup of stale or exhausted registry entries").option("--zombies","Archive reconciler-tagged dead-pane zombies (24h default TTL)").option("--errored","Archive any exhausted error-state agent regardless of reason (1h default TTL; set auto_resume=true to keep a row visible)").option("--dry-run","List targets that would be affected without mutating").option("--ttl-hours <hours>","Override the mode default TTL in hours (24 for --zombies, 1 for --errored)",(v)=>parsePositiveInt(v,"--ttl-hours")).action(pruneCommand)}init_agent_registry();import{readFile as readFile16,stat as stat10}from"fs/promises";import{join as join85}from"path";import{readFile as readFile14}from"fs/promises";async function parseQaSpec(filePath){let content=await readFile14(filePath,"utf-8");return parseQaSpecContent(content,filePath)}var SECTION_MAP={setup:"setup",actions:"actions",expect:"expect"};function detectSection(line){for(let[keyword,section]of Object.entries(SECTION_MAP))if(new RegExp(`^##\\s+${keyword}`,"i").test(line))return section;if(line.startsWith("## "))return"none";return null}function parseQaSpecContent(content,filePath="<inline>"){let lines=content.split(`
4369
- `),name="",currentSection="none",setup=[],actions=[],expect=[],parsers2={none:()=>{},setup:(line)=>{let step=parseSetupLine(line);if(step)setup.push(step)},actions:(line)=>{let step=parseActionLine(line);if(step)actions.push(step)},expect:(line)=>{let exp=parseExpectLine(line);if(exp)expect.push(exp)}};for(let line of lines){let trimmed=line.trim();if(trimmed.startsWith("# ")&&!trimmed.startsWith("## ")){let match=trimmed.match(/^#\s+(?:Test:\s*)?(.+)$/);if(match)name=match[1].trim();continue}let section=detectSection(trimmed);if(section!==null){currentSection=section;continue}if(!trimmed||trimmed.startsWith("//")||trimmed.startsWith("<!--"))continue;parsers2[currentSection](trimmed)}if(!name)name=filePath.replace(/.*\//,"").replace(/\.md$/,"");return{name,file:filePath,setup,actions,expect}}function parseSetupLine(line){let text=stripListPrefix(line);if(!text)return null;let spawnMatch=text.match(/^spawn\s+(\S+)(?:\s+\((.+)\))?$/i);if(spawnMatch)return{kind:"spawn",target:spawnMatch[1],options:spawnMatch[2]?parseOptions2(spawnMatch[2]):{}};let followMatch=text.match(/^(?:start\s+)?follow(?:\s+(?:on\s+)?(\S+))?(?:\s+\((.+)\))?$/i);if(followMatch)return{kind:"follow",target:followMatch[1]||"team",options:followMatch[2]?parseOptions2(followMatch[2]):{}};return null}function parseActionLine(line){let text=stripListPrefix(line);if(!text)return null;let sendMatch=text.match(/^send\s+"([^"]+)"\s+to\s+(\S+)/i);if(sendMatch)return{kind:"send",message:sendMatch[1],to:sendMatch[2]};let waitMatch=text.match(/^wait\s+(?:for\s+.+?\s+)?\(?(?:max\s+)?(\d+)s\)?/i);if(waitMatch)return{kind:"wait",seconds:Number.parseInt(waitMatch[1],10)};let runMatch=text.match(/^run\s+(.+)$/i);if(runMatch)return{kind:"run",command:runMatch[1]};return null}function detectSource(text){if(/\binbox\b/i.test(text))return"inbox";if(/\blog\b/i.test(text))return"log";if(/\boutput\b/i.test(text))return"output";return"log"}function extractMatchers(text){let matchers={},matcherRegex=/(\w+)\s*([~!]?=)\s*(?:"([^"]+)"|(\S+))/g;for(let match of text.matchAll(matcherRegex)){let op=match[2]==="~="?"~":"",value=(match[3]??match[4]).trim();matchers[match[1]]=`${op}${value}`}return matchers}function parseExpectLine(line){let text=line.replace(/^[-*]\s*\[[ x]\]\s*/i,"").trim();if(!text)return null;return{description:text,source:detectSource(text),matchers:extractMatchers(text)}}function stripListPrefix(line){return line.replace(/^[-*]\s+/,"").replace(/^\d+\.\s+/,"").trim()}function parseOptions2(text){let opts={};for(let pair of text.split(",")){let[key,...rest]=pair.split(":");if(key&&rest.length>0)opts[key.trim()]=rest.join(":").trim()}return opts}import{cp as cp2,mkdir as mkdir11,rm as rm4,writeFile as writeFile10}from"fs/promises";import{tmpdir as tmpdir4}from"os";import{dirname as dirname28,join as join84,resolve as resolve17}from"path";var{$:$4}=globalThis.Bun;import{createHash as createHash9}from"crypto";import{mkdir as mkdir10,readFile as readFile15,readdir as readdir10,stat as stat9,writeFile as writeFile9}from"fs/promises";import{homedir as homedir49}from"os";import{join as join83,relative as relative8,resolve as resolve16}from"path";function repoHash(repoPath){return createHash9("sha256").update(resolve16(repoPath)).digest("hex").slice(0,12)}function resultsDir(repoPath){let base=process.env.GENIE_HOME??join83(homedir49(),".genie");return join83(base,"qa",repoHash(repoPath))}function resultsPath(repoPath){return join83(resultsDir(repoPath),"results.json")}async function loadResults(repoPath){try{let raw=await readFile15(resultsPath(repoPath),"utf-8");return JSON.parse(raw)}catch{return{}}}async function saveResult(repoPath,specKey,report2){let dir=resultsDir(repoPath);await mkdir10(dir,{recursive:!0});let results=await loadResults(repoPath),specHash=await hashSpecFile(report2.file);results[specKey]={lastRun:new Date().toISOString(),result:report2.result,durationMs:report2.durationMs,specHash,expectations:report2.expectations,error:report2.error},await writeFile9(resultsPath(repoPath),JSON.stringify(results,null,2))}async function isStale(repoPath,specKey,specFilePath){let stored=(await loadResults(repoPath))[specKey];if(!stored)return!1;return await hashSpecFile(specFilePath)!==stored.specHash}async function listAllSpecs(specDir){let entries=[];return await walkSpecs(specDir,specDir,entries),entries.sort((a,b2)=>{if(a.domain!==b2.domain)return a.domain.localeCompare(b2.domain);return a.name.localeCompare(b2.name)})}async function hashSpecFile(filePath){try{let content=await readFile15(filePath,"utf-8");return createHash9("sha256").update(content).digest("hex").slice(0,12)}catch{return"unknown"}}async function walkSpecs(baseDir,dir,entries){let items=await readdir10(dir);for(let item of items){let fullPath=join83(dir,item);if((await stat9(fullPath)).isDirectory())await walkSpecs(baseDir,fullPath,entries);else if(item.endsWith(".md")){let rel=relative8(baseDir,fullPath),parts=rel.replace(/\.md$/,"").split("/"),domain=parts.length>1?parts.slice(0,-1).join("/"):"(root)",name=parts[parts.length-1];entries.push({key:rel.replace(/\.md$/,""),domain,name,filePath:fullPath})}}}function specKeyFromPath(specDir,filePath){return relative8(specDir,filePath).replace(/\.md$/,"")}function formatTimeAgo(isoDate){let ms=Date.now()-new Date(isoDate).getTime(),seconds=Math.floor(ms/1000);if(seconds<60)return`${seconds}s ago`;let minutes=Math.floor(seconds/60);if(minutes<60)return`${minutes}m ago`;let hours=Math.floor(minutes/60);if(hours<24)return`${hours}h ago`;return`${Math.floor(hours/24)}d ago`}init_runtime_events();init_team_manager();function emitNdjson(event){process.stdout.write(`${JSON.stringify(event)}
4370
- `)}async function publishQaEvent(repoPath,qaType,payload){let{specKey,domain,team,...rest}=payload;await publishSubjectEvent(repoPath,`genie.qa.${qaType}`,{kind:"qa",agent:"qa",team,text:`${qaType}: ${specKey}`,data:{qaType,specKey,domain,...rest},source:"hook"})}async function emitQaEvent(repoPath,qaType,payload,ndjson){if(await publishQaEvent(repoPath,qaType,payload),ndjson)emitNdjson(payload)}function parseStatusEntry(status2,parts,index){if(status2.startsWith("R")){let from=parts[index]??"",to=parts[index+1]??"";if(from&&to)return{op:{kind:"rename",from,to},nextIndex:index+2};return{op:null,nextIndex:index+2}}let path3=parts[index]??"";if(!path3)return{op:null,nextIndex:index+1};return{op:{kind:status2.startsWith("D")?"delete":"copy",path:path3},nextIndex:index+1}}function parseNameStatusZ(output){if(!output)return[];let parts=output.split("\x00").filter(Boolean),ops=[],i2=0;while(i2<parts.length){let status2=parts[i2++]??"";if(!status2)break;let{op,nextIndex}=parseStatusEntry(status2,parts,i2);if(i2=nextIndex,op)ops.push(op)}return ops}async function overlayDirtyWorkingTree(repoPath,worktreePath){let tracked=(await $4`git -C ${repoPath} diff --name-status --find-renames -z HEAD --`.quiet().nothrow().text()).trim(),untracked=(await $4`git -C ${repoPath} ls-files --others --exclude-standard -z`.quiet().nothrow().text()).trim(),ops=parseNameStatusZ(tracked);for(let path3 of untracked.split("\x00").filter(Boolean))ops.push({kind:"copy",path:path3});for(let op of ops){if(op.kind==="delete"){await rm4(join84(worktreePath,op.path),{recursive:!0,force:!0});continue}if(op.kind==="rename"){await rm4(join84(worktreePath,op.from),{recursive:!0,force:!0});let src2=join84(repoPath,op.to),dest2=join84(worktreePath,op.to);await mkdir11(dirname28(dest2),{recursive:!0}),await cp2(src2,dest2,{recursive:!0,force:!0});continue}let src=join84(repoPath,op.path),dest=join84(worktreePath,op.path);await mkdir11(dirname28(dest),{recursive:!0}),await cp2(src,dest,{recursive:!0,force:!0})}}async function runAllSpecs(specDir,options){let entries=await listAllSpecs(specDir);return runSpecEntries(entries,specDir,options)}async function runDomainSpecs(specDir,domain,options){let filtered=(await listAllSpecs(specDir)).filter((e)=>e.domain===domain);return runSpecEntries(filtered,specDir,options)}async function prepareTeams(entries,repoPath,ndjson){let prepared=[];console.error(`
4369
+ `),name="",currentSection="none",setup=[],actions=[],expect=[],parsers2={none:()=>{},setup:(line)=>{let step=parseSetupLine(line);if(step)setup.push(step)},actions:(line)=>{let step=parseActionLine(line);if(step)actions.push(step)},expect:(line)=>{let exp=parseExpectLine(line);if(exp)expect.push(exp)}};for(let line of lines){let trimmed=line.trim();if(trimmed.startsWith("# ")&&!trimmed.startsWith("## ")){let match=trimmed.match(/^#\s+(?:Test:\s*)?(.+)$/);if(match)name=match[1].trim();continue}let section=detectSection(trimmed);if(section!==null){currentSection=section;continue}if(!trimmed||trimmed.startsWith("//")||trimmed.startsWith("<!--"))continue;parsers2[currentSection](trimmed)}if(!name)name=filePath.replace(/.*\//,"").replace(/\.md$/,"");return{name,file:filePath,setup,actions,expect}}function parseSetupLine(line){let text=stripListPrefix(line);if(!text)return null;let spawnMatch=text.match(/^spawn\s+(\S+)(?:\s+\((.+)\))?$/i);if(spawnMatch)return{kind:"spawn",target:spawnMatch[1],options:spawnMatch[2]?parseOptions2(spawnMatch[2]):{}};let followMatch=text.match(/^(?:start\s+)?follow(?:\s+(?:on\s+)?(\S+))?(?:\s+\((.+)\))?$/i);if(followMatch)return{kind:"follow",target:followMatch[1]||"team",options:followMatch[2]?parseOptions2(followMatch[2]):{}};return null}function parseActionLine(line){let text=stripListPrefix(line);if(!text)return null;let sendMatch=text.match(/^send\s+"([^"]+)"\s+to\s+(\S+)/i);if(sendMatch)return{kind:"send",message:sendMatch[1],to:sendMatch[2]};let waitMatch=text.match(/^wait\s+(?:for\s+.+?\s+)?\(?(?:max\s+)?(\d+)s\)?/i);if(waitMatch)return{kind:"wait",seconds:Number.parseInt(waitMatch[1],10)};let runMatch=text.match(/^run\s+(.+)$/i);if(runMatch)return{kind:"run",command:runMatch[1]};return null}function detectSource(text){if(/\binbox\b/i.test(text))return"inbox";if(/\blog\b/i.test(text))return"log";if(/\boutput\b/i.test(text))return"output";return"log"}function extractMatchers(text){let matchers={},matcherRegex=/(\w+)\s*([~!]?=)\s*(?:"([^"]+)"|(\S+))/g;for(let match of text.matchAll(matcherRegex)){let op=match[2]==="~="?"~":"",value=(match[3]??match[4]).trim();matchers[match[1]]=`${op}${value}`}return matchers}function parseExpectLine(line){let text=line.replace(/^[-*]\s*\[[ x]\]\s*/i,"").trim();if(!text)return null;return{description:text,source:detectSource(text),matchers:extractMatchers(text)}}function stripListPrefix(line){return line.replace(/^[-*]\s+/,"").replace(/^\d+\.\s+/,"").trim()}function parseOptions2(text){let opts={};for(let pair of text.split(",")){let[key,...rest]=pair.split(":");if(key&&rest.length>0)opts[key.trim()]=rest.join(":").trim()}return opts}import{cp as cp2,mkdir as mkdir11,rm as rm3,writeFile as writeFile10}from"fs/promises";import{tmpdir as tmpdir4}from"os";import{dirname as dirname28,join as join84,resolve as resolve17}from"path";var{$:$4}=globalThis.Bun;import{createHash as createHash9}from"crypto";import{mkdir as mkdir10,readFile as readFile15,readdir as readdir10,stat as stat9,writeFile as writeFile9}from"fs/promises";import{homedir as homedir49}from"os";import{join as join83,relative as relative8,resolve as resolve16}from"path";function repoHash(repoPath){return createHash9("sha256").update(resolve16(repoPath)).digest("hex").slice(0,12)}function resultsDir(repoPath){let base=process.env.GENIE_HOME??join83(homedir49(),".genie");return join83(base,"qa",repoHash(repoPath))}function resultsPath(repoPath){return join83(resultsDir(repoPath),"results.json")}async function loadResults(repoPath){try{let raw=await readFile15(resultsPath(repoPath),"utf-8");return JSON.parse(raw)}catch{return{}}}async function saveResult(repoPath,specKey,report2){let dir=resultsDir(repoPath);await mkdir10(dir,{recursive:!0});let results=await loadResults(repoPath),specHash=await hashSpecFile(report2.file);results[specKey]={lastRun:new Date().toISOString(),result:report2.result,durationMs:report2.durationMs,specHash,expectations:report2.expectations,error:report2.error},await writeFile9(resultsPath(repoPath),JSON.stringify(results,null,2))}async function isStale(repoPath,specKey,specFilePath){let stored=(await loadResults(repoPath))[specKey];if(!stored)return!1;return await hashSpecFile(specFilePath)!==stored.specHash}async function listAllSpecs(specDir){let entries=[];return await walkSpecs(specDir,specDir,entries),entries.sort((a,b2)=>{if(a.domain!==b2.domain)return a.domain.localeCompare(b2.domain);return a.name.localeCompare(b2.name)})}async function hashSpecFile(filePath){try{let content=await readFile15(filePath,"utf-8");return createHash9("sha256").update(content).digest("hex").slice(0,12)}catch{return"unknown"}}async function walkSpecs(baseDir,dir,entries){let items=await readdir10(dir);for(let item of items){let fullPath=join83(dir,item);if((await stat9(fullPath)).isDirectory())await walkSpecs(baseDir,fullPath,entries);else if(item.endsWith(".md")){let rel=relative8(baseDir,fullPath),parts=rel.replace(/\.md$/,"").split("/"),domain=parts.length>1?parts.slice(0,-1).join("/"):"(root)",name=parts[parts.length-1];entries.push({key:rel.replace(/\.md$/,""),domain,name,filePath:fullPath})}}}function specKeyFromPath(specDir,filePath){return relative8(specDir,filePath).replace(/\.md$/,"")}function formatTimeAgo(isoDate){let ms=Date.now()-new Date(isoDate).getTime(),seconds=Math.floor(ms/1000);if(seconds<60)return`${seconds}s ago`;let minutes=Math.floor(seconds/60);if(minutes<60)return`${minutes}m ago`;let hours=Math.floor(minutes/60);if(hours<24)return`${hours}h ago`;return`${Math.floor(hours/24)}d ago`}init_runtime_events();init_team_manager();function emitNdjson(event){process.stdout.write(`${JSON.stringify(event)}
4370
+ `)}async function publishQaEvent(repoPath,qaType,payload){let{specKey,domain,team,...rest}=payload;await publishSubjectEvent(repoPath,`genie.qa.${qaType}`,{kind:"qa",agent:"qa",team,text:`${qaType}: ${specKey}`,data:{qaType,specKey,domain,...rest},source:"hook"})}async function emitQaEvent(repoPath,qaType,payload,ndjson){if(await publishQaEvent(repoPath,qaType,payload),ndjson)emitNdjson(payload)}function parseStatusEntry(status2,parts,index){if(status2.startsWith("R")){let from=parts[index]??"",to=parts[index+1]??"";if(from&&to)return{op:{kind:"rename",from,to},nextIndex:index+2};return{op:null,nextIndex:index+2}}let path3=parts[index]??"";if(!path3)return{op:null,nextIndex:index+1};return{op:{kind:status2.startsWith("D")?"delete":"copy",path:path3},nextIndex:index+1}}function parseNameStatusZ(output){if(!output)return[];let parts=output.split("\x00").filter(Boolean),ops=[],i2=0;while(i2<parts.length){let status2=parts[i2++]??"";if(!status2)break;let{op,nextIndex}=parseStatusEntry(status2,parts,i2);if(i2=nextIndex,op)ops.push(op)}return ops}async function overlayDirtyWorkingTree(repoPath,worktreePath){let tracked=(await $4`git -C ${repoPath} diff --name-status --find-renames -z HEAD --`.quiet().nothrow().text()).trim(),untracked=(await $4`git -C ${repoPath} ls-files --others --exclude-standard -z`.quiet().nothrow().text()).trim(),ops=parseNameStatusZ(tracked);for(let path3 of untracked.split("\x00").filter(Boolean))ops.push({kind:"copy",path:path3});for(let op of ops){if(op.kind==="delete"){await rm3(join84(worktreePath,op.path),{recursive:!0,force:!0});continue}if(op.kind==="rename"){await rm3(join84(worktreePath,op.from),{recursive:!0,force:!0});let src2=join84(repoPath,op.to),dest2=join84(worktreePath,op.to);await mkdir11(dirname28(dest2),{recursive:!0}),await cp2(src2,dest2,{recursive:!0,force:!0});continue}let src=join84(repoPath,op.path),dest=join84(worktreePath,op.path);await mkdir11(dirname28(dest),{recursive:!0}),await cp2(src,dest,{recursive:!0,force:!0})}}async function runAllSpecs(specDir,options){let entries=await listAllSpecs(specDir);return runSpecEntries(entries,specDir,options)}async function runDomainSpecs(specDir,domain,options){let filtered=(await listAllSpecs(specDir)).filter((e)=>e.domain===domain);return runSpecEntries(filtered,specDir,options)}async function prepareTeams(entries,repoPath,ndjson){let prepared=[];console.error(`
4371
4371
  [qa] Creating ${entries.length} teams...`);for(let entry2 of entries){let teamName=`qa-${Date.now().toString(36)}-${entry2.name.slice(0,8)}`;try{let spec=await parseQaSpec(entry2.filePath),config=await createTeam(teamName,repoPath);await overlayDirtyWorkingTree(repoPath,config.worktreePath),await hireAgent(teamName,"qa");let prompt2=buildTeamLeadPrompt(spec,teamName,repoPath),promptFile=join84(tmpdir4(),`genie-qa-${teamName}.md`);await writeFile10(promptFile,prompt2),prepared.push({entry:entry2,spec,teamName,worktreePath:config.worktreePath,promptFile}),console.error(` \u2713 ${entry2.name}`),await emitQaEvent(repoPath,"team-created",{type:"qa:team-created",specKey:entry2.key,domain:entry2.domain,team:teamName},ndjson)}catch(err){console.error(` \u2717 ${entry2.name}: ${err instanceof Error?err.message:err}`)}await new Promise((r)=>setTimeout(r,200))}return prepared}async function emitSpecDone(repoPath,specKey,domain,team,report2,ndjson){await emitQaEvent(repoPath,"spec-done",{type:"qa:spec-done",specKey,domain,team,result:report2.result,durationMs:report2.durationMs,expectations:report2.expectations,error:report2.error},ndjson)}async function runSpecEntries(entries,specDir,options){let repoPath=resolve17(options?.repoPath??process.cwd()),maxConcurrency=options?.parallel??5,timeoutMs=(options?.timeout??3600)*1000,ndjson=options?.ndjson??!1,GREEN="\x1B[32m",RED="\x1B[31m",RESET2="\x1B[0m",DIM2="\x1B[90m",prepared=await prepareTeams(entries,repoPath,ndjson);if(prepared.length===0)return[];let timelineSub=await followRuntimeEvents({repoPath,teamPrefix:"qa-"},(event)=>{if(!event?.timestamp||!event?.kind)return;let team=event.team??"";if(!team.startsWith("qa-"))return;let match=prepared.find((p)=>p.teamName===team),specKey=match?.entry.key??team,specName=match?.entry.name??team,domain=match?.entry.domain??"",time=new Date(event.timestamp).toLocaleTimeString("en-US",{hour12:!1}),text=(event.text??"").slice(0,100);if(console.error(` \x1B[90m${time}\x1B[0m \x1B[90m[${event.kind}]\x1B[0m ${specName} \x1B[90m${text}\x1B[0m`),ndjson)emitNdjson({type:"qa:event",specKey,domain,team,event:{timestamp:event.timestamp,kind:event.kind,agent:event.agent??"",text:event.text??""}})},{pollIntervalMs:250});console.error(`
4372
4372
  [qa] Running ${prepared.length} specs (max ${maxConcurrency} parallel)
4373
4373
  `);let reports=[],running2=0,nextIdx=0,startTime=Date.now();await new Promise((resolveAll)=>{let tryStartNext=()=>{while(running2<maxConcurrency&&nextIdx<prepared.length){let p=prepared[nextIdx++];running2++,emitQaEvent(repoPath,"spec-started",{type:"qa:spec-started",specKey:p.entry.key,domain:p.entry.domain,team:p.teamName},ndjson),runPreparedSpec(repoPath,p.spec,p.teamName,p.worktreePath,p.promptFile,timeoutMs).then(async(report2)=>{let key=specKeyFromPath(specDir,p.entry.filePath);await saveResult(repoPath,key,report2);let icon=report2.result==="pass"?`${"\x1B[32m"}\u2713${"\x1B[0m"}`:`${"\x1B[31m"}\u2717${"\x1B[0m"}`,elapsed=((Date.now()-startTime)/1000).toFixed(0);console.error(` ${icon} ${p.entry.name} (${(report2.durationMs/1000).toFixed(0)}s) [${elapsed}s total]`),await emitSpecDone(repoPath,p.entry.key,p.entry.domain,p.teamName,report2,ndjson),reports.push(report2)}).catch((err)=>{let errorReport=makeErrorReport(p.spec,Date.now(),String(err));reports.push(errorReport),console.error(` ${"\x1B[31m"}\u2717${"\x1B[0m"} ${p.entry.name}: ${err}`),emitSpecDone(repoPath,p.entry.key,p.entry.domain,p.teamName,errorReport,ndjson)}).finally(()=>{if(running2--,reports.length===prepared.length)resolveAll();else tryStartNext()})}};tryStartNext()}),await timelineSub.stop(),console.error(`
@@ -4794,7 +4794,10 @@ Run with --dry-run to inspect, or pass --force to override.`};return{blocked:!1,
4794
4794
  Nothing to repair.`);else console.log(`
4795
4795
  Run with --apply to repair ${diag.linkableOrphanSessions} session(s) and up to ${diag.toolEventsLinkableMissingAttribution} tool_event(s).`)}function renderApplyResult(result2,json2){if(json2){console.log(JSON.stringify(result2,null,2));return}if(console.log("repair-links --apply complete"),console.log(` sessions linked: ${result2.sessionsLinked}`),console.log(` tool_events backfilled: ${result2.toolEventsBackfilled}`),result2.forced)console.log(" --force was used")}async function sessionsRepairLinksCommand(options){if(!await isAvailable())console.error("Database not available."),process.exit(1);let sql=await getConnection(),diag=await diagnoseSessionLinks(sql),sample=await sampleLinkableOrphanSessions(sql,10),ambiguous=await findAmbiguousExecutorSessions(sql);if(options.apply!==!0){renderDryRun(diag,sample,ambiguous,options.json===!0);return}let force=options.force===!0,ambiguityGate=evaluateAmbiguityGate(ambiguous.length,force);if(ambiguityGate.blocked)console.error(ambiguityGate.message),process.exit(2);let noWorkResult=buildNoWorkResultIfApplicable(diag,ambiguous.length,force);if(noWorkResult){if(options.json)console.log(JSON.stringify(noWorkResult,null,2));else console.log("repair-links: nothing to repair (0 candidates).");return}let result2;try{result2=await applyRepairTransaction(sql,diag.linkableOrphanSessions,options.force===!0)}catch(err){console.error(err.message),process.exit(2)}renderApplyResult(result2,options.json===!0)}async function sessionsSyncStatusCommand(){if(!await isAvailable())console.error("Database not available."),process.exit(1);let sql=await getConnection(),status2=await getBackfillStatus(sql);if(!status2){console.log("No backfill has been started. It runs automatically on first daemon start.");return}let pct=status2.totalFiles>0?(status2.processedFiles/status2.totalFiles*100).toFixed(1):"0.0",mbRead=(status2.processedBytes/1024/1024).toFixed(1),mbTotal=(status2.totalBytes/1024/1024).toFixed(1);console.log(`Session backfill: ${status2.processedFiles} / ${status2.totalFiles} files (${pct}%)`),console.log(`Bytes read: ${mbRead} MB / ${mbTotal} MB`),console.log(`Errors: ${status2.errors}`),console.log(`Status: ${status2.status}`)}function registerSessionsCommands(program2){let sessions2=program2.command("sessions").description("Session history \u2014 list, replay, search");sessions2.command("list",{isDefault:!0}).description("List Claude Code sessions").option("--active","Show only active sessions").option("--orphaned","Show only orphaned sessions").option("--agent <name>","Filter by agent").option("--source <name>","Filter by executor metadata source (e.g. omni)").option("--limit <n>","Max number of sessions to return (default: 50)").option("--json","Output as JSON").action(async(options)=>{await sessionsListCommand(options)}),sessions2.command("replay <session-id>").description("Replay a session \u2014 interleave content + events").option("--json","Output as JSON").action(async(sessionId,options)=>{await sessionsReplayCommand(sessionId,options)}),sessions2.command("search <query>").description("Full-text search across session content").option("--json","Output as JSON").option("--limit <n>","Max results","20").action(async(query2,options)=>{await sessionsSearchCommand(query2,options)}),sessions2.command("sync").description("Check session backfill progress").action(async()=>{await sessionsSyncStatusCommand()}),sessions2.command("repair-links").description("Diagnose and (with --apply) repair linkable orphan sessions + tool_events attribution").option("--dry-run","Preview only \u2014 never mutates rows (default)").option("--apply","Run the repair transaction").option("--force","Override the candidate-count drift gate and ambiguity gate").option("--json","Output as JSON").action(async(options)=>{await sessionsRepairLinksCommand(options)})}init_state();init_observability_health();init_agent_observability();init_agent_registry();init_agent_registry();init_derived_signals();init_derived_signals();init_executor_registry();init_should_resume();init_term_format();var ANSI2={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",cyan:"\x1B[36m",magenta:"\x1B[35m"};function colorize(text,color2){if(process.env.NO_COLOR||!process.stdout.isTTY)return text;return`${ANSI2[color2]}${text}${ANSI2.reset}`}async function aggregateAgentDecisions(includeArchived){let agents=await listAgentsForRender({includeArchived}),results=Array(agents.length),cursor=0,cap=Math.min(BOOT_PASS_CONCURRENCY_CAP,Math.max(1,agents.length)),workers=Array.from({length:cap},async()=>{while(cursor<agents.length){let i2=cursor++;if(i2>=agents.length)return;let a=agents[i2],decision=await shouldResume(a.id).catch(()=>({resume:!1,reason:"no_session_id",rehydrate:"lazy"})),name=a.customName??a.role??a.id,sessionPreview=decision.sessionId?decision.sessionId.slice(0,8):null,lastWriteAt=null;if(a.currentExecutorId){let exec3=await getExecutor(a.currentExecutorId).catch(()=>null);lastWriteAt=exec3?.updatedAt??exec3?.startedAt??null}results[i2]={agentId:a.id,name,kind:a.kind??null,decision,sessionPreview,lastWriteAt}}});return await Promise.all(workers),results}async function collectHealthChecks(){let report2=await collectObservabilityHealth();return[{name:"partition",status:report2.partition_health,message:report2.next_rotation_at?`next rotation: ${report2.next_rotation_at}`:void 0},{name:"watchdog",status:report2.watchdog,message:report2.watchdog_detail},{name:"spill journal",status:report2.spill_journal==="pending"?"warn":report2.spill_journal==="unknown"?"unknown":"ok",message:report2.spill_path},{name:"watcher metrics",status:report2.watcher_metrics,message:report2.watcher_metrics==="ok"?"all six recently seen":"one or more meta-events missing"}]}function statusIcon(status2){switch(status2){case"ok":return colorize("\u2713","green");case"warn":return colorize("!","yellow");case"fail":return colorize("\u2717","red");default:return colorize("?","dim")}}function severityBadge(sev){if(sev==="critical")return colorize("[CRITICAL]","red");if(sev==="warn")return colorize("[WARN]","yellow");return colorize("[INFO]","dim")}function formatAgentLine(line){let kindTag=line.kind==="permanent"?colorize("p","magenta"):colorize("t","cyan"),session=line.sessionPreview?colorize(line.sessionPreview,"dim"):colorize("no-session","yellow"),lastWrite=line.lastWriteAt?formatRelativeTimestamp(line.lastWriteAt):"-",reason=line.decision.reason==="ok"?colorize("resume ready","green"):colorize(line.decision.reason,"yellow");return` [${kindTag}] ${line.name.padEnd(28).slice(0,28)} ${session.padEnd(8)} last:${lastWrite.padEnd(10)} ${reason}`}function renderResumableSection(lines){let resumable=lines.filter((l)=>l.decision.resume);if(resumable.length===0){console.log(colorize(" (no in-flight agents \u2014 every prior anchor is closed or paused)","dim"));return}for(let line of resumable)console.log(formatAgentLine(line))}function renderStuckSection(lines){let stuck=lines.filter((l)=>!l.decision.resume&&l.decision.reason!=="assignment_closed"&&l.decision.reason!=="unknown_agent");if(stuck.length===0)return;console.log(""),console.log(colorize("STUCK / NEEDS ATTENTION","bold")),console.log("-".repeat(60));for(let line of stuck)if(console.log(formatAgentLine(line)),line.decision.reason==="auto_resume_disabled")console.log(colorize(` \u2192 genie agent resume ${line.name}`,"dim"));else if(line.decision.reason==="no_session_id")console.log(colorize(` \u2192 genie agent show ${line.name} # inspect; consider archive`,"dim"))}function renderArchivedSection(lines){let done=lines.filter((l)=>l.decision.reason==="assignment_closed");if(done.length===0)return;console.log(""),console.log(colorize("DONE / ARCHIVED","bold")),console.log("-".repeat(60));for(let line of done)console.log(formatAgentLine(line))}function renderSignalsSection(signals2){if(signals2.length===0){console.log(colorize(" (no active alerts)","dim"));return}for(let sig of signals2){console.log(` ${severityBadge(sig.severity)} ${colorize(sig.type,"bold")} on ${sig.subject}`);let drilldown=SIGNAL_DRILLDOWN[sig.type];if(drilldown)console.log(colorize(` \u2192 ${drilldown}`,"dim"));if(sig.triggeredAt)console.log(colorize(` ${formatRelativeTimestamp(sig.triggeredAt)}`,"dim"))}}function renderHealthSection(checks){for(let check2 of checks){let detail=check2.message?colorize(` ${check2.message}`,"dim"):"";console.log(` ${statusIcon(check2.status)} ${check2.name.padEnd(18)} ${detail}`)}}async function renderDebugSection(){let audit=await auditAgentKind();if(console.log(""),console.log(colorize("DEBUG \u2014 kind audit","bold")),console.log("-".repeat(60)),console.log(` rows scanned: ${audit.total}`),console.log(` drift count : ${audit.drifted.length}`),audit.drifted.length>0)for(let d of audit.drifted.slice(0,10))console.log(colorize(` drift: ${d.id} stored=${d.kind??"null"} expected=${d.expected}`,"yellow"))}function summarizeObservability(snaps){let flagCounts={},degraded=0;for(let snap of snaps){if(snap.health.degraded)degraded++;for(let flag of snap.health.flags)flagCounts[flag]=(flagCounts[flag]??0)+1}return{schemaVersion:AGENT_OBSERVABILITY_SCHEMA_VERSION,view:"v_agent_observability",total:snaps.length,degraded,flagCounts}}async function buildReport(opts){let includeArchived=opts.all===!0,[agents,signals2,observabilitySnaps]=await Promise.all([aggregateAgentDecisions(includeArchived),listActiveDerivedSignals(),listAgentObservability().catch(()=>[])]),partitionSignal=await detectPartitionMissing().catch(()=>null);if(partitionSignal)await recordDerivedSignal(partitionSignal).catch(()=>{}),signals2.unshift(partitionSignal);let report2={agents,signals:signals2,observability:summarizeObservability(observabilitySnaps)};if(opts.health)report2.health=await collectHealthChecks();return report2}async function statusCommand2(opts={}){let t0=Date.now(),report2=await buildReport(opts);if(opts.json){console.log(JSON.stringify(report2,null,2));return}if(console.log(""),console.log(colorize("IN-FLIGHT \u2014 should resume","bold")),console.log("-".repeat(60)),renderResumableSection(report2.agents),renderStuckSection(report2.agents),opts.all)renderArchivedSection(report2.agents);if(console.log(""),console.log(colorize("ACTIVE SIGNALS","bold")),console.log("-".repeat(60)),renderSignalsSection(report2.signals),report2.health)console.log(""),console.log(colorize("HEALTH","bold")),console.log("-".repeat(60)),renderHealthSection(report2.health);if(opts.debug)await renderDebugSection();renderObservabilitySection(report2.observability),console.log(""),console.log(colorize(` rendered in ${Date.now()-t0}ms \u2014 ${report2.agents.length} agents, ${report2.signals.length} signals \u2014 observability schema v${report2.observability.schemaVersion}`,"dim")),console.log("")}function renderObservabilitySection(summary){console.log(""),console.log(colorize(`OBSERVABILITY (v_agent_observability v${summary.schemaVersion})`,"bold")),console.log("-".repeat(60)),console.log(` ${summary.total} snapshots, ${summary.degraded} degraded`);let flags=Object.entries(summary.flagCounts).sort((a,b2)=>b2[1]-a[1]);if(flags.length===0){console.log(colorize(" (no health flags raised)","dim"));return}for(let[flag,count]of flags)console.log(` ${colorize("!","yellow")} ${flag.padEnd(22)} ${count}`)}init_genie_tokens();init_term_format();var _taskService7;async function getTaskService7(){if(!_taskService7)_taskService7=await Promise.resolve().then(() => (init_task_service(),exports_task_service));return _taskService7}function registerTagCommands(program2){let tag=program2.command("tag").description("Tag management");tag.command("list").description("List all tags").option("--type <typeId>","Filter by task type").option("--json","Output as JSON").action(async(options)=>{try{let tags=await(await getTaskService7()).listTags(options.type);if(options.json){console.log(JSON.stringify(tags,null,2));return}console.log(` ${padRight("ID",20)} ${padRight("NAME",20)} ${padRight("COLOR",10)} TYPE`),console.log(` ${"\u2500".repeat(55)}`);for(let t of tags)console.log(` ${padRight(t.id,20)} ${padRight(t.name,20)} ${padRight(t.color,10)} ${t.typeId??"-"}`);console.log(`
4796
4796
  ${tags.length} tag${tags.length===1?"":"s"}`)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}}),tag.command("create <name>").description("Create a custom tag").option("--color <hex>","Tag color (hex)",palette.textDim).option("--type <typeId>","Associate with a task type").action(async(name,options)=>{try{let ts3=await getTaskService7(),id=name.toLowerCase().replace(/\s+/g,"-"),t=await ts3.createTag({id,name,color:options.color,typeId:options.type});console.log(`Created tag "${t.name}" (${t.id}) with color ${t.color}.`)}catch(error2){console.error(`Error: ${error2 instanceof Error?error2.message:String(error2)}`),process.exit(1)}})}init_term_format();var _taskService8;async function getTaskService8(){if(!_taskService8)_taskService8=await Promise.resolve().then(() => (init_task_service(),exports_task_service));return _taskService8}var _boardService2;async function getBoardService2(){if(!_boardService2)_boardService2=await Promise.resolve().then(() => (init_board_service(),exports_board_service));return _boardService2}var _closeMergedService;async function getCloseMergedService(){if(!_closeMergedService)_closeMergedService=await Promise.resolve().then(() => (init_task_close_merged(),exports_task_close_merged));return _closeMergedService}function localActor2(name){return{actorType:"local",actorId:name}}function currentActor3(){let name=process.env.GENIE_AGENT_NAME??"cli";return localActor2(name)}function getRunId(){return process.env.GENIE_RUN_ID??`run-${Date.now()}`}var PRIORITY_COLORS={urgent:"\x1B[31m",high:"\x1B[33m",normal:"\x1B[0m",low:"\x1B[90m"},RESET2="\x1B[0m";async function resolveDefaultBoardId(){try{let{execSync:execSync17}=await import("child_process"),repoRoot=execSync17("git rev-parse --show-toplevel",{encoding:"utf-8"}).trim(),{join:join87}=await import("path"),configPath2=join87(repoRoot,".genie","config.json"),{existsSync:existsSync72,readFileSync:readFileSync47}=await import("fs");if(existsSync72(configPath2)){let config=JSON.parse(readFileSync47(configPath2,"utf-8"));if(config.activeBoard)return config.activeBoard}}catch{}return null}async function handleInvalidStageError(taskId,message){try{let task=await(await getTaskService8()).getTask(taskId);if(!task?.boardId)return;let board=await(await getBoardService2()).getBoard(task.boardId);if(!board)return;let validCols=board.columns.sort((a,b2)=>a.position-b2.position).map((c)=>c.name).join(" \u2192 ");console.error(`Error: ${message}
4797
- Valid columns for board "${board.name}": ${validCols}`),process.exit(1)}catch{}}async function resolveBoardOption(boardName){if(boardName){let board=await(await getBoardService2()).getBoard(boardName);if(!board)console.error(`Error: Board not found: ${boardName}`),process.exit(1);return board.id}return await resolveDefaultBoardId()??void 0}function getProjectName(repoPath){let parts=repoPath.split("/");return parts[parts.length-1]||repoPath}function formatTaskRow(t,showProject,hasExternal){let seq2=showProject?`${getProjectName(t.repoPath)}#${t.seq}`:`#${t.seq}`,title=truncate2(t.title,38),color2=t.status==="archived"?"\x1B[90m":PRIORITY_COLORS[t.priority]??"",due=formatDate(t.dueDate),proj=showProject?`${padRight(getProjectName(t.repoPath),16)} `:"",ext=hasExternal?`${padRight(truncate2(t.externalId??"",25),27)} `:"",statusLabel=t.status==="archived"?"\x1B[90m[archived]\x1B[0m":t.status;return` ${padRight(seq2,showProject?22:6)} ${proj}${padRight(title,40)} ${ext}${padRight(t.stage,12)} ${padRight(statusLabel,12)} ${color2}${padRight(t.priority,10)}${RESET2} ${padRight(due,12)}`}function printTaskList(tasks,showProject=!1){if(tasks.length===0){console.log("No tasks found.");return}let hasExternal=tasks.some((t)=>t.externalId),extCol=hasExternal?`${padRight("EXTERNAL",27)} `:"",projCol=showProject?`${padRight("PROJECT",16)} `:"",header=` ${padRight("#",6)} ${projCol}${padRight("TITLE",40)} ${extCol}${padRight("STAGE",12)} ${padRight("STATUS",12)} ${padRight("PRIORITY",10)} ${padRight("DUE",12)}`,lineLen=(showProject?108:92)+(hasExternal?28:0);console.log(header),console.log(` ${"\u2500".repeat(lineLen)}`);for(let t of tasks)console.log(formatTaskRow(t,showProject,hasExternal));console.log(`
4797
+ Valid columns for board "${board.name}": ${validCols}`),process.exit(1)}catch{}}async function resolveBoardOption(boardName){if(boardName){let board2=await(await getBoardService2()).getBoard(boardName);if(!board2)console.error(`Error: Board not found: ${boardName}`),process.exit(1);return board2.id}let defaultId=await resolveDefaultBoardId();if(!defaultId)return;let board=await(await getBoardService2()).getBoard(defaultId);if(!board)console.error(`Error: configured activeBoard "${defaultId}" no longer exists.
4798
+ Run \`genie board list\` to see available boards, then either:
4799
+ - update .genie/config.json's "activeBoard" key, or
4800
+ - pass --board <name> explicitly`),process.exit(1);return board.id}function getProjectName(repoPath){let parts=repoPath.split("/");return parts[parts.length-1]||repoPath}function formatTaskRow(t,showProject,hasExternal){let seq2=showProject?`${getProjectName(t.repoPath)}#${t.seq}`:`#${t.seq}`,title=truncate2(t.title,38),color2=t.status==="archived"?"\x1B[90m":PRIORITY_COLORS[t.priority]??"",due=formatDate(t.dueDate),proj=showProject?`${padRight(getProjectName(t.repoPath),16)} `:"",ext=hasExternal?`${padRight(truncate2(t.externalId??"",25),27)} `:"",statusLabel=t.status==="archived"?"\x1B[90m[archived]\x1B[0m":t.status;return` ${padRight(seq2,showProject?22:6)} ${proj}${padRight(title,40)} ${ext}${padRight(t.stage,12)} ${padRight(statusLabel,12)} ${color2}${padRight(t.priority,10)}${RESET2} ${padRight(due,12)}`}function printTaskList(tasks,showProject=!1){if(tasks.length===0){console.log("No tasks found.");return}let hasExternal=tasks.some((t)=>t.externalId),extCol=hasExternal?`${padRight("EXTERNAL",27)} `:"",projCol=showProject?`${padRight("PROJECT",16)} `:"",header=` ${padRight("#",6)} ${projCol}${padRight("TITLE",40)} ${extCol}${padRight("STAGE",12)} ${padRight("STATUS",12)} ${padRight("PRIORITY",10)} ${padRight("DUE",12)}`,lineLen=(showProject?108:92)+(hasExternal?28:0);console.log(header),console.log(` ${"\u2500".repeat(lineLen)}`);for(let t of tasks)console.log(formatTaskRow(t,showProject,hasExternal));console.log(`
4798
4801
  ${tasks.length} task${tasks.length===1?"":"s"}`)}function printTaskFields(task){console.log(""),console.log(`Task #${task.seq}: ${task.title}`),console.log("\u2500".repeat(60)),console.log(` ID: ${task.id}`),console.log(` Type: ${task.typeId}`),console.log(` Stage: ${task.stage}`),console.log(` Status: ${task.status}`),console.log(` Priority: ${task.priority}`);let optionalFields=[["Description",task.description],["Criteria",task.acceptanceCriteria],["Effort",task.estimatedEffort],["Start",task.startDate?formatDate(task.startDate):null],["Due",task.dueDate?formatDate(task.dueDate):null],["Blocked",task.blockedReason],["Parent",task.parentId],["Release",task.releaseId],["Wish",task.wishFile],["External",task.externalId],["Ext URL",task.externalUrl]];for(let[label,value]of optionalFields)if(value)console.log(` ${padRight(`${label}:`,12)} ${value}`);if(task.checkoutRunId)console.log(` Checkout: ${task.checkoutRunId} (since ${formatTimestamp(task.executionLockedAt)})`);if(console.log(` Created: ${formatTimestamp(task.createdAt)}`),task.startedAt)console.log(` Started: ${formatTimestamp(task.startedAt)}`);if(task.endedAt)console.log(` Ended: ${formatTimestamp(task.endedAt)}`)}async function printTaskRelations(task){let ts3=await getTaskService8(),actors=await ts3.getTaskActors(task.id,task.repoPath);if(actors.length>0){console.log(`
4799
4802
  Actors:`);for(let a of actors)console.log(` ${a.role}: ${a.actorId} (${a.actorType})`)}let tags=await ts3.getTaskTags(task.id,task.repoPath);if(tags.length>0)console.log(`
4800
4803
  Tags: ${tags.map((t)=>t.name).join(", ")}`);let blockers=await ts3.getBlockers(task.id,task.repoPath);if(blockers.length>0){console.log(`