mu-agent 0.2.8 → 0.2.10

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.
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{AgentSession,AgentSessionRuntime,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FileModelsStore,FooterComponent,InteractiveMode,LoginDialogComponent,MCP_CONNECTION_EVENT,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,SkillInvocationMessageComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VIRTUAL_MODEL_STATE_ENTRY,applyHttpProxySettings,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,configureHttpDispatcher,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defaultModelPerProvider,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getLastAssistantUsage,getLatestCompactionEntry,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,setupCli,shouldCompact,stdioRpcTransport,stripFrontmatter,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools}from"./chunk-SJA6GZQX.js";import{DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,formatReadLineRange,formatSize,truncateHead,truncateLine,truncateTail,truncateToVisualLines}from"./chunk-DYTENXHX.js";import{ArminComponent}from"./chunk-FLHKNMLQ.js";import{Container,SelectList,Theme,getAvailableThemes,getLanguageFromPath,getMarkdownTheme,getSelectListTheme,getSettingsListTheme,highlightCode,initTheme,keyHint,keyText,rawKeyHint}from"./chunk-LT2C56HV.js";import{ProjectTrustStore,hasTrustRequiringProjectResources,loadMcpConfig}from"./chunk-6Z2347ML.js";import{readStoredCredential}from"./chunk-MF3VB62R.js";import{getPowerShellConfig,getShellConfig}from"./chunk-URBBMV3M.js";import{CONFIG_DIR_NAME,VERSION,getAgentDir,getDocsPath,getExamplesPath,getPackageDir,getReadmePath}from"./chunk-LHRPMXVI.js";import{__export}from"./chunk-JXWJOIH4.js";var dist_exports={};__export(dist_exports,{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_BYTES,DEFAULT_MAX_LINES:()=>DEFAULT_MAX_LINES,DefaultPackageManager:()=>DefaultPackageManager,DefaultResourceLoader:()=>DefaultResourceLoader,DynamicBorder:()=>DynamicBorder,ExtensionEditorComponent:()=>ExtensionEditorComponent,ExtensionInputComponent:()=>ExtensionInputComponent,ExtensionRunner:()=>ExtensionRunner,ExtensionSelectorComponent:()=>ExtensionSelectorComponent,FileModelsStore:()=>FileModelsStore,FooterComponent:()=>FooterComponent,InteractiveMode:()=>InteractiveMode,LoginDialogComponent:()=>LoginDialogComponent,MCP_CONNECTION_EVENT:()=>MCP_CONNECTION_EVENT,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,applyHttpProxySettings:()=>applyHttpProxySettings,buildContextEntries:()=>buildContextEntries,buildSessionContext:()=>buildSessionContext,buildSessionProjection:()=>buildSessionProjection,calculateContextTokens:()=>calculateContextTokens,collectEntriesForBranchSummary:()=>collectEntriesForBranchSummary,compact:()=>compact,configureHttpDispatcher:()=>configureHttpDispatcher,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,defaultModelPerProvider:()=>defaultModelPerProvider,defineTool:()=>defineTool,detectSupportedImageMimeTypeFromFile:()=>detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions:()=>discoverAndLoadExtensions,estimateTokens:()=>estimateTokens,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,loadMcpConfig:()=>loadMcpConfig,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,setupCli:()=>setupCli,shouldCompact:()=>shouldCompact,stdioRpcTransport:()=>stdioRpcTransport,stripFrontmatter:()=>stripFrontmatter,truncateHead:()=>truncateHead,truncateLine:()=>truncateLine,truncateTail:()=>truncateTail,truncateToVisualLines:()=>truncateToVisualLines,withFileMutationQueue:()=>withFileMutationQueue,wrapRegisteredTool:()=>wrapRegisteredTool,wrapRegisteredTools:()=>wrapRegisteredTools});var 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={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ThemeSelectorComponent=class extends Container{selectList;onPreview;constructor(currentTheme,onSelect,onCancel,onPreview){super(),this.onPreview=onPreview;let themes=getAvailableThemes(),themeItems=themes.map(name=>({value:name,label:name,description:name===currentTheme?"(current)":void 0}));this.addChild(new DynamicBorder),this.selectList=new SelectList(themeItems,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}};export{ShowImagesSelectorComponent,ThemeSelectorComponent,dist_exports};
2
+ import{AgentSession,AgentSessionRuntime,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FileModelsStore,FooterComponent,InteractiveMode,LoginDialogComponent,MCP_CONNECTION_EVENT,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,SkillInvocationMessageComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VIRTUAL_MODEL_STATE_ENTRY,applyHttpProxySettings,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,configureHttpDispatcher,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defaultModelPerProvider,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getLastAssistantUsage,getLatestCompactionEntry,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,setupCli,shouldCompact,stdioRpcTransport,stripFrontmatter,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools}from"./chunk-6UUEQH6U.js";import{DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,formatReadLineRange,formatSize,truncateHead,truncateLine,truncateTail,truncateToVisualLines}from"./chunk-DYTENXHX.js";import{ArminComponent}from"./chunk-FLHKNMLQ.js";import{Container,SelectList,Theme,getAvailableThemes,getLanguageFromPath,getMarkdownTheme,getSelectListTheme,getSettingsListTheme,highlightCode,initTheme,keyHint,keyText,rawKeyHint}from"./chunk-LT2C56HV.js";import{ProjectTrustStore,hasTrustRequiringProjectResources,loadMcpConfig}from"./chunk-6Z2347ML.js";import{readStoredCredential}from"./chunk-MF3VB62R.js";import{getPowerShellConfig,getShellConfig}from"./chunk-URBBMV3M.js";import{CONFIG_DIR_NAME,VERSION,getAgentDir,getDocsPath,getExamplesPath,getPackageDir,getReadmePath}from"./chunk-LHRPMXVI.js";import{__export}from"./chunk-JXWJOIH4.js";var dist_exports={};__export(dist_exports,{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_BYTES,DEFAULT_MAX_LINES:()=>DEFAULT_MAX_LINES,DefaultPackageManager:()=>DefaultPackageManager,DefaultResourceLoader:()=>DefaultResourceLoader,DynamicBorder:()=>DynamicBorder,ExtensionEditorComponent:()=>ExtensionEditorComponent,ExtensionInputComponent:()=>ExtensionInputComponent,ExtensionRunner:()=>ExtensionRunner,ExtensionSelectorComponent:()=>ExtensionSelectorComponent,FileModelsStore:()=>FileModelsStore,FooterComponent:()=>FooterComponent,InteractiveMode:()=>InteractiveMode,LoginDialogComponent:()=>LoginDialogComponent,MCP_CONNECTION_EVENT:()=>MCP_CONNECTION_EVENT,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,applyHttpProxySettings:()=>applyHttpProxySettings,buildContextEntries:()=>buildContextEntries,buildSessionContext:()=>buildSessionContext,buildSessionProjection:()=>buildSessionProjection,calculateContextTokens:()=>calculateContextTokens,collectEntriesForBranchSummary:()=>collectEntriesForBranchSummary,compact:()=>compact,configureHttpDispatcher:()=>configureHttpDispatcher,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,defaultModelPerProvider:()=>defaultModelPerProvider,defineTool:()=>defineTool,detectSupportedImageMimeTypeFromFile:()=>detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions:()=>discoverAndLoadExtensions,estimateTokens:()=>estimateTokens,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,loadMcpConfig:()=>loadMcpConfig,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,setupCli:()=>setupCli,shouldCompact:()=>shouldCompact,stdioRpcTransport:()=>stdioRpcTransport,stripFrontmatter:()=>stripFrontmatter,truncateHead:()=>truncateHead,truncateLine:()=>truncateLine,truncateTail:()=>truncateTail,truncateToVisualLines:()=>truncateToVisualLines,withFileMutationQueue:()=>withFileMutationQueue,wrapRegisteredTool:()=>wrapRegisteredTool,wrapRegisteredTools:()=>wrapRegisteredTools});var 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={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ThemeSelectorComponent=class extends Container{selectList;onPreview;constructor(currentTheme,onSelect,onCancel,onPreview){super(),this.onPreview=onPreview;let themes=getAvailableThemes(),themeItems=themes.map(name=>({value:name,label:name,description:name===currentTheme?"(current)":void 0}));this.addChild(new DynamicBorder),this.selectList=new SelectList(themeItems,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}};export{ShowImagesSelectorComponent,ThemeSelectorComponent,dist_exports};
@@ -4,6 +4,6 @@ ${rawMetadata}`),stream2.push({type:"error",reason:output.stopReason,error:outpu
4
4
 
5
5
  `);assistantMsg.content=[{type:"text",text:thinkingText},...assistantTextParts]}else if(assistantText.length>0&&(assistantMsg.content=assistantText),!preservedReasoningDetails){let signature=nonEmptyThinkingBlocks[0].thinkingSignature;model.provider==="opencode-go"&&signature==="reasoning"&&(signature="reasoning_content"),signature&&isOpenAICompletionsReasoningField(signature)&&(assistantMsg[signature]=nonEmptyThinkingBlocks.map(block=>block.thinking).join(`
6
6
  `))}}else assistantText.length>0&&(assistantMsg.content=assistantText);toolCalls.length>0&&(assistantMsg.tool_calls=toolCalls.map(tc=>{let customInputProperty=options?.grammarToolInputProperties?.get(tc.name);return customInputProperty!==void 0?{id:tc.id,type:"custom",custom:{name:tc.name,input:sanitizeSurrogates(getGrammarToolInput(tc.name,tc.arguments,customInputProperty))}}:{id:tc.id,type:"function",function:{name:tc.name,arguments:JSON.stringify(tc.arguments)}}})),preservedReasoningDetails&&(assistantMsg.reasoning_details=preservedReasoningDetails),compat.requiresReasoningContentOnAssistantMessages&&model.reasoning&&assistantMsg.reasoning_content===void 0&&(assistantMsg.reasoning_content="");let content=assistantMsg.content;if(!(content!=null&&content.length>0)&&!assistantMsg.tool_calls)continue;params.push(assistantMsg)}else if(msg.role==="toolResult"){let imageBlocks=[],j=i;for(;j<transformedMessages.length&&transformedMessages[j].role==="toolResult";j++){let toolMsg=transformedMessages[j],textResult=toolMsg.content.filter(isTextContentBlock).map(block=>block.text).join(`
7
- `),hasImages=toolMsg.content.some(c=>c.type==="image"),toolResultText=textResult.trim().length>0?textResult:hasImages?"(see attached image)":"(no tool output)",toolResultMsg={role:"tool",content:sanitizeSurrogates(toolResultText),tool_call_id:toolMsg.toolCallId};if(compat.requiresToolResultName&&toolMsg.toolName&&(toolResultMsg.name=toolMsg.toolName),params.push(toolResultMsg),hasImages&&model.input.includes("image"))for(let block of toolMsg.content)isImageContentBlock(block)&&imageBlocks.push({type:"image_url",image_url:{url:`data:${block.mimeType};base64,${block.data}`}})}i=j-1,imageBlocks.length>0?(compat.requiresAssistantAfterToolResult&&params.push({role:"assistant",content:"I have processed the tool results."}),params.push({role:"user",content:[{type:"text",text:"Attached image(s) from tool result:"},...imageBlocks]}),lastRole="user"):lastRole="toolResult";continue}lastRole=msg.role}return params}function convertTools(tools,compat){return tools.map(tool=>{let grammar=resolveGrammarConstrainedSampling(tool,compat.supportsOpenAIGrammarTools);if(grammar)return{type:"custom",custom:{name:tool.name,description:tool.description,format:{type:"grammar",grammar:{syntax:grammar.format,definition:grammar.definition}}}};let strict=resolveJsonSchemaStrictSampling(tool,compat.supportsStrictMode!==!1);return{type:"function",function:{name:tool.name,description:tool.description,parameters:getJsonSchemaToolParameters(tool,strict),...compat.supportsStrictMode!==!1&&{strict:strict??!1}}}})}function parseChunkUsage(rawUsage,model){let promptTokens=rawUsage.prompt_tokens||0,cacheReadTokens=rawUsage.prompt_tokens_details?.cached_tokens??rawUsage.prompt_cache_hit_tokens??rawUsage.cached_tokens??0,cacheWriteTokens=rawUsage.prompt_tokens_details?.cache_write_tokens||0,input=Math.max(0,promptTokens-cacheReadTokens-cacheWriteTokens),outputTokens=rawUsage.completion_tokens||0,usage={input,output:outputTokens,cacheRead:cacheReadTokens,cacheWrite:cacheWriteTokens,reasoning:rawUsage.completion_tokens_details?.reasoning_tokens||0,totalTokens:input+outputTokens+cacheReadTokens+cacheWriteTokens,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return calculateCost(model,usage),usage}function mapStopReason(reason){if(reason===null)return{stopReason:"stop"};switch(reason){case"stop":case"end":return{stopReason:"stop"};case"length":return{stopReason:"length"};case"function_call":case"tool_calls":return{stopReason:"toolUse"};case"content_filter":return{stopReason:"error",errorMessage:"Provider finish_reason: content_filter"};case"network_error":return{stopReason:"error",errorMessage:"Provider finish_reason: network_error"};default:return{stopReason:"error",errorMessage:`Provider finish_reason: ${reason}`}}}function getHostname(baseUrl){try{return new URL(baseUrl).hostname.toLowerCase()}catch{return}}function isHostOrSubdomain(hostname,domain){return hostname===domain||hostname?.endsWith(`.${domain}`)===!0}function detectCompat(model){let provider=model.provider,baseUrl=model.baseUrl,hostname=getHostname(baseUrl),isOpenAIApi=hostname==="api.openai.com",isAzureOpenAI=isHostOrSubdomain(hostname,"openai.azure.com")||isHostOrSubdomain(hostname,"cognitiveservices.azure.com"),isXiaomi=isHostOrSubdomain(hostname,"xiaomimimo.com"),takesOpenAIRequestShape=isOpenAIApi||isAzureOpenAI||isXiaomi,isZai=provider==="zai"||provider==="zai-coding-cn"||baseUrl.includes("api.z.ai")||baseUrl.includes("open.bigmodel.cn"),isTogether=provider==="together"||baseUrl.includes("api.together.ai")||baseUrl.includes("api.together.xyz"),isMoonshot=provider==="moonshotai"||provider==="moonshotai-cn"||baseUrl.includes("api.moonshot."),isOpenRouter=provider==="openrouter"||baseUrl.includes("openrouter.ai"),isCloudflareWorkersAI=provider==="cloudflare-workers-ai"||baseUrl.includes("api.cloudflare.com"),isCloudflareAiGateway=provider==="cloudflare-ai-gateway"||baseUrl.includes("gateway.ai.cloudflare.com"),isNvidia=provider==="nvidia"||baseUrl.includes("integrate.api.nvidia.com"),isAntLing=provider==="ant-ling"||baseUrl.includes("api.ant-ling.com"),isDeepSeek=provider==="deepseek"||baseUrl.toLowerCase().includes("deepseek.com"),isGrok=provider==="xai"||baseUrl.includes("api.x.ai"),isOpenRouterDeveloperRoleModel=isOpenRouter&&(model.id.startsWith("anthropic/")||model.id.startsWith("openai/")),cacheControlFormat=provider==="openrouter"&&model.id.startsWith("anthropic/")?"anthropic":void 0;return{supportsStore:isOpenAIApi||isAzureOpenAI,supportsDeveloperRole:takesOpenAIRequestShape||isOpenRouterDeveloperRoleModel,supportsReasoningEffort:!isGrok&&!isZai&&!isMoonshot&&!isTogether&&!isCloudflareAiGateway&&!isNvidia&&!isAntLing,supportsUsageInStreaming:!0,supportsFinishReason:!0,maxTokensField:takesOpenAIRequestShape?"max_completion_tokens":"max_tokens",requiresToolResultName:!1,requiresAssistantAfterToolResult:!1,requiresThinkingAsText:!1,requiresReasoningContentOnAssistantMessages:isDeepSeek,thinkingFormat:isDeepSeek?"deepseek":isZai?"zai":isTogether?"together":isAntLing?"ant-ling":isOpenRouter?"openrouter":"openai",openRouterRouting:{},vercelGatewayRouting:{},chatTemplateKwargs:{},chatTemplateArgs:{},zaiToolStream:!1,supportsThinkingTokenBudget:!1,thinkingTokenBudgetField:void 0,supportsStrictMode:!1,supportsOpenAIGrammarTools:!1,supportsMidConvoSystemMessages:!1,supportsMidConvoToolAdditions:!1,cacheControlFormat,sendSessionAffinityHeaders:isOpenRouter,sessionAffinityFormat:isOpenRouter?"openrouter":"openai",supportsLongCacheRetention:!(isTogether||isCloudflareWorkersAI||isCloudflareAiGateway||isNvidia||isAntLing)}}function getCompat(model){let configured=getConfiguredCompat(model),learned=learnedCompat.get(getLearnedCompatKey(model));return learned?{...configured,...learned}:configured}function getConfiguredCompat(model){let detected=detectCompat(model);return model.compat?{supportsStore:model.compat.supportsStore??detected.supportsStore,supportsDeveloperRole:model.compat.supportsDeveloperRole??detected.supportsDeveloperRole,supportsReasoningEffort:model.compat.supportsReasoningEffort??detected.supportsReasoningEffort,supportsUsageInStreaming:model.compat.supportsUsageInStreaming??detected.supportsUsageInStreaming,supportsFinishReason:model.compat.supportsFinishReason??detected.supportsFinishReason,maxTokensField:model.compat.maxTokensField??detected.maxTokensField,requiresToolResultName:model.compat.requiresToolResultName??detected.requiresToolResultName,requiresAssistantAfterToolResult:model.compat.requiresAssistantAfterToolResult??detected.requiresAssistantAfterToolResult,requiresThinkingAsText:model.compat.requiresThinkingAsText??detected.requiresThinkingAsText,requiresReasoningContentOnAssistantMessages:model.compat.requiresReasoningContentOnAssistantMessages??detected.requiresReasoningContentOnAssistantMessages,thinkingFormat:model.compat.thinkingFormat??detected.thinkingFormat,openRouterRouting:model.compat.openRouterRouting??{},vercelGatewayRouting:model.compat.vercelGatewayRouting??detected.vercelGatewayRouting,chatTemplateKwargs:model.compat.chatTemplateKwargs??detected.chatTemplateKwargs,chatTemplateArgs:model.compat.chatTemplateArgs??detected.chatTemplateArgs,zaiToolStream:model.compat.zaiToolStream??detected.zaiToolStream,supportsThinkingTokenBudget:model.compat.supportsThinkingTokenBudget??detected.supportsThinkingTokenBudget,thinkingTokenBudgetField:model.compat.thinkingTokenBudgetField??detected.thinkingTokenBudgetField,supportsStrictMode:model.compat.supportsStrictMode??detected.supportsStrictMode,supportsOpenAIGrammarTools:model.compat.supportsOpenAIGrammarTools??detected.supportsOpenAIGrammarTools,supportsMidConvoSystemMessages:model.compat.supportsMidConvoSystemMessages??detected.supportsMidConvoSystemMessages,supportsMidConvoToolAdditions:model.compat.supportsMidConvoToolAdditions??detected.supportsMidConvoToolAdditions,cacheControlFormat:model.compat.cacheControlFormat??detected.cacheControlFormat,sendSessionAffinityHeaders:model.compat.sendSessionAffinityHeaders??detected.sendSessionAffinityHeaders,sessionAffinityFormat:model.compat.sessionAffinityFormat??detected.sessionAffinityFormat,supportsLongCacheRetention:model.compat.supportsLongCacheRetention??detected.supportsLongCacheRetention,vllmPriority:model.compat.vllmPriority}:detected}var learnedCompat=new Map;function getLearnedCompatKey(model){return`${model.provider}\0${model.baseUrl}\0${model.id}`}var DROPPABLE_REQUEST_FIELDS=[{fields:["reasoning_effort"],learned:{supportsReasoningEffort:!1}},{fields:["stream_options"],learned:{supportsUsageInStreaming:!1}},{fields:["store"],learned:{supportsStore:!1}},{fields:["prompt_cache_key","prompt_cache_retention"],learned:{supportsLongCacheRetention:!1}}];function withCompatFallback(model,params,send){let enabled=getHostname(model.baseUrl)!=="api.openai.com",applied=new Set,body=params;return async()=>{for(;;)try{return await send(body)}catch(error){let rejection=enabled?readRejection(error):void 0,fallbacks=rejection?findCompatFallbacks(rejection,body).filter(fallback=>!applied.has(fallback.kind)):[];if(fallbacks.length===0)throw error;let key=getLearnedCompatKey(model),learned={...learnedCompat.get(key)};for(let fallback of fallbacks)applied.add(fallback.kind),body=fallback.apply(body),Object.assign(learned,fallback.learned);learnedCompat.set(key,learned)}}}function findCompatFallbacks(rejection,params){let fallbacks=[];params.messages.some(message=>message.role==="developer")&&rejectsDeveloperRole(rejection)&&fallbacks.push({kind:"developer role",learned:{supportsDeveloperRole:!1},apply:body=>({...body,messages:body.messages.map(message=>message.role==="developer"?{...message,role:"system"}:message)})}),params.max_completion_tokens!=null&&refusesField(rejection,"max_completion_tokens")?fallbacks.push({kind:"max tokens field",learned:{maxTokensField:"max_tokens"},apply:({max_completion_tokens,...body})=>({...body,max_tokens:max_completion_tokens})}):params.max_tokens!=null&&refusesField(rejection,"max_tokens")&&fallbacks.push({kind:"max tokens field",learned:{maxTokensField:"max_completion_tokens"},apply:({max_tokens,...body})=>({...body,max_completion_tokens:max_tokens})});let sent=new Map(Object.entries(params));for(let{fields,learned}of DROPPABLE_REQUEST_FIELDS)fields.some(field=>sent.get(field)!=null&&refusesField(rejection,field))&&fallbacks.push({kind:fields[0],learned,apply:body=>Object.fromEntries(Object.entries(body).filter(([field])=>!fields.includes(field)))});return fallbacks}function readRejection(error){let{status,message}=normalizeProviderError(error);if(status===void 0)return;let rejection={texts:[],fieldTexts:[],objects:[]};collectRejection(message,rejection,!1,0),collectRejection(error.error,rejection,!1,0);let words=rejection.texts.join(`
7
+ `),hasImages=toolMsg.content.some(c=>c.type==="image"),toolResultText=textResult.trim().length>0?textResult:hasImages?"(see attached image)":"(no tool output)",toolResultMsg={role:"tool",content:sanitizeSurrogates(toolResultText),tool_call_id:toolMsg.toolCallId};if(compat.requiresToolResultName&&toolMsg.toolName&&(toolResultMsg.name=toolMsg.toolName),params.push(toolResultMsg),hasImages&&model.input.includes("image"))for(let block of toolMsg.content)isImageContentBlock(block)&&imageBlocks.push({type:"image_url",image_url:{url:`data:${block.mimeType};base64,${block.data}`}})}i=j-1,imageBlocks.length>0?(compat.requiresAssistantAfterToolResult&&params.push({role:"assistant",content:"I have processed the tool results."}),params.push({role:"user",content:[{type:"text",text:"Attached image(s) from tool result:"},...imageBlocks]}),lastRole="user"):lastRole="toolResult";continue}lastRole=msg.role}return params}function convertTools(tools,compat){return tools.map(tool=>{let grammar=resolveGrammarConstrainedSampling(tool,compat.supportsOpenAIGrammarTools);if(grammar)return{type:"custom",custom:{name:tool.name,description:tool.description,format:{type:"grammar",grammar:{syntax:grammar.format,definition:grammar.definition}}}};let strict=resolveJsonSchemaStrictSampling(tool,compat.supportsStrictMode!==!1);return{type:"function",function:{name:tool.name,description:tool.description,parameters:getJsonSchemaToolParameters(tool,strict),...compat.supportsStrictMode!==!1&&{strict:strict??!1}}}})}function parseChunkUsage(rawUsage,model){let promptTokens=rawUsage.prompt_tokens||0,cacheReadTokens=rawUsage.prompt_tokens_details?.cached_tokens??rawUsage.prompt_cache_hit_tokens??rawUsage.cached_tokens??0,cacheWriteTokens=rawUsage.prompt_tokens_details?.cache_write_tokens||0,input=Math.max(0,promptTokens-cacheReadTokens-cacheWriteTokens),outputTokens=rawUsage.completion_tokens||0,usage={input,output:outputTokens,cacheRead:cacheReadTokens,cacheWrite:cacheWriteTokens,reasoning:rawUsage.completion_tokens_details?.reasoning_tokens||0,totalTokens:input+outputTokens+cacheReadTokens+cacheWriteTokens,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return calculateCost(model,usage),usage}function mapStopReason(reason){if(reason===null)return{stopReason:"stop"};switch(reason){case"stop":case"end":return{stopReason:"stop"};case"length":return{stopReason:"length"};case"function_call":case"tool_calls":return{stopReason:"toolUse"};case"content_filter":return{stopReason:"error",errorMessage:"Provider finish_reason: content_filter"};case"network_error":return{stopReason:"error",errorMessage:"Provider finish_reason: network_error"};default:return{stopReason:"error",errorMessage:`Provider finish_reason: ${reason}`}}}function getHostname(baseUrl){try{return new URL(baseUrl).hostname.toLowerCase()}catch{return}}function isHostOrSubdomain(hostname,domain){return hostname===domain||hostname?.endsWith(`.${domain}`)===!0}function detectCompat(model){let provider=model.provider,baseUrl=model.baseUrl,hostname=getHostname(baseUrl),isOpenAIApi=hostname==="api.openai.com",isAzureOpenAI=isHostOrSubdomain(hostname,"openai.azure.com")||isHostOrSubdomain(hostname,"cognitiveservices.azure.com"),isXiaomi=isHostOrSubdomain(hostname,"xiaomimimo.com"),takesOpenAIRequestShape=isOpenAIApi||isAzureOpenAI||isXiaomi,isZai=provider==="zai"||provider==="zai-coding-cn"||baseUrl.includes("api.z.ai")||baseUrl.includes("open.bigmodel.cn"),isTogether=provider==="together"||baseUrl.includes("api.together.ai")||baseUrl.includes("api.together.xyz"),isMoonshot=provider==="moonshotai"||provider==="moonshotai-cn"||baseUrl.includes("api.moonshot."),isOpenRouter=provider==="openrouter"||baseUrl.includes("openrouter.ai"),isCloudflareWorkersAI=provider==="cloudflare-workers-ai"||baseUrl.includes("api.cloudflare.com"),isCloudflareAiGateway=provider==="cloudflare-ai-gateway"||baseUrl.includes("gateway.ai.cloudflare.com"),isNvidia=provider==="nvidia"||baseUrl.includes("integrate.api.nvidia.com"),isAntLing=provider==="ant-ling"||baseUrl.includes("api.ant-ling.com"),isNebius=provider==="nebius"||baseUrl.includes("tokenfactory.nebius.com"),isDeepSeek=provider==="deepseek"||baseUrl.toLowerCase().includes("deepseek.com"),isGrok=provider==="xai"||baseUrl.includes("api.x.ai"),isOpenRouterDeveloperRoleModel=isOpenRouter&&(model.id.startsWith("anthropic/")||model.id.startsWith("openai/")),cacheControlFormat=provider==="openrouter"&&model.id.startsWith("anthropic/")?"anthropic":void 0;return{supportsStore:isOpenAIApi||isAzureOpenAI,supportsDeveloperRole:takesOpenAIRequestShape||isOpenRouterDeveloperRoleModel,supportsReasoningEffort:!isGrok&&!isZai&&!isMoonshot&&!isTogether&&!isCloudflareAiGateway&&!isNvidia&&!isNebius&&!isAntLing,supportsUsageInStreaming:!0,supportsFinishReason:!0,maxTokensField:takesOpenAIRequestShape?"max_completion_tokens":"max_tokens",requiresToolResultName:!1,requiresAssistantAfterToolResult:!1,requiresThinkingAsText:!1,requiresReasoningContentOnAssistantMessages:isDeepSeek,thinkingFormat:isDeepSeek?"deepseek":isZai?"zai":isTogether?"together":isAntLing?"ant-ling":isOpenRouter?"openrouter":"openai",openRouterRouting:{},vercelGatewayRouting:{},chatTemplateKwargs:{},chatTemplateArgs:{},zaiToolStream:!1,supportsThinkingTokenBudget:!1,thinkingTokenBudgetField:void 0,supportsStrictMode:!1,supportsOpenAIGrammarTools:!1,supportsMidConvoSystemMessages:!1,supportsMidConvoToolAdditions:!1,cacheControlFormat,sendSessionAffinityHeaders:isOpenRouter,sessionAffinityFormat:isOpenRouter?"openrouter":"openai",supportsLongCacheRetention:!(isTogether||isCloudflareWorkersAI||isCloudflareAiGateway||isNvidia||isNebius||isAntLing)}}function getCompat(model){let configured=getConfiguredCompat(model),learned=learnedCompat.get(getLearnedCompatKey(model));return learned?{...configured,...learned}:configured}function getConfiguredCompat(model){let detected=detectCompat(model);return model.compat?{supportsStore:model.compat.supportsStore??detected.supportsStore,supportsDeveloperRole:model.compat.supportsDeveloperRole??detected.supportsDeveloperRole,supportsReasoningEffort:model.compat.supportsReasoningEffort??detected.supportsReasoningEffort,supportsUsageInStreaming:model.compat.supportsUsageInStreaming??detected.supportsUsageInStreaming,supportsFinishReason:model.compat.supportsFinishReason??detected.supportsFinishReason,maxTokensField:model.compat.maxTokensField??detected.maxTokensField,requiresToolResultName:model.compat.requiresToolResultName??detected.requiresToolResultName,requiresAssistantAfterToolResult:model.compat.requiresAssistantAfterToolResult??detected.requiresAssistantAfterToolResult,requiresThinkingAsText:model.compat.requiresThinkingAsText??detected.requiresThinkingAsText,requiresReasoningContentOnAssistantMessages:model.compat.requiresReasoningContentOnAssistantMessages??detected.requiresReasoningContentOnAssistantMessages,thinkingFormat:model.compat.thinkingFormat??detected.thinkingFormat,openRouterRouting:model.compat.openRouterRouting??{},vercelGatewayRouting:model.compat.vercelGatewayRouting??detected.vercelGatewayRouting,chatTemplateKwargs:model.compat.chatTemplateKwargs??detected.chatTemplateKwargs,chatTemplateArgs:model.compat.chatTemplateArgs??detected.chatTemplateArgs,zaiToolStream:model.compat.zaiToolStream??detected.zaiToolStream,supportsThinkingTokenBudget:model.compat.supportsThinkingTokenBudget??detected.supportsThinkingTokenBudget,thinkingTokenBudgetField:model.compat.thinkingTokenBudgetField??detected.thinkingTokenBudgetField,supportsStrictMode:model.compat.supportsStrictMode??detected.supportsStrictMode,supportsOpenAIGrammarTools:model.compat.supportsOpenAIGrammarTools??detected.supportsOpenAIGrammarTools,supportsMidConvoSystemMessages:model.compat.supportsMidConvoSystemMessages??detected.supportsMidConvoSystemMessages,supportsMidConvoToolAdditions:model.compat.supportsMidConvoToolAdditions??detected.supportsMidConvoToolAdditions,cacheControlFormat:model.compat.cacheControlFormat??detected.cacheControlFormat,sendSessionAffinityHeaders:model.compat.sendSessionAffinityHeaders??detected.sendSessionAffinityHeaders,sessionAffinityFormat:model.compat.sessionAffinityFormat??detected.sessionAffinityFormat,supportsLongCacheRetention:model.compat.supportsLongCacheRetention??detected.supportsLongCacheRetention,vllmPriority:model.compat.vllmPriority}:detected}var learnedCompat=new Map;function getLearnedCompatKey(model){return`${model.provider}\0${model.baseUrl}\0${model.id}`}var DROPPABLE_REQUEST_FIELDS=[{fields:["reasoning_effort"],learned:{supportsReasoningEffort:!1}},{fields:["stream_options"],learned:{supportsUsageInStreaming:!1}},{fields:["store"],learned:{supportsStore:!1}},{fields:["prompt_cache_key","prompt_cache_retention"],learned:{supportsLongCacheRetention:!1}}];function withCompatFallback(model,params,send){let enabled=getHostname(model.baseUrl)!=="api.openai.com",applied=new Set,body=params;return async()=>{for(;;)try{return await send(body)}catch(error){let rejection=enabled?readRejection(error):void 0,fallbacks=rejection?findCompatFallbacks(rejection,body).filter(fallback=>!applied.has(fallback.kind)):[];if(fallbacks.length===0)throw error;let key=getLearnedCompatKey(model),learned={...learnedCompat.get(key)};for(let fallback of fallbacks)applied.add(fallback.kind),body=fallback.apply(body),Object.assign(learned,fallback.learned);learnedCompat.set(key,learned)}}}function findCompatFallbacks(rejection,params){let fallbacks=[];params.messages.some(message=>message.role==="developer")&&rejectsDeveloperRole(rejection)&&fallbacks.push({kind:"developer role",learned:{supportsDeveloperRole:!1},apply:body=>({...body,messages:body.messages.map(message=>message.role==="developer"?{...message,role:"system"}:message)})}),params.max_completion_tokens!=null&&refusesField(rejection,"max_completion_tokens")?fallbacks.push({kind:"max tokens field",learned:{maxTokensField:"max_tokens"},apply:({max_completion_tokens,...body})=>({...body,max_tokens:max_completion_tokens})}):params.max_tokens!=null&&refusesField(rejection,"max_tokens")&&fallbacks.push({kind:"max tokens field",learned:{maxTokensField:"max_completion_tokens"},apply:({max_tokens,...body})=>({...body,max_completion_tokens:max_tokens})});let sent=new Map(Object.entries(params));for(let{fields,learned}of DROPPABLE_REQUEST_FIELDS)fields.some(field=>sent.get(field)!=null&&refusesField(rejection,field))&&fallbacks.push({kind:fields[0],learned,apply:body=>Object.fromEntries(Object.entries(body).filter(([field])=>!fields.includes(field)))});return fallbacks}function readRejection(error){let{status,message}=normalizeProviderError(error);if(status===void 0)return;let rejection={texts:[],fieldTexts:[],objects:[]};collectRejection(message,rejection,!1,0),collectRejection(error.error,rejection,!1,0);let words=rejection.texts.join(`
8
8
  `);return status===400||status===422||status>=500&&/\b4(?:00|22)\b|invalid_request/i.test(words)?rejection:void 0}function collectRejection(value,rejection,aboutValue,depth){if(!(depth>8)){if(typeof value=="string"){let{prose,embedded}=splitEmbeddedJson(value);rejection.texts.push(prose),aboutValue||rejection.fieldTexts.push(prose);for(let item of embedded)collectRejection(item,rejection,aboutValue,depth+1)}else if(Array.isArray(value))for(let item of value)collectRejection(item,rejection,aboutValue,depth+1);else if(typeof value=="object"&&value!==null){let object=value;aboutValue||rejection.objects.push(object);let isValueError="loc"in object&&object.type!=="extra_forbidden"||object.code==="invalid_value"||object.code==="unsupported_value"||object.type==="unsupported_value";for(let[key,item]of Object.entries(object))key!=="input"&&collectRejection(item,rejection,aboutValue||isValueError,depth+1)}}}function splitEmbeddedJson(text){let embedded=[],prose="",index=0;for(;index<text.length;){let start=text.slice(index).search(/[{[]/);if(start===-1)break;let begin=index+start,end=findJsonEnd(text,begin);if(end!==-1)try{embedded.push(JSON.parse(text.slice(begin,end))),prose+=text.slice(index,begin),index=end;continue}catch{}prose+=text.slice(index,begin+1),index=begin+1}return{prose:prose+text.slice(index),embedded}}function findJsonEnd(text,start){let depth=0,inString=!1;for(let index=start;index<text.length;index++){let char=text[index];if(inString)char==="\\"?index++:char==='"'&&(inString=!1);else if(char==='"')inString=!0;else if(char==="{"||char==="[")depth++;else if((char==="}"||char==="]")&&(depth--,depth===0))return index+1}return-1}var ROLE_REJECTION_WORDS=/\b(?:unknown|invalid|unsupported|unrecognized|unexpected|not (?:supported|allowed|permitted|recognized|valid|accepted)|does not (?:support|match)|must be one of|should be|expected)\b/i;function rejectsDeveloperRole(rejection){let words=rejection.texts.join(`
9
9
  `);return/\bdeveloper\b/i.test(words)&&ROLE_REJECTION_WORDS.test(words)&&(/\brole\b/i.test(words)||/\bsystem\b/i.test(words)&&/\buser\b/i.test(words))}function refusesField(rejection,field){for(let object of rejection.objects){if((object.code==="unsupported_parameter"||object.code==="unknown_parameter")&&object.param===field)return!0;let loc=object.loc;if(object.type==="extra_forbidden"&&Array.isArray(loc)&&(loc[0]===field||loc[0]==="body"&&loc[1]===field))return!0}let name=`[\\\\"'\`]*${field}[\\\\"'\`]*(?![\\w])`,patterns=[`\\b(?:unknown|unrecognized|unsupported|unexpected|extra)\\s+(?:request\\s+)?(?:field|parameter|param|argument|property|option|name)s?(?:\\s+supplied)?\\s*:?\\s*${name}(?!\\s*:?\\s*at\\s+[\\\\"']+[^\\\\"'\\s:])`,`(?:^(?:\\d{3}\\s+)?|\\b(?:field|parameter|param|argument|property|option)\\s+)${name}\\s+(?:is\\s+|are\\s+)?(?:not\\s+(?:supported|allowed|permitted|recognized)|unsupported|unknown|unrecognized)\\b`,`\\b(?:does\\s+not|doesn't|do\\s+not)\\s+support\\s+(?:the\\s+)?(?:(?:field|parameter|param|argument)\\s+)?${name}`].map(pattern=>new RegExp(pattern,"i"));return rejection.fieldTexts.some(text=>patterns.some(pattern=>pattern.test(text)))}export{convertMessages,stream,streamSimple};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{dist_exports as dist_exports3}from"./chunk-Y4V36NDW.js";import{all_exports,compat_exports,compile_exports,dist_exports as dist_exports2,value_exports}from"./chunk-SJA6GZQX.js";import{build_exports}from"./chunk-DYTENXHX.js";import"./chunk-FLHKNMLQ.js";import{dist_exports}from"./chunk-LT2C56HV.js";import"./chunk-6Z2347ML.js";import"./chunk-MF3VB62R.js";import"./chunk-URBBMV3M.js";import"./chunk-6QGV3IWD.js";import"./chunk-LHRPMXVI.js";import"./chunk-USJZMAIR.js";import"./chunk-5AGIVGSV.js";import"./chunk-UKVNB6C4.js";import"./chunk-TMTOQ7H7.js";import"./chunk-7DDKXS2Q.js";import"./chunk-3V45WARH.js";import"./chunk-WCGU75WO.js";import"./chunk-LPXNMA2W.js";import"./chunk-JXWJOIH4.js";var oauth_exports={};var VIRTUAL_MODULES={typebox:build_exports,"typebox/compile":compile_exports,"typebox/value":value_exports,"@sinclair/typebox":build_exports,"@sinclair/typebox/compile":compile_exports,"@sinclair/typebox/value":value_exports,"@earendil-works/pi-agent-core":dist_exports2,"@earendil-works/pi-tui":dist_exports,"@earendil-works/pi-ai":compat_exports,"@earendil-works/pi-ai/compat":compat_exports,"@earendil-works/pi-ai/oauth":oauth_exports,"@earendil-works/pi-ai/providers/all":all_exports,"@earendil-works/pi-coding-agent":dist_exports3,"@mariozechner/pi-agent-core":dist_exports2,"@mariozechner/pi-tui":dist_exports,"@mariozechner/pi-ai":compat_exports,"@mariozechner/pi-ai/compat":compat_exports,"@mariozechner/pi-ai/oauth":oauth_exports,"@mariozechner/pi-ai/providers/all":all_exports,"@mariozechner/pi-coding-agent":dist_exports3};export{VIRTUAL_MODULES};
2
+ import{dist_exports as dist_exports3}from"./chunk-L6RFSEAE.js";import{all_exports,compat_exports,compile_exports,dist_exports as dist_exports2,value_exports}from"./chunk-6UUEQH6U.js";import{build_exports}from"./chunk-DYTENXHX.js";import"./chunk-FLHKNMLQ.js";import{dist_exports}from"./chunk-LT2C56HV.js";import"./chunk-6Z2347ML.js";import"./chunk-MF3VB62R.js";import"./chunk-URBBMV3M.js";import"./chunk-6QGV3IWD.js";import"./chunk-LHRPMXVI.js";import"./chunk-USJZMAIR.js";import"./chunk-5AGIVGSV.js";import"./chunk-45R57BZU.js";import"./chunk-TMTOQ7H7.js";import"./chunk-7DDKXS2Q.js";import"./chunk-3V45WARH.js";import"./chunk-WCGU75WO.js";import"./chunk-LPXNMA2W.js";import"./chunk-JXWJOIH4.js";var oauth_exports={};var VIRTUAL_MODULES={typebox:build_exports,"typebox/compile":compile_exports,"typebox/value":value_exports,"@sinclair/typebox":build_exports,"@sinclair/typebox/compile":compile_exports,"@sinclair/typebox/value":value_exports,"@earendil-works/pi-agent-core":dist_exports2,"@earendil-works/pi-tui":dist_exports,"@earendil-works/pi-ai":compat_exports,"@earendil-works/pi-ai/compat":compat_exports,"@earendil-works/pi-ai/oauth":oauth_exports,"@earendil-works/pi-ai/providers/all":all_exports,"@earendil-works/pi-coding-agent":dist_exports3,"@mariozechner/pi-agent-core":dist_exports2,"@mariozechner/pi-tui":dist_exports,"@mariozechner/pi-ai":compat_exports,"@mariozechner/pi-ai/compat":compat_exports,"@mariozechner/pi-ai/oauth":oauth_exports,"@mariozechner/pi-ai/providers/all":all_exports,"@mariozechner/pi-coding-agent":dist_exports3};export{VIRTUAL_MODULES};
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
3
- import{main,setupCli}from"./chunks/chunk-SJA6GZQX.js";import"./chunks/chunk-DYTENXHX.js";import"./chunks/chunk-FLHKNMLQ.js";import"./chunks/chunk-LT2C56HV.js";import"./chunks/chunk-6Z2347ML.js";import"./chunks/chunk-MF3VB62R.js";import"./chunks/chunk-URBBMV3M.js";import"./chunks/chunk-6QGV3IWD.js";import"./chunks/chunk-LHRPMXVI.js";import"./chunks/chunk-USJZMAIR.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-UKVNB6C4.js";import"./chunks/chunk-TMTOQ7H7.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-3V45WARH.js";import"./chunks/chunk-WCGU75WO.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-JXWJOIH4.js";setupCli();main(process.argv.slice(2));
3
+ import{main,setupCli}from"./chunks/chunk-6UUEQH6U.js";import"./chunks/chunk-DYTENXHX.js";import"./chunks/chunk-FLHKNMLQ.js";import"./chunks/chunk-LT2C56HV.js";import"./chunks/chunk-6Z2347ML.js";import"./chunks/chunk-MF3VB62R.js";import"./chunks/chunk-URBBMV3M.js";import"./chunks/chunk-6QGV3IWD.js";import"./chunks/chunk-LHRPMXVI.js";import"./chunks/chunk-USJZMAIR.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-45R57BZU.js";import"./chunks/chunk-TMTOQ7H7.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-3V45WARH.js";import"./chunks/chunk-WCGU75WO.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-JXWJOIH4.js";setupCli();main(process.argv.slice(2));
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{ShowImagesSelectorComponent,ThemeSelectorComponent}from"./chunks/chunk-Y4V36NDW.js";import{AgentSession,AgentSessionRuntime,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FileModelsStore,FooterComponent,InteractiveMode,LoginDialogComponent,MCP_CONNECTION_EVENT,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,SkillInvocationMessageComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VIRTUAL_MODEL_STATE_ENTRY,applyHttpProxySettings,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,configureHttpDispatcher,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defaultModelPerProvider,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getLastAssistantUsage,getLatestCompactionEntry,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,setupCli,shouldCompact,stdioRpcTransport,stripFrontmatter,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools}from"./chunks/chunk-SJA6GZQX.js";import{DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,formatReadLineRange,formatSize,truncateHead,truncateLine,truncateTail,truncateToVisualLines}from"./chunks/chunk-DYTENXHX.js";import{ArminComponent}from"./chunks/chunk-FLHKNMLQ.js";import{Theme,getLanguageFromPath,getMarkdownTheme,getSelectListTheme,getSettingsListTheme,highlightCode,initTheme,keyHint,keyText,rawKeyHint}from"./chunks/chunk-LT2C56HV.js";import{ProjectTrustStore,hasTrustRequiringProjectResources,loadMcpConfig}from"./chunks/chunk-6Z2347ML.js";import{readStoredCredential}from"./chunks/chunk-MF3VB62R.js";import{getPowerShellConfig,getShellConfig}from"./chunks/chunk-URBBMV3M.js";import"./chunks/chunk-6QGV3IWD.js";import{CONFIG_DIR_NAME,VERSION,getAgentDir,getDocsPath,getExamplesPath,getPackageDir,getReadmePath}from"./chunks/chunk-LHRPMXVI.js";import"./chunks/chunk-USJZMAIR.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-UKVNB6C4.js";import"./chunks/chunk-TMTOQ7H7.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-3V45WARH.js";import"./chunks/chunk-WCGU75WO.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-JXWJOIH4.js";export{AgentSession,AgentSessionRuntime,ArminComponent,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CONFIG_DIR_NAME,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FileModelsStore,FooterComponent,InteractiveMode,LoginDialogComponent,MCP_CONNECTION_EVENT,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,ProjectTrustStore,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,ShowImagesSelectorComponent,SkillInvocationMessageComponent,Theme,ThemeSelectorComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VERSION,VIRTUAL_MODEL_STATE_ENTRY,applyHttpProxySettings,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,configureHttpDispatcher,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defaultModelPerProvider,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatReadLineRange,formatSize,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getAgentDir,getDocsPath,getExamplesPath,getLanguageFromPath,getLastAssistantUsage,getLatestCompactionEntry,getMarkdownTheme,getPackageDir,getPowerShellConfig,getReadmePath,getSelectListTheme,getSettingsListTheme,getShellConfig,hasTrustRequiringProjectResources,highlightCode,initTheme,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,keyHint,keyText,loadMcpConfig,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,rawKeyHint,readStoredCredential,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,setupCli,shouldCompact,stdioRpcTransport,stripFrontmatter,truncateHead,truncateLine,truncateTail,truncateToVisualLines,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools};
2
+ import{ShowImagesSelectorComponent,ThemeSelectorComponent}from"./chunks/chunk-L6RFSEAE.js";import{AgentSession,AgentSessionRuntime,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FileModelsStore,FooterComponent,InteractiveMode,LoginDialogComponent,MCP_CONNECTION_EVENT,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,SkillInvocationMessageComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VIRTUAL_MODEL_STATE_ENTRY,applyHttpProxySettings,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,configureHttpDispatcher,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defaultModelPerProvider,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getLastAssistantUsage,getLatestCompactionEntry,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,setupCli,shouldCompact,stdioRpcTransport,stripFrontmatter,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools}from"./chunks/chunk-6UUEQH6U.js";import{DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,formatReadLineRange,formatSize,truncateHead,truncateLine,truncateTail,truncateToVisualLines}from"./chunks/chunk-DYTENXHX.js";import{ArminComponent}from"./chunks/chunk-FLHKNMLQ.js";import{Theme,getLanguageFromPath,getMarkdownTheme,getSelectListTheme,getSettingsListTheme,highlightCode,initTheme,keyHint,keyText,rawKeyHint}from"./chunks/chunk-LT2C56HV.js";import{ProjectTrustStore,hasTrustRequiringProjectResources,loadMcpConfig}from"./chunks/chunk-6Z2347ML.js";import{readStoredCredential}from"./chunks/chunk-MF3VB62R.js";import{getPowerShellConfig,getShellConfig}from"./chunks/chunk-URBBMV3M.js";import"./chunks/chunk-6QGV3IWD.js";import{CONFIG_DIR_NAME,VERSION,getAgentDir,getDocsPath,getExamplesPath,getPackageDir,getReadmePath}from"./chunks/chunk-LHRPMXVI.js";import"./chunks/chunk-USJZMAIR.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-45R57BZU.js";import"./chunks/chunk-TMTOQ7H7.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-3V45WARH.js";import"./chunks/chunk-WCGU75WO.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-JXWJOIH4.js";export{AgentSession,AgentSessionRuntime,ArminComponent,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CONFIG_DIR_NAME,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FileModelsStore,FooterComponent,InteractiveMode,LoginDialogComponent,MCP_CONNECTION_EVENT,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,ProjectTrustStore,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,ShowImagesSelectorComponent,SkillInvocationMessageComponent,Theme,ThemeSelectorComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VERSION,VIRTUAL_MODEL_STATE_ENTRY,applyHttpProxySettings,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,configureHttpDispatcher,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defaultModelPerProvider,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatReadLineRange,formatSize,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getAgentDir,getDocsPath,getExamplesPath,getLanguageFromPath,getLastAssistantUsage,getLatestCompactionEntry,getMarkdownTheme,getPackageDir,getPowerShellConfig,getReadmePath,getSelectListTheme,getSettingsListTheme,getShellConfig,hasTrustRequiringProjectResources,highlightCode,initTheme,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,keyHint,keyText,loadMcpConfig,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,rawKeyHint,readStoredCredential,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,setupCli,shouldCompact,stdioRpcTransport,stripFrontmatter,truncateHead,truncateLine,truncateTail,truncateToVisualLines,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools};
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
3
- import{configureHttpDispatcher,main,nameProcess}from"./chunks/chunk-SJA6GZQX.js";import"./chunks/chunk-DYTENXHX.js";import"./chunks/chunk-FLHKNMLQ.js";import"./chunks/chunk-LT2C56HV.js";import"./chunks/chunk-6Z2347ML.js";import"./chunks/chunk-MF3VB62R.js";import"./chunks/chunk-URBBMV3M.js";import"./chunks/chunk-6QGV3IWD.js";import{APP_NAME}from"./chunks/chunk-LHRPMXVI.js";import"./chunks/chunk-USJZMAIR.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-UKVNB6C4.js";import"./chunks/chunk-TMTOQ7H7.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-3V45WARH.js";import"./chunks/chunk-WCGU75WO.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-JXWJOIH4.js";nameProcess(`${APP_NAME}-rpc`);process.env.PI_CODING_AGENT="true";process.env.AI_AGENT="pi";process.emitWarning=(()=>{});configureHttpDispatcher();main(["--mode","rpc",...process.argv.slice(2)]);
3
+ import{configureHttpDispatcher,main,nameProcess}from"./chunks/chunk-6UUEQH6U.js";import"./chunks/chunk-DYTENXHX.js";import"./chunks/chunk-FLHKNMLQ.js";import"./chunks/chunk-LT2C56HV.js";import"./chunks/chunk-6Z2347ML.js";import"./chunks/chunk-MF3VB62R.js";import"./chunks/chunk-URBBMV3M.js";import"./chunks/chunk-6QGV3IWD.js";import{APP_NAME}from"./chunks/chunk-LHRPMXVI.js";import"./chunks/chunk-USJZMAIR.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-45R57BZU.js";import"./chunks/chunk-TMTOQ7H7.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-3V45WARH.js";import"./chunks/chunk-WCGU75WO.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-JXWJOIH4.js";nameProcess(`${APP_NAME}-rpc`);process.env.PI_CODING_AGENT="true";process.env.AI_AGENT="pi";process.emitWarning=(()=>{});configureHttpDispatcher();main(["--mode","rpc",...process.argv.slice(2)]);
package/docs/providers.md CHANGED
@@ -35,6 +35,7 @@ This table covers providers with a single primary API-key variable. Providers th
35
35
  | OpenAI | `OPENAI_API_KEY` |
36
36
  | DeepSeek | `DEEPSEEK_API_KEY` |
37
37
  | NVIDIA NIM | `NVIDIA_API_KEY` |
38
+ | Nebius Token Factory | `NEBIUS_API_KEY` |
38
39
  | Google Gemini | `GEMINI_API_KEY` |
39
40
  | GitHub Copilot | `COPILOT_GITHUB_TOKEN` |
40
41
  | Mistral | `MISTRAL_API_KEY` |
@@ -79,10 +79,12 @@ var JUDGE_TYPES = [
79
79
  "jev",
80
80
  "typesafe",
81
81
  "clm",
82
+ "systemone",
82
83
  "gateway",
83
84
  "http",
84
85
  "llm",
85
86
  "classifier",
87
+ "logprob",
86
88
  "openai",
87
89
  "mock"
88
90
  ];
@@ -38,6 +38,22 @@ var BUILT_IN_JUDGES = {
38
38
  "clef-flash": { type: "classifier", model: "cloudflare-workers-ai/@cf/cloudflare/clef-flash" },
39
39
  // CLM-8B on this machine, where `clm-serve` listens by default. Its profile is not measured on mu's questions yet.
40
40
  clm: { type: "clm" },
41
+ // NVIDIA Nemotron 3 Ultra on Nebius Token Factory (NEBIUS_API_KEY) through the LLM judge prompt, thinking off:
42
+ // one JSON answer per request, 0.9 s at the median. Measured on 1,367 held-out judge requests from mu (Oct 2026),
43
+ // it was the only Nemotron on Token Factory that clearly beat no judge at all; Super, Nano 30B and Lightning
44
+ // (also read off first-token logprobs) missed the answer format or decided worse.
45
+ nemotron: { type: "llm", model: "nebius/nvidia/Nemotron-3-Ultra-550b-a55b", thinking: "off" },
46
+ // The same with thinking on (reasoning_effort "high"): 2.5 s at the median, 8.5 s at p90, about three times the
47
+ // tokens. Worth it where Ultra decides worst without it; route those decision points here (docs/nebius.md).
48
+ "nemotron-think": {
49
+ type: "llm",
50
+ model: "nebius/nvidia/Nemotron-3-Ultra-550b-a55b",
51
+ thinking: "high",
52
+ timeoutMs: 6e4
53
+ },
54
+ // Nemotron 3 Nano 4B fine-tuned as mu's judge (github.com/qybaihe/mu-judge-nemotron), served on this machine by
55
+ // its System One server: `python serve/systemone_server.py --port 8770`.
56
+ "nemotron-local": { type: "systemone", baseUrl: "http://127.0.0.1:8770", model: "mu-judge-nemotron" },
41
57
  // mude, the decision model trained for mu's judgment layer, on this Mac (`mu judge mude install`, Apple silicon):
42
58
  // the System One server that comes in its package, on 127.0.0.1:8790, with the key the install wrote to the .env.
43
59
  // Trusted on every capability: on mu's own dev scenarios (an internal benchmark, not public yet) it did as well as Jev
@@ -62,10 +78,12 @@ var JUDGE_TYPES = [
62
78
  "jev",
63
79
  "typesafe",
64
80
  "clm",
81
+ "systemone",
65
82
  "gateway",
66
83
  "http",
67
84
  "llm",
68
85
  "classifier",
86
+ "logprob",
69
87
  "openai",
70
88
  "mock"
71
89
  ];
@@ -100,6 +100,22 @@ var BUILT_IN_JUDGES = {
100
100
  "clef-flash": { type: "classifier", model: "cloudflare-workers-ai/@cf/cloudflare/clef-flash" },
101
101
  // CLM-8B on this machine, where `clm-serve` listens by default. Its profile is not measured on mu's questions yet.
102
102
  clm: { type: "clm" },
103
+ // NVIDIA Nemotron 3 Ultra on Nebius Token Factory (NEBIUS_API_KEY) through the LLM judge prompt, thinking off:
104
+ // one JSON answer per request, 0.9 s at the median. Measured on 1,367 held-out judge requests from mu (Oct 2026),
105
+ // it was the only Nemotron on Token Factory that clearly beat no judge at all; Super, Nano 30B and Lightning
106
+ // (also read off first-token logprobs) missed the answer format or decided worse.
107
+ nemotron: { type: "llm", model: "nebius/nvidia/Nemotron-3-Ultra-550b-a55b", thinking: "off" },
108
+ // The same with thinking on (reasoning_effort "high"): 2.5 s at the median, 8.5 s at p90, about three times the
109
+ // tokens. Worth it where Ultra decides worst without it; route those decision points here (docs/nebius.md).
110
+ "nemotron-think": {
111
+ type: "llm",
112
+ model: "nebius/nvidia/Nemotron-3-Ultra-550b-a55b",
113
+ thinking: "high",
114
+ timeoutMs: 6e4
115
+ },
116
+ // Nemotron 3 Nano 4B fine-tuned as mu's judge (github.com/qybaihe/mu-judge-nemotron), served on this machine by
117
+ // its System One server: `python serve/systemone_server.py --port 8770`.
118
+ "nemotron-local": { type: "systemone", baseUrl: "http://127.0.0.1:8770", model: "mu-judge-nemotron" },
103
119
  // mude, the decision model trained for mu's judgment layer, on this Mac (`mu judge mude install`, Apple silicon):
104
120
  // the System One server that comes in its package, on 127.0.0.1:8790, with the key the install wrote to the .env.
105
121
  // Trusted on every capability: on mu's own dev scenarios (an internal benchmark, not public yet) it did as well as Jev
@@ -124,10 +140,12 @@ var JUDGE_TYPES = [
124
140
  "jev",
125
141
  "typesafe",
126
142
  "clm",
143
+ "systemone",
127
144
  "gateway",
128
145
  "http",
129
146
  "llm",
130
147
  "classifier",
148
+ "logprob",
131
149
  "openai",
132
150
  "mock"
133
151
  ];
@@ -2352,6 +2370,20 @@ var SETUP_SERVICES = [
2352
2370
  providers: ["xai"],
2353
2371
  builtIn: true
2354
2372
  },
2373
+ {
2374
+ // Not in the app's table yet. Open models, NVIDIA's Nemotron among them; the same key reaches the `nemotron`
2375
+ // judge (Nemotron 3 Ultra on Token Factory).
2376
+ id: "nebius",
2377
+ name: "Nebius Token Factory",
2378
+ baseUrls: ["https://api.tokenfactory.nebius.com/v1"],
2379
+ api: "openai-completions",
2380
+ models: ["nvidia/nemotron-3-super-120b-a12b"],
2381
+ // "v1.", then two base64url parts.
2382
+ keyShape: /^v1\.[A-Za-z0-9_-]{40,}\.[A-Za-z0-9_-]{40,}$/,
2383
+ keyPage: "https://tokenfactory.nebius.com",
2384
+ providers: ["nebius"],
2385
+ builtIn: true
2386
+ },
2355
2387
  {
2356
2388
  id: "ollama",
2357
2389
  name: "Ollama",
@@ -2467,6 +2499,7 @@ var JEV_TIERS = /* @__PURE__ */ new Set([
2467
2499
  "jev-cloudflare"
2468
2500
  ]);
2469
2501
  var OPENCODE_KEY = "OPENCODE_API_KEY";
2502
+ var NEBIUS_KEY = "NEBIUS_API_KEY";
2470
2503
  var JEV_PAGE = "https://typesafe.ai";
2471
2504
  var OPENAI_KEY_PAGE = "https://platform.openai.com/api-keys";
2472
2505
  var CLAUDE_TOKEN = {
@@ -2506,11 +2539,11 @@ function parseSetupArgs(argv) {
2506
2539
  return { error: { zh: "--api \u53EA\u80FD\u662F openai \u6216 anthropic", en: "--api must be openai or anthropic" } };
2507
2540
  }
2508
2541
  const judge = values.get("--judge");
2509
- if (judge !== void 0 && !["jev", "opencode", "free", "openai", "model", "mude", "off", "none"].includes(judge)) {
2542
+ if (judge !== void 0 && !["jev", "opencode", "free", "nemotron", "openai", "model", "mude", "off", "none"].includes(judge)) {
2510
2543
  return {
2511
2544
  error: {
2512
- zh: "--judge \u53EA\u80FD\u662F jev\u3001opencode\u3001free\u3001openai\u3001model\u3001mude\u3001off \u6216 none",
2513
- en: "--judge must be jev, opencode, free, openai, model, mude, off or none"
2545
+ zh: "--judge \u53EA\u80FD\u662F jev\u3001opencode\u3001free\u3001nemotron\u3001openai\u3001model\u3001mude\u3001off \u6216 none",
2546
+ en: "--judge must be jev, opencode, free, nemotron, openai, model, mude, off or none"
2514
2547
  }
2515
2548
  };
2516
2549
  }
@@ -2556,6 +2589,7 @@ function setupUsage(language) {
2556
2589
  " --judge jev Jev \u5BC6\u94A5\uFF08TypeSafe\uFF09\u5199\u5728\u6807\u51C6\u8F93\u5165\u7684\u7B2C\u4E8C\u884C\uFF1B\u5DF2\u7ECF\u8BBE\u7F6E\u4E86 TYPESAFE_API_KEY \u5C31\u4E0D\u7528",
2557
2590
  " --judge opencode OpenCode Zen \u4E0A\u7684 Jev\uFF0C\u7528 OpenCode \u7684\u5BC6\u94A5\uFF08--service opencode \u6216 OPENCODE_API_KEY\uFF09",
2558
2591
  " --judge free OpenCode Zen \u4E0A\u9650\u65F6\u514D\u8D39\u7684 Jev\uFF0C\u4E0D\u7528\u5BC6\u94A5\uFF08\u6CA1\u6709\u5BC6\u94A5\u65F6\u672C\u6765\u5C31\u7528\u5B83\uFF09",
2592
+ " --judge nemotron Nebius Token Factory \u4E0A\u7684 Nemotron 3 Ultra\uFF0C\u7528 Nebius \u7684\u5BC6\u94A5\uFF08--service nebius \u6216 NEBIUS_API_KEY\uFF09",
2559
2593
  " --judge openai OpenAI \u7684\u51B3\u7B56\u6A21\u578B gpt-6-luna\uFF1A\u7528 mu \u5DF2\u6709\u7684 OpenAI \u5BC6\u94A5\uFF0C\u6216\u6807\u51C6\u8F93\u5165\u7B2C\u4E8C\u884C\u7684\u5BC6\u94A5",
2560
2594
  " --judge model \u7528\u521A\u8BBE\u7F6E\u7684\u6A21\u578B\u5F53\u5224\u5B9A\u5668\uFF08\u66F4\u6162\uFF0C\u6BCF\u6B21\u5224\u65AD\u90FD\u82B1 token\uFF09",
2561
2595
  " --judge mude \u5728\u8FD9\u53F0 Mac \u4E0A\u88C5\u597D mude 1.0\uFF08mu \u81EA\u5DF1\u7684\u51B3\u7B56\u6A21\u578B\uFF0C\u4E0B\u8F7D 1.8 GB\uFF09\u5F53\u5224\u5B9A\u5668\uFF0CJev \u5728\u5B83\u540E\u9762",
@@ -2584,6 +2618,8 @@ function setupUsage(language) {
2584
2618
  " --judge jev read the Jev key (TypeSafe) from stdin's second line, unless TYPESAFE_API_KEY is already set",
2585
2619
  " --judge opencode use Jev on OpenCode Zen with an OpenCode key (--service opencode or OPENCODE_API_KEY)",
2586
2620
  " --judge free use the free Jev on OpenCode Zen (limited time, no key; the default while no key is set)",
2621
+ " --judge nemotron use Nemotron 3 Ultra on Nebius Token Factory with a Nebius key (--service nebius or",
2622
+ " NEBIUS_API_KEY)",
2587
2623
  " --judge openai use OpenAI's decision model, gpt-6-luna, with the OpenAI key mu has or one on stdin's second line",
2588
2624
  " --judge model use the model you just set up as the judge (slower, and every verdict costs tokens)",
2589
2625
  " --judge mude install mude 1.0, mu's own decision model, on this Mac (a 1.8 GB download) as the judge,",
@@ -3261,8 +3297,9 @@ var Setup = class {
3261
3297
  const envText = readTextFile(paths.envFile);
3262
3298
  const existing = jevKeyAt(env, envText);
3263
3299
  const opencode = model?.provider === "opencode" || Boolean(env[OPENCODE_KEY]) || !(OPENCODE_KEY in env) && envText !== void 0 && Boolean(envFileValue(envText, OPENCODE_KEY)) || await this.deps.pi.credential("opencode") !== void 0;
3300
+ const nebius = model?.provider === "nebius" || Boolean(env[NEBIUS_KEY]) || !(NEBIUS_KEY in env) && envText !== void 0 && Boolean(envFileValue(envText, NEBIUS_KEY)) || await this.deps.pi.credential("nebius") !== void 0;
3264
3301
  const openai = await this.openaiKeySet(model, envText);
3265
- if (this.scripted) return this.scriptedJudge(model, envText, existing !== void 0, opencode, openai);
3302
+ if (this.scripted) return this.scriptedJudge(model, envText, existing !== void 0, opencode, openai, nebius);
3266
3303
  const where = existing ? existing.where === "env" ? this.t({ zh: `\u73AF\u5883\u53D8\u91CF ${existing.name}`, en: `${existing.name} in your environment` }) : this.t({
3267
3304
  zh: `${this.path(paths.envFile)} \u91CC\u7684 ${existing.name}`,
3268
3305
  en: `${existing.name} in ${this.path(paths.envFile)}`
@@ -3334,6 +3371,15 @@ var Setup = class {
3334
3371
  value: "free"
3335
3372
  });
3336
3373
  }
3374
+ if (nebius) {
3375
+ choices.push({
3376
+ label: this.t({
3377
+ zh: "Nemotron 3 Ultra\uFF0C\u5728 Nebius Token Factory \u4E0A\uFF0C\u7528\u4F60\u7684 Nebius \u5BC6\u94A5\uFF1A\u6BCF\u6B21\u5224\u65AD\u7EA6 1 \u79D2\uFF0C\u6309 token \u8BA1\u8D39",
3378
+ en: "Nemotron 3 Ultra on Nebius Token Factory with your Nebius key: about 1 s per verdict, billed per token"
3379
+ }),
3380
+ value: "nemotron"
3381
+ });
3382
+ }
3337
3383
  choices.push({
3338
3384
  label: openai ? this.t({
3339
3385
  zh: "OpenAI \u7684\u51B3\u7B56\u6A21\u578B gpt-6-luna\uFF0C\u7528\u4F60\u7684 OpenAI \u5BC6\u94A5\uFF0C\u6309\u8F93\u5165 token \u8BA1\u8D39",
@@ -3381,7 +3427,7 @@ var Setup = class {
3381
3427
  const set = (name) => name in env ? Boolean(env[name]) : envText !== void 0 && Boolean(envFileValue(envText, name));
3382
3428
  return model?.provider === "openai" && this.args.baseUrl === void 0 || set(OPENAI_JUDGE_KEY) || set("OPENAI_API_KEY") || await this.deps.pi.credential("openai") === "api_key";
3383
3429
  }
3384
- scriptedJudge(model, envText, keySet, opencode, openai) {
3430
+ scriptedJudge(model, envText, keySet, opencode, openai, nebius) {
3385
3431
  switch (this.args.judge) {
3386
3432
  case "opencode":
3387
3433
  if (!opencode) {
@@ -3396,6 +3442,17 @@ var Setup = class {
3396
3442
  return { kind: "opencode" };
3397
3443
  case "free":
3398
3444
  return { kind: "free" };
3445
+ case "nemotron":
3446
+ if (!nebius) {
3447
+ throw this.fail(
3448
+ {
3449
+ zh: "--judge nemotron \u9700\u8981 Nebius \u7684\u5BC6\u94A5\uFF1A\u7528 --service nebius \u8BBE\u7F6E\u5B83\uFF0C\u6216\u5148\u8BBE\u7F6E NEBIUS_API_KEY",
3450
+ en: "--judge nemotron needs a Nebius key: set one up with --service nebius, or set NEBIUS_API_KEY first"
3451
+ },
3452
+ SETUP_EXIT.usage
3453
+ );
3454
+ }
3455
+ return { kind: "nemotron" };
3399
3456
  case "mude":
3400
3457
  if (!this.deps.mude) {
3401
3458
  throw this.fail(
@@ -3684,6 +3741,7 @@ var Setup = class {
3684
3741
  if (judge.kind === "model") {
3685
3742
  if (target && model) tiers = [`llm:${target.reach.provider}/${model}`];
3686
3743
  } else if (judge.kind === "opencode") tiers = ["jev-opencode"];
3744
+ else if (judge.kind === "nemotron") tiers = ["nemotron"];
3687
3745
  else if (judge.kind === "openai") tiers = ["openai"];
3688
3746
  else if (judge.kind === "free" || judge.kind === "mude") {
3689
3747
  if (!tiersOf(current).some((tier) => tier === "jev" || tier === "jev-opencode-free")) tiers = ["jev"];
@@ -3743,7 +3801,10 @@ var Setup = class {
3743
3801
  zh: `\u5B8C\u6210\u3002mu \u4F1A\u7528 ${this.name(target.service)} \xB7 ${model} \u5F00\u59CB\u5DE5\u4F5C\u3002`,
3744
3802
  en: `Done. mu will start on ${this.name(target.service)} \xB7 ${model}.`
3745
3803
  }) : this.t({ zh: "\u5B8C\u6210\u3002", en: "Done." });
3746
- const judged = judge === void 0 ? "" : judge.kind === "model" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1A\u540C\u4E00\u4E2A\u6A21\u578B\u3002", en: " Judge: the same model." }) : judge.kind === "none" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1A\u6682\u65F6\u6CA1\u6709\u3002", en: " Judge: none for now." }) : judge.kind === "opencode" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1AOpenCode Zen \u4E0A\u7684 Jev\u3002", en: " Judge: Jev on OpenCode Zen." }) : judge.kind === "openai" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1AOpenAI \u7684 gpt-6-luna\u3002", en: " Judge: OpenAI's gpt-6-luna." }) : judge.kind === "mude" ? this.t({
3804
+ const judged = judge === void 0 ? "" : judge.kind === "model" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1A\u540C\u4E00\u4E2A\u6A21\u578B\u3002", en: " Judge: the same model." }) : judge.kind === "none" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1A\u6682\u65F6\u6CA1\u6709\u3002", en: " Judge: none for now." }) : judge.kind === "opencode" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1AOpenCode Zen \u4E0A\u7684 Jev\u3002", en: " Judge: Jev on OpenCode Zen." }) : judge.kind === "openai" ? this.t({ zh: "\u5224\u5B9A\u5668\uFF1AOpenAI \u7684 gpt-6-luna\u3002", en: " Judge: OpenAI's gpt-6-luna." }) : judge.kind === "nemotron" ? this.t({
3805
+ zh: "\u5224\u5B9A\u5668\uFF1ANebius Token Factory \u4E0A\u7684 Nemotron 3 Ultra\u3002",
3806
+ en: " Judge: Nemotron 3 Ultra on Nebius Token Factory."
3807
+ }) : judge.kind === "mude" ? this.t({
3747
3808
  zh: "\u5224\u5B9A\u5668\uFF1Amude 1.0\uFF0C\u4E0B\u9762\u63A5\u7740\u5B89\u88C5\uFF1B\u5B83\u7B54\u4E0D\u4E86\u7684\u4EA4\u7ED9 Jev\u3002",
3748
3809
  en: " Judge: mude 1.0, installed next, with Jev for what it can't answer."
3749
3810
  }) : judge.kind === "free" ? this.t({
@@ -9160,19 +9160,8 @@
9160
9160
  "fa-IR": "منبع جست‌وجو"
9161
9161
  },
9162
9162
  "help": {
9163
- "zh": "so(360)、sogou、bing-cn、searxng:<地址>,或带 {query} 的网址。",
9164
- "en": "so (360), sogou, bing-cn, searxng:<base url>, or a URL with {query} in it.",
9165
- "zh-TW": "so(360)、sogou、bing-cn、searxng:<base url>,或含有 {query} 的網址。",
9166
- "ja-JP": "so(360)、sogou、bing-cn、searxng:<ベース URL>、または {query} を含む URL。",
9167
- "ko-KR": "so(360), sogou, bing-cn, searxng:<기본 URL> 중 하나 또는 {query}가 들어간 URL입니다.",
9168
- "de-DE": "so (360), sogou, bing-cn, searxng:<Basis-URL> oder eine URL, die {query} enthält.",
9169
- "fr-FR": "so (360), sogou, bing-cn, searxng:<URL de base>, ou une URL contenant {query}.",
9170
- "es-ES": "so (360), sogou, bing-cn, searxng:<URL base> o una URL que contenga {query}.",
9171
- "pt-BR": "so (360), sogou, bing-cn, searxng:<URL base> ou uma URL com {query}.",
9172
- "ru-RU": "so (360), sogou, bing-cn, searxng:<базовый URL> или URL, содержащий {query}.",
9173
- "uk-UA": "so (360), sogou, bing-cn, searxng:<базова адреса> або URL-адреса з {query}.",
9174
- "tr-TR": "so (360), sogou, bing-cn, searxng:<temel URL> ya da içinde {query} geçen bir URL.",
9175
- "fa-IR": "so (360)، sogou، bing-cn، searxng:<base url>، یا یک URL که {query} در آن باشد."
9163
+ "zh": "so(360)、sogou、bing-cn、tavily、searxng:<地址>,或带 {query} 的网址。设置了环境变量 TAVILY_API_KEY 时先问 Tavily,这里选的源作为后备。",
9164
+ "en": "so (360), sogou, bing-cn, tavily, searxng:<base url>, or a URL with {query} in it. With TAVILY_API_KEY set in the environment, Tavily is asked first and this source is the fallback."
9176
9165
  }
9177
9166
  },
9178
9167
  {
@@ -10600,6 +10589,122 @@
10600
10589
  }
10601
10590
  }
10602
10591
  ]
10592
+ },
10593
+ {
10594
+ "name": "sandbox",
10595
+ "title": {
10596
+ "zh": "Nebius 沙箱(实验)",
10597
+ "en": "Nebius sandbox (experimental)"
10598
+ },
10599
+ "summary": {
10600
+ "zh": "bash、read、write、edit 改在 Nebius Token Factory 的沙箱虚拟机里执行,不碰本机:开始时把项目复制进去,之后每条命令都从上一条留下的文件接着跑。改动只有在 /sandbox pull 看过差异并同意后才会带回本地。需要 NEBIUS_API_KEY 和 NEBIUS_PROJECT_ID;也可以用 MU_SANDBOX=nebius 打开。",
10601
+ "en": "bash, read, write and edit run in a Nebius Token Factory sandbox VM instead of on this machine: the project is copied in at the start, and every command continues from the files the previous one left. Changes come back here only through /sandbox pull, after you have seen the diff and agreed. Needs NEBIUS_API_KEY and NEBIUS_PROJECT_ID; MU_SANDBOX=nebius also turns it on."
10602
+ },
10603
+ "defaultEnabled": false,
10604
+ "beta": true,
10605
+ "options": [
10606
+ {
10607
+ "key": "image",
10608
+ "kind": "text",
10609
+ "default": "tag:ubuntu:latest",
10610
+ "label": {
10611
+ "zh": "基础镜像",
10612
+ "en": "Base image"
10613
+ },
10614
+ "help": {
10615
+ "zh": "镜像 UUID、tag:<名称>,或 docker://<地址>(首次使用时导入)。需要 bash 和 tar;带回改动需要 git,没有时会尝试用 apt-get 或 apk 安装。",
10616
+ "en": "An image UUID, tag:<name>, or docker://<reference> (imported on first use). Needs bash and tar; pulling needs git, which apt-get or apk installs when missing."
10617
+ }
10618
+ },
10619
+ {
10620
+ "key": "baseUrl",
10621
+ "kind": "text",
10622
+ "default": "https://api.tokenfactory.nebius.com/sandboxes/v1",
10623
+ "label": {
10624
+ "zh": "API 地址",
10625
+ "en": "API address"
10626
+ }
10627
+ },
10628
+ {
10629
+ "key": "workdir",
10630
+ "kind": "text",
10631
+ "default": "/workspace",
10632
+ "label": {
10633
+ "zh": "沙箱里的项目目录",
10634
+ "en": "Project folder in the sandbox"
10635
+ }
10636
+ },
10637
+ {
10638
+ "key": "shell",
10639
+ "kind": "text",
10640
+ "default": "/bin/bash",
10641
+ "label": {
10642
+ "zh": "命令使用的 shell",
10643
+ "en": "Shell commands run in"
10644
+ }
10645
+ },
10646
+ {
10647
+ "key": "timeoutS",
10648
+ "kind": "number",
10649
+ "default": 600,
10650
+ "min": 1,
10651
+ "unit": {
10652
+ "zh": "秒",
10653
+ "en": "s"
10654
+ },
10655
+ "label": {
10656
+ "zh": "命令未设时限时的时限",
10657
+ "en": "Time limit of a command that sets none"
10658
+ }
10659
+ },
10660
+ {
10661
+ "key": "seedTimeoutS",
10662
+ "kind": "number",
10663
+ "default": 900,
10664
+ "min": 10,
10665
+ "unit": {
10666
+ "zh": "秒",
10667
+ "en": "s"
10668
+ },
10669
+ "label": {
10670
+ "zh": "复制项目的时限",
10671
+ "en": "Time limit of copying the project in"
10672
+ }
10673
+ },
10674
+ {
10675
+ "key": "maxSeedMB",
10676
+ "kind": "number",
10677
+ "default": 100,
10678
+ "min": 1,
10679
+ "unit": {
10680
+ "zh": "MB",
10681
+ "en": "MB"
10682
+ },
10683
+ "label": {
10684
+ "zh": "最多复制的项目大小",
10685
+ "en": "Largest project copied in"
10686
+ }
10687
+ },
10688
+ {
10689
+ "key": "outputBytes",
10690
+ "kind": "number",
10691
+ "default": 1048576,
10692
+ "min": 1024,
10693
+ "max": 10485760,
10694
+ "unit": {
10695
+ "zh": "字节",
10696
+ "en": "bytes"
10697
+ },
10698
+ "label": {
10699
+ "zh": "每条命令保留的输出",
10700
+ "en": "Output kept per command"
10701
+ },
10702
+ "help": {
10703
+ "zh": "标准输出和标准错误各自的上限,最多 10 MiB。",
10704
+ "en": "For stdout and for stderr each, at most 10 MiB."
10705
+ }
10706
+ }
10707
+ ]
10603
10708
  }
10604
10709
  ]
10605
10710
  }
@@ -11,7 +11,7 @@ var pi_host_modules_exports = {};
11
11
  __export(pi_host_modules_exports, {
12
12
  VIRTUAL_MODULES: () => VIRTUAL_MODULES
13
13
  });
14
- import { VIRTUAL_MODULES } from "../../dist/bundle/chunks/virtual-modules-P3ZGSM7W.js";
14
+ import { VIRTUAL_MODULES } from "../../dist/bundle/chunks/virtual-modules-5AGCRNHD.js";
15
15
  var init_pi_host_modules = __esm({
16
16
  "pi-host-modules:pi-host-modules"() {
17
17
  "use strict";
@@ -5,7 +5,7 @@ import {
5
5
  CLOUD_CODE_ENDPOINT,
6
6
  antigravityUserAgent,
7
7
  require_pi_ai
8
- } from "./chunk-GELL4P7W.js";
8
+ } from "./chunk-4LSLDCQ3.js";
9
9
  import {
10
10
  __commonJS,
11
11
  __require,