bkper 5.7.0 → 5.7.1

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.
@@ -2278,7 +2278,7 @@ Options:
2278
2278
  `))});try{switch(options.command){case"install":return await packageManager.installAndPersist(source,{local:options.local}),console.log(source_default.green(`Installed ${source}`)),!0;case"remove":return await packageManager.removeAndPersist(source,{local:options.local})?(console.log(source_default.green(`Removed ${source}`)),!0):(console.error(source_default.red(`No matching package found for ${source}`)),process.exitCode=1,!0);case"list":{let configuredPackages=packageManager.listConfiguredPackages(),userPackages=configuredPackages.filter(pkg2=>pkg2.scope==="user"),projectPackages=configuredPackages.filter(pkg2=>pkg2.scope==="project");if(configuredPackages.length===0)return console.log(source_default.dim("No packages installed.")),!0;let formatPackage=pkg2=>{let display=pkg2.filtered?`${pkg2.source} (filtered)`:pkg2.source;console.log(` ${display}`),pkg2.installedPath&&console.log(source_default.dim(` ${pkg2.installedPath}`))};if(userPackages.length>0){console.log(source_default.bold("User packages:"));for(let pkg2 of userPackages)formatPackage(pkg2)}if(projectPackages.length>0){userPackages.length>0&&console.log(),console.log(source_default.bold("Project packages:"));for(let pkg2 of projectPackages)formatPackage(pkg2)}return!0}case"update":{let target=options.updateTarget??{type:"self"};if(options.showExtensionsSkippedNote&&console.log(source_default.dim(`Extensions are skipped. Run ${APP_NAME} update --extensions to update extensions.`)),updateTargetIncludesExtensions(target)){let updateSource=target.type==="extensions"?target.source:void 0;await packageManager.update(updateSource),console.log(updateSource?source_default.green(`Updated ${updateSource}`):source_default.green("Updated packages"))}if(updateTargetIncludesSelf(target)){let managedInstallRoot=getActiveManagedInstallRoot();if(managedInstallRoot&&options.force)return console.error(source_default.red(`Managed ${APP_NAME} installations do not support --force; rerun the installer to repair this installation.`)),process.exitCode=1,!0;let selfUpdatePlan=await getSelfUpdatePlan(options.force);if(!selfUpdatePlan.shouldRun)return!0;if(managedInstallRoot){selfUpdatePlan.note&&printSelfUpdateNote(selfUpdatePlan.note);try{console.log(source_default.dim(`Updating managed ${APP_NAME} installation...`)),await runManagedSelfUpdate(managedInstallRoot,selfUpdatePlan.version)}catch(error){let message=error instanceof Error?error.message:"Unknown managed update error";return console.error(source_default.red(`Error: ${message}`)),process.exitCode=1,!0}return console.log(source_default.green(`Updated ${APP_NAME} from ${VERSION} to ${selfUpdatePlan.version}`)),!0}let installMethod=detectInstallMethod();if(process.platform==="win32"&&installMethod!=="npm"&&installMethod!=="pnpm")return console.error(source_default.red(`${APP_NAME} self-update on Windows is only supported for npm and pnpm installs.`)),console.error(source_default.dim(`Detected install method: ${installMethod}. Update ${APP_NAME} manually.`)),process.exitCode=1,!0;let selfUpdateTarget={packageName:selfUpdatePlan.packageName,installSpec:selfUpdatePlan.installSpec},selfUpdateCommand=getSelfUpdateCommand(PACKAGE_NAME,selfUpdateNpmCommand,selfUpdateTarget);if(!selfUpdateCommand)return printSelfUpdateUnavailable(selfUpdateNpmCommand,selfUpdateTarget),process.exitCode=1,!0;selfUpdatePlan.note&&printSelfUpdateNote(selfUpdatePlan.note);try{installMethod==="npm"&&prepareWindowsNpmSelfUpdate(),await runSelfUpdate(selfUpdateCommand)}catch(error){let message=error instanceof Error?error.message:"Unknown package command error";return console.error(source_default.red(`Error: ${message}`)),installMethod==="pnpm"&&printPnpmSelfUpdateMetadataHint(),printSelfUpdateFallback(selfUpdateCommand),process.exitCode=1,!0}if(console.log(source_default.green(`Updated ${APP_NAME} from ${VERSION} to ${selfUpdatePlan.version}`)),installMethod==="npm"){let installerCommand=process.platform==="win32"?'powershell -c "irm https://pi.dev/install.ps1 | iex"':"curl -fsSL https://pi.dev/install.sh | sh";console.log(),console.log(source_default.yellow(`This npm installation of ${APP_NAME} does not pin its dependencies.`)),console.log(source_default.yellow("Run the installer to migrate to a managed installation that does:")),console.log(),console.log(` ${source_default.bold(installerCommand)}`)}}return!0}}}catch(error){let message=error instanceof Error?error.message:"Unknown package command error";return console.error(source_default.red(`Error: ${message}`)),process.exitCode=1,!0}}var import_proper_lockfile5,DEFAULT_INSTALLER_API_BASE,MANAGED_INSTALL_MARKER,MANAGED_RELEASE_VERSION_RE,SELF_UPDATE_NOTE_MARKDOWN_THEME,CONFIG_COMMAND_USAGE,init_package_manager_cli=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js"(){init_dist6();init_source();import_proper_lockfile5=__toESM(require_proper_lockfile(),1);init_config_selector2();init_project_trust();init_config();init_model_runtime();init_package_manager();init_project_trust2();init_resource_loader();init_settings_manager();init_trust_manager();init_child_process();init_paths();init_pi_user_agent();init_text();init_version_check();init_windows_self_update();DEFAULT_INSTALLER_API_BASE="https://pi.dev/api/installer/releases",MANAGED_INSTALL_MARKER="managed-install.json",MANAGED_RELEASE_VERSION_RE=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;SELF_UPDATE_NOTE_MARKDOWN_THEME={heading:text=>source_default.bold(source_default.yellow(text)),link:text=>source_default.cyan(text),linkUrl:text=>source_default.dim(text),code:text=>source_default.yellow(text),codeBlock:text=>source_default.dim(text),codeBlockBorder:text=>source_default.dim(text),quote:text=>source_default.dim(text),quoteBorder:text=>source_default.dim(text),hr:text=>source_default.dim(text),listBullet:text=>source_default.yellow(text),bold:text=>source_default.bold(text),italic:text=>source_default.italic(text),strikethrough:text=>source_default.strikethrough(text),underline:text=>source_default.underline(text)};CONFIG_COMMAND_USAGE=`${APP_NAME} config [-l] [--approve|--no-approve]`}});import{createInterface as createInterface6}from"node:readline";async function readPipedStdin(){if(!process.stdin.isTTY)return new Promise(resolve19=>{let data="";process.stdin.setEncoding("utf8"),process.stdin.on("data",chunk=>{data+=chunk}),process.stdin.on("end",()=>{resolve19(data.trim()||void 0)}),process.stdin.resume()})}function reportDiagnostics(diagnostics){for(let diagnostic of diagnostics){let color=diagnostic.type==="error"?source_default.red:diagnostic.type==="warning"?source_default.yellow:source_default.dim,prefix=diagnostic.type==="error"?"Error: ":diagnostic.type==="warning"?"Warning: ":"";console.error(color(`${prefix}${diagnostic.message}`))}}function isTruthyEnvFlag2(value){return value?value==="1"||value.toLowerCase()==="true"||value.toLowerCase()==="yes":!1}function resolveAppMode(parsed,stdinIsTTY,stdoutIsTTY){return parsed.mode==="rpc"?"rpc":parsed.mode==="json"?"json":parsed.print||!stdinIsTTY||!stdoutIsTTY?"print":"interactive"}function toPrintOutputMode(appMode){return appMode==="json"?"json":"text"}function isPlainRuntimeMetadataCommand(parsed){return!parsed.print&&parsed.mode===void 0&&(parsed.help===!0||parsed.listModels!==void 0)}async function runAuthCommand(args){if(isAuthCommandHelp(args))return printAuthCommandHelp(),!0;let command;try{command=parseAuthCommand(args)}catch(error){let message=error instanceof AuthCommandError?error.message:"Failed to parse auth command";return console.error(source_default.red(`Error: ${message}`)),process.exitCode=1,!0}if(!command)return!1;let parsed=parseArgs(command.args);if(parsed.unknownFlags.size>0){let option=parsed.unknownFlags.keys().next().value;return console.error(source_default.red(`Unknown option --${option} for "${getAuthCommandName(command.kind)}".`)),console.error(source_default.dim(`Use "${APP_NAME} --help" or "${getAuthCommandUsage(command.kind)}".`)),process.exitCode=1,!0}try{if(parsed.diagnostics.length>0)throw new AuthCommandError(parsed.diagnostics.map(diagnostic=>diagnostic.message).join(`
2279
2279
  `));if(command.kind!=="check"){let signal=AbortSignal.timeout(15e3),modelRuntime=await ModelRuntime.create({allowModelNetwork:!1,signal}),credential2=await resolveCredentialForPrint(parsed,modelRuntime,command.kind,command.minExpiryMs,signal);return process.stdout.write(`${credential2}
2280
2280
  `),!0}let requestedAuth=validateAuthCommandArgs(parsed,command.kind),result,credential;try{let credentials=command.noRefresh?new ReadOnlyAuthStorage:AuthStorage.create(),modelRuntime=await createAuthCheckModelRuntime(credentials);result=await checkProviderAuth(parsed,modelRuntime,{refresh:!command.noRefresh}),command.credentials&&result.status==="ready"&&(credential=await getProviderCredential(result.provider,modelRuntime,credentials,{refresh:!command.noRefresh}),credential||(result={status:"not_ready",provider:result.provider,reason:"credential_not_available"}))}catch{result={status:"invalid",provider:requestedAuth.provider??requestedAuth.model,reason:"invalid_state"}}let output=command.json?JSON.stringify({...result,...credential?{credentials:credential}:{}}):credential??result.status;process.stdout.write(`${output}
2281
- `),process.exitCode=result.status==="ready"?0:result.status==="not_ready"?1:2}catch(error){let message=error instanceof AuthCommandError?error.message:"Failed to resolve credential";console.error(source_default.red(`Error: ${message}`)),process.exitCode=command.kind==="check"?2:1}return!0}async function prepareInitialMessage(parsed,stdinContent){if(parsed.fileArgs.length===0)return buildInitialMessage({parsed,stdinContent});let{text,images}=await processFileArguments(parsed.fileArgs,{autoResizeImages:!1});return buildInitialMessage({parsed,fileText:text,fileImages:images,stdinContent})}function findLocalSessionByExactId(sessionId,cwd,sessionDir){let path27=SessionManager.findById(cwd,sessionId,sessionDir);return path27?{type:"local",path:path27}:void 0}async function resolveSessionPath(sessionArg,cwd,sessionDir){if(sessionArg.includes("/")||sessionArg.includes("\\")||sessionArg.endsWith(".jsonl"))return{type:"path",path:resolvePath(sessionArg,cwd)};let exactLocalMatch=findLocalSessionByExactId(sessionArg,cwd,sessionDir);if(exactLocalMatch)return exactLocalMatch;let localMatch=(await SessionManager.list(cwd,sessionDir)).find(s2=>s2.id.startsWith(sessionArg));if(localMatch)return{type:"local",path:localMatch.path};let allSessions=await SessionManager.listAll(sessionDir),globalMatch=allSessions.find(s2=>s2.id===sessionArg)??allSessions.find(s2=>s2.id.startsWith(sessionArg));return globalMatch?{type:"global",path:globalMatch.path,cwd:globalMatch.cwd}:{type:"not_found",arg:sessionArg}}async function promptConfirm(message){return new Promise(resolve19=>{let rl=createInterface6({input:process.stdin,output:process.stdout});rl.question(`${message} [y/N] `,answer=>{rl.close(),resolve19(answer.toLowerCase()==="y"||answer.toLowerCase()==="yes")})})}function validateForkFlags(parsed){if(!parsed.fork)return;let conflictingFlags=[parsed.session?"--session":void 0,parsed.continue?"--continue":void 0,parsed.resume?"--resume":void 0,parsed.noSession?"--no-session":void 0].filter(flag=>flag!==void 0);conflictingFlags.length>0&&(console.error(source_default.red(`Error: --fork cannot be combined with ${conflictingFlags.join(", ")}`)),process.exit(1))}function validateSessionIdFlags(parsed){if(parsed.sessionId===void 0)return;let conflictingFlags=[parsed.session?"--session":void 0,parsed.continue?"--continue":void 0,parsed.resume?"--resume":void 0].filter(flag=>flag!==void 0);conflictingFlags.length>0&&(console.error(source_default.red(`Error: --session-id cannot be combined with ${conflictingFlags.join(", ")}`)),process.exit(1));try{assertValidSessionId(parsed.sessionId)}catch(error){let message=error instanceof Error?error.message:String(error);console.error(source_default.red(`Error: ${message}`)),process.exit(1)}}function openSessionOrExit(path27,sessionDir){try{return SessionManager.open(path27,sessionDir)}catch(error){let message=error instanceof Error?error.message:String(error);console.error(source_default.red(`Error: ${message}`)),process.exit(1)}}function forkSessionOrExit(sourcePath,cwd,sessionDir,sessionId){try{return SessionManager.forkFrom(sourcePath,cwd,sessionDir,{id:sessionId})}catch(error){let message=error instanceof Error?error.message:String(error);console.error(source_default.red(`Error: ${message}`)),process.exit(1)}}async function createSessionManager(parsed,cwd,sessionDir,settingsManager){if(parsed.noSession||parsed.help||parsed.listModels!==void 0)return SessionManager.inMemory(cwd,parsed.sessionId!==void 0?{id:parsed.sessionId}:void 0);if(parsed.fork){parsed.sessionId&&findLocalSessionByExactId(parsed.sessionId,cwd,sessionDir)&&(console.error(source_default.red(`Session already exists with id '${parsed.sessionId}'`)),process.exit(1));let resolved=await resolveSessionPath(parsed.fork,cwd,sessionDir);switch(resolved.type){case"path":case"local":case"global":return forkSessionOrExit(resolved.path,cwd,sessionDir,parsed.sessionId);case"not_found":console.error(source_default.red(`No session found matching '${resolved.arg}'`)),process.exit(1)}}if(parsed.session){let resolved=await resolveSessionPath(parsed.session,cwd,sessionDir);switch(resolved.type){case"path":case"local":return openSessionOrExit(resolved.path,sessionDir);case"global":return console.log(source_default.yellow(`Session found in different project: ${resolved.cwd}`)),await promptConfirm("Fork this session into current directory?")||(console.log(source_default.dim("Aborted.")),process.exit(0)),forkSessionOrExit(resolved.path,cwd,sessionDir);case"not_found":console.error(source_default.red(`No session found matching '${resolved.arg}'`)),process.exit(1)}}if(parsed.resume)try{let selectedPath=await selectSession((onProgress,signal)=>SessionManager.list(cwd,sessionDir,onProgress,signal),(onProgress,signal)=>SessionManager.listAll(sessionDir,onProgress,signal),settingsManager);return selectedPath||(console.log(source_default.dim("No session selected")),process.exit(0)),SessionManager.open(selectedPath,sessionDir)}finally{stopThemeWatcher()}if(parsed.continue)return SessionManager.continueRecent(cwd,sessionDir);if(parsed.sessionId){let existingSession=findLocalSessionByExactId(parsed.sessionId,cwd,sessionDir);if(existingSession)return SessionManager.open(existingSession.path,sessionDir);console.error(source_default.yellow(`Warning: No project session found with id '${parsed.sessionId}'; creating a new session with that id.`))}return SessionManager.create(cwd,sessionDir,{id:parsed.sessionId})}function buildSessionOptions(parsed,scopedModels,hasExistingSession,modelRuntime,settingsManager){let options={},diagnostics=[],cliThinkingFromModel=!1;if(parsed.provider&&!parsed.model&&diagnostics.push({type:"error",message:`--provider requires --model (for example: --provider ${parsed.provider} --model <pattern>)`}),parsed.model){let resolved=resolveCliModel({cliProvider:parsed.provider,cliModel:parsed.model,cliThinking:parsed.thinking,inlineApiKey:!!parsed.apiKey,modelRuntime});resolved.warning&&diagnostics.push({type:"warning",message:resolved.warning}),resolved.error&&diagnostics.push({type:"error",message:resolved.error}),resolved.model&&(options.model=resolved.model,!parsed.thinking&&resolved.thinkingLevel&&(options.thinkingLevel=resolved.thinkingLevel,cliThinkingFromModel=!0))}if(!options.model&&scopedModels.length>0&&!hasExistingSession){let savedProvider=settingsManager.getDefaultProvider(),savedModelId=settingsManager.getDefaultModel(),savedModel=savedProvider&&savedModelId?modelRuntime.getModel(savedProvider,savedModelId):void 0,savedInScope=savedModel?scopedModels.find(sm=>modelsAreEqual(sm.model,savedModel)):void 0;savedInScope?(options.model=savedInScope.model,!parsed.thinking&&savedInScope.thinkingLevel&&(options.thinkingLevel=savedInScope.thinkingLevel)):(options.model=scopedModels[0].model,!parsed.thinking&&scopedModels[0].thinkingLevel&&(options.thinkingLevel=scopedModels[0].thinkingLevel))}return parsed.thinking&&(options.thinkingLevel=parsed.thinking),scopedModels.length>0&&(options.scopedModels=scopedModels.map(sm=>({model:sm.model,thinkingLevel:sm.thinkingLevel}))),parsed.noTools?options.noTools="all":parsed.noBuiltinTools&&(options.noTools="builtin"),parsed.tools&&(options.tools=[...parsed.tools]),parsed.excludeTools&&(options.excludeTools=[...parsed.excludeTools]),{options,cliThinkingFromModel,diagnostics}}function resolveCliPaths(cwd,paths){return paths?.map(value=>isLocalPath(value)?resolvePath(value,cwd):value)}async function promptForMissingSessionCwd(issue,settingsManager){return showStartupSelector(settingsManager,formatMissingSessionCwdPrompt(issue),[{label:"Continue",value:issue.fallbackCwd},{label:"Cancel",value:void 0}])}async function main(args,options){resetTimings(),setThemeJsonValidator(validateThemeJson);let extensionFactories=[...builtInExtensions,...options?.extensionFactories??[]],offlineMode=args.includes("--offline")||isTruthyEnvFlag2(process.env.PI_OFFLINE);if(offlineMode&&(process.env.PI_OFFLINE="1",process.env.PI_SKIP_VERSION_CHECK="1"),await runAuthCommand(args))return;process.platform==="win32"&&cleanupWindowsSelfUpdateQuarantine(getPackageDir()),cleanupManagedInstall();let cwd=process.cwd(),agentDir=getAgentDir(),bootstrapSettingsManager=SettingsManager.create(cwd,agentDir,{projectTrusted:!1});if(applyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy),configureHttpDispatcher(),await handlePackageCommand(args,{extensionFactories})){let exitCode=process.exitCode??0;if(process.platform==="win32"&&exitCode===0&&args[0]==="update")return;process.exit(exitCode);return}if(await handleConfigCommand(args,{extensionFactories}))return;if(args[0]==="mcp"){let{runMcpCommand:runMcpCommand2}=await loadMcpCommand();process.exitCode=await runMcpCommand2(args.slice(1),{cwd,agentDir});return}let parsed=parseArgs(args);if(parsed.diagnostics.length>0){for(let d of parsed.diagnostics){let color=d.type==="error"?source_default.red:source_default.yellow;console.error(color(`${d.type==="error"?"Error":"Warning"}: ${d.message}`))}parsed.diagnostics.some(d=>d.type==="error")&&process.exit(1)}if(time("parseArgs"),parsed.version&&(console.log(VERSION),process.exit(0)),parsed.export){let result;try{let outputPath=parsed.messages.length>0?parsed.messages[0]:void 0;result=await exportFromFile(parsed.export,outputPath)}catch(error){let message=error instanceof Error?error.message:"Failed to export session";console.error(source_default.red(`Error: ${message}`)),process.exit(1)}console.log(`Exported to: ${result}`),process.exit(0)}let appMode=resolveAppMode(parsed,process.stdin.isTTY,process.stdout.isTTY);appMode!=="interactive"&&!isPlainRuntimeMetadataCommand(parsed)&&takeOverStdout(),parsed.mode==="rpc"&&parsed.fileArgs.length>0&&(console.error(source_default.red("Error: @file arguments are not supported in RPC mode")),process.exit(1)),validateForkFlags(parsed),validateSessionIdFlags(parsed);let{migratedAuthProviders:migratedProviders,deprecationWarnings}=runMigrations(cwd);time("runMigrations");let startupSettingsManager=SettingsManager.create(cwd,agentDir),startupSettingsDiagnostics=collectSettingsDiagnostics(startupSettingsManager);appMode==="interactive"&&!parsed.help&&parsed.listModels===void 0&&shouldRunFirstTimeSetup()&&(await showFirstTimeSetup(startupSettingsManager),time("firstTimeSetup")),appMode==="interactive"&&parsed.useTheme!==void 0&&startupSettingsManager.applyOverrides({theme:parsed.useTheme});let envSessionDir=process.env[ENV_SESSION_DIR],sessionDir=(parsed.sessionDir?normalizePath(parsed.sessionDir):void 0)??(envSessionDir?expandTildePath(envSessionDir):void 0)??startupSettingsManager.getSessionDir(),sessionManager=await createSessionManager(parsed,cwd,sessionDir,startupSettingsManager),missingSessionCwdIssue=getMissingSessionCwdIssue(sessionManager,cwd);if(missingSessionCwdIssue)if(appMode==="interactive"){let selectedCwd=await promptForMissingSessionCwd(missingSessionCwdIssue,startupSettingsManager);selectedCwd||process.exit(0),sessionManager=SessionManager.open(missingSessionCwdIssue.sessionFile,sessionDir,selectedCwd)}else console.error(source_default.red(new MissingSessionCwdError(missingSessionCwdIssue).message)),process.exit(1);if(parsed.name!==void 0){let name=normalizeSessionName(parsed.name);name===void 0&&(console.error(source_default.red("Error: --name requires a non-empty value")),process.exit(1)),sessionManager.appendSessionInfo(name)}time("createSessionManager");let trustStore=new ProjectTrustStore(agentDir),sessionCwd=sessionManager.getCwd(),autoTrustOnReloadCwd=parsed.projectTrustOverride===void 0&&!hasTrustRequiringProjectResources(sessionCwd)?sessionCwd:void 0,trustPromptMode=parsed.help||parsed.listModels!==void 0?"print":appMode,projectTrustByCwd=new Map,resolvedExtensionPaths=resolveCliPaths(cwd,parsed.extensions),resolvedSkillPaths=resolveCliPaths(cwd,parsed.skills),resolvedPromptTemplatePaths=resolveCliPaths(cwd,parsed.promptTemplates),resolvedThemePaths=resolveCliPaths(cwd,parsed.themes),createRuntime=async({cwd:cwd2,agentDir:agentDir2,sessionManager:sessionManager2,sessionStartEvent,projectTrustContext})=>{let isInitialRuntime=sessionStartEvent===void 0,projectTrustDiagnostics=[],cachedProjectTrust=projectTrustByCwd.get(cwd2),hasTrustRequiringResources=hasTrustRequiringProjectResources(cwd2),shouldResolveProjectTrust=parsed.projectTrustOverride===void 0&&cachedProjectTrust===void 0&&hasTrustRequiringResources,projectTrusted=shouldResolveProjectTrust?!1:cachedProjectTrust??parsed.projectTrustOverride??(!hasTrustRequiringResources||trustStore.get(cwd2)===!0),runtimeSettingsManager=SettingsManager.create(cwd2,agentDir2,{projectTrusted}),services2=await createAgentSessionServices({cwd:cwd2,agentDir:agentDir2,settingsManager:runtimeSettingsManager,modelRuntimeSignal:AbortSignal.timeout(15e3),extensionFlagValues:parsed.unknownFlags,resourceLoaderReloadOptions:shouldResolveProjectTrust?{resolveProjectTrust:async({extensionsResult})=>{let trusted=await resolveProjectTrusted({cwd:cwd2,trustStore,trustOverride:parsed.projectTrustOverride,defaultProjectTrust:startupSettingsManager.getDefaultProjectTrust(),extensionsResult,projectTrustContext:projectTrustContext??createProjectTrustContext({cwd:cwd2,mode:isInitialRuntime?trustPromptMode:appMode,settingsManager:startupSettingsManager,hasUI:isInitialRuntime&&trustPromptMode==="interactive"}),onExtensionError:message=>projectTrustDiagnostics.push({type:"warning",message})});return projectTrustByCwd.set(cwd2,trusted),trusted}}:void 0,resourceLoaderOptions:{additionalExtensionPaths:resolvedExtensionPaths,additionalSkillPaths:resolvedSkillPaths,additionalPromptTemplatePaths:resolvedPromptTemplatePaths,additionalThemePaths:resolvedThemePaths,noExtensions:parsed.noExtensions,disabledBuiltinExtensions:parsed.noMcp?["mcp"]:void 0,noSkills:parsed.noSkills,noPromptTemplates:parsed.noPromptTemplates,noThemes:parsed.noThemes,noContextFiles:parsed.noContextFiles,systemPrompt:parsed.systemPrompt,appendSystemPrompt:parsed.appendSystemPrompt,extensionFactories}}),{settingsManager:settingsManager2,modelRuntime:modelRuntime2,resourceLoader:resourceLoader2}=services2,diagnostics=[...projectTrustDiagnostics,...services2.diagnostics,...collectSettingsDiagnostics(settingsManager2),...resourceLoader2.getExtensions().errors.map(({path:path27,error})=>({type:"error",message:`Failed to load extension "${path27}": ${error}`})),...(resourceLoader2.getExtensions().warnings??[]).map(({path:path27,warning})=>({type:"warning",message:`Extension package "${path27}": ${warning}`}))],modelPatterns=parsed.models??settingsManager2.getEnabledModels(),scopedModels=modelPatterns&&modelPatterns.length>0?await resolveModelScope(modelPatterns,modelRuntime2,{signal:AbortSignal.timeout(15e3)}):[],{options:sessionOptions,cliThinkingFromModel,diagnostics:sessionOptionDiagnostics}=buildSessionOptions(parsed,scopedModels,sessionManager2.buildSessionContext().messages.length>0,modelRuntime2,settingsManager2);diagnostics.push(...sessionOptionDiagnostics),parsed.apiKey&&(sessionOptions.model?await modelRuntime2.setRuntimeApiKey(sessionOptions.model.provider,parsed.apiKey):diagnostics.push({type:"error",message:"--api-key requires a model to be specified via --model, --provider/--model, or --models"}));let created=await createAgentSessionFromServices({services:services2,sessionManager:sessionManager2,sessionStartEvent,model:sessionOptions.model,thinkingLevel:sessionOptions.thinkingLevel,scopedModels:sessionOptions.scopedModels,tools:sessionOptions.tools,excludeTools:sessionOptions.excludeTools,noTools:sessionOptions.noTools,customTools:sessionOptions.customTools}),cliThinkingOverride=parsed.thinking!==void 0||cliThinkingFromModel;return created.session.model&&cliThinkingOverride&&created.session.setThinkingLevel(created.session.thinkingLevel),{...created,services:services2,diagnostics}};time("createRuntime");let runtime=await createAgentSessionRuntime(createRuntime,{cwd:sessionManager.getCwd(),agentDir,sessionManager});time("createAgentSessionRuntime");let{services,session,modelFallbackMessage}=runtime,{settingsManager,modelRuntime,resourceLoader}=services;if(setCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides()),applyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy),configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs()),parsed.help){reportDiagnostics(startupSettingsDiagnostics);let extensionFlags=resourceLoader.getExtensions().extensions.flatMap(extension2=>Array.from(extension2.flags.values()));printHelp(extensionFlags),process.exit(0)}if(parsed.listModels!==void 0){reportDiagnostics(startupSettingsDiagnostics);let searchPattern=typeof parsed.listModels=="string"?parsed.listModels:void 0;await listModels(modelRuntime,searchPattern,AbortSignal.timeout(15e3)),process.exit(0)}let stdinContent;appMode!=="rpc"&&(stdinContent=await readPipedStdin(),stdinContent!==void 0&&appMode==="interactive"&&(appMode="print")),time("readPipedStdin");let{initialMessage,initialImages}=await prepareInitialMessage(parsed,stdinContent);time("prepareInitialMessage"),initTheme(settingsManager.getTheme(),appMode==="interactive"),time("initTheme"),appMode==="interactive"&&deprecationWarnings.length>0&&await showDeprecationWarnings(deprecationWarnings),time("resolveModelScope");let startupDiagnostics=deduplicateDiagnostics([...startupSettingsDiagnostics,...runtime.diagnostics]),hasRuntimeErrors=runtime.diagnostics.some(diagnostic=>diagnostic.type==="error");(appMode!=="interactive"||hasRuntimeErrors)&&reportDiagnostics(startupDiagnostics),hasRuntimeErrors&&(runtime.diagnostics.some(diagnostic=>diagnostic.message.includes("Failed to load extension"))&&console.error(source_default.yellow(EXTENSION_LOAD_FAILURE_HINT)),process.exit(1)),time("createAgentSession"),appMode!=="interactive"&&!session.model&&(console.error(source_default.red(formatNoModelsAvailableMessage())),process.exit(1));let startupBenchmark=isTruthyEnvFlag2(process.env.PI_STARTUP_BENCHMARK);if(startupBenchmark&&appMode!=="interactive"&&(console.error(source_default.red("Error: PI_STARTUP_BENCHMARK only supports interactive mode")),process.exit(1)),!offlineMode&&appMode==="rpc"){let controller=new AbortController,timeout=setTimeout(()=>controller.abort(),15e3);modelRuntime.refresh({signal:controller.signal}).catch(()=>{}).finally(()=>clearTimeout(timeout))}if(appMode==="rpc")printTimings(),await runRpcMode(runtime);else if(appMode==="interactive"){let interactiveMode=new InteractiveMode(runtime,{migratedProviders,startupDiagnostics,modelFallbackMessage,autoTrustOnReloadCwd,initialMessage,initialImages,initialMessages:parsed.messages,verbose:parsed.verbose,tuiMode:parsed.tuiMode,initialThemeSetting:parsed.useTheme});if(startupBenchmark){await interactiveMode.init(),time("interactiveMode.init"),await new Promise(resolve19=>setTimeout(resolve19,150)),interactiveMode.stop(),stopThemeWatcher(),printTimings(),process.stdout.writableLength>0&&await new Promise(resolve19=>process.stdout.once("drain",resolve19)),process.stderr.writableLength>0&&await new Promise(resolve19=>process.stderr.once("drain",resolve19));return}printTimings(),await interactiveMode.run()}else{printTimings();let exitCode=await runPrintMode(runtime,{mode:toPrintOutputMode(appMode),messages:parsed.messages,initialMessage,initialImages});stopThemeWatcher(),restoreStdout(),exitCode!==0&&(process.exitCode=exitCode);return}}var EXTENSION_LOAD_FAILURE_HINT,init_main=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/main.js"(){init_dist2();init_dist6();init_source();init_args();init_auth_check();init_auth_command();init_credential_print();init_file_processor();init_initial_message();init_list_models();init_project_trust();init_session_picker();init_startup_ui();init_config();init_agent_session_runtime();init_agent_session_services();init_auth_guidance();init_auth_storage();init_export_html();init_http_dispatcher();init_model_resolver();init_model_runtime();init_output_guard();init_project_trust2();init_session_cwd();init_session_manager();init_settings_diagnostics();init_settings_manager();init_timings();init_trust_manager();init_extensions3();init_cli_lazy();init_migrations();init_modes();init_theme();init_theme_schema();init_package_manager_cli();init_paths();init_windows_self_update();EXTENSION_LOAD_FAILURE_HINT=`Hint: Start without extensions using "${APP_NAME} -ne".`}});var SHOW_IMAGES_SELECT_LIST_LAYOUT,ShowImagesSelectorComponent,init_show_images_selector=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/show-images-selector.js"(){init_dist6();init_theme();init_dynamic_border();SHOW_IMAGES_SELECT_LIST_LAYOUT={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ShowImagesSelectorComponent=class extends Container{selectList;constructor(currentValue,onSelect,onCancel){super();let items=[{value:"yes",label:"Yes",description:"Show images inline in terminal"},{value:"no",label:"No",description:"Show text placeholder instead"}];this.addChild(new DynamicBorder),this.selectList=new SelectList(items,5,getSelectListTheme(),SHOW_IMAGES_SELECT_LIST_LAYOUT),this.selectList.setSelectedIndex(currentValue?0:1),this.selectList.onSelect=item=>{onSelect(item.value==="yes")},this.selectList.onCancel=()=>{onCancel()},this.addChild(this.selectList),this.addChild(new DynamicBorder)}getSelectList(){return this.selectList}}}});var THEME_SELECT_LIST_LAYOUT,ThemeSelectorComponent,init_theme_selector=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/theme-selector.js"(){init_dist6();init_theme();init_dynamic_border();THEME_SELECT_LIST_LAYOUT={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ThemeSelectorComponent=class extends Container{selectList;onPreview;constructor(currentTheme,onSelect,onCancel,onPreview){super(),this.onPreview=onPreview;let themes=getAvailableThemes(),themeItems2=themes.map(name=>({value:name,label:name,description:name===currentTheme?"(current)":void 0}));this.addChild(new DynamicBorder),this.selectList=new SelectList(themeItems2,10,getSelectListTheme(),THEME_SELECT_LIST_LAYOUT);let currentIndex=themes.indexOf(currentTheme);currentIndex!==-1&&this.selectList.setSelectedIndex(currentIndex),this.selectList.onSelect=item=>{onSelect(item.value)},this.selectList.onCancel=()=>{onCancel()},this.selectList.onSelectionChange=item=>{this.onPreview(item.value)},this.addChild(this.selectList),this.addChild(new DynamicBorder)}getSelectList(){return this.selectList}}}});var init_components=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js"(){init_armin();init_assistant_message();init_bash_execution();init_bordered_loader();init_branch_summary_message();init_compaction_summary_message();init_custom_editor();init_custom_message();init_diff2();init_dynamic_border();init_extension_editor();init_extension_input();init_extension_selector();init_first_time_setup();init_footer();init_keybinding_hints();init_login_dialog();init_model_selector();init_oauth_selector();init_scoped_models_selector();init_session_selector();init_settings_selector();init_show_images_selector();init_skill_invocation_message();init_theme_selector();init_thinking_selector();init_tool_execution();init_tree_selector();init_trust_selector();init_user_message();init_user_message_selector();init_visual_truncate()}});var dist_exports3={};__export(dist_exports3,{AgentSession:()=>AgentSession,AgentSessionRuntime:()=>AgentSessionRuntime,ArminComponent:()=>ArminComponent,AssistantMessageComponent:()=>AssistantMessageComponent,BashExecutionComponent:()=>BashExecutionComponent,BorderedLoader:()=>BorderedLoader,BranchSummaryMessageComponent:()=>BranchSummaryMessageComponent,CONFIG_DIR_NAME:()=>CONFIG_DIR_NAME,CURRENT_SESSION_VERSION:()=>CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent:()=>CompactionSummaryMessageComponent,CredentialSynchronizationError:()=>CredentialSynchronizationError,CustomEditor:()=>CustomEditor,CustomMessageComponent:()=>CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS:()=>DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES:()=>DEFAULT_MAX_BYTES2,DEFAULT_MAX_LINES:()=>DEFAULT_MAX_LINES,DefaultPackageManager:()=>DefaultPackageManager,DefaultResourceLoader:()=>DefaultResourceLoader,DynamicBorder:()=>DynamicBorder,ExtensionEditorComponent:()=>ExtensionEditorComponent,ExtensionInputComponent:()=>ExtensionInputComponent,ExtensionRunner:()=>ExtensionRunner,ExtensionSelectorComponent:()=>ExtensionSelectorComponent,FooterComponent:()=>FooterComponent,InteractiveMode:()=>InteractiveMode,LoginDialogComponent:()=>LoginDialogComponent,ModelRegistry:()=>ModelRegistry,ModelRuntime:()=>ModelRuntime,ModelSelectorComponent:()=>ModelSelectorComponent,OAuthSelectorComponent:()=>OAuthSelectorComponent,ProjectTrustStore:()=>ProjectTrustStore,RpcClient:()=>RpcClient,SessionManager:()=>SessionManager,SessionSelectorComponent:()=>SessionSelectorComponent,SettingsManager:()=>SettingsManager,SettingsSelectorComponent:()=>SettingsSelectorComponent,ShowImagesSelectorComponent:()=>ShowImagesSelectorComponent,SkillInvocationMessageComponent:()=>SkillInvocationMessageComponent,Theme:()=>Theme,ThemeSelectorComponent:()=>ThemeSelectorComponent,ThinkingSelectorComponent:()=>ThinkingSelectorComponent,ToolExecutionComponent:()=>ToolExecutionComponent,TreeSelectorComponent:()=>TreeSelectorComponent,UserMessageComponent:()=>UserMessageComponent,UserMessageSelectorComponent:()=>UserMessageSelectorComponent,VERSION:()=>VERSION,VIRTUAL_MODEL_STATE_ENTRY:()=>VIRTUAL_MODEL_STATE_ENTRY,buildContextEntries:()=>buildContextEntries,buildSessionContext:()=>buildSessionContext,buildSessionProjection:()=>buildSessionProjection,calculateContextTokens:()=>calculateContextTokens2,collectEntriesForBranchSummary:()=>collectEntriesForBranchSummary,compact:()=>compact,convertToLlm:()=>convertToLlm,convertToPng:()=>convertToPng,copyToClipboard:()=>copyToClipboard,createAgentSession:()=>createAgentSession,createAgentSessionFromServices:()=>createAgentSessionFromServices,createAgentSessionRuntime:()=>createAgentSessionRuntime,createAgentSessionServices:()=>createAgentSessionServices,createBashTool:()=>createBashTool,createBashToolDefinition:()=>createBashToolDefinition,createCodemodeExtension:()=>createCodemodeExtension,createCodingTools:()=>createCodingTools,createEditTool:()=>createEditTool,createEditToolDefinition:()=>createEditToolDefinition,createEventBus:()=>createEventBus,createExtensionRuntime:()=>createExtensionRuntime,createFindTool:()=>createFindTool,createFindToolDefinition:()=>createFindToolDefinition,createGrepTool:()=>createGrepTool,createGrepToolDefinition:()=>createGrepToolDefinition,createLocalBashOperations:()=>createLocalBashOperations,createLocalPowerShellOperations:()=>createLocalPowerShellOperations,createLsTool:()=>createLsTool,createLsToolDefinition:()=>createLsToolDefinition,createMcpExtension:()=>createMcpExtension,createPowerShellTool:()=>createPowerShellTool,createPowerShellToolDefinition:()=>createPowerShellToolDefinition,createReadOnlyTools:()=>createReadOnlyTools,createReadTool:()=>createReadTool,createReadToolDefinition:()=>createReadToolDefinition,createSyntheticSourceInfo:()=>createSyntheticSourceInfo,createToolSearchExtension:()=>createToolSearchExtension,createWriteTool:()=>createWriteTool,createWriteToolDefinition:()=>createWriteToolDefinition,defineTool:()=>defineTool,detectSupportedImageMimeTypeFromFile:()=>detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions:()=>discoverAndLoadExtensions,estimateTokens:()=>estimateTokens2,findCutPoint:()=>findCutPoint,findTurnStartIndex:()=>findTurnStartIndex,formatDimensionNote:()=>formatDimensionNote,formatReadLineRange:()=>formatReadLineRange,formatSize:()=>formatSize,formatSkillsForPrompt:()=>formatSkillsForPrompt,generateBranchSummary:()=>generateBranchSummary,generateDiffString:()=>generateDiffString,generateSummary:()=>generateSummary,generateSummaryWithUsage:()=>generateSummaryWithUsage,generateUnifiedPatch:()=>generateUnifiedPatch,getAgentDir:()=>getAgentDir,getDocsPath:()=>getDocsPath,getExamplesPath:()=>getExamplesPath,getLanguageFromPath:()=>getLanguageFromPath,getLastAssistantUsage:()=>getLastAssistantUsage,getLatestCompactionEntry:()=>getLatestCompactionEntry,getMarkdownTheme:()=>getMarkdownTheme,getPackageDir:()=>getPackageDir,getPowerShellConfig:()=>getPowerShellConfig,getReadmePath:()=>getReadmePath,getSelectListTheme:()=>getSelectListTheme,getSettingsListTheme:()=>getSettingsListTheme,getShellConfig:()=>getShellConfig,hasTrustRequiringProjectResources:()=>hasTrustRequiringProjectResources,highlightCode:()=>highlightCode,initTheme:()=>initTheme,isBashToolResult:()=>isBashToolResult,isEditToolResult:()=>isEditToolResult,isFindToolResult:()=>isFindToolResult,isGrepToolResult:()=>isGrepToolResult,isLsToolResult:()=>isLsToolResult,isPowerShellToolResult:()=>isPowerShellToolResult,isReadToolResult:()=>isReadToolResult,isToolCallEventType:()=>isToolCallEventType,isWriteToolResult:()=>isWriteToolResult,keyHint:()=>keyHint,keyText:()=>keyText,loadProjectContextFiles:()=>loadProjectContextFiles,loadSkills:()=>loadSkills,loadSkillsFromDir:()=>loadSkillsFromDir,main:()=>main,migrateSessionEntries:()=>migrateSessionEntries,parseArgs:()=>parseArgs,parseFrontmatter:()=>parseFrontmatter,parseSessionEntries:()=>parseSessionEntries,parseSkillBlock:()=>parseSkillBlock,prepareBranchEntries:()=>prepareBranchEntries,rawKeyHint:()=>rawKeyHint,readStoredCredential:()=>readStoredCredential,renderDiff:()=>renderDiff,resizeImage:()=>resizeImage,resolveCliModel:()=>resolveCliModel,resolveModelScopeWithDiagnostics:()=>resolveModelScopeWithDiagnostics,runPrintMode:()=>runPrintMode,runRpcMode:()=>runRpcMode,serializeConversation:()=>serializeConversation,sessionEntryToContextMessages:()=>sessionEntryToContextMessages,shouldCompact:()=>shouldCompact,stripFrontmatter:()=>stripFrontmatter,truncateHead:()=>truncateHead,truncateLine:()=>truncateLine,truncateTail:()=>truncateTail,truncateToVisualLines:()=>truncateToVisualLines,withFileMutationQueue:()=>withFileMutationQueue,wrapRegisteredTool:()=>wrapRegisteredTool,wrapRegisteredTools:()=>wrapRegisteredTools});var init_dist11=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/index.js"(){init_args();init_config();init_agent_session();init_auth_storage();init_compaction2();init_event_bus();init_extensions();init_messages5();init_model_registry();init_model_resolver();init_model_runtime();init_package_manager();init_resource_loader();init_sdk2();init_session_manager();init_settings_manager();init_skills5();init_source_info();init_edit_diff();init_tools();init_render_utils();init_trust_manager();init_virtual_models();init_codemode();init_mcp();init_tool_search();init_main();init_modes();init_components();init_theme();init_clipboard();init_frontmatter();init_image_convert();init_image_resize();init_mime();init_shell()}});import{existsSync}from"node:fs";import path from"node:path";import{fileURLToPath}from"node:url";function findPackageDir(startDir){let dir=startDir;for(;dir!==path.dirname(dir);){if(existsSync(path.join(dir,"package.json")))return dir;dir=path.dirname(dir)}return startDir}var BKPER_PACKAGE_DIR=findPackageDir(path.dirname(fileURLToPath(import.meta.url)));function getPiPackageDir(){return findPackageDir(path.dirname(fileURLToPath(import.meta.resolve("@earendil-works/pi-coding-agent"))))}function applyPiPackageDir(env3=process.env){env3.PI_PACKAGE_DIR??=getPiPackageDir()}applyPiPackageDir();init_dist11();init_dist6();init_typesafe_system_one_lazy();var BKPER_AI_PROVIDER_ID="bkper",BKPER_AI_PRODUCTION_BASE_URL="https://ai.bkper.app/v1",BKPER_AI_BASE_URL_ENV_VAR="BKPER_AI_BASE_URL",BKPER_AI_DEVELOPMENT_ORIGIN="https://ai-dev.bkper.app",THINKING_LEVELS4=["off","minimal","low","medium","high","xhigh","max"],BKPER_AI_CLASSIFIER_API="typesafe-system-one",BKPER_AI_CHAT_API="openai-responses";function isDecisionModel2(model2){return model2.type==="decision"}function isChatModel2(model2){return model2.type===void 0||model2.type==="language"}function invalidBkperAiBaseUrlError(){return new Error(`${BKPER_AI_BASE_URL_ENV_VAR} must be an HTTPS URL on ai-dev.bkper.app without credentials, a custom port, query parameters, or a fragment.`)}function getBkperAiBaseUrlOverride(env3=process.env){let configuredBaseUrl=env3[BKPER_AI_BASE_URL_ENV_VAR];if(configuredBaseUrl===void 0)return;let url;try{url=new URL(configuredBaseUrl)}catch{throw invalidBkperAiBaseUrlError()}if(configuredBaseUrl.trim()!==configuredBaseUrl||url.origin!==BKPER_AI_DEVELOPMENT_ORIGIN||url.username!==""||url.password!==""||url.search!==""||url.hash!=="")throw invalidBkperAiBaseUrlError();let path27=url.pathname.replace(/\/+$/,"");return`${url.origin}${path27}`}function isThinkingLevel(value){return THINKING_LEVELS4.some(level=>level===value)}function getDefaultThinkingLevel(model2){return isThinkingLevel(model2.default_thinking_level)?model2.default_thinking_level:model2.thinking_levels.includes("high")?"high":model2.thinking_levels.find(isThinkingLevel)}function getThinkingLevelMap(levels){let supports=level=>levels.includes(level)?level:null;return{off:levels.includes("none")?"none":null,minimal:supports("minimal"),low:supports("low"),medium:supports("medium"),high:supports("high"),xhigh:supports("xhigh"),max:supports("max")}}function nanoUsdPerTokenToUsdPerMillion(value){return value/1e3}function getInputModalities(modalities){return modalities?.filter(modality=>modality==="text"||modality==="image")??[]}function toProviderModel(model2,defaultModelId){let input2=getInputModalities(model2.input_modalities);return{id:model2.id,name:model2.name??model2.id,reasoning:model2.thinking_levels.some(level=>level!=="none"),thinkingLevelMap:getThinkingLevelMap(model2.thinking_levels),input:input2,cost:{input:nanoUsdPerTokenToUsdPerMillion(model2.pricing.inputNanoUsdPerToken),output:nanoUsdPerTokenToUsdPerMillion(model2.pricing.outputNanoUsdPerToken),cacheRead:nanoUsdPerTokenToUsdPerMillion(model2.pricing.cachedInputNanoUsdPerToken),cacheWrite:nanoUsdPerTokenToUsdPerMillion(model2.pricing.cacheWriteNanoUsdPerToken)},...getPromptCache(model2.prompt_cache_ttl_seconds),contextWindow:model2.context_window,maxTokens:model2.max_output_tokens,compat:{supportsDeveloperRole:!1,sessionAffinityFormat:"openai",supportsLongCacheRetention:!1,...model2.mid_conversation_system_messages===!0?{supportsMidConvoSystemMessages:!0}:{}},bkperDefault:model2.id===defaultModelId,bkperDefaultThinkingLevel:getDefaultThinkingLevel(model2)}}function toClassifierModel(model2){return{type:"classifier",id:model2.id,name:model2.name??model2.id,api:BKPER_AI_CLASSIFIER_API,input:getInputModalities(model2.input_modalities??["text"]),cost:{input:nanoUsdPerTokenToUsdPerMillion(model2.pricing.inputNanoUsdPerToken),output:nanoUsdPerTokenToUsdPerMillion(model2.pricing.outputNanoUsdPerToken),cacheRead:0,cacheWrite:0},contextWindow:model2.context_window}}function getPromptCache(ttlSeconds){return typeof ttlSeconds=="number"&&Number.isFinite(ttlSeconds)&&ttlSeconds>0?{promptCache:{short:ttlSeconds}}:{}}async function fetchBkperAiModels(baseUrl,fetchFn,signal){let url=`${baseUrl}/models`,response=await fetchFn(url,{signal}),contentType2=response.headers.get("content-type")??"unknown content type",responseInfo=`${url} (HTTP ${response.status}, ${contentType2})`;if(!response.ok)throw new Error(`Bkper AI model request failed: ${responseInfo}.`);let catalog;try{catalog=await response.json()}catch{throw new Error(`Expected JSON Bkper AI model response from ${responseInfo}.`)}if(!Array.isArray(catalog.data))throw new Error("Bkper AI model response is invalid.");let classifierModels=catalog.data.filter(isDecisionModel2).map(toClassifierModel),chatModels=catalog.data.filter(isChatModel2).filter(model2=>model2.input_modalities?.includes("image")),defaultModelId=chatModels.find(model2=>model2.id===catalog.default_model)?.id??chatModels[0]?.id;return[...chatModels.map(model2=>toProviderModel(model2,defaultModelId)),...classifierModels]}function toStoredModel(model2,baseUrl){return model2.type==="classifier"?{...model2,api:model2.api??BKPER_AI_CLASSIFIER_API,provider:BKPER_AI_PROVIDER_ID,baseUrl}:{...model2,api:model2.api??BKPER_AI_CHAT_API,provider:BKPER_AI_PROVIDER_ID,baseUrl}}function fromStoredModel(model2){if(model2.type==="classifier"){let{provider:_provider2,baseUrl:_baseUrl2,...config2}=model2;return config2}if(model2.type==="image")return;let{provider:_provider,baseUrl:_baseUrl,api:_api,...config}=model2;return config}function getSavedModels(context,baseUrl){let models=context.stored?.models??[];if(!(models.length===0||models.some(model2=>model2.baseUrl!==baseUrl)))return models.flatMap(model2=>fromStoredModel(model2)??[])}async function refreshBkperAiModels(baseUrl,fetchFn,context){let savedModels=getSavedModels(context,baseUrl);if(!context.allowNetwork&&savedModels)return savedModels;let models=await fetchBkperAiModels(baseUrl,fetchFn,context.signal);return await context.publish({persist:{models:models.map(model2=>toStoredModel(model2,baseUrl)),checkedAt:Date.now()}}),models}function findDefaultBkperAiModel(models){return models.find(model2=>model2.provider===BKPER_AI_PROVIDER_ID&&model2.bkperDefault===!0)??models.find(model2=>model2.provider===BKPER_AI_PROVIDER_ID)}function getBkperAiDefaultThinkingLevel(model2){return model2?.provider===BKPER_AI_PROVIDER_ID?model2.bkperDefaultThinkingLevel:void 0}function getBkperAiProviderConfig(env3=process.env,fetchFn=fetch){let baseUrl=getBkperAiBaseUrlOverride(env3)??BKPER_AI_PRODUCTION_BASE_URL;return{name:"Bkper AI",baseUrl,apiKey:"!bkper auth token",authHeader:!0,headers:{"bkper-ai-source":"bkper-cli","User-Agent":"bkper-cli"},api:BKPER_AI_CHAT_API,classifiers:{[BKPER_AI_CLASSIFIER_API]:typesafeSystemOneApi()},models:[],refreshModels:context=>refreshBkperAiModels(baseUrl,fetchFn,context)}}function registerBkperAiProvider(pi,env3=process.env){pi.registerProvider(BKPER_AI_PROVIDER_ID,getBkperAiProviderConfig(env3))}init_dist11();import{join as join50}from"node:path";init_dist11();import{accessSync as accessSync4,constants as constants10,existsSync as existsSync29,readFileSync as readFileSync25,realpathSync as realpathSync3}from"fs";import path20 from"path";var PACKAGE_DIR=BKPER_PACKAGE_DIR,VERSION5=JSON.parse(readFileSync25(path20.join(PACKAGE_DIR,"package.json"),"utf8")).version;function readInstalledVersion(packageJsonPath){try{let data=JSON.parse(readFileSync25(packageJsonPath,"utf8"));return typeof data.version=="string"?data.version:void 0}catch{return}}function isNewerVersion(current,latest){let parse3=v2=>v2.split(".").map(Number),[cMajor,cMinor,cPatch]=parse3(current),[lMajor,lMinor,lPatch]=parse3(latest);return lMajor!==cMajor?lMajor>cMajor:lMinor!==cMinor?lMinor>cMinor:lPatch>cPatch}import{spawn as spawn15}from"child_process";import{createHash as createHash4}from"crypto";import{closeSync as closeSync2,mkdirSync as mkdirSync18,openSync as openSync2,readFileSync as readFileSync26,renameSync as renameSync6,statSync as statSync13,unlinkSync as unlinkSync3,writeFileSync as writeFileSync16}from"fs";import path22 from"path";import{fileURLToPath as fileURLToPath7}from"url";import path21 from"path";import os9 from"os";var BKPER_CONFIG_DIR=path21.join(os9.homedir(),".config","bkper"),BKPER_BIN_DIR=path21.join(BKPER_CONFIG_DIR,"bin"),DEFAULT_CLOUDFLARED_BIN=path21.join(BKPER_BIN_DIR,process.platform==="win32"?"cloudflared.exe":"cloudflared"),bin=process.env.CLOUDFLARED_BIN||DEFAULT_CLOUDFLARED_BIN;var CHECK_INTERVAL_MS=1440*60*1e3,AGENT_CHECK_INTERVAL_MS=300*1e3;var STALE_LOCK_MS=5e3;function getUpdateCachePath(packageDir=PACKAGE_DIR,configDir2=BKPER_CONFIG_DIR){let key=createHash4("sha256").update(packageDir).digest("hex").slice(0,16);return path22.join(configDir2,"update-check",`${key}.json`)}function isUpdateCheckDisabled(env3=process.env){if(env3.BKPER_DISABLE_AUTOUPDATE)return!0;let ci=env3.CI?.trim().toLowerCase();return!!ci&&ci!=="0"&&ci!=="false"}function readUpdateState(cachePath=getUpdateCachePath()){try{let data=JSON.parse(readFileSync26(cachePath,"utf8"));if(typeof data!="object"||data===null||Array.isArray(data))return{};let record=data,state3={};typeof record.lastAttemptedAt=="number"&&(state3.lastAttemptedAt=record.lastAttemptedAt),typeof record.latestVersion=="string"&&(state3.latestVersion=record.latestVersion);let install2=record.install;return install2&&typeof install2.version=="string"&&(install2.status==="installed"||install2.status==="manual"||install2.status==="failed")&&(state3.install={version:install2.version,status:install2.status},typeof install2.instruction=="string"&&(state3.install.instruction=install2.instruction)),state3}catch{return{}}}function writeUpdateState(state3,cachePath=getUpdateCachePath()){let tempPath=`${cachePath}.${process.pid}.tmp`;try{return mkdirSync18(path22.dirname(cachePath),{recursive:!0}),writeFileSync16(tempPath,`${JSON.stringify(state3)}
2281
+ `),process.exitCode=result.status==="ready"?0:result.status==="not_ready"?1:2}catch(error){let message=error instanceof AuthCommandError?error.message:"Failed to resolve credential";console.error(source_default.red(`Error: ${message}`)),process.exitCode=command.kind==="check"?2:1}return!0}async function prepareInitialMessage(parsed,stdinContent){if(parsed.fileArgs.length===0)return buildInitialMessage({parsed,stdinContent});let{text,images}=await processFileArguments(parsed.fileArgs,{autoResizeImages:!1});return buildInitialMessage({parsed,fileText:text,fileImages:images,stdinContent})}function findLocalSessionByExactId(sessionId,cwd,sessionDir){let path27=SessionManager.findById(cwd,sessionId,sessionDir);return path27?{type:"local",path:path27}:void 0}async function resolveSessionPath(sessionArg,cwd,sessionDir){if(sessionArg.includes("/")||sessionArg.includes("\\")||sessionArg.endsWith(".jsonl"))return{type:"path",path:resolvePath(sessionArg,cwd)};let exactLocalMatch=findLocalSessionByExactId(sessionArg,cwd,sessionDir);if(exactLocalMatch)return exactLocalMatch;let localMatch=(await SessionManager.list(cwd,sessionDir)).find(s2=>s2.id.startsWith(sessionArg));if(localMatch)return{type:"local",path:localMatch.path};let allSessions=await SessionManager.listAll(sessionDir),globalMatch=allSessions.find(s2=>s2.id===sessionArg)??allSessions.find(s2=>s2.id.startsWith(sessionArg));return globalMatch?{type:"global",path:globalMatch.path,cwd:globalMatch.cwd}:{type:"not_found",arg:sessionArg}}async function promptConfirm(message){return new Promise(resolve19=>{let rl=createInterface6({input:process.stdin,output:process.stdout});rl.question(`${message} [y/N] `,answer=>{rl.close(),resolve19(answer.toLowerCase()==="y"||answer.toLowerCase()==="yes")})})}function validateForkFlags(parsed){if(!parsed.fork)return;let conflictingFlags=[parsed.session?"--session":void 0,parsed.continue?"--continue":void 0,parsed.resume?"--resume":void 0,parsed.noSession?"--no-session":void 0].filter(flag=>flag!==void 0);conflictingFlags.length>0&&(console.error(source_default.red(`Error: --fork cannot be combined with ${conflictingFlags.join(", ")}`)),process.exit(1))}function validateSessionIdFlags(parsed){if(parsed.sessionId===void 0)return;let conflictingFlags=[parsed.session?"--session":void 0,parsed.continue?"--continue":void 0,parsed.resume?"--resume":void 0].filter(flag=>flag!==void 0);conflictingFlags.length>0&&(console.error(source_default.red(`Error: --session-id cannot be combined with ${conflictingFlags.join(", ")}`)),process.exit(1));try{assertValidSessionId(parsed.sessionId)}catch(error){let message=error instanceof Error?error.message:String(error);console.error(source_default.red(`Error: ${message}`)),process.exit(1)}}function openSessionOrExit(path27,sessionDir){try{return SessionManager.open(path27,sessionDir)}catch(error){let message=error instanceof Error?error.message:String(error);console.error(source_default.red(`Error: ${message}`)),process.exit(1)}}function forkSessionOrExit(sourcePath,cwd,sessionDir,sessionId){try{return SessionManager.forkFrom(sourcePath,cwd,sessionDir,{id:sessionId})}catch(error){let message=error instanceof Error?error.message:String(error);console.error(source_default.red(`Error: ${message}`)),process.exit(1)}}async function createSessionManager(parsed,cwd,sessionDir,settingsManager){if(parsed.noSession||parsed.help||parsed.listModels!==void 0)return SessionManager.inMemory(cwd,parsed.sessionId!==void 0?{id:parsed.sessionId}:void 0);if(parsed.fork){parsed.sessionId&&findLocalSessionByExactId(parsed.sessionId,cwd,sessionDir)&&(console.error(source_default.red(`Session already exists with id '${parsed.sessionId}'`)),process.exit(1));let resolved=await resolveSessionPath(parsed.fork,cwd,sessionDir);switch(resolved.type){case"path":case"local":case"global":return forkSessionOrExit(resolved.path,cwd,sessionDir,parsed.sessionId);case"not_found":console.error(source_default.red(`No session found matching '${resolved.arg}'`)),process.exit(1)}}if(parsed.session){let resolved=await resolveSessionPath(parsed.session,cwd,sessionDir);switch(resolved.type){case"path":case"local":return openSessionOrExit(resolved.path,sessionDir);case"global":return console.log(source_default.yellow(`Session found in different project: ${resolved.cwd}`)),await promptConfirm("Fork this session into current directory?")||(console.log(source_default.dim("Aborted.")),process.exit(0)),forkSessionOrExit(resolved.path,cwd,sessionDir);case"not_found":console.error(source_default.red(`No session found matching '${resolved.arg}'`)),process.exit(1)}}if(parsed.resume)try{let selectedPath=await selectSession((onProgress,signal)=>SessionManager.list(cwd,sessionDir,onProgress,signal),(onProgress,signal)=>SessionManager.listAll(sessionDir,onProgress,signal),settingsManager);return selectedPath||(console.log(source_default.dim("No session selected")),process.exit(0)),SessionManager.open(selectedPath,sessionDir)}finally{stopThemeWatcher()}if(parsed.continue)return SessionManager.continueRecent(cwd,sessionDir);if(parsed.sessionId){let existingSession=findLocalSessionByExactId(parsed.sessionId,cwd,sessionDir);if(existingSession)return SessionManager.open(existingSession.path,sessionDir);console.error(source_default.yellow(`Warning: No project session found with id '${parsed.sessionId}'; creating a new session with that id.`))}return SessionManager.create(cwd,sessionDir,{id:parsed.sessionId})}function buildSessionOptions(parsed,scopedModels,hasExistingSession,modelRuntime,settingsManager){let options={},diagnostics=[],cliThinkingFromModel=!1;if(parsed.provider&&!parsed.model&&diagnostics.push({type:"error",message:`--provider requires --model (for example: --provider ${parsed.provider} --model <pattern>)`}),parsed.model){let resolved=resolveCliModel({cliProvider:parsed.provider,cliModel:parsed.model,cliThinking:parsed.thinking,inlineApiKey:!!parsed.apiKey,modelRuntime});resolved.warning&&diagnostics.push({type:"warning",message:resolved.warning}),resolved.error&&diagnostics.push({type:"error",message:resolved.error}),resolved.model&&(options.model=resolved.model,!parsed.thinking&&resolved.thinkingLevel&&(options.thinkingLevel=resolved.thinkingLevel,cliThinkingFromModel=!0))}if(!options.model&&scopedModels.length>0&&!hasExistingSession){let savedProvider=settingsManager.getDefaultProvider(),savedModelId=settingsManager.getDefaultModel(),savedModel=savedProvider&&savedModelId?modelRuntime.getModel(savedProvider,savedModelId):void 0,savedInScope=savedModel?scopedModels.find(sm=>modelsAreEqual(sm.model,savedModel)):void 0;savedInScope?(options.model=savedInScope.model,!parsed.thinking&&savedInScope.thinkingLevel&&(options.thinkingLevel=savedInScope.thinkingLevel)):(options.model=scopedModels[0].model,!parsed.thinking&&scopedModels[0].thinkingLevel&&(options.thinkingLevel=scopedModels[0].thinkingLevel))}return parsed.thinking&&(options.thinkingLevel=parsed.thinking),scopedModels.length>0&&(options.scopedModels=scopedModels.map(sm=>({model:sm.model,thinkingLevel:sm.thinkingLevel}))),parsed.noTools?options.noTools="all":parsed.noBuiltinTools&&(options.noTools="builtin"),parsed.tools&&(options.tools=[...parsed.tools]),parsed.excludeTools&&(options.excludeTools=[...parsed.excludeTools]),{options,cliThinkingFromModel,diagnostics}}function resolveCliPaths(cwd,paths){return paths?.map(value=>isLocalPath(value)?resolvePath(value,cwd):value)}async function promptForMissingSessionCwd(issue,settingsManager){return showStartupSelector(settingsManager,formatMissingSessionCwdPrompt(issue),[{label:"Continue",value:issue.fallbackCwd},{label:"Cancel",value:void 0}])}async function main(args,options){resetTimings(),setThemeJsonValidator(validateThemeJson);let extensionFactories=[...builtInExtensions,...options?.extensionFactories??[]],offlineMode=args.includes("--offline")||isTruthyEnvFlag2(process.env.PI_OFFLINE);if(offlineMode&&(process.env.PI_OFFLINE="1",process.env.PI_SKIP_VERSION_CHECK="1"),await runAuthCommand(args))return;process.platform==="win32"&&cleanupWindowsSelfUpdateQuarantine(getPackageDir()),cleanupManagedInstall();let cwd=process.cwd(),agentDir=getAgentDir(),bootstrapSettingsManager=SettingsManager.create(cwd,agentDir,{projectTrusted:!1});if(applyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy),configureHttpDispatcher(),await handlePackageCommand(args,{extensionFactories})){let exitCode=process.exitCode??0;if(process.platform==="win32"&&exitCode===0&&args[0]==="update")return;process.exit(exitCode);return}if(await handleConfigCommand(args,{extensionFactories}))return;if(args[0]==="mcp"){let{runMcpCommand:runMcpCommand2}=await loadMcpCommand();process.exitCode=await runMcpCommand2(args.slice(1),{cwd,agentDir});return}let parsed=parseArgs(args);if(parsed.diagnostics.length>0){for(let d of parsed.diagnostics){let color=d.type==="error"?source_default.red:source_default.yellow;console.error(color(`${d.type==="error"?"Error":"Warning"}: ${d.message}`))}parsed.diagnostics.some(d=>d.type==="error")&&process.exit(1)}if(time("parseArgs"),parsed.version&&(console.log(VERSION),process.exit(0)),parsed.export){let result;try{let outputPath=parsed.messages.length>0?parsed.messages[0]:void 0;result=await exportFromFile(parsed.export,outputPath)}catch(error){let message=error instanceof Error?error.message:"Failed to export session";console.error(source_default.red(`Error: ${message}`)),process.exit(1)}console.log(`Exported to: ${result}`),process.exit(0)}let appMode=resolveAppMode(parsed,process.stdin.isTTY,process.stdout.isTTY);appMode!=="interactive"&&!isPlainRuntimeMetadataCommand(parsed)&&takeOverStdout(),parsed.mode==="rpc"&&parsed.fileArgs.length>0&&(console.error(source_default.red("Error: @file arguments are not supported in RPC mode")),process.exit(1)),validateForkFlags(parsed),validateSessionIdFlags(parsed);let{migratedAuthProviders:migratedProviders,deprecationWarnings}=runMigrations(cwd);time("runMigrations");let startupSettingsManager=SettingsManager.create(cwd,agentDir),startupSettingsDiagnostics=collectSettingsDiagnostics(startupSettingsManager);appMode==="interactive"&&!parsed.help&&parsed.listModels===void 0&&shouldRunFirstTimeSetup()&&(await showFirstTimeSetup(startupSettingsManager),time("firstTimeSetup")),appMode==="interactive"&&parsed.useTheme!==void 0&&startupSettingsManager.applyOverrides({theme:parsed.useTheme});let envSessionDir=process.env[ENV_SESSION_DIR],sessionDir=(parsed.sessionDir?normalizePath(parsed.sessionDir):void 0)??(envSessionDir?expandTildePath(envSessionDir):void 0)??startupSettingsManager.getSessionDir(),sessionManager=await createSessionManager(parsed,cwd,sessionDir,startupSettingsManager),missingSessionCwdIssue=getMissingSessionCwdIssue(sessionManager,cwd);if(missingSessionCwdIssue)if(appMode==="interactive"){let selectedCwd=await promptForMissingSessionCwd(missingSessionCwdIssue,startupSettingsManager);selectedCwd||process.exit(0),sessionManager=SessionManager.open(missingSessionCwdIssue.sessionFile,sessionDir,selectedCwd)}else console.error(source_default.red(new MissingSessionCwdError(missingSessionCwdIssue).message)),process.exit(1);if(parsed.name!==void 0){let name=normalizeSessionName(parsed.name);name===void 0&&(console.error(source_default.red("Error: --name requires a non-empty value")),process.exit(1)),sessionManager.appendSessionInfo(name)}time("createSessionManager");let trustStore=new ProjectTrustStore(agentDir),sessionCwd=sessionManager.getCwd(),autoTrustOnReloadCwd=parsed.projectTrustOverride===void 0&&!hasTrustRequiringProjectResources(sessionCwd)?sessionCwd:void 0,trustPromptMode=parsed.help||parsed.listModels!==void 0?"print":appMode,projectTrustByCwd=new Map,resolvedExtensionPaths=resolveCliPaths(cwd,parsed.extensions),resolvedSkillPaths=resolveCliPaths(cwd,parsed.skills),resolvedPromptTemplatePaths=resolveCliPaths(cwd,parsed.promptTemplates),resolvedThemePaths=resolveCliPaths(cwd,parsed.themes),createRuntime=async({cwd:cwd2,agentDir:agentDir2,sessionManager:sessionManager2,sessionStartEvent,projectTrustContext})=>{let isInitialRuntime=sessionStartEvent===void 0,projectTrustDiagnostics=[],cachedProjectTrust=projectTrustByCwd.get(cwd2),hasTrustRequiringResources=hasTrustRequiringProjectResources(cwd2),shouldResolveProjectTrust=parsed.projectTrustOverride===void 0&&cachedProjectTrust===void 0&&hasTrustRequiringResources,projectTrusted=shouldResolveProjectTrust?!1:cachedProjectTrust??parsed.projectTrustOverride??(!hasTrustRequiringResources||trustStore.get(cwd2)===!0),runtimeSettingsManager=SettingsManager.create(cwd2,agentDir2,{projectTrusted}),services2=await createAgentSessionServices({cwd:cwd2,agentDir:agentDir2,settingsManager:runtimeSettingsManager,modelRuntimeSignal:AbortSignal.timeout(15e3),extensionFlagValues:parsed.unknownFlags,resourceLoaderReloadOptions:shouldResolveProjectTrust?{resolveProjectTrust:async({extensionsResult})=>{let trusted=await resolveProjectTrusted({cwd:cwd2,trustStore,trustOverride:parsed.projectTrustOverride,defaultProjectTrust:startupSettingsManager.getDefaultProjectTrust(),extensionsResult,projectTrustContext:projectTrustContext??createProjectTrustContext({cwd:cwd2,mode:isInitialRuntime?trustPromptMode:appMode,settingsManager:startupSettingsManager,hasUI:isInitialRuntime&&trustPromptMode==="interactive"}),onExtensionError:message=>projectTrustDiagnostics.push({type:"warning",message})});return projectTrustByCwd.set(cwd2,trusted),trusted}}:void 0,resourceLoaderOptions:{additionalExtensionPaths:resolvedExtensionPaths,additionalSkillPaths:resolvedSkillPaths,additionalPromptTemplatePaths:resolvedPromptTemplatePaths,additionalThemePaths:resolvedThemePaths,noExtensions:parsed.noExtensions,disabledBuiltinExtensions:parsed.noMcp?["mcp"]:void 0,noSkills:parsed.noSkills,noPromptTemplates:parsed.noPromptTemplates,noThemes:parsed.noThemes,noContextFiles:parsed.noContextFiles,systemPrompt:parsed.systemPrompt,appendSystemPrompt:parsed.appendSystemPrompt,extensionFactories}}),{settingsManager:settingsManager2,modelRuntime:modelRuntime2,resourceLoader:resourceLoader2}=services2,diagnostics=[...projectTrustDiagnostics,...services2.diagnostics,...collectSettingsDiagnostics(settingsManager2),...resourceLoader2.getExtensions().errors.map(({path:path27,error})=>({type:"error",message:`Failed to load extension "${path27}": ${error}`})),...(resourceLoader2.getExtensions().warnings??[]).map(({path:path27,warning})=>({type:"warning",message:`Extension package "${path27}": ${warning}`}))],modelPatterns=parsed.models??settingsManager2.getEnabledModels(),scopedModels=modelPatterns&&modelPatterns.length>0?await resolveModelScope(modelPatterns,modelRuntime2,{signal:AbortSignal.timeout(15e3)}):[],{options:sessionOptions,cliThinkingFromModel,diagnostics:sessionOptionDiagnostics}=buildSessionOptions(parsed,scopedModels,sessionManager2.buildSessionContext().messages.length>0,modelRuntime2,settingsManager2);diagnostics.push(...sessionOptionDiagnostics),parsed.apiKey&&(sessionOptions.model?await modelRuntime2.setRuntimeApiKey(sessionOptions.model.provider,parsed.apiKey):diagnostics.push({type:"error",message:"--api-key requires a model to be specified via --model, --provider/--model, or --models"}));let created=await createAgentSessionFromServices({services:services2,sessionManager:sessionManager2,sessionStartEvent,model:sessionOptions.model,thinkingLevel:sessionOptions.thinkingLevel,scopedModels:sessionOptions.scopedModels,tools:sessionOptions.tools,excludeTools:sessionOptions.excludeTools,noTools:sessionOptions.noTools,customTools:sessionOptions.customTools}),cliThinkingOverride=parsed.thinking!==void 0||cliThinkingFromModel;return created.session.model&&cliThinkingOverride&&created.session.setThinkingLevel(created.session.thinkingLevel),{...created,services:services2,diagnostics}};time("createRuntime");let runtime=await createAgentSessionRuntime(createRuntime,{cwd:sessionManager.getCwd(),agentDir,sessionManager});time("createAgentSessionRuntime");let{services,session,modelFallbackMessage}=runtime,{settingsManager,modelRuntime,resourceLoader}=services;if(setCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides()),applyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy),configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs()),parsed.help){reportDiagnostics(startupSettingsDiagnostics);let extensionFlags=resourceLoader.getExtensions().extensions.flatMap(extension2=>Array.from(extension2.flags.values()));printHelp(extensionFlags),process.exit(0)}if(parsed.listModels!==void 0){reportDiagnostics(startupSettingsDiagnostics);let searchPattern=typeof parsed.listModels=="string"?parsed.listModels:void 0;await listModels(modelRuntime,searchPattern,AbortSignal.timeout(15e3)),process.exit(0)}let stdinContent;appMode!=="rpc"&&(stdinContent=await readPipedStdin(),stdinContent!==void 0&&appMode==="interactive"&&(appMode="print")),time("readPipedStdin");let{initialMessage,initialImages}=await prepareInitialMessage(parsed,stdinContent);time("prepareInitialMessage"),initTheme(settingsManager.getTheme(),appMode==="interactive"),time("initTheme"),appMode==="interactive"&&deprecationWarnings.length>0&&await showDeprecationWarnings(deprecationWarnings),time("resolveModelScope");let startupDiagnostics=deduplicateDiagnostics([...startupSettingsDiagnostics,...runtime.diagnostics]),hasRuntimeErrors=runtime.diagnostics.some(diagnostic=>diagnostic.type==="error");(appMode!=="interactive"||hasRuntimeErrors)&&reportDiagnostics(startupDiagnostics),hasRuntimeErrors&&(runtime.diagnostics.some(diagnostic=>diagnostic.message.includes("Failed to load extension"))&&console.error(source_default.yellow(EXTENSION_LOAD_FAILURE_HINT)),process.exit(1)),time("createAgentSession"),appMode!=="interactive"&&!session.model&&(console.error(source_default.red(formatNoModelsAvailableMessage())),process.exit(1));let startupBenchmark=isTruthyEnvFlag2(process.env.PI_STARTUP_BENCHMARK);if(startupBenchmark&&appMode!=="interactive"&&(console.error(source_default.red("Error: PI_STARTUP_BENCHMARK only supports interactive mode")),process.exit(1)),!offlineMode&&appMode==="rpc"){let controller=new AbortController,timeout=setTimeout(()=>controller.abort(),15e3);modelRuntime.refresh({signal:controller.signal}).catch(()=>{}).finally(()=>clearTimeout(timeout))}if(appMode==="rpc")printTimings(),await runRpcMode(runtime);else if(appMode==="interactive"){let interactiveMode=new InteractiveMode(runtime,{migratedProviders,startupDiagnostics,modelFallbackMessage,autoTrustOnReloadCwd,initialMessage,initialImages,initialMessages:parsed.messages,verbose:parsed.verbose,tuiMode:parsed.tuiMode,initialThemeSetting:parsed.useTheme});if(startupBenchmark){await interactiveMode.init(),time("interactiveMode.init"),await new Promise(resolve19=>setTimeout(resolve19,150)),interactiveMode.stop(),stopThemeWatcher(),printTimings(),process.stdout.writableLength>0&&await new Promise(resolve19=>process.stdout.once("drain",resolve19)),process.stderr.writableLength>0&&await new Promise(resolve19=>process.stderr.once("drain",resolve19));return}printTimings(),await interactiveMode.run()}else{printTimings();let exitCode=await runPrintMode(runtime,{mode:toPrintOutputMode(appMode),messages:parsed.messages,initialMessage,initialImages});stopThemeWatcher(),restoreStdout(),exitCode!==0&&(process.exitCode=exitCode);return}}var EXTENSION_LOAD_FAILURE_HINT,init_main=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/main.js"(){init_dist2();init_dist6();init_source();init_args();init_auth_check();init_auth_command();init_credential_print();init_file_processor();init_initial_message();init_list_models();init_project_trust();init_session_picker();init_startup_ui();init_config();init_agent_session_runtime();init_agent_session_services();init_auth_guidance();init_auth_storage();init_export_html();init_http_dispatcher();init_model_resolver();init_model_runtime();init_output_guard();init_project_trust2();init_session_cwd();init_session_manager();init_settings_diagnostics();init_settings_manager();init_timings();init_trust_manager();init_extensions3();init_cli_lazy();init_migrations();init_modes();init_theme();init_theme_schema();init_package_manager_cli();init_paths();init_windows_self_update();EXTENSION_LOAD_FAILURE_HINT=`Hint: Start without extensions using "${APP_NAME} -ne".`}});var SHOW_IMAGES_SELECT_LIST_LAYOUT,ShowImagesSelectorComponent,init_show_images_selector=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/show-images-selector.js"(){init_dist6();init_theme();init_dynamic_border();SHOW_IMAGES_SELECT_LIST_LAYOUT={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ShowImagesSelectorComponent=class extends Container{selectList;constructor(currentValue,onSelect,onCancel){super();let items=[{value:"yes",label:"Yes",description:"Show images inline in terminal"},{value:"no",label:"No",description:"Show text placeholder instead"}];this.addChild(new DynamicBorder),this.selectList=new SelectList(items,5,getSelectListTheme(),SHOW_IMAGES_SELECT_LIST_LAYOUT),this.selectList.setSelectedIndex(currentValue?0:1),this.selectList.onSelect=item=>{onSelect(item.value==="yes")},this.selectList.onCancel=()=>{onCancel()},this.addChild(this.selectList),this.addChild(new DynamicBorder)}getSelectList(){return this.selectList}}}});var THEME_SELECT_LIST_LAYOUT,ThemeSelectorComponent,init_theme_selector=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/theme-selector.js"(){init_dist6();init_theme();init_dynamic_border();THEME_SELECT_LIST_LAYOUT={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ThemeSelectorComponent=class extends Container{selectList;onPreview;constructor(currentTheme,onSelect,onCancel,onPreview){super(),this.onPreview=onPreview;let themes=getAvailableThemes(),themeItems2=themes.map(name=>({value:name,label:name,description:name===currentTheme?"(current)":void 0}));this.addChild(new DynamicBorder),this.selectList=new SelectList(themeItems2,10,getSelectListTheme(),THEME_SELECT_LIST_LAYOUT);let currentIndex=themes.indexOf(currentTheme);currentIndex!==-1&&this.selectList.setSelectedIndex(currentIndex),this.selectList.onSelect=item=>{onSelect(item.value)},this.selectList.onCancel=()=>{onCancel()},this.selectList.onSelectionChange=item=>{this.onPreview(item.value)},this.addChild(this.selectList),this.addChild(new DynamicBorder)}getSelectList(){return this.selectList}}}});var init_components=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js"(){init_armin();init_assistant_message();init_bash_execution();init_bordered_loader();init_branch_summary_message();init_compaction_summary_message();init_custom_editor();init_custom_message();init_diff2();init_dynamic_border();init_extension_editor();init_extension_input();init_extension_selector();init_first_time_setup();init_footer();init_keybinding_hints();init_login_dialog();init_model_selector();init_oauth_selector();init_scoped_models_selector();init_session_selector();init_settings_selector();init_show_images_selector();init_skill_invocation_message();init_theme_selector();init_thinking_selector();init_tool_execution();init_tree_selector();init_trust_selector();init_user_message();init_user_message_selector();init_visual_truncate()}});var dist_exports3={};__export(dist_exports3,{AgentSession:()=>AgentSession,AgentSessionRuntime:()=>AgentSessionRuntime,ArminComponent:()=>ArminComponent,AssistantMessageComponent:()=>AssistantMessageComponent,BashExecutionComponent:()=>BashExecutionComponent,BorderedLoader:()=>BorderedLoader,BranchSummaryMessageComponent:()=>BranchSummaryMessageComponent,CONFIG_DIR_NAME:()=>CONFIG_DIR_NAME,CURRENT_SESSION_VERSION:()=>CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent:()=>CompactionSummaryMessageComponent,CredentialSynchronizationError:()=>CredentialSynchronizationError,CustomEditor:()=>CustomEditor,CustomMessageComponent:()=>CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS:()=>DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES:()=>DEFAULT_MAX_BYTES2,DEFAULT_MAX_LINES:()=>DEFAULT_MAX_LINES,DefaultPackageManager:()=>DefaultPackageManager,DefaultResourceLoader:()=>DefaultResourceLoader,DynamicBorder:()=>DynamicBorder,ExtensionEditorComponent:()=>ExtensionEditorComponent,ExtensionInputComponent:()=>ExtensionInputComponent,ExtensionRunner:()=>ExtensionRunner,ExtensionSelectorComponent:()=>ExtensionSelectorComponent,FooterComponent:()=>FooterComponent,InteractiveMode:()=>InteractiveMode,LoginDialogComponent:()=>LoginDialogComponent,ModelRegistry:()=>ModelRegistry,ModelRuntime:()=>ModelRuntime,ModelSelectorComponent:()=>ModelSelectorComponent,OAuthSelectorComponent:()=>OAuthSelectorComponent,ProjectTrustStore:()=>ProjectTrustStore,RpcClient:()=>RpcClient,SessionManager:()=>SessionManager,SessionSelectorComponent:()=>SessionSelectorComponent,SettingsManager:()=>SettingsManager,SettingsSelectorComponent:()=>SettingsSelectorComponent,ShowImagesSelectorComponent:()=>ShowImagesSelectorComponent,SkillInvocationMessageComponent:()=>SkillInvocationMessageComponent,Theme:()=>Theme,ThemeSelectorComponent:()=>ThemeSelectorComponent,ThinkingSelectorComponent:()=>ThinkingSelectorComponent,ToolExecutionComponent:()=>ToolExecutionComponent,TreeSelectorComponent:()=>TreeSelectorComponent,UserMessageComponent:()=>UserMessageComponent,UserMessageSelectorComponent:()=>UserMessageSelectorComponent,VERSION:()=>VERSION,VIRTUAL_MODEL_STATE_ENTRY:()=>VIRTUAL_MODEL_STATE_ENTRY,buildContextEntries:()=>buildContextEntries,buildSessionContext:()=>buildSessionContext,buildSessionProjection:()=>buildSessionProjection,calculateContextTokens:()=>calculateContextTokens2,collectEntriesForBranchSummary:()=>collectEntriesForBranchSummary,compact:()=>compact,convertToLlm:()=>convertToLlm,convertToPng:()=>convertToPng,copyToClipboard:()=>copyToClipboard,createAgentSession:()=>createAgentSession,createAgentSessionFromServices:()=>createAgentSessionFromServices,createAgentSessionRuntime:()=>createAgentSessionRuntime,createAgentSessionServices:()=>createAgentSessionServices,createBashTool:()=>createBashTool,createBashToolDefinition:()=>createBashToolDefinition,createCodemodeExtension:()=>createCodemodeExtension,createCodingTools:()=>createCodingTools,createEditTool:()=>createEditTool,createEditToolDefinition:()=>createEditToolDefinition,createEventBus:()=>createEventBus,createExtensionRuntime:()=>createExtensionRuntime,createFindTool:()=>createFindTool,createFindToolDefinition:()=>createFindToolDefinition,createGrepTool:()=>createGrepTool,createGrepToolDefinition:()=>createGrepToolDefinition,createLocalBashOperations:()=>createLocalBashOperations,createLocalPowerShellOperations:()=>createLocalPowerShellOperations,createLsTool:()=>createLsTool,createLsToolDefinition:()=>createLsToolDefinition,createMcpExtension:()=>createMcpExtension,createPowerShellTool:()=>createPowerShellTool,createPowerShellToolDefinition:()=>createPowerShellToolDefinition,createReadOnlyTools:()=>createReadOnlyTools,createReadTool:()=>createReadTool,createReadToolDefinition:()=>createReadToolDefinition,createSyntheticSourceInfo:()=>createSyntheticSourceInfo,createToolSearchExtension:()=>createToolSearchExtension,createWriteTool:()=>createWriteTool,createWriteToolDefinition:()=>createWriteToolDefinition,defineTool:()=>defineTool,detectSupportedImageMimeTypeFromFile:()=>detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions:()=>discoverAndLoadExtensions,estimateTokens:()=>estimateTokens2,findCutPoint:()=>findCutPoint,findTurnStartIndex:()=>findTurnStartIndex,formatDimensionNote:()=>formatDimensionNote,formatReadLineRange:()=>formatReadLineRange,formatSize:()=>formatSize,formatSkillsForPrompt:()=>formatSkillsForPrompt,generateBranchSummary:()=>generateBranchSummary,generateDiffString:()=>generateDiffString,generateSummary:()=>generateSummary,generateSummaryWithUsage:()=>generateSummaryWithUsage,generateUnifiedPatch:()=>generateUnifiedPatch,getAgentDir:()=>getAgentDir,getDocsPath:()=>getDocsPath,getExamplesPath:()=>getExamplesPath,getLanguageFromPath:()=>getLanguageFromPath,getLastAssistantUsage:()=>getLastAssistantUsage,getLatestCompactionEntry:()=>getLatestCompactionEntry,getMarkdownTheme:()=>getMarkdownTheme,getPackageDir:()=>getPackageDir,getPowerShellConfig:()=>getPowerShellConfig,getReadmePath:()=>getReadmePath,getSelectListTheme:()=>getSelectListTheme,getSettingsListTheme:()=>getSettingsListTheme,getShellConfig:()=>getShellConfig,hasTrustRequiringProjectResources:()=>hasTrustRequiringProjectResources,highlightCode:()=>highlightCode,initTheme:()=>initTheme,isBashToolResult:()=>isBashToolResult,isEditToolResult:()=>isEditToolResult,isFindToolResult:()=>isFindToolResult,isGrepToolResult:()=>isGrepToolResult,isLsToolResult:()=>isLsToolResult,isPowerShellToolResult:()=>isPowerShellToolResult,isReadToolResult:()=>isReadToolResult,isToolCallEventType:()=>isToolCallEventType,isWriteToolResult:()=>isWriteToolResult,keyHint:()=>keyHint,keyText:()=>keyText,loadProjectContextFiles:()=>loadProjectContextFiles,loadSkills:()=>loadSkills,loadSkillsFromDir:()=>loadSkillsFromDir,main:()=>main,migrateSessionEntries:()=>migrateSessionEntries,parseArgs:()=>parseArgs,parseFrontmatter:()=>parseFrontmatter,parseSessionEntries:()=>parseSessionEntries,parseSkillBlock:()=>parseSkillBlock,prepareBranchEntries:()=>prepareBranchEntries,rawKeyHint:()=>rawKeyHint,readStoredCredential:()=>readStoredCredential,renderDiff:()=>renderDiff,resizeImage:()=>resizeImage,resolveCliModel:()=>resolveCliModel,resolveModelScopeWithDiagnostics:()=>resolveModelScopeWithDiagnostics,runPrintMode:()=>runPrintMode,runRpcMode:()=>runRpcMode,serializeConversation:()=>serializeConversation,sessionEntryToContextMessages:()=>sessionEntryToContextMessages,shouldCompact:()=>shouldCompact,stripFrontmatter:()=>stripFrontmatter,truncateHead:()=>truncateHead,truncateLine:()=>truncateLine,truncateTail:()=>truncateTail,truncateToVisualLines:()=>truncateToVisualLines,withFileMutationQueue:()=>withFileMutationQueue,wrapRegisteredTool:()=>wrapRegisteredTool,wrapRegisteredTools:()=>wrapRegisteredTools});var init_dist11=__esm({"node_modules/@earendil-works/pi-coding-agent/dist/index.js"(){init_args();init_config();init_agent_session();init_auth_storage();init_compaction2();init_event_bus();init_extensions();init_messages5();init_model_registry();init_model_resolver();init_model_runtime();init_package_manager();init_resource_loader();init_sdk2();init_session_manager();init_settings_manager();init_skills5();init_source_info();init_edit_diff();init_tools();init_render_utils();init_trust_manager();init_virtual_models();init_codemode();init_mcp();init_tool_search();init_main();init_modes();init_components();init_theme();init_clipboard();init_frontmatter();init_image_convert();init_image_resize();init_mime();init_shell()}});import{existsSync}from"node:fs";import path from"node:path";import{fileURLToPath}from"node:url";function findPackageDir(startDir){let dir=startDir;for(;dir!==path.dirname(dir);){if(existsSync(path.join(dir,"package.json")))return dir;dir=path.dirname(dir)}return startDir}var BKPER_PACKAGE_DIR=findPackageDir(path.dirname(fileURLToPath(import.meta.url)));function getPiPackageDir(){return findPackageDir(path.dirname(fileURLToPath(import.meta.resolve("@earendil-works/pi-coding-agent"))))}function applyPiPackageDir(env3=process.env){env3.PI_PACKAGE_DIR??=getPiPackageDir()}applyPiPackageDir();init_dist11();init_dist11();init_dist6();init_typesafe_system_one_lazy();var BKPER_AI_PROVIDER_ID="bkper",BKPER_AI_PRODUCTION_BASE_URL="https://ai.bkper.app/v1",BKPER_AI_BASE_URL_ENV_VAR="BKPER_AI_BASE_URL",BKPER_AI_DEVELOPMENT_ORIGIN="https://ai-dev.bkper.app",THINKING_LEVELS4=["off","minimal","low","medium","high","xhigh","max"],BKPER_AI_CLASSIFIER_API="typesafe-system-one",BKPER_AI_CHAT_API="openai-responses";function isDecisionModel2(model2){return model2.type==="decision"}function isChatModel2(model2){return model2.type===void 0||model2.type==="language"}function invalidBkperAiBaseUrlError(){return new Error(`${BKPER_AI_BASE_URL_ENV_VAR} must be an HTTPS URL on ai-dev.bkper.app without credentials, a custom port, query parameters, or a fragment.`)}function getBkperAiBaseUrlOverride(env3=process.env){let configuredBaseUrl=env3[BKPER_AI_BASE_URL_ENV_VAR];if(configuredBaseUrl===void 0)return;let url;try{url=new URL(configuredBaseUrl)}catch{throw invalidBkperAiBaseUrlError()}if(configuredBaseUrl.trim()!==configuredBaseUrl||url.origin!==BKPER_AI_DEVELOPMENT_ORIGIN||url.username!==""||url.password!==""||url.search!==""||url.hash!=="")throw invalidBkperAiBaseUrlError();let path27=url.pathname.replace(/\/+$/,"");return`${url.origin}${path27}`}function isThinkingLevel(value){return THINKING_LEVELS4.some(level=>level===value)}function getDefaultThinkingLevel(model2){return isThinkingLevel(model2.default_thinking_level)?model2.default_thinking_level:model2.thinking_levels.includes("high")?"high":model2.thinking_levels.find(isThinkingLevel)}function getThinkingLevelMap(levels){let supports=level=>levels.includes(level)?level:null;return{off:levels.includes("none")?"none":null,minimal:supports("minimal"),low:supports("low"),medium:supports("medium"),high:supports("high"),xhigh:supports("xhigh"),max:supports("max")}}function nanoUsdPerTokenToUsdPerMillion(value){return value/1e3}var SYSTEM_ONE_MAX_IMAGE_SIDE=1568;async function fitImage(image){let resized=await resizeImage(Buffer.from(image.data,"base64"),image.mimeType,{maxWidth:SYSTEM_ONE_MAX_IMAGE_SIDE,maxHeight:SYSTEM_ONE_MAX_IMAGE_SIDE});return resized?.wasResized?{...image,data:resized.data,mimeType:resized.mimeType}:image}function withImagesFitted(classifier){return{classify:async(model2,context,options)=>classifier.classify(model2,context.images?.length?{...context,images:await Promise.all(context.images.map(fitImage))}:context,options)}}function getInputModalities(modalities){return modalities?.filter(modality=>modality==="text"||modality==="image")??[]}function toProviderModel(model2,defaultModelId){let input2=getInputModalities(model2.input_modalities);return{id:model2.id,name:model2.name??model2.id,reasoning:model2.thinking_levels.some(level=>level!=="none"),thinkingLevelMap:getThinkingLevelMap(model2.thinking_levels),input:input2,cost:{input:nanoUsdPerTokenToUsdPerMillion(model2.pricing.inputNanoUsdPerToken),output:nanoUsdPerTokenToUsdPerMillion(model2.pricing.outputNanoUsdPerToken),cacheRead:nanoUsdPerTokenToUsdPerMillion(model2.pricing.cachedInputNanoUsdPerToken),cacheWrite:nanoUsdPerTokenToUsdPerMillion(model2.pricing.cacheWriteNanoUsdPerToken)},...getPromptCache(model2.prompt_cache_ttl_seconds),contextWindow:model2.context_window,maxTokens:model2.max_output_tokens,compat:{supportsDeveloperRole:!1,sessionAffinityFormat:"openai",supportsLongCacheRetention:!1,...model2.mid_conversation_system_messages===!0?{supportsMidConvoSystemMessages:!0}:{}},bkperDefault:model2.id===defaultModelId,bkperDefaultThinkingLevel:getDefaultThinkingLevel(model2)}}function toClassifierModel(model2){return{type:"classifier",id:model2.id,name:model2.name??model2.id,api:BKPER_AI_CLASSIFIER_API,input:getInputModalities(model2.input_modalities??["text"]),cost:{input:nanoUsdPerTokenToUsdPerMillion(model2.pricing.inputNanoUsdPerToken),output:nanoUsdPerTokenToUsdPerMillion(model2.pricing.outputNanoUsdPerToken),cacheRead:0,cacheWrite:0},contextWindow:model2.context_window}}function getPromptCache(ttlSeconds){return typeof ttlSeconds=="number"&&Number.isFinite(ttlSeconds)&&ttlSeconds>0?{promptCache:{short:ttlSeconds}}:{}}async function fetchBkperAiModels(baseUrl,fetchFn,signal){let url=`${baseUrl}/models`,response=await fetchFn(url,{signal}),contentType2=response.headers.get("content-type")??"unknown content type",responseInfo=`${url} (HTTP ${response.status}, ${contentType2})`;if(!response.ok)throw new Error(`Bkper AI model request failed: ${responseInfo}.`);let catalog;try{catalog=await response.json()}catch{throw new Error(`Expected JSON Bkper AI model response from ${responseInfo}.`)}if(!Array.isArray(catalog.data))throw new Error("Bkper AI model response is invalid.");let classifierModels=catalog.data.filter(isDecisionModel2).map(toClassifierModel),chatModels=catalog.data.filter(isChatModel2).filter(model2=>model2.input_modalities?.includes("image")),defaultModelId=chatModels.find(model2=>model2.id===catalog.default_model)?.id??chatModels[0]?.id;return[...chatModels.map(model2=>toProviderModel(model2,defaultModelId)),...classifierModels]}function toStoredModel(model2,baseUrl){return model2.type==="classifier"?{...model2,api:model2.api??BKPER_AI_CLASSIFIER_API,provider:BKPER_AI_PROVIDER_ID,baseUrl}:{...model2,api:model2.api??BKPER_AI_CHAT_API,provider:BKPER_AI_PROVIDER_ID,baseUrl}}function fromStoredModel(model2){if(model2.type==="classifier"){let{provider:_provider2,baseUrl:_baseUrl2,...config2}=model2;return config2}if(model2.type==="image")return;let{provider:_provider,baseUrl:_baseUrl,api:_api,...config}=model2;return config}function getSavedModels(context,baseUrl){let models=context.stored?.models??[];if(!(models.length===0||models.some(model2=>model2.baseUrl!==baseUrl)))return models.flatMap(model2=>fromStoredModel(model2)??[])}async function refreshBkperAiModels(baseUrl,fetchFn,context){let savedModels=getSavedModels(context,baseUrl);if(!context.allowNetwork&&savedModels)return savedModels;let models=await fetchBkperAiModels(baseUrl,fetchFn,context.signal);return await context.publish({persist:{models:models.map(model2=>toStoredModel(model2,baseUrl)),checkedAt:Date.now()}}),models}function findDefaultBkperAiModel(models){return models.find(model2=>model2.provider===BKPER_AI_PROVIDER_ID&&model2.bkperDefault===!0)??models.find(model2=>model2.provider===BKPER_AI_PROVIDER_ID)}function getBkperAiDefaultThinkingLevel(model2){return model2?.provider===BKPER_AI_PROVIDER_ID?model2.bkperDefaultThinkingLevel:void 0}function getBkperAiProviderConfig(env3=process.env,fetchFn=fetch){let baseUrl=getBkperAiBaseUrlOverride(env3)??BKPER_AI_PRODUCTION_BASE_URL;return{name:"Bkper AI",baseUrl,apiKey:"!bkper auth token",authHeader:!0,headers:{"bkper-ai-source":"bkper-cli","User-Agent":"bkper-cli"},api:BKPER_AI_CHAT_API,classifiers:{[BKPER_AI_CLASSIFIER_API]:withImagesFitted(typesafeSystemOneApi())},models:[],refreshModels:context=>refreshBkperAiModels(baseUrl,fetchFn,context)}}function registerBkperAiProvider(pi,env3=process.env){pi.registerProvider(BKPER_AI_PROVIDER_ID,getBkperAiProviderConfig(env3))}init_dist11();import{join as join50}from"node:path";init_dist11();import{accessSync as accessSync4,constants as constants10,existsSync as existsSync29,readFileSync as readFileSync25,realpathSync as realpathSync3}from"fs";import path20 from"path";var PACKAGE_DIR=BKPER_PACKAGE_DIR,VERSION5=JSON.parse(readFileSync25(path20.join(PACKAGE_DIR,"package.json"),"utf8")).version;function readInstalledVersion(packageJsonPath){try{let data=JSON.parse(readFileSync25(packageJsonPath,"utf8"));return typeof data.version=="string"?data.version:void 0}catch{return}}function isNewerVersion(current,latest){let parse3=v2=>v2.split(".").map(Number),[cMajor,cMinor,cPatch]=parse3(current),[lMajor,lMinor,lPatch]=parse3(latest);return lMajor!==cMajor?lMajor>cMajor:lMinor!==cMinor?lMinor>cMinor:lPatch>cPatch}import{spawn as spawn15}from"child_process";import{createHash as createHash4}from"crypto";import{closeSync as closeSync2,mkdirSync as mkdirSync18,openSync as openSync2,readFileSync as readFileSync26,renameSync as renameSync6,statSync as statSync13,unlinkSync as unlinkSync3,writeFileSync as writeFileSync16}from"fs";import path22 from"path";import{fileURLToPath as fileURLToPath7}from"url";import path21 from"path";import os9 from"os";var BKPER_CONFIG_DIR=path21.join(os9.homedir(),".config","bkper"),BKPER_BIN_DIR=path21.join(BKPER_CONFIG_DIR,"bin"),DEFAULT_CLOUDFLARED_BIN=path21.join(BKPER_BIN_DIR,process.platform==="win32"?"cloudflared.exe":"cloudflared"),bin=process.env.CLOUDFLARED_BIN||DEFAULT_CLOUDFLARED_BIN;var CHECK_INTERVAL_MS=1440*60*1e3,AGENT_CHECK_INTERVAL_MS=300*1e3;var STALE_LOCK_MS=5e3;function getUpdateCachePath(packageDir=PACKAGE_DIR,configDir2=BKPER_CONFIG_DIR){let key=createHash4("sha256").update(packageDir).digest("hex").slice(0,16);return path22.join(configDir2,"update-check",`${key}.json`)}function isUpdateCheckDisabled(env3=process.env){if(env3.BKPER_DISABLE_AUTOUPDATE)return!0;let ci=env3.CI?.trim().toLowerCase();return!!ci&&ci!=="0"&&ci!=="false"}function readUpdateState(cachePath=getUpdateCachePath()){try{let data=JSON.parse(readFileSync26(cachePath,"utf8"));if(typeof data!="object"||data===null||Array.isArray(data))return{};let record=data,state3={};typeof record.lastAttemptedAt=="number"&&(state3.lastAttemptedAt=record.lastAttemptedAt),typeof record.latestVersion=="string"&&(state3.latestVersion=record.latestVersion);let install2=record.install;return install2&&typeof install2.version=="string"&&(install2.status==="installed"||install2.status==="manual"||install2.status==="failed")&&(state3.install={version:install2.version,status:install2.status},typeof install2.instruction=="string"&&(state3.install.instruction=install2.instruction)),state3}catch{return{}}}function writeUpdateState(state3,cachePath=getUpdateCachePath()){let tempPath=`${cachePath}.${process.pid}.tmp`;try{return mkdirSync18(path22.dirname(cachePath),{recursive:!0}),writeFileSync16(tempPath,`${JSON.stringify(state3)}
2282
2282
  `,{encoding:"utf8",mode:384}),renameSync6(tempPath,cachePath),!0}catch{try{unlinkSync3(tempPath)}catch{}return!1}}function withLock(cachePath,fn){let lockPath=`${cachePath}.lock`,fd;try{mkdirSync18(path22.dirname(cachePath),{recursive:!0});try{fd=openSync2(lockPath,"wx",384)}catch{if(Date.now()-statSync13(lockPath).mtimeMs<=STALE_LOCK_MS)return;unlinkSync3(lockPath),fd=openSync2(lockPath,"wx",384)}return fn()}catch{return}finally{if(fd!==void 0)try{closeSync2(fd),unlinkSync3(lockPath)}catch{}}}function spawnUpdateWorker(){let isTypeScript=import.meta.url.endsWith(".ts"),workerPath=fileURLToPath7(new URL(isTypeScript?"./update-worker.ts":"./update-worker.js",import.meta.url)),args=isTypeScript?[...process.execArgv,workerPath]:[workerPath];spawn15(process.execPath,args,{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}function maybeStartUpdateCheck(options={}){let cachePath=options.cachePath??getUpdateCachePath(),now=options.now??Date.now(),intervalMs=options.intervalMs??CHECK_INTERVAL_MS;if(isUpdateCheckDisabled(options.env??process.env)||!withLock(cachePath,()=>{let state3=readUpdateState(cachePath);return state3.lastAttemptedAt!==void 0&&now-state3.lastAttemptedAt<intervalMs?!1:writeUpdateState({...state3,lastAttemptedAt:now},cachePath)}))return!1;try{return(options.spawnWorker??spawnUpdateWorker)(),!0}catch{return!1}}function getUpdateNotice(state3,currentVersion=VERSION5,installedVersion=readInstalledVersion(path22.join(PACKAGE_DIR,"package.json"))){if(installedVersion&&isNewerVersion(currentVersion,installedVersion))return{kind:"installed",current:currentVersion,latest:installedVersion};let latest=state3.latestVersion;if(!latest||!isNewerVersion(currentVersion,latest))return;let install2=state3.install;if(!(!install2||install2.version!==latest))return install2.status==="installed"?{kind:"installed",current:currentVersion,latest}:{kind:"manual",current:currentVersion,latest,instruction:install2.instruction??"Run: bkper upgrade"}}function formatUpdateNotice(notice){return notice.kind==="installed"?`bkper ${notice.latest} installed (current ${notice.current}). Restart to use it.`:`bkper ${notice.latest} available (current ${notice.current}). ${notice.instruction}`}function startAgentUpdateCheck(options={}){return maybeStartUpdateCheck({...options,intervalMs:AGENT_CHECK_INTERVAL_MS})}function createDefaultDependencies(){return{readNotice:()=>getUpdateNotice(readUpdateState()),startUpdateCheck:()=>startAgentUpdateCheck()}}async function runStartupMaintenance(callbacks,dependencies=createDefaultDependencies()){if(!isUpdateCheckDisabled())try{let notice=dependencies.readNotice();notice&&callbacks.notify(formatUpdateNotice(notice),notice.kind==="installed"?"info":"warning"),dependencies.startUpdateCheck()}catch{}}init_dist11();import{spawn as spawn16}from"node:child_process";var import_google_auth_library2=__toESM(require_src5(),1);import fs15 from"fs";import os10 from"os";var DEVICE_AUTH_MARKER=["GO","CS","PX","-y","7Fw","gD","6p","fif","6_","rgJ","b3","yA","0-","d0","-Q","Ap"].join(""),OAUTH_CONFIG={clientId:"927657669669-3c5hmibuv6gve8135u2lrorrmj2rd6vd.apps.googleusercontent.com",clientSecret:DEVICE_AUTH_MARKER,scope:"https://www.googleapis.com/auth/userinfo.email",deviceCodeEndpoint:"https://oauth2.googleapis.com/device/code",tokenEndpoint:"https://oauth2.googleapis.com/token"},DEVICE_CODE_GRANT_TYPE="urn:ietf:params:oauth:grant-type:device_code",DEFAULT_DEVICE_POLL_INTERVAL_SECONDS=5,SLOW_DOWN_INCREMENT_MS=5e3,storedCredentials,oldCredentialsPath=`${os10.homedir()}/.bkper-credentials.json`,configDir=`${os10.homedir()}/.config/bkper`,storedCredentialsPath=`${configDir}/.bkper-credentials.json`;if(!fs15.existsSync(storedCredentialsPath)&&fs15.existsSync(oldCredentialsPath))try{fs15.mkdirSync(configDir,{recursive:!0});let oldCredentials=fs15.readFileSync(oldCredentialsPath,"utf8");fs15.writeFileSync(storedCredentialsPath,oldCredentials,"utf8"),fs15.rmSync(oldCredentialsPath)}catch{}try{let credentialsJson=fs15.readFileSync(storedCredentialsPath,"utf8");storedCredentials=JSON.parse(credentialsJson)}catch{}async function logoutBkper(){let tokenToRevoke=storedCredentials?.refresh_token??storedCredentials?.access_token;try{if(tokenToRevoke)return await createOAuthClient().revokeToken(tokenToRevoke),clearCredentials(),{remoteAccessRevoked:!0}}catch(err){return clearCredentials(),{remoteAccessRevoked:!1,warning:`Remote token revocation failed: ${err instanceof Error?err.message:String(err)}`}}return clearCredentials(),{remoteAccessRevoked:!1}}function isLoggedIn(){return storedCredentials!=null}function createOAuthClient(){return new import_google_auth_library2.OAuth2Client({clientId:OAUTH_CONFIG.clientId,clientSecret:OAUTH_CONFIG.clientSecret})}function mergeCredentials(base,updates){let merged={...base??{}},mergedRecord=merged;for(let[key,value]of Object.entries(updates))value!==void 0&&(mergedRecord[key]=value);return merged}function registerCredentialPersistence(localAuth){localAuth.on("tokens",tokens=>{storeCredentials(mergeCredentials(storedCredentials,tokens))})}function isRecord6(value){return typeof value=="object"&&value!==null}async function postOAuthForm(url,params,signal){let body=new URLSearchParams;for(let[key,value]of Object.entries(params))body.set(key,value);let response=await fetch(url,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body,signal}),contentType2=response.headers.get("content-type")??"unknown content type",responseInfo=`${url} (HTTP ${response.status}, ${contentType2})`,parsed;try{parsed=await response.json()}catch{throw new Error(`Expected JSON OAuth response from ${responseInfo}.`)}if(!isRecord6(parsed))throw new Error(`Unexpected OAuth response from ${responseInfo}.`);return{ok:response.ok,body:parsed}}function getOAuthErrorCode(body){let error=body.error;if(typeof error=="string")return error;let errorCode=body.error_code;if(typeof errorCode=="string")return errorCode}function formatOAuthError(prefix,body){let error=getOAuthErrorCode(body),description=body.error_description;return error&&typeof description=="string"?`${prefix}: ${error} - ${description}`:error?`${prefix}: ${error}`:prefix}function requireString(body,key,context){let value=body[key];if(typeof value!="string"||value.length===0)throw new Error(`Invalid ${context}: missing ${key}`);return value}function requireNumber(body,key,context){let value=body[key];if(typeof value!="number"||!Number.isFinite(value))throw new Error(`Invalid ${context}: missing ${key}`);return value}function optionalString3(body,key){let value=body[key];return typeof value=="string"?value:void 0}function parseDeviceCodeResponse(body){let intervalValue=body.interval,interval=typeof intervalValue=="number"&&Number.isFinite(intervalValue)?intervalValue:DEFAULT_DEVICE_POLL_INTERVAL_SECONDS;return{deviceCode:requireString(body,"device_code","device authorization response"),userCode:requireString(body,"user_code","device authorization response"),verificationUrl:requireString(body,"verification_url","device authorization response"),expiresIn:requireNumber(body,"expires_in","device authorization response"),interval}}function parseTokenResponse2(body){let accessToken=requireString(body,"access_token","device token response"),expiresIn=body.expires_in,credentials={access_token:accessToken},refreshToken=optionalString3(body,"refresh_token");refreshToken&&(credentials.refresh_token=refreshToken);let scope=optionalString3(body,"scope");scope&&(credentials.scope=scope);let tokenType=optionalString3(body,"token_type");tokenType&&(credentials.token_type=tokenType);let idToken=optionalString3(body,"id_token");return idToken&&(credentials.id_token=idToken),typeof expiresIn=="number"&&Number.isFinite(expiresIn)&&(credentials.expiry_date=Date.now()+expiresIn*1e3),credentials}async function requestDeviceCode(signal){let result=await postOAuthForm(OAUTH_CONFIG.deviceCodeEndpoint,{client_id:OAUTH_CONFIG.clientId,scope:OAUTH_CONFIG.scope},signal);if(!result.ok)throw new Error(formatOAuthError("Failed to request OAuth device code",result.body));return parseDeviceCodeResponse(result.body)}function printDeviceAuthorizationInstructions(deviceCode){console.log(`
2283
2283
  To authenticate Bkper CLI:
2284
2284
  1. Open this URL: ${deviceCode.verificationUrl}
@@ -1,4 +1,4 @@
1
- import type { ExtensionAPI, ProviderConfig } from '@earendil-works/pi-coding-agent';
1
+ import { type ExtensionAPI, type ProviderConfig } from '@earendil-works/pi-coding-agent';
2
2
  export declare const BKPER_AI_PROVIDER_ID = "bkper";
3
3
  export declare const BKPER_AI_PRODUCTION_BASE_URL = "https://ai.bkper.app/v1";
4
4
  declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
@@ -1 +1 @@
1
- {"version":3,"file":"bkper-ai-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EAEjB,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAItE,QAAA,MAAM,eAAe,sEAAuE,CAAC;AAI7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;AAwED,wBAAgB,yBAAyB,CACrC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,MAAM,GAAG,SAAS,CA0BpB;AAgND,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,oBAAoB,EACvE,MAAM,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,oBAAoB,GAAG,SAAS,GACxC,oBAAoB,GAAG,SAAS,CAIlC;AAED,wBAAgB,wBAAwB,CACpC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,OAAO,GAAE,OAAO,KAAa,GAC9B,cAAc,CAkBhB;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,IAAI,CAEN"}
1
+ {"version":3,"file":"bkper-ai-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,KAAK,YAAY,EACjB,KAAK,cAAc,EAEtB,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAItE,QAAA,MAAM,eAAe,sEAAuE,CAAC;AAI7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;AAwED,wBAAgB,yBAAyB,CACrC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,MAAM,GAAG,SAAS,CA0BpB;AA6OD,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,oBAAoB,EACvE,MAAM,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,oBAAoB,GAAG,SAAS,GACxC,oBAAoB,GAAG,SAAS,CAIlC;AAED,wBAAgB,wBAAwB,CACpC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,OAAO,GAAE,OAAO,KAAa,GAC9B,cAAc,CAkBhB;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,IAAI,CAEN"}
@@ -18,6 +18,7 @@ var __rest = (this && this.__rest) || function (s, e) {
18
18
  }
19
19
  return t;
20
20
  };
21
+ import { resizeImage, } from '@earendil-works/pi-coding-agent';
21
22
  import { typesafeSystemOneApi } from '../pi-shared-modules.js';
22
23
  export const BKPER_AI_PROVIDER_ID = 'bkper';
23
24
  export const BKPER_AI_PRODUCTION_BASE_URL = 'https://ai.bkper.app/v1';
@@ -86,6 +87,31 @@ function getThinkingLevelMap(levels) {
86
87
  function nanoUsdPerTokenToUsdPerMillion(value) {
87
88
  return value / 1000;
88
89
  }
90
+ /** TypeSafe rejects images with a side over this many pixels instead of resizing them. */
91
+ const SYSTEM_ONE_MAX_IMAGE_SIDE = 1568;
92
+ /**
93
+ * Shrinks an image to TypeSafe's limit with Pi's resizer. Pi resizes only chat images,
94
+ * up to 2000 pixels, so `read` results are often too large for a classifier.
95
+ * Images that fit, or that cannot be read, pass unchanged for the gateway to judge.
96
+ */
97
+ function fitImage(image) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ const resized = yield resizeImage(Buffer.from(image.data, 'base64'), image.mimeType, {
100
+ maxWidth: SYSTEM_ONE_MAX_IMAGE_SIDE,
101
+ maxHeight: SYSTEM_ONE_MAX_IMAGE_SIDE,
102
+ });
103
+ return (resized === null || resized === void 0 ? void 0 : resized.wasResized) ? Object.assign(Object.assign({}, image), { data: resized.data, mimeType: resized.mimeType }) : image;
104
+ });
105
+ }
106
+ function withImagesFitted(classifier) {
107
+ return {
108
+ classify: (model, context, options) => __awaiter(this, void 0, void 0, function* () {
109
+ var _a;
110
+ return classifier.classify(model, ((_a = context.images) === null || _a === void 0 ? void 0 : _a.length)
111
+ ? Object.assign(Object.assign({}, context), { images: yield Promise.all(context.images.map(fitImage)) }) : context, options);
112
+ }),
113
+ };
114
+ }
89
115
  /** The catalog modalities Pi understands; others are dropped. */
90
116
  function getInputModalities(modalities) {
91
117
  var _a;
@@ -233,7 +259,7 @@ export function getBkperAiProviderConfig(env = process.env, fetchFn = fetch) {
233
259
  'User-Agent': 'bkper-cli',
234
260
  },
235
261
  api: BKPER_AI_CHAT_API,
236
- classifiers: { [BKPER_AI_CLASSIFIER_API]: typesafeSystemOneApi() },
262
+ classifiers: { [BKPER_AI_CLASSIFIER_API]: withImagesFitted(typesafeSystemOneApi()) },
237
263
  // Every model type arrives through refreshModels, so the static list stays empty.
238
264
  models: [],
239
265
  refreshModels: context => refreshBkperAiModels(baseUrl, fetchFn, context),
@@ -1 +1 @@
1
- {"version":3,"file":"bkper-ai-provider.js","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bkper-ai-provider.js","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bkper",
3
- "version": "5.7.0",
3
+ "version": "5.7.1",
4
4
  "description": "Official Bkper CLI for accounting data, automation, apps, and AI agents",
5
5
  "bin": {
6
6
  "bkper": "lib/cli.js"