@iaforged/context-code 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bridge/bridgeMain.js +1 -1
- package/dist/src/bridge/types.js +1 -1
- package/dist/src/cli/handlers/auth.js +1 -1
- package/dist/src/cli/handlers/mcp.js +1 -1
- package/dist/src/cli/print.js +1 -1
- package/dist/src/commands/copy/copy.js +1 -1
- package/dist/src/commands/heartbeat/heartbeat.js +1 -0
- package/dist/src/commands/heartbeat/index.js +1 -0
- package/dist/src/commands/insights.js +1 -1
- package/dist/src/commands/install-github-app/ExistingWorkflowStep.js +1 -1
- package/dist/src/commands/install-github-app/InstallAppStep.js +1 -1
- package/dist/src/commands/install-github-app/OAuthFlowStep.js +1 -1
- package/dist/src/commands/install-github-app/SuccessStep.js +1 -1
- package/dist/src/commands/install-github-app/setupGitHubActions.js +1 -1
- package/dist/src/commands/login-openai/index.js +1 -1
- package/dist/src/commands/mobile/mobile.js +1 -1
- package/dist/src/commands/remote-setup/remote-setup.js +1 -1
- package/dist/src/commands/swarm-auto/swarmAuto.js +1 -1
- package/dist/src/commands/timeline/timeline.js +1 -1
- package/dist/src/commands/webapp/webapp.js +1 -1
- package/dist/src/commands.js +1 -1
- package/dist/src/components/ApproveApiKey.js +1 -1
- package/dist/src/components/ChannelDowngradeDialog.js +1 -1
- package/dist/src/components/ClaudeCodeHint/PluginHintMenu.js +1 -1
- package/dist/src/components/ConsoleOAuthFlow.js +1 -1
- package/dist/src/components/CostThresholdDialog.js +1 -1
- package/dist/src/components/CtrlOToExpand.js +1 -1
- package/dist/src/components/CustomSelect/select.js +1 -1
- package/dist/src/components/DesktopHandoff.js +1 -1
- package/dist/src/components/DesktopUpsell/DesktopUpsellStartup.js +1 -1
- package/dist/src/components/ExportDialog.js +1 -1
- package/dist/src/components/Feedback.js +1 -1
- package/dist/src/components/FeedbackSurvey/FeedbackSurvey.js +1 -1
- package/dist/src/components/FeedbackSurvey/FeedbackSurveyView.js +1 -1
- package/dist/src/components/IdeAutoConnectDialog.js +1 -1
- package/dist/src/components/IdeOnboardingDialog.js +1 -1
- package/dist/src/components/IdleReturnDialog.js +1 -1
- package/dist/src/components/InterruptedByUser.js +1 -1
- package/dist/src/components/InvalidConfigDialog.js +1 -1
- package/dist/src/components/InvalidSettingsDialog.js +1 -1
- package/dist/src/components/LanguagePicker.js +1 -1
- package/dist/src/components/LogSelector.js +1 -1
- package/dist/src/components/LogoV2/ChannelsNotice.js +1 -1
- package/dist/src/components/LogoV2/LogoV2.js +1 -1
- package/dist/src/components/LogoV2/feedConfigs.js +1 -1
- package/dist/src/components/LspRecommendation/LspRecommendationMenu.js +1 -1
- package/dist/src/components/MCPServerApprovalDialog.js +1 -1
- package/dist/src/components/MCPServerDesktopImportDialog.js +1 -1
- package/dist/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.js +1 -1
- package/dist/src/components/MessageSelector.js +1 -1
- package/dist/src/components/OutputStylePicker.js +1 -1
- package/dist/src/components/PromptInput/PromptInput.js +1 -1
- package/dist/src/components/RemoteCallout.js +1 -1
- package/dist/src/components/ResumeTask.js +1 -1
- package/dist/src/components/Settings/Config.js +1 -1
- package/dist/src/components/ShowInIDEPrompt.js +1 -1
- package/dist/src/components/Stats.js +1 -1
- package/dist/src/components/TagTabs.js +1 -1
- package/dist/src/components/TeleportError.js +1 -1
- package/dist/src/components/TeleportResumeWrapper.js +1 -1
- package/dist/src/components/TextInput.js +1 -1
- package/dist/src/components/agents/new-agent-creation/wizard-steps/MethodStep.js +1 -1
- package/dist/src/components/design-system/KeyboardShortcutHint.js +1 -1
- package/dist/src/components/diff/DiffDetailView.js +1 -1
- package/dist/src/components/grove/Grove.js +1 -1
- package/dist/src/components/hooks/SelectEventMode.js +1 -1
- package/dist/src/components/hooks/SelectHookMode.js +1 -1
- package/dist/src/components/hooks/SelectMatcherMode.js +1 -1
- package/dist/src/components/hooks/ViewHookMode.js +1 -1
- package/dist/src/components/mcp/MCPAgentServerMenu.js +1 -1
- package/dist/src/components/mcp/utils/reconnectHelpers.js +1 -1
- package/dist/src/components/memory/MemoryFileSelector.js +1 -1
- package/dist/src/components/messages/AssistantTextMessage.js +1 -1
- package/dist/src/components/messages/PlanApprovalMessage.js +1 -1
- package/dist/src/components/messages/ShutdownMessage.js +1 -1
- package/dist/src/components/messages/SystemAPIErrorMessage.js +1 -1
- package/dist/src/components/messages/UserPlanMessage.js +1 -1
- package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.js +1 -1
- package/dist/src/components/permissions/ComputerUseApproval/ComputerUseApproval.js +1 -1
- package/dist/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +1 -1
- package/dist/src/components/permissions/FilePermissionDialog/FilePermissionDialog.js +1 -1
- package/dist/src/components/permissions/FilePermissionDialog/permissionOptions.js +1 -1
- package/dist/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +1 -1
- package/dist/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +1 -1
- package/dist/src/components/permissions/PermissionRequest.js +1 -1
- package/dist/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js +1 -1
- package/dist/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.js +1 -1
- package/dist/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js +1 -1
- package/dist/src/components/permissions/rules/AddPermissionRules.js +1 -1
- package/dist/src/components/permissions/rules/AddWorkspaceDirectory.js +1 -1
- package/dist/src/components/permissions/rules/PermissionRuleList.js +1 -1
- package/dist/src/components/permissions/rules/RemoveWorkspaceDirectory.js +1 -1
- package/dist/src/components/sandbox/SandboxConfigTab.js +1 -1
- package/dist/src/components/sandbox/SandboxOverridesTab.js +1 -1
- package/dist/src/components/tasks/RemoteSessionDetailDialog.js +1 -1
- package/dist/src/constants/outputStyles.js +1 -1
- package/dist/src/entrypoints/cli.js +1 -1
- package/dist/src/hooks/notifs/useCanSwitchToExistingSubscription.js +1 -1
- package/dist/src/main.js +1 -1
- package/dist/src/projectOnboardingState.js +1 -1
- package/dist/src/screens/REPL.js +1 -1
- package/dist/src/server/channelServer.js +1 -0
- package/dist/src/server/channelServer.test.js +1 -0
- package/dist/src/services/api/errors.js +1 -1
- package/dist/src/services/api/filesApi.js +1 -1
- package/dist/src/services/api/index.js +1 -1
- package/dist/src/services/tips/tipRegistry.js +1 -1
- package/dist/src/tasks/RemoteAgentTask/RemoteAgentTask.js +1 -1
- package/dist/src/tools/AgentTool/AgentTool.js +1 -1
- package/dist/src/tools/ConfigTool/supportedSettings.js +1 -1
- package/dist/src/tools/EnterWorktreeTool/EnterWorktreeTool.js +1 -1
- package/dist/src/tools/ExitWorktreeTool/ExitWorktreeTool.js +1 -1
- package/dist/src/tools/WebFetchTool/WebFetchTool.js +1 -1
- package/dist/src/utils/computerUse/cleanup.js +1 -1
- package/dist/src/utils/computerUse/wrapper.js +1 -1
- package/dist/src/utils/fileHistory.js +1 -1
- package/dist/src/utils/heartbeat.js +1 -0
- package/dist/src/utils/model/providers.js +1 -1
- package/dist/src/utils/permissions/filesystem.js +1 -1
- package/dist/src/utils/permissions/permissions.js +1 -1
- package/dist/src/utils/processUserInput/processSlashCommand.js +1 -1
- package/dist/src/utils/releaseNoteTranslations.js +1 -1
- package/dist/src/utils/shell/shellToolUtils.js +1 -1
- package/dist/src/utils/sideQuery.js +1 -1
- package/dist/src/utils/sshMcp/common.js +1 -0
- package/dist/src/utils/sshMcp/setup.js +1 -0
- package/dist/src/utils/sshMcp/sshMcpServer.js +1 -0
- package/dist/src/utils/sshMcp/sshMcpServer.test.js +1 -0
- package/dist/src/utils/teleport.js +1 -1
- package/dist/src/webapp/server.js +1 -1
- package/dist/sshMcpServer.js +1 -0
- package/dist/sshMcpServer.test.js +1 -0
- package/dist/webapp/chunk-AMCDNAIG.js +1 -0
- package/dist/webapp/{chunk-YUEYJPXQ.js → chunk-NFYBHCXF.js} +1 -1
- package/dist/webapp/{chunk-DFKSSBHI.js → chunk-OJZNEHPP.js} +1 -1
- package/dist/webapp/chunk-VAB2VXFI.js +1 -0
- package/dist/webapp/index.html +2 -2
- package/dist/webapp/main-MTQLKGXD.js +1 -0
- package/dist/webapp/ngsw.json +14 -14
- package/dist/webapp/styles-DIKEDJBH.css +1 -0
- package/package.json +2 -1
- package/dist/webapp/chunk-4SRNXNLW.js +0 -1
- package/dist/webapp/chunk-SIHYW6PA.js +0 -1
- package/dist/webapp/main-LBNRQBXX.js +0 -1
- package/dist/webapp/styles-FUPULZDX.css +0 -1
package/dist/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as e}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{basename as i,relative as r}from"path";import{Text as n}from"../../../ink.js";import{FileWriteTool as s}from"../../../tools/FileWriteTool/FileWriteTool.js";import{getCwd as l}from"../../../utils/cwd.js";import{isENOENT as
|
|
1
|
+
import{jsx as o,jsxs as e}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{basename as i,relative as r}from"path";import{Text as n}from"../../../ink.js";import{FileWriteTool as s}from"../../../tools/FileWriteTool/FileWriteTool.js";import{getCwd as l}from"../../../utils/cwd.js";import{isENOENT as m}from"../../../utils/errors.js";import{readFileSync as f}from"../../../utils/fileRead.js";import{FilePermissionDialog as c}from"../FilePermissionDialog/FilePermissionDialog.js";import{createSingleEditDiffConfig as p}from"../FilePermissionDialog/ideDiffConfig.js";import{FileWriteToolDiff as a}from"./FileWriteToolDiff.js";const u={getConfig:o=>{let e;try{e=f(o.file_path)}catch(o){if(!m(o))throw o;e=""}return p(o.file_path,e,o.content,!1)},applyChanges:(o,e)=>{const t=e[0];return t?{...o,content:t.new_string}:o}};export function FileWritePermissionRequest(s){const p=t(30),C=_temp;let h;p[0]!==s.toolUseConfirm.input?(h=C(s.toolUseConfirm.input),p[0]=s.toolUseConfirm.input,p[1]=h):h=p[1];const d=h,{file_path:j,content:g}=d;let x;if(p[2]!==j){try{x={fileExists:!0,oldContent:f(j)}}catch(w){const o=w;if(!m(o))throw o;let e;p[4]===Symbol.for("react.memo_cache_sentinel")?(e={fileExists:!1,oldContent:""},p[4]=e):e=p[4],x=e}p[2]=j,p[3]=x}else x=p[3];const{fileExists:U,oldContent:_}=x,D=U?"sobrescribir":"crear",w=s.toolUseConfirm,b=s.toolUseContext,F=s.onDone,R=s.onReject,k=s.workerBadge,y=U?"Sobrescribir archivo":"Crear archivo";let B,E,P,S,T,W;return p[5]!==j?(B=r(l(),j),p[5]=j,p[6]=B):B=p[6],p[7]!==j?(E=i(j),p[7]=j,p[8]=E):E=p[8],p[9]!==E?(P=o(n,{bold:!0,children:E}),p[9]=E,p[10]=P):P=p[10],p[11]!==D||p[12]!==P?(S=e(n,{children:["¿Quieres ",D," ",P,"?"]}),p[11]=D,p[12]=P,p[13]=S):S=p[13],p[14]!==g||p[15]!==U||p[16]!==j||p[17]!==_?(T=o(a,{file_path:j,content:g,fileExists:U,oldContent:_}),p[14]=g,p[15]=U,p[16]=j,p[17]=_,p[18]=T):T=p[18],p[19]!==j||p[20]!==s.onDone||p[21]!==s.onReject||p[22]!==s.toolUseConfirm||p[23]!==s.toolUseContext||p[24]!==s.workerBadge||p[25]!==S||p[26]!==T||p[27]!==y||p[28]!==B?(W=o(c,{toolUseConfirm:w,toolUseContext:b,onDone:F,onReject:R,workerBadge:k,title:y,subtitle:B,question:S,content:T,path:j,completionType:"write_file_single",parseInput:C,ideDiffSupport:u}),p[19]=j,p[20]=s.onDone,p[21]=s.onReject,p[22]=s.toolUseConfirm,p[23]=s.toolUseContext,p[24]=s.workerBadge,p[25]=S,p[26]=T,p[27]=y,p[28]=B,p[29]=W):W=p[29],W}function _temp(o){return s.inputSchema.parse(o)}
|
package/dist/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{Box as n,Text as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{Box as n,Text as r,useTheme as i}from"../../../ink.js";import{FallbackPermissionRequest as s}from"../FallbackPermissionRequest.js";import{FilePermissionDialog as l}from"../FilePermissionDialog/FilePermissionDialog.js";export function FilesystemPermissionRequest(a){const c=t(30),{toolUseConfirm:m,onDone:u,onReject:p,verbose:f,toolUseContext:d,workerBadge:g}=a,[h]=i();let j;c[0]!==m?(j=function(e){const o=e.tool;if("getPath"in o&&"function"==typeof o.getPath)try{return o.getPath(e.input)}catch{return null}return null}(m),c[0]=m,c[1]=j):j=c[1];const x=j;let y;c[2]!==m.input||c[3]!==m.tool?(y=m.tool.userFacingName(m.input),c[2]=m.input,c[3]=m.tool,c[4]=y):y=c[4];const P=y,R=isReadOnly?"Leer archivo":"Editar archivo",U=_temp;if(!x){let o;return c[5]!==u||c[6]!==p||c[7]!==m||c[8]!==d||c[9]!==f||c[10]!==g?(o=e(s,{toolUseConfirm:m,toolUseContext:d,onDone:u,onReject:p,verbose:f,workerBadge:g}),c[5]=u,c[6]=p,c[7]=m,c[8]=d,c[9]=f,c[10]=g,c[11]=o):o=c[11],o}let C,D;c[12]!==h||c[13]!==m.input||c[14]!==m.tool||c[15]!==f?(C=m.tool.renderToolUseMessage(m.input,{theme:h,verbose:f}),c[12]=h,c[13]=m.input,c[14]=m.tool,c[15]=f,c[16]=C):C=c[16],c[17]!==C||c[18]!==P?(D=e(n,{flexDirection:"column",paddingX:2,paddingY:1,children:o(r,{children:[P,"(",C,")"]})}),c[17]=C,c[18]=P,c[19]=D):D=c[19];const k=D,v=isReadOnly?"read":"write";let F;return c[20]!==k||c[21]!==u||c[22]!==p||c[23]!==x||c[24]!==v||c[25]!==R||c[26]!==m||c[27]!==d||c[28]!==g?(F=e(l,{toolUseConfirm:m,toolUseContext:d,onDone:u,onReject:p,workerBadge:g,title:R,content:k,path:x,parseInput:U,operationType:v,completionType:"tool_use_single"}),c[20]=k,c[21]=u,c[22]=p,c[23]=x,c[24]=v,c[25]=R,c[26]=m,c[27]=d,c[28]=g,c[29]=F):F=c[29],F}function _temp(e){return e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{feature as o}from"../../recovery/bunBundleShim.js";import{jsx as e}from"react/jsx-runtime";import{createRequire as t}from"module";const s=t(import.meta.url);import{c as r}from"react/compiler-runtime";import{EnterPlanModeTool as i}from"../../tools/EnterPlanModeTool/EnterPlanModeTool.js";import{ExitPlanModeV2Tool as l}from"../../tools/ExitPlanModeTool/ExitPlanModeV2Tool.js";import{useNotifyAfterTimeout as n}from"../../hooks/useNotifyAfterTimeout.js";import{useKeybinding as m}from"../../keybindings/useKeybinding.js";import{AskUserQuestionTool as u}from"../../tools/AskUserQuestionTool/AskUserQuestionTool.js";import{BashTool as a}from"../../tools/BashTool/BashTool.js";import{FileEditTool as
|
|
1
|
+
import{feature as o}from"../../recovery/bunBundleShim.js";import{jsx as e}from"react/jsx-runtime";import{createRequire as t}from"module";const s=t(import.meta.url);import{c as r}from"react/compiler-runtime";import{EnterPlanModeTool as i}from"../../tools/EnterPlanModeTool/EnterPlanModeTool.js";import{ExitPlanModeV2Tool as l}from"../../tools/ExitPlanModeTool/ExitPlanModeV2Tool.js";import{useNotifyAfterTimeout as n}from"../../hooks/useNotifyAfterTimeout.js";import{useKeybinding as m}from"../../keybindings/useKeybinding.js";import{AskUserQuestionTool as u}from"../../tools/AskUserQuestionTool/AskUserQuestionTool.js";import{BashTool as a}from"../../tools/BashTool/BashTool.js";import{FileEditTool as c}from"../../tools/FileEditTool/FileEditTool.js";import{FileReadTool as R}from"../../tools/FileReadTool/FileReadTool.js";import{FileWriteTool as f}from"../../tools/FileWriteTool/FileWriteTool.js";import{GlobTool as p}from"../../tools/GlobTool/GlobTool.js";import{GrepTool as T}from"../../tools/GrepTool/GrepTool.js";import{NotebookEditTool as P}from"../../tools/NotebookEditTool/NotebookEditTool.js";import{PowerShellTool as j}from"../../tools/PowerShellTool/PowerShellTool.js";import{SkillTool as q}from"../../tools/SkillTool/SkillTool.js";import{WebFetchTool as d}from"../../tools/WebFetchTool/WebFetchTool.js";import{AskUserQuestionPermissionRequest as k}from"./AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js";import{BashPermissionRequest as F}from"./BashPermissionRequest/BashPermissionRequest.js";import{EnterPlanModePermissionRequest as E}from"./EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.js";import{ExitPlanModePermissionRequest as W}from"./ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.js";import{FallbackPermissionRequest as b}from"./FallbackPermissionRequest.js";import{FileEditPermissionRequest as w}from"./FileEditPermissionRequest/FileEditPermissionRequest.js";import{FilesystemPermissionRequest as C}from"./FilesystemPermissionRequest/FilesystemPermissionRequest.js";import{FileWritePermissionRequest as A}from"./FileWritePermissionRequest/FileWritePermissionRequest.js";import{NotebookEditPermissionRequest as h}from"./NotebookEditPermissionRequest/NotebookEditPermissionRequest.js";import{PowerShellPermissionRequest as M}from"./PowerShellPermissionRequest/PowerShellPermissionRequest.js";import{SkillPermissionRequest as S}from"./SkillPermissionRequest/SkillPermissionRequest.js";import{WebFetchPermissionRequest as x}from"./WebFetchPermissionRequest/WebFetchPermissionRequest.js";const O=o("REVIEW_ARTIFACT")?s("../../tools/ReviewArtifactTool/ReviewArtifactTool.js").ReviewArtifactTool:null,v=o("REVIEW_ARTIFACT")?s("./ReviewArtifactPermissionRequest/ReviewArtifactPermissionRequest.js").ReviewArtifactPermissionRequest:null,I=o("WORKFLOW_SCRIPTS")?s("../../tools/WorkflowTool/WorkflowTool.js").WorkflowTool:null,_=o("WORKFLOW_SCRIPTS")?s("../../tools/WorkflowTool/WorkflowPermissionRequest.js").WorkflowPermissionRequest:null,y=o("MONITOR_TOOL")?s("../../tools/MonitorTool/MonitorTool.js").MonitorTool:null,N=o("MONITOR_TOOL")?s("./MonitorPermissionRequest/MonitorPermissionRequest.js").MonitorPermissionRequest:null;export function PermissionRequest(t){const s=r(18),{toolUseConfirm:U,toolUseContext:B,onDone:g,onReject:G,verbose:L,workerBadge:Q,setStickyFooter:V}=t;let K,D,$;s[0]!==g||s[1]!==G||s[2]!==U?(K=()=>{g(),G(),U.onReject()},s[0]=g,s[1]=G,s[2]=U,s[3]=K):K=s[3],s[4]===Symbol.for("react.memo_cache_sentinel")?(D={context:"Confirmation"},s[4]=D):D=s[4],m("app:interrupt",K,D),s[5]!==U?($=function(e){const t=e.tool.userFacingName(e.input);return e.tool===l?"Context Code necesita tu aprobación para el plan":e.tool===i?"Context Code quiere entrar en modo plan":o("REVIEW_ARTIFACT")&&e.tool===O?"Context necesita tu aprobación para un artefacto de revisión":t&&""!==t.trim()?`Context necesita tu permiso para usar ${t}`:"Context Code necesita tu atención"}(U),s[5]=U,s[6]=$):$=s[6];let z;n($,"permission_prompt"),s[7]!==U.tool?(z=function(o){switch(o){case c:return w;case f:return A;case a:return F;case j:return M;case O:return v??b;case d:return x;case P:return h;case l:return W;case i:return E;case q:return S;case u:return k;case I:return _??b;case y:return N??b;case p:case T:case R:return C;default:return b}}(U.tool),s[7]=U.tool,s[8]=z):z=s[8];const H=z;let J;return s[9]!==H||s[10]!==g||s[11]!==G||s[12]!==V||s[13]!==U||s[14]!==B||s[15]!==L||s[16]!==Q?(J=e(H,{toolUseContext:B,toolUseConfirm:U,onDone:g,onReject:G,verbose:L,workerBadge:Q,setStickyFooter:V}),s[9]=H,s[10]=g,s[11]=G,s[12]=V,s[13]=U,s[14]=B,s[15]=L,s[16]=Q,s[17]=J):J=s[17],J}
|
package/dist/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{basename as n,relative as i}from"path";import{Suspense as r,use as s}from"react";import{FileEditToolDiff as l}from"../../FileEditToolDiff.js";import{getCwd as c}from"../../../utils/cwd.js";import{isENOENT as a}from"../../../utils/errors.js";import{detectEncodingForResolvedPath as m}from"../../../utils/fileRead.js";import{getFsImplementation as d}from"../../../utils/fsOperations.js";import{Text as f}from"../../../ink.js";import{BashTool as p}from"../../../tools/BashTool/BashTool.js";import{applySedSubstitution as u}from"../../../tools/BashTool/sedEditParser.js";import{FilePermissionDialog as h}from"../FilePermissionDialog/FilePermissionDialog.js";export function SedEditPermissionRequest(o){const n=t(9);let i,s;n[0]!==o?(({sedInfo:s,...i}=o),n[0]=o,n[1]=i,n[2]=s):(i=n[1],s=n[2]);const{filePath:l}=s;let c;n[3]!==l?(c=(async()=>{const e=m(l);return{oldContent:(await d().readFile(l,{encoding:e})).replaceAll("\r\n","\n"),fileExists:!0}})().catch(_temp),n[3]=l,n[4]=c):c=n[4];const a=c;let f;return n[5]!==a||n[6]!==i||n[7]!==s?(f=e(r,{fallback:null,children:e(SedEditPermissionRequestInner,{sedInfo:s,contentPromise:a,...i})}),n[5]=a,n[6]=i,n[7]=s,n[8]=f):f=n[8],f}function _temp(e){if(!a(e))throw e;return{oldContent:"",fileExists:!1}}function SedEditPermissionRequestInner(r){const a=t(35);let m,d,j;a[0]!==r?(({sedInfo:j,contentPromise:m,...d}=r),a[0]=r,a[1]=m,a[2]=d,a[3]=j):(m=a[1],d=a[2],j=a[3]);const{filePath:C}=j,{oldContent:g,fileExists:x}=s(m);let E;a[4]!==g||a[5]!==j?(E=u(g,j),a[4]=g,a[5]=j,a[6]=E):E=a[6];const P=E;let _;e:{if(g===P){let e;a[7]===Symbol.for("react.memo_cache_sentinel")?(e=[],a[7]=e):e=a[7],_=e;break e}let e;a[8]!==P||a[9]!==g?(e=[{old_string:g,new_string:P,replace_all:!1}],a[8]=P,a[9]=g,a[10]=e):e=a[10],_=e}const w=_;let R;R=x?"El patrón no coincide con ningún contenido":"El archivo no existe";const U=R;let k;a[11]!==C||a[12]!==P?(k=e=>({...p.inputSchema.parse(e),_simulatedSedEdit:{filePath:C,newContent:P}}),a[11]=C,a[12]=P,a[13]=k):k=a[13];const B=k,D=d.toolUseConfirm,I=d.toolUseContext,S=d.onDone,b=d.onReject;let T,q,F,y,v;return a[14]!==C?(T=i(c(),C),a[14]=C,a[15]=T):T=a[15],a[16]!==C?(q=n(C),a[16]=C,a[17]=q):q=a[17],a[18]!==q?(F=o(f,{children:["¿Quieres aplicar esta edición a"," ",e(f,{bold:!0,children:q}),"?"]}),a[18]=q,a[19]=F):F=a[19],a[20]!==w||a[21]!==C||a[22]!==U?(y=w.length>0?e(l,{file_path:C,edits:w}):e(f,{dimColor:!0,children:U}),a[20]=w,a[21]=C,a[22]=U,a[23]=y):y=a[23],a[24]!==C||a[25]!==B||a[26]!==d.onDone||a[27]!==d.onReject||a[28]!==d.toolUseConfirm||a[29]!==d.toolUseContext||a[30]!==d.workerBadge||a[31]!==F||a[32]!==y||a[33]!==T?(v=e(h,{toolUseConfirm:D,toolUseContext:I,onDone:S,onReject:b,title:"Editar archivo",subtitle:T,question:F,content:y,path:C,completionType:"str_replace_single",parseInput:B,workerBadge:d.workerBadge}),a[24]=C,a[25]=B,a[26]=d.onDone,a[27]=d.onReject,a[28]=d.toolUseConfirm,a[29]=d.toolUseContext,a[30]=d.workerBadge,a[31]=F,a[32]=y,a[33]=T,a[34]=v):v=a[34],v}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{logError as s}from"../../../utils/log.js";import{getOriginalCwd as n}from"../../../bootstrap/state.js";import{Box as a,Text as l}from"../../../ink.js";import{sanitizeToolNameForAnalytics as i}from"../../../services/analytics/metadata.js";import{SKILL_TOOL_NAME as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{logError as s}from"../../../utils/log.js";import{getOriginalCwd as n}from"../../../bootstrap/state.js";import{Box as a,Text as l}from"../../../ink.js";import{sanitizeToolNameForAnalytics as i}from"../../../services/analytics/metadata.js";import{SKILL_TOOL_NAME as r}from"../../../tools/SkillTool/constants.js";import{SkillTool as m}from"../../../tools/SkillTool/SkillTool.js";import{env as c}from"../../../utils/env.js";import{shouldShowAlwaysAllowOptions as p}from"../../../utils/permissions/permissionsLoader.js";import{logUnaryEvent as u}from"../../../utils/unaryLogging.js";import{usePermissionRequestLogging as d}from"../hooks.js";import{PermissionDialog as g}from"../PermissionDialog.js";import{PermissionPrompt as f}from"../PermissionPrompt.js";import{PermissionRuleExplanation as _}from"../PermissionRuleExplanation.js";export function SkillPermissionRequest(s){const m=t(51),{toolUseConfirm:y,onDone:h,onReject:b,workerBadge:j}=s,v=_temp;let S;m[0]!==y.input?(S=v(y.input),m[0]=y.input,m[1]=S):S=m[1];const k=S,x="ask"===y.permissionResult.behavior&&y.permissionResult.metadata&&"command"in y.permissionResult.metadata?y.permissionResult.metadata.command:void 0;let R;m[2]===Symbol.for("react.memo_cache_sentinel")?(R={completion_type:"tool_use_single",language_name:"none"},m[2]=R):R=m[2];let w;d(y,R),m[3]===Symbol.for("react.memo_cache_sentinel")?(w=n(),m[3]=w):w=m[3];const C=w;let M;m[4]===Symbol.for("react.memo_cache_sentinel")?(M=p(),m[4]=M):M=m[4];const P=M;let A;m[5]===Symbol.for("react.memo_cache_sentinel")?(A=[{label:"Sí",value:"yes",feedbackConfig:{type:"accept"}}],m[5]=A):A=m[5];const D=A;let N,T;if(m[6]!==k){if(N=[],P){const t=e(l,{bold:!0,children:k});let s,n;m[8]===Symbol.for("react.memo_cache_sentinel")?(s=e(l,{bold:!0,children:C}),m[8]=s):s=m[8],m[9]!==t?(n={label:o(l,{children:["Sí, y no volver a preguntar para ",t," en"," ",s]}),value:"yes-exact"},m[9]=t,m[10]=n):n=m[10],N.push(n);const a=k.indexOf(" ");if(a>0){const t=k.substring(0,a)+":*";let s,n,i;m[11]!==t?(s=e(l,{bold:!0,children:t}),m[11]=t,m[12]=s):s=m[12],m[13]===Symbol.for("react.memo_cache_sentinel")?(n=e(l,{bold:!0,children:C}),m[13]=n):n=m[13],m[14]!==s?(i={label:o(l,{children:["Sí, y no volver a preguntar para"," ",s," comandos en"," ",n]}),value:"yes-prefix"},m[14]=s,m[15]=i):i=m[15],N.push(i)}}m[6]=k,m[7]=N}else N=m[7];m[16]===Symbol.for("react.memo_cache_sentinel")?(T={label:"No",value:"no",feedbackConfig:{type:"reject"}},m[16]=T):T=m[16];const $=T;let B;m[17]!==N?(B=[...D,...N,$],m[17]=N,m[18]=B):B=m[18];const E=B;let L;m[19]!==y.tool.name?(L=i(y.tool.name),m[19]=y.tool.name,m[20]=L):L=m[20];const O=y.tool.isMcp??!1;let U;m[21]!==L||m[22]!==O?(U={toolName:L,isMcp:O},m[21]=L,m[22]=O,m[23]=U):U=m[23];const q=U;let F;m[24]!==h||m[25]!==b||m[26]!==k||m[27]!==y?(F=(e,o)=>{e:switch(e){case"yes":u({completion_type:"tool_use_single",event:"accept",metadata:{language_name:"none",message_id:y.assistantMessage.message.id,platform:c.platform}}),y.onAllow(y.input,[],o),h();break e;case"yes-exact":u({completion_type:"tool_use_single",event:"accept",metadata:{language_name:"none",message_id:y.assistantMessage.message.id,platform:c.platform}}),y.onAllow(y.input,[{type:"addRules",rules:[{toolName:r,ruleContent:k}],behavior:"allow",destination:"localSettings"}]),h();break e;case"yes-prefix":{u({completion_type:"tool_use_single",event:"accept",metadata:{language_name:"none",message_id:y.assistantMessage.message.id,platform:c.platform}});const e=k.indexOf(" "),o=e>0?k.substring(0,e):k;y.onAllow(y.input,[{type:"addRules",rules:[{toolName:r,ruleContent:`${o}:*`}],behavior:"allow",destination:"localSettings"}]),h();break e}case"no":u({completion_type:"tool_use_single",event:"reject",metadata:{language_name:"none",message_id:y.assistantMessage.message.id,platform:c.platform}}),y.onReject(o),b(),h()}},m[24]=h,m[25]=b,m[26]=k,m[27]=y,m[28]=F):F=m[28];const X=F;let Y;m[29]!==h||m[30]!==b||m[31]!==y?(Y=()=>{u({completion_type:"tool_use_single",event:"reject",metadata:{language_name:"none",message_id:y.assistantMessage.message.id,platform:c.platform}}),y.onReject(),b(),h()},m[29]=h,m[30]=b,m[31]=y,m[32]=Y):Y=m[32];const z=Y,G=`¿Usar skill "${k}"?`;let H;m[33]===Symbol.for("react.memo_cache_sentinel")?(H=e(l,{children:"Context puede usar instrucciones, código o archivos de esta Skill."}),m[33]=H):H=m[33];const I=x?.description;let J,K,Q,V,W;return m[34]!==I?(J=e(a,{flexDirection:"column",paddingX:2,paddingY:1,children:e(l,{dimColor:!0,children:I})}),m[34]=I,m[35]=J):J=m[35],m[36]!==y.permissionResult?(K=e(_,{permissionResult:y.permissionResult,toolType:"tool"}),m[36]=y.permissionResult,m[37]=K):K=m[37],m[38]!==z||m[39]!==X||m[40]!==E||m[41]!==q?(Q=e(f,{options:E,onSelect:X,onCancel:z,toolAnalyticsContext:q}),m[38]=z,m[39]=X,m[40]=E,m[41]=q,m[42]=Q):Q=m[42],m[43]!==K||m[44]!==Q?(V=o(a,{flexDirection:"column",children:[K,Q]}),m[43]=K,m[44]=Q,m[45]=V):V=m[45],m[46]!==G||m[47]!==J||m[48]!==V||m[49]!==j?(W=o(g,{title:G,workerBadge:j,children:[H,J,V]}),m[46]=G,m[47]=J,m[48]=V,m[49]=j,m[50]=W):W=m[50],W}function _temp(e){const o=m.inputSchema.safeParse(e);return o.success?o.data.skill:(s(new Error(`Failed to parse skill tool input: ${o.error.message}`)),"")}
|
package/dist/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{Box as n,Text as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{Box as n,Text as i,useTheme as s}from"../../../ink.js";import{WebFetchTool as r}from"../../../tools/WebFetchTool/WebFetchTool.js";import{shouldShowAlwaysAllowOptions as l}from"../../../utils/permissions/permissionsLoader.js";import{Select as c}from"../../CustomSelect/select.js";import{usePermissionRequestLogging as a}from"../hooks.js";import{PermissionDialog as m}from"../PermissionDialog.js";import{PermissionRuleExplanation as u}from"../PermissionRuleExplanation.js";import{logUnaryPermissionEvent as p}from"../utils.js";export function WebFetchPermissionRequest(d){const h=t(41),{toolUseConfirm:f,onDone:g,onReject:_,verbose:b,workerBadge:y}=d,[j]=s(),{url:S}=f.input;let R;h[0]!==S?(R=new URL(S),h[0]=S,h[1]=R):R=h[1];const x=R.hostname;let k;h[2]===Symbol.for("react.memo_cache_sentinel")?(k={completion_type:"tool_use_single",language_name:"none"},h[2]=k):k=h[2];let v;a(f,k),h[3]===Symbol.for("react.memo_cache_sentinel")?(v=l(),h[3]=v):v=h[3];const w=v;let C,D;if(h[4]===Symbol.for("react.memo_cache_sentinel")?(C={label:"Sí",value:"yes"},h[4]=C):C=h[4],h[5]!==x){if(D=[C],w){const t=e(i,{bold:!0,children:x});let n;h[7]!==t?(n={label:o(i,{children:["Sí, y no volver a preguntar para ",t]}),value:"yes-dont-ask-again-domain"},h[7]=t,h[8]=n):n=h[8],D.push(n)}let t;h[9]===Symbol.for("react.memo_cache_sentinel")?(t={label:o(i,{children:["No, y decirle a Context qué hacer de forma diferente ",e(i,{bold:!0,children:"(esc)"})]}),value:"no"},h[9]=t):t=h[9],D.push(t),h[5]=x,h[6]=D}else D=h[6];const F=D;let P;h[10]!==g||h[11]!==_||h[12]!==f?(P=function(e){e:switch(e){case"yes":p("tool_use_single",f,"accept"),f.onAllow(f.input,[]),g();break e;case"yes-dont-ask-again-domain":{p("tool_use_single",f,"accept");const e=function(e){try{const o=r.inputSchema.safeParse(e);if(!o.success)return`input:${e.toString()}`;const{url:t}=o.data;return`domain:${new URL(t).hostname}`}catch{return`input:${e.toString()}`}}(f.input),o={toolName:f.tool.name,ruleContent:e};f.onAllow(f.input,[{type:"addRules",rules:[o],behavior:"allow",destination:"localSettings"}]),g();break e}case"no":p("tool_use_single",f,"reject"),f.onReject(),_(),g()}},h[10]=g,h[11]=_,h[12]=f,h[13]=P):P=h[13];const T=P;let U,q,L,W,$,A,B,N,E,M;return h[14]!==j||h[15]!==f.input||h[16]!==b?(U=r.renderToolUseMessage(f.input,{theme:j,verbose:b}),h[14]=j,h[15]=f.input,h[16]=b,h[17]=U):U=h[17],h[18]!==U?(q=e(i,{children:U}),h[18]=U,h[19]=q):q=h[19],h[20]!==f.description?(L=e(i,{dimColor:!0,children:f.description}),h[20]=f.description,h[21]=L):L=h[21],h[22]!==q||h[23]!==L?(W=o(n,{flexDirection:"column",paddingX:2,paddingY:1,children:[q,L]}),h[22]=q,h[23]=L,h[24]=W):W=h[24],h[25]!==f.permissionResult?($=e(u,{permissionResult:f.permissionResult,toolType:"tool"}),h[25]=f.permissionResult,h[26]=$):$=h[26],h[27]===Symbol.for("react.memo_cache_sentinel")?(A=e(i,{children:"¿Quieres permitir que Context obtenga este contenido?"}),h[27]=A):A=h[27],h[28]!==T?(B=()=>T("no"),h[28]=T,h[29]=B):B=h[29],h[30]!==T||h[31]!==F||h[32]!==B?(N=e(c,{options:F,onChange:T,onCancel:B}),h[30]=T,h[31]=F,h[32]=B,h[33]=N):N=h[33],h[34]!==$||h[35]!==N?(E=o(n,{flexDirection:"column",children:[$,A,N]}),h[34]=$,h[35]=N,h[36]=E):E=h[36],h[37]!==E||h[38]!==W||h[39]!==y?(M=o(m,{title:"Fetch",workerBadge:y,children:[W,E]}),h[37]=E,h[38]=W,h[39]=y,h[40]=M):M=h[40],M}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import{Select as i}from"../../CustomSelect/select.js";import{Box as s,Text as n}from"../../../ink.js";import{applyPermissionUpdate as r,persistPermissionUpdate as l}from"../../../utils/permissions/PermissionUpdate.js";import{permissionRuleValueToString as a}from"../../../utils/permissions/permissionRuleParser.js";import{detectUnreachableRules as u}from"../../../utils/permissions/shadowedRuleDetection.js";import{SandboxManager as m}from"../../../utils/sandbox/sandbox-adapter.js";import{SOURCES as c}from"../../../utils/settings/constants.js";import{getProjectRelativeSettingsPathForDisplay as d}from"../../../utils/settings/settings.js";import{getClaudeConfigHomeDir as p}from"../../../utils/envUtils.js";import{join as f}from"path";import{plural as h}from"../../../utils/stringUtils.js";import{Dialog as g}from"../../design-system/Dialog.js";import{PermissionRuleDescription as j}from"./PermissionRuleDescription.js";export function optionForPermissionSaveDestination(e){switch(e){case"localSettings":return{label:"Configuración del proyecto (local)",description:`Guardada en ${d("localSettings")}`,value:e};case"projectSettings":return{label:"Configuración del proyecto",description:`Versionada en ${d("projectSettings")}`,value:e};case"userSettings":return{label:"Configuración de usuario",description:`Guardada en ${f(p(),"settings.json")}`,value:e}}}export function AddPermissionRules(a){const d=t(26),{onAddRules:p,onCancel:f,ruleValues:j,ruleBehavior:b,initialContext:x,setToolPermissionContext:v}=a;let C;d[0]===Symbol.for("react.memo_cache_sentinel")?(C=c.map(optionForPermissionSaveDestination),d[0]=C):C=d[0];const S=C;let D;d[1]!==x||d[2]!==p||d[3]!==f||d[4]!==b||d[5]!==j||d[6]!==v?(D=e=>{if("cancel"!==e){if(c.includes(e)){const o=e,t=r(x,{type:"addRules",rules:j,behavior:b,destination:o});l({type:"addRules",rules:j,behavior:b,destination:o}),v(t);const i=j.map(e=>({ruleValue:e,ruleBehavior:b,source:o})),s=m.isSandboxingEnabled()&&m.isAutoAllowBashIfSandboxedEnabled(),n=u(t,{sandboxAutoAllowEnabled:s}).filter(e=>j.some(o=>o.toolName===e.rule.ruleValue.toolName&&o.ruleContent===e.rule.ruleValue.ruleContent));p(i,n.length>0?n:void 0)}}else f()},d[1]=x,d[2]=p,d[3]=f,d[4]=b,d[5]=j,d[6]=v,d[7]=D):D=d[7];const A=D;let P;d[8]!==j.length?(P=h(j.length,"rule"),d[8]=j.length,d[9]=P):P=d[9];const R=`Add ${b} permission ${P}`;let y,V;d[10]!==j?(y=j.map(_temp),d[10]=j,d[11]=y):y=d[11],d[12]!==y?(V=e(s,{flexDirection:"column",paddingX:2,children:y}),d[12]=y,d[13]=V):V=d[13];const $=1===j.length?"Where should this rule be saved?":"Where should these rules be saved?";let w,_,B,E;return d[14]!==$?(w=e(n,{children:$}),d[14]=$,d[15]=w):w=d[15],d[16]!==A?(_=e(i,{options:S,onChange:A}),d[16]=A,d[17]=_):_=d[17],d[18]!==w||d[19]!==_?(B=o(s,{flexDirection:"column",marginY:1,children:[w,_]}),d[18]=w,d[19]=_,d[20]=B):B=d[20],d[21]!==f||d[22]!==V||d[23]!==B||d[24]!==R?(E=o(g,{title:R,onCancel:f,color:"permission",children:[V,B]}),d[21]=f,d[22]=V,d[23]=B,d[24]=R,d[25]=E):E=d[25],E}function _temp(t){return o(s,{flexDirection:"column",children:[e(n,{bold:!0,children:a(t)}),e(j,{ruleValue:t})]},a(t))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as t}from"react/compiler-runtime";import r from"figures";import{useEffect as n,useState as i}from"react";import{useDebounceCallback as s}from"usehooks-ts";import{addDirHelpMessage as c,validateDirectoryForWorkspace as l}from"../../../commands/add-dir/validation.js";import a from"../../TextInput.js";import{Box as m,Text as u}from"../../../ink.js";import{useKeybinding as d}from"../../../keybindings/useKeybinding.js";import{getDirectoryCompletions as p}from"../../../utils/suggestions/directoryCompletion.js";import{ConfigurableShortcutHint as f}from"../../ConfigurableShortcutHint.js";import{Select as g}from"../../CustomSelect/select.js";import{Byline as h}from"../../design-system/Byline.js";import{Dialog as y}from"../../design-system/Dialog.js";import{KeyboardShortcutHint as b}from"../../design-system/KeyboardShortcutHint.js";import{PromptInputFooterSuggestions as D}from"../../PromptInput/PromptInputFooterSuggestions.js";const S=[{value:"yes-session",label:"Sí, para esta sesión"},{value:"yes-remember",label:"Sí, y recordar este directorio"},{value:"no",label:"No"}];function PermissionDescription(){const o=t(1);let r;return o[0]===Symbol.for("react.memo_cache_sentinel")?(r=e(u,{dimColor:!0,children:"Context Code podrá leer archivos de este directorio y hacer ediciones cuando el auto-aceptar ediciones esté activado."}),o[0]=r):r=o[0],r}function DirectoryDisplay(r){const n=t(5),{path:i}=r;let s,c,l;return n[0]!==i?(s=e(u,{color:"permission",children:i}),n[0]=i,n[1]=s):s=n[1],n[2]===Symbol.for("react.memo_cache_sentinel")?(c=e(PermissionDescription,{}),n[2]=c):c=n[2],n[3]!==s?(l=o(m,{flexDirection:"column",paddingX:2,gap:1,children:[s,c]}),n[3]=s,n[4]=l):l=n[4],l}function DirectoryInput(n){const i=t(14),{value:s,onChange:c,onSubmit:l,error:d,suggestions:p,selectedSuggestion:f}=n;let g,h,y,b,S;return i[0]===Symbol.for("react.memo_cache_sentinel")?(g=e(u,{children:"Ingresa la ruta al directorio:"}),i[0]=g):g=i[0],i[1]!==c||i[2]!==l||i[3]!==s?(h=e(m,{borderDimColor:!0,borderStyle:"round",marginY:1,paddingLeft:1,children:e(a,{showCursor:!0,placeholder:`Ruta al directorio${r.ellipsis}`,value:s,onChange:c,onSubmit:l,columns:80,cursorOffset:s.length,onChangeCursorOffset:_temp})}),i[1]=c,i[2]=l,i[3]=s,i[4]=h):h=i[4],i[5]!==f||i[6]!==p?(y=p.length>0&&e(m,{marginBottom:1,children:e(D,{suggestions:p,selectedSuggestion:f})}),i[5]=f,i[6]=p,i[7]=y):y=i[7],i[8]!==d?(b=d&&e(u,{color:"error",children:d}),i[8]=d,i[9]=b):b=i[9],i[10]!==h||i[11]!==y||i[12]!==b?(S=o(m,{flexDirection:"column",children:[g,h,y,b]}),i[10]=h,i[11]=y,i[12]=b,i[13]=S):S=i[13],S}function _temp(){}export function AddWorkspaceDirectory(r){const a=t(34),{onAddDirectory:u,onCancel:f,permissionContext:h,directoryPath:b}=r,[D,v]=i(""),[C,_]=i(null);let k;a[0]===Symbol.for("react.memo_cache_sentinel")?(k=[],a[0]=k):k=a[0];const[x,j]=i(k),[P,w]=i(0);let I;a[1]===Symbol.for("react.memo_cache_sentinel")?(I=async e=>{if(!e)return j([]),void w(0);const o=await p(e);j(o),w(0)},a[1]=I):I=a[1];const A=s(I,100);let K,T,B;a[2]!==A||a[3]!==D?(K=()=>{A(D)},T=[D,A],a[2]=A,a[3]=D,a[4]=K,a[5]=T):(K=a[4],T=a[5]),n(K,T),a[6]===Symbol.for("react.memo_cache_sentinel")?(B=e=>{const o=e.id+"/";v(o),_(null)},a[6]=B):B=a[6];const E=B;let F;a[7]!==u||a[8]!==h?(F=async e=>{const o=await l(e,h);"success"===o.resultType?u(o.absolutePath,!1):_(c(o))},a[7]=u,a[8]=h,a[9]=F):F=a[9];const H=F;let N,O;a[10]===Symbol.for("react.memo_cache_sentinel")?(N={context:"Settings"},a[10]=N):N=a[10],d("confirm:no",f,N),a[11]!==H||a[12]!==P||a[13]!==x?(O=e=>{if(x.length>0){if("tab"===e.key){e.preventDefault();const o=x[P];return void(o&&E(o))}if("return"===e.key){e.preventDefault();const o=x[P];return void(o&&H(o.id+"/"))}if("up"===e.key||e.ctrl&&"p"===e.key)return e.preventDefault(),void w(e=>e<=0?x.length-1:e-1);if("down"===e.key||e.ctrl&&"n"===e.key)return e.preventDefault(),void w(e=>e>=x.length-1?0:e+1)}},a[11]=H,a[12]=P,a[13]=x,a[14]=O):O=a[14];const X=O;let G;a[15]!==b||a[16]!==u||a[17]!==f?(G=e=>{if(!b)return;e:switch(e){case"yes-session":u(b,!1);break e;case"yes-remember":u(b,!0);break e;case"no":f()}},a[15]=b,a[16]=u,a[17]=f,a[18]=G):G=a[18];const L=G,R=b?void 0:_temp2;let W,Y,$;return a[19]!==D||a[20]!==b||a[21]!==C||a[22]!==L||a[23]!==H||a[24]!==P||a[25]!==x?(W=o(m,b?{flexDirection:"column",gap:1,children:[e(DirectoryDisplay,{path:b}),e(g,{options:S,onChange:L,onCancel:()=>L("no")})]}:{flexDirection:"column",gap:1,marginX:2,children:[e(PermissionDescription,{}),e(DirectoryInput,{value:D,onChange:v,onSubmit:H,error:C,suggestions:x,selectedSuggestion:P})]}),a[19]=D,a[20]=b,a[21]=C,a[22]=L,a[23]=H,a[24]=P,a[25]=x,a[26]=W):W=a[26],a[27]!==f||a[28]!==R||a[29]!==W?(Y=e(y,{title:"Agregar directorio al workspace",onCancel:f,color:"permission",isCancelActive:!1,inputGuide:R,children:W}),a[27]=f,a[28]=R,a[29]=W,a[30]=Y):Y=a[30],a[31]!==X||a[32]!==Y?($=e(m,{flexDirection:"column",tabIndex:0,autoFocus:!0,onKeyDown:X,children:Y}),a[31]=X,a[32]=Y,a[33]=$):$=a[33],$}function _temp2(t){return t.pending?o(u,{children:["Presiona ",t.keyName," de nuevo para salir"]}):o(h,{children:[e(b,{shortcut:"Tab",action:"completar"}),e(b,{shortcut:"Enter",action:"agregar"}),e(f,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancelar"})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{c as n}from"react/compiler-runtime";import r from"chalk";import l from"figures";import{useEffect as i,useRef as s,useState as c}from"react";import{useAppState as a,useSetAppState as m}from"../../../state/AppState.js";import{applyPermissionUpdate as u,persistPermissionUpdate as d}from"../../../utils/permissions/PermissionUpdate.js";import{Select as f}from"../../CustomSelect/select.js";import{useExitOnCtrlCDWithKeybindings as h}from"../../../hooks/useExitOnCtrlCDWithKeybindings.js";import{useSearchInput as p}from"../../../hooks/useSearchInput.js";import{Box as y,Text as b,useTerminalFocus as g}from"../../../ink.js";import{useKeybinding as C}from"../../../keybindings/useKeybinding.js";import{getAutoModeDenials as _}from"../../../utils/autoModeDenials.js";import{permissionRuleValueToString as w}from"../../../utils/permissions/permissionRuleParser.js";import{deletePermissionRule as k,getAllowRules as v,getAskRules as S,getDenyRules as x,permissionRuleSourceDisplayString as R}from"../../../utils/permissions/permissions.js";import{jsonStringify as D}from"../../../utils/slowOperations.js";import{Pane as j}from"../../design-system/Pane.js";import{Tab as P,Tabs as T,useTabHeaderFocus as F,useTabsWidth as V}from"../../design-system/Tabs.js";import{SearchBox as A}from"../../SearchBox.js";import{AddPermissionRules as $}from"./AddPermissionRules.js";import{AddWorkspaceDirectory as B}from"./AddWorkspaceDirectory.js";import{PermissionRuleDescription as E}from"./PermissionRuleDescription.js";import{PermissionRuleInput as O}from"./PermissionRuleInput.js";import{RecentDenialsTab as L}from"./RecentDenialsTab.js";import{RemoveWorkspaceDirectory as M}from"./RemoveWorkspaceDirectory.js";import{WorkspaceTab as H}from"./WorkspaceTab.js";function RuleSourceText(o){const t=n(4),{rule:r}=o;let l;t[0]!==r.source?(l=R(r.source),t[0]=r.source,t[1]=l):l=t[1];const i=`From ${l}`;let s;return t[2]!==i?(s=e(b,{dimColor:!0,children:i}),t[2]=i,t[3]=s):s=t[3],s}function RuleDetails(r){const l=n(42),{rule:i,onDelete:s,onCancel:c}=r,a=h();let m,u,d,p,g,_;l[0]===Symbol.for("react.memo_cache_sentinel")?(m={context:"Confirmation"},l[0]=m):m=l[0],C("confirm:no",c,m),l[1]!==i.ruleValue?(u=w(i.ruleValue),l[1]=i.ruleValue,l[2]=u):u=l[2],l[3]!==u?(d=e(b,{bold:!0,children:u}),l[3]=u,l[4]=d):d=l[4],l[5]!==i.ruleValue?(p=e(E,{ruleValue:i.ruleValue}),l[5]=i.ruleValue,l[6]=p):p=l[6],l[7]!==i?(g=e(RuleSourceText,{rule:i}),l[7]=i,l[8]=g):g=l[8],l[9]!==d||l[10]!==p||l[11]!==g?(_=o(y,{flexDirection:"column",marginX:2,children:[d,p,g]}),l[9]=d,l[10]=p,l[11]=g,l[12]=_):_=l[12];const k=_;let v;l[13]!==a.keyName||l[14]!==a.pending?(v=e(y,{marginLeft:3,children:a.pending?o(b,{dimColor:!0,children:["Presiona ",a.keyName," de nuevo para salir"]}):e(b,{dimColor:!0,children:"Esc para cancelar"})}),l[13]=a.keyName,l[14]=a.pending,l[15]=v):v=l[15];const S=v;if("policySettings"===i.source){let n,r,i,s;return l[16]===Symbol.for("react.memo_cache_sentinel")?(n=e(b,{bold:!0,color:"permission",children:"Rule details"}),l[16]=n):n=l[16],l[17]===Symbol.for("react.memo_cache_sentinel")?(r=o(b,{italic:!0,children:["This rule is configured by managed settings and cannot be modified.","\n","Contact your system administrator for more information."]}),l[17]=r):r=l[17],l[18]!==k?(i=o(y,{flexDirection:"column",gap:1,borderStyle:"round",paddingLeft:1,paddingRight:1,borderColor:"permission",children:[n,k,r]}),l[18]=k,l[19]=i):i=l[19],l[20]!==S||l[21]!==i?(s=o(t,{children:[i,S]}),l[20]=S,l[21]=i,l[22]=s):s=l[22],s}let x,R,D,j,P,T,F,V;return l[23]!==i.ruleBehavior?(x=function(e){switch(e){case"allow":return"allowed";case"deny":return"denied";case"ask":return"ask"}}(i.ruleBehavior),l[23]=i.ruleBehavior,l[24]=x):x=l[24],l[25]!==x?(R=o(b,{bold:!0,color:"error",children:["Delete ",x," tool?"]}),l[25]=x,l[26]=R):R=l[26],l[27]===Symbol.for("react.memo_cache_sentinel")?(D=e(b,{children:"Are you sure you want to delete this permission rule?"}),l[27]=D):D=l[27],l[28]!==c||l[29]!==s?(j=e=>"yes"===e?s():c(),l[28]=c,l[29]=s,l[30]=j):j=l[30],l[31]===Symbol.for("react.memo_cache_sentinel")?(P=[{label:"Yes",value:"yes"},{label:"No",value:"no"}],l[31]=P):P=l[31],l[32]!==c||l[33]!==j?(T=e(f,{onChange:j,onCancel:c,options:P}),l[32]=c,l[33]=j,l[34]=T):T=l[34],l[35]!==k||l[36]!==T||l[37]!==R?(F=o(y,{flexDirection:"column",gap:1,borderStyle:"round",paddingLeft:1,paddingRight:1,borderColor:"error",children:[R,k,D,T]}),l[35]=k,l[36]=T,l[37]=R,l[38]=F):F=l[38],l[39]!==S||l[40]!==F?(V=o(t,{children:[F,S]}),l[39]=S,l[40]=F,l[41]=V):V=l[41],V}function RulesTabContent(t){const r=n(26),{options:l,searchQuery:s,isSearchMode:c,isFocused:a,onSelect:m,onCancel:u,lastFocusedRuleKey:d,cursorOffset:h,onHeaderFocusChange:p}=t,b=V(),{headerFocused:g,focusHeader:C,blurHeader:_}=F();let w,k,v,S;r[0]!==_||r[1]!==g||r[2]!==c?(w=()=>{c&&g&&_()},k=[c,g,_],r[0]=_,r[1]=g,r[2]=c,r[3]=w,r[4]=k):(w=r[3],k=r[4]),i(w,k),r[5]!==g||r[6]!==p?(v=()=>{p?.(g)},S=[g,p],r[5]=g,r[6]=p,r[7]=v,r[8]=S):(v=r[7],S=r[8]),i(v,S);const x=c&&!g;let R;r[9]!==h||r[10]!==a||r[11]!==s||r[12]!==x||r[13]!==b?(R=e(y,{marginBottom:1,flexDirection:"column",children:e(A,{query:s,isFocused:x,isTerminalFocused:a,width:b,cursorOffset:h})}),r[9]=h,r[10]=a,r[11]=s,r[12]=x,r[13]=b,r[14]=R):R=r[14];const D=Math.min(10,l.length),j=c||g;let P,T;return r[15]!==C||r[16]!==d||r[17]!==u||r[18]!==m||r[19]!==l||r[20]!==D||r[21]!==j?(P=e(f,{options:l,onChange:m,onCancel:u,visibleOptionCount:D,isDisabled:j,defaultFocusValue:d,onUpFromFirstItem:C}),r[15]=C,r[16]=d,r[17]=u,r[18]=m,r[19]=l,r[20]=D,r[21]=j,r[22]=P):P=r[22],r[23]!==R||r[24]!==P?(T=o(y,{flexDirection:"column",children:[R,P]}),r[23]=R,r[24]=P,r[25]=T):T=r[25],T}function PermissionRulesTab(t){const r=n(27);let l,i,s,c,a,m,u,d,f,h,p,g;if(r[0]!==t){const{tab:o,getRulesOptions:n,handleToolSelect:h,...p}=t;let g;f=o,s=h,c=p,i=y,m="column",u="allow"===f?0:void 0,r[10]===Symbol.for("react.memo_cache_sentinel")?(g={allow:"Context Code won't ask before using allowed tools.",ask:"Context Code will always ask for confirmation before using these tools.",deny:"Context Code will always reject requests to use denied tools."},r[10]=g):g=r[10];const C=g[f];r[11]!==C?(d=e(b,{children:C}),r[11]=C,r[12]=d):d=r[12],l=RulesTabContent,a=n(f,c.searchQuery),r[0]=t,r[1]=l,r[2]=i,r[3]=s,r[4]=c,r[5]=a,r[6]=m,r[7]=u,r[8]=d,r[9]=f}else l=r[1],i=r[2],s=r[3],c=r[4],a=r[5],m=r[6],u=r[7],d=r[8],f=r[9];return r[13]!==s||r[14]!==f?(h=e=>s(e,f),r[13]=s,r[14]=f,r[15]=h):h=r[15],r[16]!==l||r[17]!==c||r[18]!==a.options||r[19]!==h?(p=e(l,{options:a.options,onSelect:h,...c}),r[16]=l,r[17]=c,r[18]=a.options,r[19]=h,r[20]=p):p=r[20],r[21]!==i||r[22]!==m||r[23]!==u||r[24]!==d||r[25]!==p?(g=o(i,{flexDirection:m,flexShrink:u,children:[d,p]}),r[21]=i,r[22]=m,r[23]=u,r[24]=d,r[25]=p,r[26]=g):g=r[26],g}export function PermissionRuleList(i){const f=n(113),{onExit:R,initialTab:F,onRetryDenials:V}=i;let A;f[0]===Symbol.for("react.memo_cache_sentinel")?(A=_(),f[0]=A):A=f[0];const E=A.length>0,K=F??(E?"recent":"allow");let N;f[1]===Symbol.for("react.memo_cache_sentinel")?(N=[],f[1]=N):N=f[1];const[W,q]=c(N),Q=a(_temp),I=m(),U=g();let Y;f[2]===Symbol.for("react.memo_cache_sentinel")?(Y={approved:new Set,retry:new Set,denials:[]},f[2]=Y):Y=f[2];const X=s(Y);let z;f[3]===Symbol.for("react.memo_cache_sentinel")?(z=e=>{X.current=e},f[3]=z):z=f[3];const G=z,[J,Z]=c(),[ee,oe]=c(),[te,ne]=c(null),[re,le]=c(null),[ie,se]=c(!1),[ce,ae]=c(null),[me,ue]=c(!1),[de,fe]=c(!0);let he;f[4]===Symbol.for("react.memo_cache_sentinel")?(he=e=>{fe(e)},f[4]=he):he=f[4];const pe=he;let ye;f[5]!==Q?(ye=new Map,v(Q).forEach(e=>{ye.set(D(e),e)}),f[5]=Q,f[6]=ye):ye=f[6];const be=ye;let ge;f[7]!==Q?(ge=new Map,x(Q).forEach(e=>{ge.set(D(e),e)}),f[7]=Q,f[8]=ge):ge=f[8];const Ce=ge;let _e;f[9]!==Q?(_e=new Map,S(Q).forEach(e=>{_e.set(D(e),e)}),f[9]=Q,f[10]=_e):_e=f[10];const we=_e;let ke;f[11]!==be||f[12]!==we||f[13]!==Ce?(ke=(e,o)=>{const t=void 0===o?"":o,n=(()=>{switch(e){case"allow":return be;case"deny":return Ce;case"ask":return we;case"workspace":case"recent":return new Map}})(),r=[];"workspace"===e||"recent"===e||t||r.push({label:`Add a new rule${l.ellipsis}`,value:"add-new-rule"});const i=Array.from(n.keys()).sort((e,o)=>{const t=n.get(e),r=n.get(o);if(t&&r){const e=w(t.ruleValue).toLowerCase(),o=w(r.ruleValue).toLowerCase();return e.localeCompare(o)}return 0}),s=t.toLowerCase();for(const e of i){const o=n.get(e);if(o){const n=w(o.ruleValue);if(t&&!n.toLowerCase().includes(s))continue;r.push({label:n,value:e})}}return{options:r,rulesByKey:n}},f[11]=be,f[12]=we,f[13]=Ce,f[14]=ke):ke=f[14];const ve=ke,Se=h(),xe=!(J||te||re||ie||ce),Re=xe&&me;let De,je;f[15]===Symbol.for("react.memo_cache_sentinel")?(De=()=>{ue(!1)},f[15]=De):De=f[15],f[16]!==Re?(je={isActive:Re,onExit:De},f[16]=Re,f[17]=je):je=f[17];const{query:Pe,setQuery:Te,cursorOffset:Fe}=p(je);let Ve;f[18]!==me||f[19]!==xe||f[20]!==Te?(Ve=e=>{xe&&(me||e.ctrl||e.meta||("/"===e.key?(e.preventDefault(),ue(!0),Te("")):1===e.key.length&&"j"!==e.key&&"k"!==e.key&&"m"!==e.key&&"i"!==e.key&&"r"!==e.key&&" "!==e.key&&(e.preventDefault(),ue(!0),Te(e.key))))},f[18]=me,f[19]=xe,f[20]=Te,f[21]=Ve):Ve=f[21];const Ae=Ve;let $e;f[22]!==ve?($e=(e,o)=>{const{rulesByKey:t}=ve(o);return"add-new-rule"===e?void ne(o):void Z(t.get(e))},f[22]=ve,f[23]=$e):$e=f[23];const Be=$e;let Ee;f[24]===Symbol.for("react.memo_cache_sentinel")?(Ee=()=>{ne(null)},f[24]=Ee):Ee=f[24];const Oe=Ee;let Le;f[25]===Symbol.for("react.memo_cache_sentinel")?(Le=(e,o)=>{le({ruleValue:e,ruleBehavior:o}),ne(null)},f[25]=Le):Le=f[25];const Me=Le;let He;f[26]===Symbol.for("react.memo_cache_sentinel")?(He=(e,o)=>{le(null);for(const o of e)q(e=>[...e,`Added ${o.ruleBehavior} rule ${r.bold(w(o.ruleValue))}`]);if(o&&o.length>0)for(const e of o){const o="deny"===e.shadowType?"blocked":"shadowed";q(t=>[...t,r.yellow(`${l.warning} Warning: ${w(e.rule.ruleValue)} is ${o}`),r.dim(` ${e.reason}`),r.dim(` Fix: ${e.fix}`)])}},f[26]=He):He=f[26];const Ke=He;let Ne;f[27]===Symbol.for("react.memo_cache_sentinel")?(Ne=()=>{le(null)},f[27]=Ne):Ne=f[27];const We=Ne;let qe;f[28]===Symbol.for("react.memo_cache_sentinel")?(qe=()=>se(!0),f[28]=qe):qe=f[28];const Qe=qe;let Ie;f[29]===Symbol.for("react.memo_cache_sentinel")?(Ie=e=>ae(e),f[29]=Ie):Ie=f[29];const Ue=Ie;let Ye;f[30]!==W||f[31]!==R||f[32]!==V?(Ye=()=>{const e=X.current,denialsFor=o=>Array.from(o).map(o=>e.denials[o]).filter(_temp2),o=denialsFor(e.retry);if(o.length>0){const e=o.map(_temp3);return V?.(e),void R(void 0,{shouldQuery:!0,metaMessages:[`Permission granted for: ${e.join(", ")}. You may now retry ${1===e.length?"this command":"these commands"} if you would like.`]})}const t=denialsFor(e.approved);if(t.length>0||W.length>0){const e=t.length>0?[`Approved ${t.map(_temp4).join(", ")}`]:[];R([...e,...W].join("\n"))}else R("Permissions dialog dismissed",{display:"system"})},f[30]=W,f[31]=R,f[32]=V,f[33]=Ye):Ye=f[33];const Xe=Ye,ze=xe&&!me;let Ge,Je;f[34]!==ze?(Ge={context:"Settings",isActive:ze},f[34]=ze,f[35]=Ge):Ge=f[35],C("confirm:no",Xe,Ge),f[36]!==ve||f[37]!==J||f[38]!==I||f[39]!==Q?(Je=()=>{if(!J)return;const{options:e}=ve(J.ruleBehavior),o=D(J),t=e.filter(_temp5).map(_temp6),n=t.indexOf(o);let l;-1!==n&&(n<t.length-1?l=t[n+1]:n>0&&(l=t[n-1])),oe(l),k({rule:J,initialContext:Q,setToolPermissionContext(e){I(o=>({...o,toolPermissionContext:e}))}}),q(e=>[...e,`Deleted ${J.ruleBehavior} rule ${r.bold(w(J.ruleValue))}`]),Z(void 0)},f[36]=ve,f[37]=J,f[38]=I,f[39]=Q,f[40]=Je):Je=f[40];const Ze=Je;if(J){let o,t;return f[41]===Symbol.for("react.memo_cache_sentinel")?(o=()=>Z(void 0),f[41]=o):o=f[41],f[42]!==Ze||f[43]!==J?(t=e(RuleDetails,{rule:J,onDelete:Ze,onCancel:o}),f[42]=Ze,f[43]=J,f[44]=t):t=f[44],t}if(te&&"workspace"!==te&&"recent"!==te){let o;return f[45]!==te?(o=e(O,{onCancel:Oe,onSubmit:Me,ruleBehavior:te}),f[45]=te,f[46]=o):o=f[46],o}if(re){let o,t,n;return f[47]!==re.ruleValue?(o=[re.ruleValue],f[47]=re.ruleValue,f[48]=o):o=f[48],f[49]!==I?(t=e=>{I(o=>({...o,toolPermissionContext:e}))},f[49]=I,f[50]=t):t=f[50],f[51]!==o||f[52]!==t||f[53]!==Q||f[54]!==re.ruleBehavior?(n=e($,{onAddRules:Ke,onCancel:We,ruleValues:o,ruleBehavior:re.ruleBehavior,initialContext:Q,setToolPermissionContext:t}),f[51]=o,f[52]=t,f[53]=Q,f[54]=re.ruleBehavior,f[55]=n):n=f[55],n}if(ie){let o,t,n;return f[56]!==I||f[57]!==Q?(o=(e,o)=>{const t={type:"addDirectories",directories:[e],destination:o?"localSettings":"session"},n=u(Q,t);I(e=>({...e,toolPermissionContext:n})),o&&d(t),q(t=>[...t,`Added directory ${r.bold(e)} to workspace${o?" and saved to local settings":" for this session"}`]),se(!1)},f[56]=I,f[57]=Q,f[58]=o):o=f[58],f[59]===Symbol.for("react.memo_cache_sentinel")?(t=()=>se(!1),f[59]=t):t=f[59],f[60]!==o||f[61]!==Q?(n=e(B,{onAddDirectory:o,onCancel:t,permissionContext:Q}),f[60]=o,f[61]=Q,f[62]=n):n=f[62],n}if(ce){let o,t,n,l;return f[63]!==ce?(o=()=>{q(e=>[...e,`Removed directory ${r.bold(ce)} from workspace`]),ae(null)},f[63]=ce,f[64]=o):o=f[64],f[65]===Symbol.for("react.memo_cache_sentinel")?(t=()=>ae(null),f[65]=t):t=f[65],f[66]!==I?(n=e=>{I(o=>({...o,toolPermissionContext:e}))},f[66]=I,f[67]=n):n=f[67],f[68]!==ce||f[69]!==o||f[70]!==n||f[71]!==Q?(l=e(M,{directoryPath:ce,onRemove:o,onCancel:t,permissionContext:Q,setPermissionContext:n}),f[68]=ce,f[69]=o,f[70]=n,f[71]=Q,f[72]=l):l=f[72],l}let eo;f[73]!==ve||f[74]!==Xe||f[75]!==Be||f[76]!==me||f[77]!==U||f[78]!==ee||f[79]!==Fe||f[80]!==Pe?(eo={searchQuery:Pe,isSearchMode:me,isFocused:U,onCancel:Xe,lastFocusedRuleKey:ee,cursorOffset:Fe,getRulesOptions:ve,handleToolSelect:Be,onHeaderFocusChange:pe},f[73]=ve,f[74]=Xe,f[75]=Be,f[76]=me,f[77]=U,f[78]=ee,f[79]=Fe,f[80]=Pe,f[81]=eo):eo=f[81];const oo=eo,to=!!J||!!te||!!re||ie||!!ce,no=!me;let ro,lo,io,so,co,ao,mo,uo,fo,ho;return f[82]===Symbol.for("react.memo_cache_sentinel")?(ro=e(P,{id:"recent",title:"Recently denied",children:e(L,{onHeaderFocusChange:pe,onStateChange:G})}),f[82]=ro):ro=f[82],f[83]!==oo?(lo=e(P,{id:"allow",title:"Allow",children:e(PermissionRulesTab,{tab:"allow",...oo})}),f[83]=oo,f[84]=lo):lo=f[84],f[85]!==oo?(io=e(P,{id:"ask",title:"Ask",children:e(PermissionRulesTab,{tab:"ask",...oo})}),f[85]=oo,f[86]=io):io=f[86],f[87]!==oo?(so=e(P,{id:"deny",title:"Deny",children:e(PermissionRulesTab,{tab:"deny",...oo})}),f[87]=oo,f[88]=so):so=f[88],f[89]===Symbol.for("react.memo_cache_sentinel")?(co=e(b,{children:"Context Code can read files in the workspace, and make edits when auto-accept edits is on."}),f[89]=co):co=f[89],f[90]!==R||f[91]!==Q?(ao=e(P,{id:"workspace",title:"Workspace",children:o(y,{flexDirection:"column",children:[co,e(H,{onExit:R,toolPermissionContext:Q,onRequestAddDirectory:Qe,onRequestRemoveDirectory:Ue,onHeaderFocusChange:pe})]})}),f[90]=R,f[91]=Q,f[92]=ao):ao=f[92],f[93]!==K||f[94]!==to||f[95]!==no||f[96]!==lo||f[97]!==io||f[98]!==so||f[99]!==ao?(mo=o(T,{title:"Permissions:",color:"permission",defaultTab:K,hidden:to,initialHeaderFocused:!E,navFromContent:no,children:[ro,lo,io,so,ao]}),f[93]=K,f[94]=to,f[95]=no,f[96]=lo,f[97]=io,f[98]=so,f[99]=ao,f[100]=mo):mo=f[100],f[101]!==K||f[102]!==Se.keyName||f[103]!==Se.pending||f[104]!==de||f[105]!==me?(uo=e(y,{marginTop:1,paddingLeft:1,children:e(b,{dimColor:!0,children:Se.pending?o(t,{children:["Press ",Se.keyName," again to exit"]}):e(t,de?{children:"←/→ tab switch · ↓ return · Esc cancel"}:me?{children:"Type to filter · Enter/↓ select · ↑ tabs · Esc clear"}:E&&"recent"===K?{children:"Enter approve · r retry · ↑↓ navigate · ←/→ switch · Esc cancel"}:{children:"↑↓ navigate · Enter select · Type to search · ←/→ switch · Esc cancel"})})}),f[101]=K,f[102]=Se.keyName,f[103]=Se.pending,f[104]=de,f[105]=me,f[106]=uo):uo=f[106],f[107]!==mo||f[108]!==uo?(fo=o(j,{color:"permission",children:[mo,uo]}),f[107]=mo,f[108]=uo,f[109]=fo):fo=f[109],f[110]!==Ae||f[111]!==fo?(ho=e(y,{flexDirection:"column",onKeyDown:Ae,children:fo}),f[110]=Ae,f[111]=fo,f[112]=ho):ho=f[112],ho}function _temp6(e){return e.value}function _temp5(e){return"add-new-rule"!==e.value}function _temp4(e){return r.bold(e.display)}function _temp3(e){return e.display}function _temp2(e){return void 0!==e}function _temp(e){return e.toolPermissionContext}
|
|
1
|
+
import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{c as r}from"react/compiler-runtime";import n from"chalk";import i from"figures";import{useEffect as l,useRef as s,useState as c}from"react";import{useAppState as a,useSetAppState as m}from"../../../state/AppState.js";import{applyPermissionUpdate as u,persistPermissionUpdate as d}from"../../../utils/permissions/PermissionUpdate.js";import{Select as f}from"../../CustomSelect/select.js";import{useExitOnCtrlCDWithKeybindings as p}from"../../../hooks/useExitOnCtrlCDWithKeybindings.js";import{useSearchInput as h}from"../../../hooks/useSearchInput.js";import{Box as y,Text as g,useTerminalFocus as b}from"../../../ink.js";import{useKeybinding as C}from"../../../keybindings/useKeybinding.js";import{getAutoModeDenials as _}from"../../../utils/autoModeDenials.js";import{permissionRuleValueToString as w}from"../../../utils/permissions/permissionRuleParser.js";import{deletePermissionRule as S,getAllowRules as k,getAskRules as v,getDenyRules as x,permissionRuleSourceDisplayString as R}from"../../../utils/permissions/permissions.js";import{jsonStringify as j}from"../../../utils/slowOperations.js";import{Pane as D}from"../../design-system/Pane.js";import{Tab as P,Tabs as T,useTabHeaderFocus as F,useTabsWidth as V}from"../../design-system/Tabs.js";import{SearchBox as $}from"../../SearchBox.js";import{AddPermissionRules as A}from"./AddPermissionRules.js";import{AddWorkspaceDirectory as B}from"./AddWorkspaceDirectory.js";import{PermissionRuleDescription as E}from"./PermissionRuleDescription.js";import{PermissionRuleInput as O}from"./PermissionRuleInput.js";import{RecentDenialsTab as L}from"./RecentDenialsTab.js";import{RemoveWorkspaceDirectory as M}from"./RemoveWorkspaceDirectory.js";import{WorkspaceTab as q}from"./WorkspaceTab.js";function RuleSourceText(o){const t=r(4),{rule:n}=o;let i;t[0]!==n.source?(i=R(n.source),t[0]=n.source,t[1]=i):i=t[1];const l=`From ${i}`;let s;return t[2]!==l?(s=e(g,{dimColor:!0,children:l}),t[2]=l,t[3]=s):s=t[3],s}function RuleDetails(n){const i=r(42),{rule:l,onDelete:s,onCancel:c}=n,a=p();let m,u,d,h,b,_;i[0]===Symbol.for("react.memo_cache_sentinel")?(m={context:"Confirmation"},i[0]=m):m=i[0],C("confirm:no",c,m),i[1]!==l.ruleValue?(u=w(l.ruleValue),i[1]=l.ruleValue,i[2]=u):u=i[2],i[3]!==u?(d=e(g,{bold:!0,children:u}),i[3]=u,i[4]=d):d=i[4],i[5]!==l.ruleValue?(h=e(E,{ruleValue:l.ruleValue}),i[5]=l.ruleValue,i[6]=h):h=i[6],i[7]!==l?(b=e(RuleSourceText,{rule:l}),i[7]=l,i[8]=b):b=i[8],i[9]!==d||i[10]!==h||i[11]!==b?(_=o(y,{flexDirection:"column",marginX:2,children:[d,h,b]}),i[9]=d,i[10]=h,i[11]=b,i[12]=_):_=i[12];const S=_;let k;i[13]!==a.keyName||i[14]!==a.pending?(k=e(y,{marginLeft:3,children:a.pending?o(g,{dimColor:!0,children:["Presiona ",a.keyName," de nuevo para salir"]}):e(g,{dimColor:!0,children:"Esc para cancelar"})}),i[13]=a.keyName,i[14]=a.pending,i[15]=k):k=i[15];const v=k;if("policySettings"===l.source){let r,n,l,s;return i[16]===Symbol.for("react.memo_cache_sentinel")?(r=e(g,{bold:!0,color:"permission",children:"Rule details"}),i[16]=r):r=i[16],i[17]===Symbol.for("react.memo_cache_sentinel")?(n=o(g,{italic:!0,children:["This rule is configured by managed settings and cannot be modified.","\n","Contact your system administrator for more information."]}),i[17]=n):n=i[17],i[18]!==S?(l=o(y,{flexDirection:"column",gap:1,borderStyle:"round",paddingLeft:1,paddingRight:1,borderColor:"permission",children:[r,S,n]}),i[18]=S,i[19]=l):l=i[19],i[20]!==v||i[21]!==l?(s=o(t,{children:[l,v]}),i[20]=v,i[21]=l,i[22]=s):s=i[22],s}let x,R,j,D,P,T,F,V;return i[23]!==l.ruleBehavior?(x=function(e){switch(e){case"allow":return"de permitir";case"deny":return"de denegar";case"ask":return"de preguntar"}}(l.ruleBehavior),i[23]=l.ruleBehavior,i[24]=x):x=i[24],i[25]!==x?(R=o(g,{bold:!0,color:"error",children:["¿Eliminar regla ",x,"?"]}),i[25]=x,i[26]=R):R=i[26],i[27]===Symbol.for("react.memo_cache_sentinel")?(j=e(g,{children:"¿Seguro que quieres eliminar esta regla de permiso?"}),i[27]=j):j=i[27],i[28]!==c||i[29]!==s?(D=e=>"yes"===e?s():c(),i[28]=c,i[29]=s,i[30]=D):D=i[30],i[31]===Symbol.for("react.memo_cache_sentinel")?(P=[{label:"Sí",value:"yes"},{label:"No",value:"no"}],i[31]=P):P=i[31],i[32]!==c||i[33]!==D?(T=e(f,{onChange:D,onCancel:c,options:P}),i[32]=c,i[33]=D,i[34]=T):T=i[34],i[35]!==S||i[36]!==T||i[37]!==R?(F=o(y,{flexDirection:"column",gap:1,borderStyle:"round",paddingLeft:1,paddingRight:1,borderColor:"error",children:[R,S,j,T]}),i[35]=S,i[36]=T,i[37]=R,i[38]=F):F=i[38],i[39]!==v||i[40]!==F?(V=o(t,{children:[F,v]}),i[39]=v,i[40]=F,i[41]=V):V=i[41],V}function RulesTabContent(t){const n=r(26),{options:i,searchQuery:s,isSearchMode:c,isFocused:a,onSelect:m,onCancel:u,lastFocusedRuleKey:d,cursorOffset:p,onHeaderFocusChange:h}=t,g=V(),{headerFocused:b,focusHeader:C,blurHeader:_}=F();let w,S,k,v;n[0]!==_||n[1]!==b||n[2]!==c?(w=()=>{c&&b&&_()},S=[c,b,_],n[0]=_,n[1]=b,n[2]=c,n[3]=w,n[4]=S):(w=n[3],S=n[4]),l(w,S),n[5]!==b||n[6]!==h?(k=()=>{h?.(b)},v=[b,h],n[5]=b,n[6]=h,n[7]=k,n[8]=v):(k=n[7],v=n[8]),l(k,v);const x=c&&!b;let R;n[9]!==p||n[10]!==a||n[11]!==s||n[12]!==x||n[13]!==g?(R=e(y,{marginBottom:1,flexDirection:"column",children:e($,{query:s,isFocused:x,isTerminalFocused:a,width:g,cursorOffset:p})}),n[9]=p,n[10]=a,n[11]=s,n[12]=x,n[13]=g,n[14]=R):R=n[14];const j=Math.min(10,i.length),D=c||b;let P,T;return n[15]!==C||n[16]!==d||n[17]!==u||n[18]!==m||n[19]!==i||n[20]!==j||n[21]!==D?(P=e(f,{options:i,onChange:m,onCancel:u,visibleOptionCount:j,isDisabled:D,defaultFocusValue:d,onUpFromFirstItem:C}),n[15]=C,n[16]=d,n[17]=u,n[18]=m,n[19]=i,n[20]=j,n[21]=D,n[22]=P):P=n[22],n[23]!==R||n[24]!==P?(T=o(y,{flexDirection:"column",children:[R,P]}),n[23]=R,n[24]=P,n[25]=T):T=n[25],T}function PermissionRulesTab(t){const n=r(27);let i,l,s,c,a,m,u,d,f,p,h,b;if(n[0]!==t){const{tab:o,getRulesOptions:r,handleToolSelect:p,...h}=t;let b;f=o,s=p,c=h,l=y,m="column",u="allow"===f?0:void 0,n[10]===Symbol.for("react.memo_cache_sentinel")?(b={allow:"Context Code won't ask before using allowed tools.",ask:"Context Code will always ask for confirmation before using these tools.",deny:"Context Code will always reject requests to use denied tools."},n[10]=b):b=n[10];const C=b[f];n[11]!==C?(d=e(g,{children:C}),n[11]=C,n[12]=d):d=n[12],i=RulesTabContent,a=r(f,c.searchQuery),n[0]=t,n[1]=i,n[2]=l,n[3]=s,n[4]=c,n[5]=a,n[6]=m,n[7]=u,n[8]=d,n[9]=f}else i=n[1],l=n[2],s=n[3],c=n[4],a=n[5],m=n[6],u=n[7],d=n[8],f=n[9];return n[13]!==s||n[14]!==f?(p=e=>s(e,f),n[13]=s,n[14]=f,n[15]=p):p=n[15],n[16]!==i||n[17]!==c||n[18]!==a.options||n[19]!==p?(h=e(i,{options:a.options,onSelect:p,...c}),n[16]=i,n[17]=c,n[18]=a.options,n[19]=p,n[20]=h):h=n[20],n[21]!==l||n[22]!==m||n[23]!==u||n[24]!==d||n[25]!==h?(b=o(l,{flexDirection:m,flexShrink:u,children:[d,h]}),n[21]=l,n[22]=m,n[23]=u,n[24]=d,n[25]=h,n[26]=b):b=n[26],b}export function PermissionRuleList(l){const f=r(113),{onExit:R,initialTab:F,onRetryDenials:V}=l;let $;f[0]===Symbol.for("react.memo_cache_sentinel")?($=_(),f[0]=$):$=f[0];const E=$.length>0,H=F??(E?"recent":"allow");let K;f[1]===Symbol.for("react.memo_cache_sentinel")?(K=[],f[1]=K):K=f[1];const[N,W]=c(K),Q=a(_temp),I=m(),U=b();let X;f[2]===Symbol.for("react.memo_cache_sentinel")?(X={approved:new Set,retry:new Set,denials:[]},f[2]=X):X=f[2];const Y=s(X);let z;f[3]===Symbol.for("react.memo_cache_sentinel")?(z=e=>{Y.current=e},f[3]=z):z=f[3];const G=z,[J,Z]=c(),[ee,oe]=c(),[te,re]=c(null),[ne,ie]=c(null),[le,se]=c(!1),[ce,ae]=c(null),[me,ue]=c(!1),[de,fe]=c(!0);let pe;f[4]===Symbol.for("react.memo_cache_sentinel")?(pe=e=>{fe(e)},f[4]=pe):pe=f[4];const he=pe;let ye;f[5]!==Q?(ye=new Map,k(Q).forEach(e=>{ye.set(j(e),e)}),f[5]=Q,f[6]=ye):ye=f[6];const ge=ye;let be;f[7]!==Q?(be=new Map,x(Q).forEach(e=>{be.set(j(e),e)}),f[7]=Q,f[8]=be):be=f[8];const Ce=be;let _e;f[9]!==Q?(_e=new Map,v(Q).forEach(e=>{_e.set(j(e),e)}),f[9]=Q,f[10]=_e):_e=f[10];const we=_e;let Se;f[11]!==ge||f[12]!==we||f[13]!==Ce?(Se=(e,o)=>{const t=void 0===o?"":o,r=(()=>{switch(e){case"allow":return ge;case"deny":return Ce;case"ask":return we;case"workspace":case"recent":return new Map}})(),n=[];"workspace"===e||"recent"===e||t||n.push({label:`Add a new rule${i.ellipsis}`,value:"add-new-rule"});const l=Array.from(r.keys()).sort((e,o)=>{const t=r.get(e),n=r.get(o);if(t&&n){const e=w(t.ruleValue).toLowerCase(),o=w(n.ruleValue).toLowerCase();return e.localeCompare(o)}return 0}),s=t.toLowerCase();for(const e of l){const o=r.get(e);if(o){const r=w(o.ruleValue);if(t&&!r.toLowerCase().includes(s))continue;n.push({label:r,value:e})}}return{options:n,rulesByKey:r}},f[11]=ge,f[12]=we,f[13]=Ce,f[14]=Se):Se=f[14];const ke=Se,ve=p(),xe=!(J||te||ne||le||ce),Re=xe&&me;let je,De;f[15]===Symbol.for("react.memo_cache_sentinel")?(je=()=>{ue(!1)},f[15]=je):je=f[15],f[16]!==Re?(De={isActive:Re,onExit:je},f[16]=Re,f[17]=De):De=f[17];const{query:Pe,setQuery:Te,cursorOffset:Fe}=h(De);let Ve;f[18]!==me||f[19]!==xe||f[20]!==Te?(Ve=e=>{xe&&(me||e.ctrl||e.meta||("/"===e.key?(e.preventDefault(),ue(!0),Te("")):1===e.key.length&&"j"!==e.key&&"k"!==e.key&&"m"!==e.key&&"i"!==e.key&&"r"!==e.key&&" "!==e.key&&(e.preventDefault(),ue(!0),Te(e.key))))},f[18]=me,f[19]=xe,f[20]=Te,f[21]=Ve):Ve=f[21];const $e=Ve;let Ae;f[22]!==ke?(Ae=(e,o)=>{const{rulesByKey:t}=ke(o);return"add-new-rule"===e?void re(o):void Z(t.get(e))},f[22]=ke,f[23]=Ae):Ae=f[23];const Be=Ae;let Ee;f[24]===Symbol.for("react.memo_cache_sentinel")?(Ee=()=>{re(null)},f[24]=Ee):Ee=f[24];const Oe=Ee;let Le;f[25]===Symbol.for("react.memo_cache_sentinel")?(Le=(e,o)=>{ie({ruleValue:e,ruleBehavior:o}),re(null)},f[25]=Le):Le=f[25];const Me=Le;let qe;f[26]===Symbol.for("react.memo_cache_sentinel")?(qe=(e,o)=>{ie(null);for(const o of e)W(e=>[...e,`Added ${o.ruleBehavior} rule ${n.bold(w(o.ruleValue))}`]);if(o&&o.length>0)for(const e of o){const o="deny"===e.shadowType?"blocked":"shadowed";W(t=>[...t,n.yellow(`${i.warning} Warning: ${w(e.rule.ruleValue)} is ${o}`),n.dim(` ${e.reason}`),n.dim(` Fix: ${e.fix}`)])}},f[26]=qe):qe=f[26];const He=qe;let Ke;f[27]===Symbol.for("react.memo_cache_sentinel")?(Ke=()=>{ie(null)},f[27]=Ke):Ke=f[27];const Ne=Ke;let We;f[28]===Symbol.for("react.memo_cache_sentinel")?(We=()=>se(!0),f[28]=We):We=f[28];const Qe=We;let Ie;f[29]===Symbol.for("react.memo_cache_sentinel")?(Ie=e=>ae(e),f[29]=Ie):Ie=f[29];const Ue=Ie;let Xe;f[30]!==N||f[31]!==R||f[32]!==V?(Xe=()=>{const e=Y.current,denialsFor=o=>Array.from(o).map(o=>e.denials[o]).filter(_temp2),o=denialsFor(e.retry);if(o.length>0){const e=o.map(_temp3);return V?.(e),void R(void 0,{shouldQuery:!0,metaMessages:[`Permission granted for: ${e.join(", ")}. You may now retry ${1===e.length?"this command":"these commands"} if you would like.`]})}const t=denialsFor(e.approved);if(t.length>0||N.length>0){const e=t.length>0?[`Approved ${t.map(_temp4).join(", ")}`]:[];R([...e,...N].join("\n"))}else R("Permissions dialog dismissed",{display:"system"})},f[30]=N,f[31]=R,f[32]=V,f[33]=Xe):Xe=f[33];const Ye=Xe,ze=xe&&!me;let Ge,Je;f[34]!==ze?(Ge={context:"Settings",isActive:ze},f[34]=ze,f[35]=Ge):Ge=f[35],C("confirm:no",Ye,Ge),f[36]!==ke||f[37]!==J||f[38]!==I||f[39]!==Q?(Je=()=>{if(!J)return;const{options:e}=ke(J.ruleBehavior),o=j(J),t=e.filter(_temp5).map(_temp6),r=t.indexOf(o);let i;-1!==r&&(r<t.length-1?i=t[r+1]:r>0&&(i=t[r-1])),oe(i),S({rule:J,initialContext:Q,setToolPermissionContext(e){I(o=>({...o,toolPermissionContext:e}))}}),W(e=>[...e,`Deleted ${J.ruleBehavior} rule ${n.bold(w(J.ruleValue))}`]),Z(void 0)},f[36]=ke,f[37]=J,f[38]=I,f[39]=Q,f[40]=Je):Je=f[40];const Ze=Je;if(J){let o,t;return f[41]===Symbol.for("react.memo_cache_sentinel")?(o=()=>Z(void 0),f[41]=o):o=f[41],f[42]!==Ze||f[43]!==J?(t=e(RuleDetails,{rule:J,onDelete:Ze,onCancel:o}),f[42]=Ze,f[43]=J,f[44]=t):t=f[44],t}if(te&&"workspace"!==te&&"recent"!==te){let o;return f[45]!==te?(o=e(O,{onCancel:Oe,onSubmit:Me,ruleBehavior:te}),f[45]=te,f[46]=o):o=f[46],o}if(ne){let o,t,r;return f[47]!==ne.ruleValue?(o=[ne.ruleValue],f[47]=ne.ruleValue,f[48]=o):o=f[48],f[49]!==I?(t=e=>{I(o=>({...o,toolPermissionContext:e}))},f[49]=I,f[50]=t):t=f[50],f[51]!==o||f[52]!==t||f[53]!==Q||f[54]!==ne.ruleBehavior?(r=e(A,{onAddRules:He,onCancel:Ne,ruleValues:o,ruleBehavior:ne.ruleBehavior,initialContext:Q,setToolPermissionContext:t}),f[51]=o,f[52]=t,f[53]=Q,f[54]=ne.ruleBehavior,f[55]=r):r=f[55],r}if(le){let o,t,r;return f[56]!==I||f[57]!==Q?(o=(e,o)=>{const t={type:"addDirectories",directories:[e],destination:o?"localSettings":"session"},r=u(Q,t);I(e=>({...e,toolPermissionContext:r})),o&&d(t),W(t=>[...t,`Added directory ${n.bold(e)} to workspace${o?" and saved to local settings":" for this session"}`]),se(!1)},f[56]=I,f[57]=Q,f[58]=o):o=f[58],f[59]===Symbol.for("react.memo_cache_sentinel")?(t=()=>se(!1),f[59]=t):t=f[59],f[60]!==o||f[61]!==Q?(r=e(B,{onAddDirectory:o,onCancel:t,permissionContext:Q}),f[60]=o,f[61]=Q,f[62]=r):r=f[62],r}if(ce){let o,t,r,i;return f[63]!==ce?(o=()=>{W(e=>[...e,`Removed directory ${n.bold(ce)} from workspace`]),ae(null)},f[63]=ce,f[64]=o):o=f[64],f[65]===Symbol.for("react.memo_cache_sentinel")?(t=()=>ae(null),f[65]=t):t=f[65],f[66]!==I?(r=e=>{I(o=>({...o,toolPermissionContext:e}))},f[66]=I,f[67]=r):r=f[67],f[68]!==ce||f[69]!==o||f[70]!==r||f[71]!==Q?(i=e(M,{directoryPath:ce,onRemove:o,onCancel:t,permissionContext:Q,setPermissionContext:r}),f[68]=ce,f[69]=o,f[70]=r,f[71]=Q,f[72]=i):i=f[72],i}let eo;f[73]!==ke||f[74]!==Ye||f[75]!==Be||f[76]!==me||f[77]!==U||f[78]!==ee||f[79]!==Fe||f[80]!==Pe?(eo={searchQuery:Pe,isSearchMode:me,isFocused:U,onCancel:Ye,lastFocusedRuleKey:ee,cursorOffset:Fe,getRulesOptions:ke,handleToolSelect:Be,onHeaderFocusChange:he},f[73]=ke,f[74]=Ye,f[75]=Be,f[76]=me,f[77]=U,f[78]=ee,f[79]=Fe,f[80]=Pe,f[81]=eo):eo=f[81];const oo=eo,to=!!J||!!te||!!ne||le||!!ce,ro=!me;let no,io,lo,so,co,ao,mo,uo,fo,po;return f[82]===Symbol.for("react.memo_cache_sentinel")?(no=e(P,{id:"recent",title:"Recently denied",children:e(L,{onHeaderFocusChange:he,onStateChange:G})}),f[82]=no):no=f[82],f[83]!==oo?(io=e(P,{id:"allow",title:"Allow",children:e(PermissionRulesTab,{tab:"allow",...oo})}),f[83]=oo,f[84]=io):io=f[84],f[85]!==oo?(lo=e(P,{id:"ask",title:"Ask",children:e(PermissionRulesTab,{tab:"ask",...oo})}),f[85]=oo,f[86]=lo):lo=f[86],f[87]!==oo?(so=e(P,{id:"deny",title:"Deny",children:e(PermissionRulesTab,{tab:"deny",...oo})}),f[87]=oo,f[88]=so):so=f[88],f[89]===Symbol.for("react.memo_cache_sentinel")?(co=e(g,{children:"Context Code can read files in the workspace, and make edits when auto-accept edits is on."}),f[89]=co):co=f[89],f[90]!==R||f[91]!==Q?(ao=e(P,{id:"workspace",title:"Workspace",children:o(y,{flexDirection:"column",children:[co,e(q,{onExit:R,toolPermissionContext:Q,onRequestAddDirectory:Qe,onRequestRemoveDirectory:Ue,onHeaderFocusChange:he})]})}),f[90]=R,f[91]=Q,f[92]=ao):ao=f[92],f[93]!==H||f[94]!==to||f[95]!==ro||f[96]!==io||f[97]!==lo||f[98]!==so||f[99]!==ao?(mo=o(T,{title:"Permissions:",color:"permission",defaultTab:H,hidden:to,initialHeaderFocused:!E,navFromContent:ro,children:[no,io,lo,so,ao]}),f[93]=H,f[94]=to,f[95]=ro,f[96]=io,f[97]=lo,f[98]=so,f[99]=ao,f[100]=mo):mo=f[100],f[101]!==H||f[102]!==ve.keyName||f[103]!==ve.pending||f[104]!==de||f[105]!==me?(uo=e(y,{marginTop:1,paddingLeft:1,children:e(g,{dimColor:!0,children:ve.pending?o(t,{children:["Press ",ve.keyName," again to exit"]}):e(t,de?{children:"←/→ tab switch · ↓ return · Esc cancel"}:me?{children:"Type to filter · Enter/↓ select · ↑ tabs · Esc clear"}:E&&"recent"===H?{children:"Enter approve · r retry · ↑↓ navigate · ←/→ switch · Esc cancel"}:{children:"↑↓ navigate · Enter select · Type to search · ←/→ switch · Esc cancel"})})}),f[101]=H,f[102]=ve.keyName,f[103]=ve.pending,f[104]=de,f[105]=me,f[106]=uo):uo=f[106],f[107]!==mo||f[108]!==uo?(fo=o(D,{color:"permission",children:[mo,uo]}),f[107]=mo,f[108]=uo,f[109]=fo):fo=f[109],f[110]!==$e||f[111]!==fo?(po=e(y,{flexDirection:"column",onKeyDown:$e,children:fo}),f[110]=$e,f[111]=fo,f[112]=po):po=f[112],po}function _temp6(e){return e.value}function _temp5(e){return"add-new-rule"!==e.value}function _temp4(e){return n.bold(e.display)}function _temp3(e){return e.display}function _temp2(e){return void 0!==e}function _temp(e){return e.toolPermissionContext}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as r}from"react/compiler-runtime";import{Select as t}from"../../CustomSelect/select.js";import{Box as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as r}from"react/compiler-runtime";import{Select as t}from"../../CustomSelect/select.js";import{Box as i,Text as s}from"../../../ink.js";import{applyPermissionUpdate as n}from"../../../utils/permissions/PermissionUpdate.js";import{Dialog as c}from"../../design-system/Dialog.js";export function RemoveWorkspaceDirectory(l){const m=r(19),{directoryPath:a,onRemove:d,onCancel:p,permissionContext:f,setPermissionContext:u}=l;let h;m[0]!==a||m[1]!==d||m[2]!==f||m[3]!==u?(h=()=>{const e=n(f,{type:"removeDirectories",directories:[a],destination:"session"});u(e),d()},m[0]=a,m[1]=d,m[2]=f,m[3]=u,m[4]=h):h=m[4];const y=h;let C;m[5]!==y||m[6]!==p?(C=e=>{"yes"===e?y():p()},m[5]=y,m[6]=p,m[7]=C):C=m[7];const x=C;let j,v,b,g,D;return m[8]!==a?(j=e(i,{marginX:2,flexDirection:"column",children:e(s,{bold:!0,children:a})}),m[8]=a,m[9]=j):j=m[9],m[10]===Symbol.for("react.memo_cache_sentinel")?(v=e(s,{children:"Context Code ya no tendrá acceso a los archivos de este directorio."}),m[10]=v):v=m[10],m[11]===Symbol.for("react.memo_cache_sentinel")?(b=[{label:"Sí",value:"yes"},{label:"No",value:"no"}],m[11]=b):b=m[11],m[12]!==x||m[13]!==p?(g=e(t,{onChange:x,onCancel:p,options:b}),m[12]=x,m[13]=p,m[14]=g):g=m[14],m[15]!==p||m[16]!==j||m[17]!==g?(D=o(c,{title:"¿Quitar directorio del workspace?",onCancel:p,color:"error",children:[j,v,g]}),m[15]=p,m[16]=j,m[17]=g,m[18]=D):D=m[18],D}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as n}from"react/jsx-runtime";import{c as o}from"react/compiler-runtime";import{Box as i,Text as l}from"../../ink.js";import{SandboxManager as r,shouldAllowManagedSandboxDomainsOnly as t}from"../../utils/sandbox/sandbox-adapter.js";export function SandboxConfigTab(){const d=o(3),c=r.isSandboxingEnabled();let s;if(d[0]===Symbol.for("react.memo_cache_sentinel")){const n=r.checkDependencies();s=n.warnings.length>0?e(i,{marginTop:1,flexDirection:"column",children:n.warnings.map(_temp)}):null,d[0]=s}else s=d[0];const m=s;if(!c){let o;return d[1]===Symbol.for("react.memo_cache_sentinel")?(o=n(i,{flexDirection:"column",paddingY:1,children:[e(l,{color:"subtle",children:"Sandbox
|
|
1
|
+
import{jsx as e,jsxs as n}from"react/jsx-runtime";import{c as o}from"react/compiler-runtime";import{Box as i,Text as l}from"../../ink.js";import{SandboxManager as r,shouldAllowManagedSandboxDomainsOnly as t}from"../../utils/sandbox/sandbox-adapter.js";export function SandboxConfigTab(){const d=o(3),c=r.isSandboxingEnabled();let s;if(d[0]===Symbol.for("react.memo_cache_sentinel")){const n=r.checkDependencies();s=n.warnings.length>0?e(i,{marginTop:1,flexDirection:"column",children:n.warnings.map(_temp)}):null,d[0]=s}else s=d[0];const m=s;if(!c){let o;return d[1]===Symbol.for("react.memo_cache_sentinel")?(o=n(i,{flexDirection:"column",paddingY:1,children:[e(l,{color:"subtle",children:"Sandbox no está habilitado"}),m]}),d[1]=o):o=d[1],o}let a;if(d[2]===Symbol.for("react.memo_cache_sentinel")){const o=r.getFsReadConfig(),c=r.getFsWriteConfig(),s=r.getNetworkRestrictionConfig(),h=r.getAllowUnixSockets(),g=r.getExcludedCommands(),p=r.getLinuxGlobPatternWarnings();a=n(i,{flexDirection:"column",paddingY:1,children:[n(i,{flexDirection:"column",children:[e(l,{bold:!0,color:"permission",children:"Excluded Commands:"}),e(l,{dimColor:!0,children:g.length>0?g.join(", "):"None"})]}),o.denyOnly.length>0&&n(i,{marginTop:1,flexDirection:"column",children:[e(l,{bold:!0,color:"permission",children:"Filesystem Read Restrictions:"}),n(l,{dimColor:!0,children:["Denied: ",o.denyOnly.join(", ")]}),o.allowWithinDeny&&o.allowWithinDeny.length>0&&n(l,{dimColor:!0,children:["Allowed within denied: ",o.allowWithinDeny.join(", ")]})]}),c.allowOnly.length>0&&n(i,{marginTop:1,flexDirection:"column",children:[e(l,{bold:!0,color:"permission",children:"Filesystem Write Restrictions:"}),n(l,{dimColor:!0,children:["Allowed: ",c.allowOnly.join(", ")]}),c.denyWithinAllow.length>0&&n(l,{dimColor:!0,children:["Denied within allowed: ",c.denyWithinAllow.join(", ")]})]}),(s.allowedHosts&&s.allowedHosts.length>0||s.deniedHosts&&s.deniedHosts.length>0)&&n(i,{marginTop:1,flexDirection:"column",children:[n(l,{bold:!0,color:"permission",children:["Network Restrictions",t()?" (Managed)":"",":"]}),s.allowedHosts&&s.allowedHosts.length>0&&n(l,{dimColor:!0,children:["Allowed: ",s.allowedHosts.join(", ")]}),s.deniedHosts&&s.deniedHosts.length>0&&n(l,{dimColor:!0,children:["Denied: ",s.deniedHosts.join(", ")]})]}),h&&h.length>0&&n(i,{marginTop:1,flexDirection:"column",children:[e(l,{bold:!0,color:"permission",children:"Allowed Unix Sockets:"}),e(l,{dimColor:!0,children:h.join(", ")})]}),p.length>0&&n(i,{marginTop:1,flexDirection:"column",children:[e(l,{bold:!0,color:"warning",children:"⚠ Warning: Glob patterns not fully supported on Linux"}),n(l,{dimColor:!0,children:["The following patterns will be ignored:"," ",p.slice(0,3).join(", "),p.length>3&&` (${p.length-3} more)`]})]}),m]}),d[2]=a}else a=d[2];return a}function _temp(n,o){return e(l,{dimColor:!0,children:n},o)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as n}from"react/compiler-runtime";import{Box as l,color as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as n}from"react/compiler-runtime";import{Box as l,color as a,Link as r,Text as d,useTheme as t}from"../../ink.js";import{SandboxManager as i}from"../../utils/sandbox/sandbox-adapter.js";import{Select as c}from"../CustomSelect/select.js";import{useTabHeaderFocus as s}from"../design-system/Tabs.js";export function SandboxOverridesTab(a){const r=n(5),{onComplete:t}=a,c=i.isSandboxingEnabled(),s=i.areSandboxSettingsLockedByPolicy(),m=i.areUnsandboxedCommandsAllowed();if(!c){let o;return r[0]===Symbol.for("react.memo_cache_sentinel")?(o=e(l,{flexDirection:"column",paddingY:1,children:e(d,{color:"subtle",children:"Sandbox no está habilitado. Habilítalo para configurar los ajustes de sobrescritura."})}),r[0]=o):o=r[0],o}if(s){let n,a;return r[1]===Symbol.for("react.memo_cache_sentinel")?(n=e(d,{color:"subtle",children:"Override settings are managed by a higher-priority configuration and cannot be changed locally."}),r[1]=n):n=r[1],r[2]===Symbol.for("react.memo_cache_sentinel")?(a=o(l,{flexDirection:"column",paddingY:1,children:[n,e(l,{marginTop:1,children:o(d,{dimColor:!0,children:["Current setting:"," ",m?"Allow unsandboxed fallback":"Strict sandbox mode"]})})]}),r[2]=a):a=r[2],a}let b;return r[3]!==t?(b=e(OverridesSelect,{onComplete:t,currentMode:m?"open":"closed"}),r[3]=t,r[4]=b):b=r[4],b}function OverridesSelect(m){const b=n(25),{onComplete:u,currentMode:x}=m,[h]=t(),{headerFocused:f,focusHeader:p}=s();let g;b[0]!==h?(g=a("success",h)("(current)"),b[0]=h,b[1]=g):g=b[1];const S=g,y="open"===x?`Allow unsandboxed fallback ${S}`:"Allow unsandboxed fallback";let C;b[2]!==y?(C={label:y,value:"open"},b[2]=y,b[3]=C):C=b[3];const _="closed"===x?`Strict sandbox mode ${S}`:"Strict sandbox mode";let k,v;b[4]!==_?(k={label:_,value:"closed"},b[4]=_,b[5]=k):k=b[5],b[6]!==C||b[7]!==k?(v=[C,k],b[6]=C,b[7]=k,b[8]=v):v=b[8];const w=v;let j;b[9]!==u?(j=async function(e){const o=e;await i.setSandboxSettings({allowUnsandboxedCommands:"open"===o});u("open"===o?"✓ Unsandboxed fallback allowed - commands can run outside sandbox when necessary":"✓ Strict sandbox mode - all commands must run in sandbox or be excluded via the `excludedCommands` option")},b[9]=u,b[10]=j):j=b[10];const A=j;let D,O,T,U,F,Y,B;return b[11]===Symbol.for("react.memo_cache_sentinel")?(D=e(l,{marginBottom:1,children:e(d,{bold:!0,children:"Configure Overrides:"})}),b[11]=D):D=b[11],b[12]!==u?(O=()=>u(void 0,{display:"skip"}),b[12]=u,b[13]=O):O=b[13],b[14]!==p||b[15]!==A||b[16]!==f||b[17]!==w||b[18]!==O?(T=e(c,{options:w,onChange:A,onCancel:O,onUpFromFirstItem:p,isDisabled:f}),b[14]=p,b[15]=A,b[16]=f,b[17]=w,b[18]=O,b[19]=T):T=b[19],b[20]===Symbol.for("react.memo_cache_sentinel")?(U=o(d,{dimColor:!0,children:[e(d,{bold:!0,dimColor:!0,children:"Allow unsandboxed fallback:"})," ","When a command fails due to sandbox restrictions, Claude can retry with dangerouslyDisableSandbox to run outside the sandbox (falling back to default permissions)."]}),b[20]=U):U=b[20],b[21]===Symbol.for("react.memo_cache_sentinel")?(F=o(d,{dimColor:!0,children:[e(d,{bold:!0,dimColor:!0,children:"Strict sandbox mode:"})," ","All bash commands invoked by the model must run in the sandbox unless they are explicitly listed in excludedCommands."]}),b[21]=F):F=b[21],b[22]===Symbol.for("react.memo_cache_sentinel")?(Y=o(l,{flexDirection:"column",marginTop:1,gap:1,children:[U,F,o(d,{dimColor:!0,children:["Learn more:"," ",e(r,{url:"https://code.claude.com/docs/en/sandboxing#configure-sandboxing",children:"code.claude.com/docs/en/sandboxing#configure-sandboxing"})]})]}),b[22]=Y):Y=b[22],b[23]!==T?(B=o(l,{flexDirection:"column",paddingY:1,children:[D,T,Y]}),b[23]=T,b[24]=B):B=b[24],B}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as n}from"react/compiler-runtime";import t from"figures";import s,{useMemo as r,useState as i}from"react";import{DIAMOND_FILLED as l,DIAMOND_OPEN as a}from"../../constants/figures.js";import{useElapsedTime as c}from"../../hooks/useElapsedTime.js";import{Box as d,Link as m,Text as u}from"../../ink.js";import{getRemoteTaskSessionUrl as p}from"../../tasks/RemoteAgentTask/RemoteAgentTask.js";import{AGENT_TOOL_NAME as h,LEGACY_AGENT_TOOL_NAME as f}from"../../tools/AgentTool/constants.js";import{ASK_USER_QUESTION_TOOL_NAME as g}from"../../tools/AskUserQuestionTool/prompt.js";import{EXIT_PLAN_MODE_V2_TOOL_NAME as b}from"../../tools/ExitPlanModeTool/constants.js";import{openBrowser as y}from"../../utils/browser.js";import{errorMessage as k}from"../../utils/errors.js";import{formatDuration as v,truncateToWidth as S}from"../../utils/format.js";import{toInternalMessages as C}from"../../utils/messages/mappers.js";import{EMPTY_LOOKUPS as w,normalizeMessages as _}from"../../utils/messages.js";import{plural as D}from"../../utils/stringUtils.js";import{teleportResumeCodeSession as j}from"../../utils/teleport.js";import{Select as T}from"../CustomSelect/select.js";import{Byline as x}from"../design-system/Byline.js";import{Dialog as R}from"../design-system/Dialog.js";import{KeyboardShortcutHint as P}from"../design-system/KeyboardShortcutHint.js";import{Message as I}from"../Message.js";import{formatReviewStageCounts as U,RemoteSessionProgress as B}from"./RemoteSessionProgress.js";export function formatToolUseSummary(e,o){if(e===b)return"Review the plan in Context Code on the web";if(!o||"object"!=typeof o)return e;if(e===g&&"questions"in o){const e=o.questions;if(Array.isArray(e)&&e[0]&&"object"==typeof e[0]){const o="question"in e[0]&&"string"==typeof e[0].question&&e[0].question?e[0].question:"header"in e[0]&&"string"==typeof e[0].header?e[0].header:null;if(o){const e=o.replace(/\s+/g," ").trim();return`Answer in browser: ${S(e,50)}`}}}for(const n of Object.values(o))if("string"==typeof n&&n.trim()){const o=n.replace(/\s+/g," ").trim();return`${e} ${S(o,60)}`}return e}const A={needs_input:"entrada requerida",plan_ready:"listo"},q={needs_input:"esperando",plan_ready:"hecho"};function UltraplanSessionDetail(s){const r=n(70),{session:g,onDone:b,onBack:k,onKill:v}=s,S="running"===g.status||"pending"===g.status,C=g.ultraplanPhase,w=S?C?A[C]:"ejecutando":g.status,_=c(g.startTime,S,1e3,0,g.endTime);let j=0,x=0,P=null;for(const e of g.log)if("assistant"===e.type)for(const o of e.message.content)"tool_use"===o.type&&(x++,P=o,o.name!==h&&o.name!==f||j++);const I=1+j;let U,B;r[0]!==P?(U=P?formatToolUseSummary(P.name,P.input):null,r[0]=P,r[1]=U):U=r[1],r[2]!==x||r[3]!==I||r[4]!==U?(B={agentsWorking:I,toolCalls:x,lastToolCall:U},r[2]=x,r[3]=I,r[4]=U,r[5]=B):B=r[5];const{agentsWorking:K,toolCalls:E,lastToolCall:M}=B;let $;r[6]!==g.sessionId?($=p(g.sessionId),r[6]=g.sessionId,r[7]=$):$=r[7];const F=$;let O;r[8]!==k||r[9]!==b?(O=k??(()=>b("Remote session details dismissed",{display:"system"})),r[8]=k,r[9]=b,r[10]=O):O=r[10];const z=O,[G,N]=i(!1);if(G){let n,t,s,i,l;return r[11]===Symbol.for("react.memo_cache_sentinel")?(n=()=>N(!1),r[11]=n):n=r[11],r[12]===Symbol.for("react.memo_cache_sentinel")?(t=e(u,{dimColor:!0,children:"This will terminate the Context Code on the web session."}),r[12]=t):t=r[12],r[13]===Symbol.for("react.memo_cache_sentinel")?(s={label:"Terminate session",value:"stop"},r[13]=s):s=r[13],r[14]===Symbol.for("react.memo_cache_sentinel")?(i=[s,{label:"Back",value:"back"}],r[14]=i):i=r[14],r[15]!==z||r[16]!==v?(l=e(R,{title:"Stop ultraplan?",onCancel:n,color:"background",children:o(d,{flexDirection:"column",gap:1,children:[t,e(T,{options:i,onChange:e=>{"stop"===e?(v?.(),z()):N(!1)}})]})}),r[15]=z,r[16]=v,r[17]=l):l=r[17],l}const V="plan_ready"===C?l:a;let W,H,L,Q,Y,J;r[18]!==V?(W=o(u,{color:"background",children:[V," "]}),r[18]=V,r[19]=W):W=r[19],r[20]===Symbol.for("react.memo_cache_sentinel")?(H=e(u,{bold:!0,children:"ultraplan"}),r[20]=H):H=r[20],r[21]!==_||r[22]!==w?(L=o(u,{dimColor:!0,children:[" · ",_," · ",w]}),r[21]=_,r[22]=w,r[23]=L):L=r[23],r[24]!==W||r[25]!==L?(Q=o(u,{children:[W,H,L]}),r[24]=W,r[25]=L,r[26]=Q):Q=r[26],r[27]!==C?(Y="plan_ready"===C&&o(u,{color:"success",children:[t.tick," "]}),r[27]=C,r[28]=Y):Y=r[28],r[29]!==K?(J=D(K,"agent"),r[29]=K,r[30]=J):J=r[30];const X=C?q[C]:"working";let Z,ee,oe,ne,te,se,re,ie,le,ae,ce,de,me;return r[31]!==E?(Z=D(E,"call"),r[31]=E,r[32]=Z):Z=r[32],r[33]!==K||r[34]!==Y||r[35]!==J||r[36]!==X||r[37]!==Z||r[38]!==E?(ee=o(u,{children:[Y,K," ",J," ",X," · ",E," tool"," ",Z]}),r[33]=K,r[34]=Y,r[35]=J,r[36]=X,r[37]=Z,r[38]=E,r[39]=ee):ee=r[39],r[40]!==M?(oe=M&&e(u,{dimColor:!0,children:M}),r[40]=M,r[41]=oe):oe=r[41],r[42]!==F?(ne=e(u,{dimColor:!0,children:F}),r[42]=F,r[43]=ne):ne=r[43],r[44]!==F||r[45]!==ne?(te=e(m,{url:F,children:ne}),r[44]=F,r[45]=ne,r[46]=te):te=r[46],r[47]===Symbol.for("react.memo_cache_sentinel")?(se={label:"Review in Context Code on the web",value:"open"},r[47]=se):se=r[47],r[48]!==v||r[49]!==S?(re=v&&S?[{label:"Stop ultraplan",value:"stop"}]:[],r[48]=v,r[49]=S,r[50]=re):re=r[50],r[51]===Symbol.for("react.memo_cache_sentinel")?(ie={label:"Back",value:"back"},r[51]=ie):ie=r[51],r[52]!==re?(le=[se,...re,ie],r[52]=re,r[53]=le):le=r[53],r[54]!==z||r[55]!==b||r[56]!==F?(ae=e=>{switch(e){case"open":return y(F),void b();case"stop":return void N(!0);case"back":return void z()}},r[54]=z,r[55]=b,r[56]=F,r[57]=ae):ae=r[57],r[58]!==le||r[59]!==ae?(ce=e(T,{options:le,onChange:ae}),r[58]=le,r[59]=ae,r[60]=ce):ce=r[60],r[61]!==ee||r[62]!==oe||r[63]!==te||r[64]!==ce?(de=o(d,{flexDirection:"column",gap:1,children:[ee,oe,te,ce]}),r[61]=ee,r[62]=oe,r[63]=te,r[64]=ce,r[65]=de):de=r[65],r[66]!==z||r[67]!==Q||r[68]!==de?(me=e(R,{title:Q,onCancel:z,color:"background",children:de}),r[66]=z,r[67]=Q,r[68]=de,r[69]=me):me=r[69],me}const K=["finding","verifying","synthesizing"],E={finding:"Find",verifying:"Verify",synthesizing:"Dedupe"};function StagePipeline(t){const r=n(15),{stage:i,completed:l,hasProgress:a}=t;let c;r[0]!==i?(c=i?K.indexOf(i):-1,r[0]=i,r[1]=c):c=r[1];const d=c,m=!l&&!a;let p,h,f,g,b;return r[2]!==m?(p=e(u,m?{color:"background",children:"Setup"}:{dimColor:!0,children:"Setup"}),r[2]=m,r[3]=p):p=r[3],r[4]===Symbol.for("react.memo_cache_sentinel")?(h=e(u,{dimColor:!0,children:" → "}),r[4]=h):h=r[4],r[5]!==l||r[6]!==d||r[7]!==m?(f=K.map((n,t)=>{const r=!l&&!m&&t===d;return o(s.Fragment,{children:[t>0&&e(u,{dimColor:!0,children:" → "}),e(u,r?{color:"background",children:E[n]}:{dimColor:!0,children:E[n]})]},n)}),r[5]=l,r[6]=d,r[7]=m,r[8]=f):f=r[8],r[9]!==l?(g=l&&e(u,{color:"success",children:" ✓"}),r[9]=l,r[10]=g):g=r[10],r[11]!==p||r[12]!==f||r[13]!==g?(b=o(u,{children:[p,h,f,g]}),r[11]=p,r[12]=f,r[13]=g,r[14]=b):b=r[14],b}function ReviewSessionDetail(t){const s=n(56),{session:r,onDone:h,onBack:f,onKill:g}=t,b="completed"===r.status,k="running"===r.status||"pending"===r.status,[v,S]=i(!1),C=c(r.startTime,k,1e3,0,r.endTime);let w;s[0]!==h?(w=()=>h("Remote session details dismissed",{display:"system"}),s[0]=h,s[1]=w):w=s[1];const _=w,j=f??_;let x;s[2]!==r.sessionId?(x=p(r.sessionId),s[2]=r.sessionId,s[3]=x):x=s[3];const P=x,I=b?"listo":k?"ejecutando":r.status;if(v){let n,t,r,i,l;return s[4]===Symbol.for("react.memo_cache_sentinel")?(n=()=>S(!1),s[4]=n):n=s[4],s[5]===Symbol.for("react.memo_cache_sentinel")?(t=e(u,{dimColor:!0,children:"This archives the remote session and stops local tracking. The review will not complete and any findings so far are discarded."}),s[5]=t):t=s[5],s[6]===Symbol.for("react.memo_cache_sentinel")?(r={label:"Stop ultrareview",value:"stop"},s[6]=r):r=s[6],s[7]===Symbol.for("react.memo_cache_sentinel")?(i=[r,{label:"Back",value:"back"}],s[7]=i):i=s[7],s[8]!==j||s[9]!==g?(l=e(R,{title:"Stop ultrareview?",onCancel:n,color:"background",children:o(d,{flexDirection:"column",gap:1,children:[t,e(T,{options:i,onChange:e=>{"stop"===e?(g?.(),j()):S(!1)}})]})}),s[8]=j,s[9]=g,s[10]=l):l=s[10],l}let B;s[11]!==b||s[12]!==g||s[13]!==k?(B=b?[{label:"Open in Context Code on the web",value:"open"},{label:"Dismiss",value:"dismiss"}]:[{label:"Open in Context Code on the web",value:"open"},...g&&k?[{label:"Stop ultrareview",value:"stop"}]:[],{label:"Back",value:"back"}],s[11]=b,s[12]=g,s[13]=k,s[14]=B):B=s[14];const A=B;let q;s[15]!==j||s[16]!==_||s[17]!==h||s[18]!==P?(q=e=>{e:switch(e){case"open":y(P),h();break e;case"stop":S(!0);break e;case"back":j();break e;case"dismiss":_()}},s[15]=j,s[16]=_,s[17]=h,s[18]=P,s[19]=q):q=s[19];const K=q,E=b?l:a;let M,$,F,O;s[20]!==E?(M=o(u,{color:"background",children:[E," "]}),s[20]=E,s[21]=M):M=s[21],s[22]===Symbol.for("react.memo_cache_sentinel")?($=e(u,{bold:!0,children:"ultrareview"}),s[22]=$):$=s[22],s[23]!==C||s[24]!==I?(F=o(u,{dimColor:!0,children:[" · ",C," · ",I]}),s[23]=C,s[24]=I,s[25]=F):F=s[25],s[26]!==M||s[27]!==F?(O=o(u,{children:[M,$,F]}),s[26]=M,s[27]=F,s[28]=O):O=s[28];const z=r.reviewProgress?.stage,G=!!r.reviewProgress;let N,V,W,H,L,Q,Y,J,X;return s[29]!==b||s[30]!==z||s[31]!==G?(N=e(StagePipeline,{stage:z,completed:b,hasProgress:G}),s[29]=b,s[30]=z,s[31]=G,s[32]=N):N=s[32],s[33]!==r?(V=function(e){const o=e.reviewProgress;if(!o)return"completed"===e.status?"done":"setting up";const n=o.bugsVerified,t=o.bugsRefuted??0;if("completed"===e.status){const e=[`${n} ${D(n,"finding")}`];return t>0&&e.push(`${t} refuted`),e.join(" · ")}return U(o.stage,o.bugsFound,n,t)}(r),s[33]=r,s[34]=V):V=s[34],s[35]!==V?(W=e(u,{children:V}),s[35]=V,s[36]=W):W=s[36],s[37]!==P?(H=e(u,{dimColor:!0,children:P}),s[37]=P,s[38]=H):H=s[38],s[39]!==P||s[40]!==H?(L=e(m,{url:P,children:H}),s[39]=P,s[40]=H,s[41]=L):L=s[41],s[42]!==W||s[43]!==L?(Q=o(d,{flexDirection:"column",children:[W,L]}),s[42]=W,s[43]=L,s[44]=Q):Q=s[44],s[45]!==K||s[46]!==A?(Y=e(T,{options:A,onChange:K}),s[45]=K,s[46]=A,s[47]=Y):Y=s[47],s[48]!==N||s[49]!==Q||s[50]!==Y?(J=o(d,{flexDirection:"column",gap:1,children:[N,Q,Y]}),s[48]=N,s[49]=Q,s[50]=Y,s[51]=J):J=s[51],s[52]!==j||s[53]!==J||s[54]!==O?(X=e(R,{title:O,onCancel:j,color:"background",inputGuide:_temp,children:J}),s[52]=j,s[53]=J,s[54]=O,s[55]=X):X=s[55],X}function _temp(n){return n.pending?o(u,{children:["Presiona ",n.keyName," de nuevo para salir"]}):o(x,{children:[e(P,{shortcut:"Enter",action:"seleccionar"}),e(P,{shortcut:"Esc",action:"volver"})]})}export function RemoteSessionDetailDialog({session:n,toolUseContext:t,onDone:s,onBack:l,onKill:a}){const[c,h]=i(!1),[f,g]=i(null),b=r(()=>n.isUltraplan||n.isRemoteReview?[]:_(C(n.log)).filter(e=>"progress"!==e.type).slice(-3),[n]);if(n.isUltraplan)return e(UltraplanSessionDetail,{session:n,onDone:s,onBack:l,onKill:a});if(n.isRemoteReview)return e(ReviewSessionDetail,{session:n,onDone:s,onBack:l,onKill:a});const handleClose=()=>s("Remote session details dismissed",{display:"system"});const y=S(n.title,50),D="pending"===n.status?"starting":n.status;return e(d,{flexDirection:"column",tabIndex:0,autoFocus:!0,onKeyDown:e=>{" "===e.key?(e.preventDefault(),s("Remote session details dismissed",{display:"system"})):"left"===e.key&&l?(e.preventDefault(),l()):"t"!==e.key||c?"return"===e.key&&(e.preventDefault(),handleClose()):(e.preventDefault(),async function(){h(!0),g(null);try{await j(n.sessionId)}catch(e){g(k(e))}finally{h(!1)}}())},children:o(R,{title:"Remote session details",onCancel:handleClose,color:"background",inputGuide:n=>n.pending?o(u,{children:["Presiona ",n.keyName," de nuevo para salir"]}):o(x,{children:[l&&e(P,{shortcut:"←",action:"volver"}),e(P,{shortcut:"Esc/Enter/Space",action:"cerrar"}),!c&&e(P,{shortcut:"t",action:"teleport"})]}),children:[o(d,{flexDirection:"column",children:[o(u,{children:[e(u,{bold:!0,children:"Status"}),":"," ",e(u,"running"===D||"starting"===D?{color:"background",children:D}:"completed"===D?{color:"success",children:D}:{color:"error",children:D})]}),o(u,{children:[e(u,{bold:!0,children:"Runtime"}),":"," ",v((n.endTime??Date.now())-n.startTime)]}),o(u,{wrap:"truncate-end",children:[e(u,{bold:!0,children:"Title"}),": ",y]}),o(u,{children:[e(u,{bold:!0,children:"Progress"}),":"," ",e(B,{session:n})]}),o(u,{children:[e(u,{bold:!0,children:"Session URL"}),":"," ",e(m,{url:p(n.sessionId),children:e(u,{dimColor:!0,children:p(n.sessionId)})})]})]}),n.log.length>0&&o(d,{flexDirection:"column",marginTop:1,children:[o(u,{children:[e(u,{bold:!0,children:"Recent messages"}),":"]}),e(d,{flexDirection:"column",height:10,overflowY:"hidden",children:b.map((o,n)=>e(I,{message:o,lookups:w,addMargin:n>0,tools:t.options.tools,commands:t.options.commands,verbose:t.options.verbose,inProgressToolUseIDs:new Set,progressMessagesForMessage:[],shouldAnimate:!1,shouldShowDot:!1,style:"condensed",isTranscriptMode:!1,isStatic:!0},n))}),e(d,{marginTop:1,children:o(u,{dimColor:!0,italic:!0,children:["Showing last ",b.length," of ",n.log.length," ","messages"]})})]}),f&&e(d,{marginTop:1,children:o(u,{color:"error",children:["Teleport failed: ",f]})}),c&&e(u,{color:"background",children:"Teleporting to session…"})]})})}
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{c as n}from"react/compiler-runtime";import t from"figures";import s,{useMemo as r,useState as i}from"react";import{DIAMOND_FILLED as l,DIAMOND_OPEN as a}from"../../constants/figures.js";import{useElapsedTime as c}from"../../hooks/useElapsedTime.js";import{Box as d,Link as m,Text as u}from"../../ink.js";import{getRemoteTaskSessionUrl as p}from"../../tasks/RemoteAgentTask/RemoteAgentTask.js";import{AGENT_TOOL_NAME as h,LEGACY_AGENT_TOOL_NAME as f}from"../../tools/AgentTool/constants.js";import{ASK_USER_QUESTION_TOOL_NAME as g}from"../../tools/AskUserQuestionTool/prompt.js";import{EXIT_PLAN_MODE_V2_TOOL_NAME as b}from"../../tools/ExitPlanModeTool/constants.js";import{openBrowser as y}from"../../utils/browser.js";import{errorMessage as k}from"../../utils/errors.js";import{formatDuration as v,truncateToWidth as S}from"../../utils/format.js";import{toInternalMessages as C}from"../../utils/messages/mappers.js";import{EMPTY_LOOKUPS as _,normalizeMessages as w}from"../../utils/messages.js";import{plural as D}from"../../utils/stringUtils.js";import{teleportResumeCodeSession as j}from"../../utils/teleport.js";import{Select as T}from"../CustomSelect/select.js";import{Byline as x}from"../design-system/Byline.js";import{Dialog as R}from"../design-system/Dialog.js";import{KeyboardShortcutHint as P}from"../design-system/KeyboardShortcutHint.js";import{Message as I}from"../Message.js";import{formatReviewStageCounts as U,RemoteSessionProgress as B}from"./RemoteSessionProgress.js";export function formatToolUseSummary(e,o){if(e===b)return"Review the plan in Context Code on the web";if(!o||"object"!=typeof o)return e;if(e===g&&"questions"in o){const e=o.questions;if(Array.isArray(e)&&e[0]&&"object"==typeof e[0]){const o="question"in e[0]&&"string"==typeof e[0].question&&e[0].question?e[0].question:"header"in e[0]&&"string"==typeof e[0].header?e[0].header:null;if(o){const e=o.replace(/\s+/g," ").trim();return`Answer in browser: ${S(e,50)}`}}}for(const n of Object.values(o))if("string"==typeof n&&n.trim()){const o=n.replace(/\s+/g," ").trim();return`${e} ${S(o,60)}`}return e}const A={needs_input:"entrada requerida",plan_ready:"listo"},q={needs_input:"esperando",plan_ready:"hecho"};function UltraplanSessionDetail(s){const r=n(70),{session:g,onDone:b,onBack:k,onKill:v}=s,S="running"===g.status||"pending"===g.status,C=g.ultraplanPhase,_=S?C?A[C]:"ejecutando":g.status,w=c(g.startTime,S,1e3,0,g.endTime);let j=0,x=0,P=null;for(const e of g.log)if("assistant"===e.type)for(const o of e.message.content)"tool_use"===o.type&&(x++,P=o,o.name!==h&&o.name!==f||j++);const I=1+j;let U,B;r[0]!==P?(U=P?formatToolUseSummary(P.name,P.input):null,r[0]=P,r[1]=U):U=r[1],r[2]!==x||r[3]!==I||r[4]!==U?(B={agentsWorking:I,toolCalls:x,lastToolCall:U},r[2]=x,r[3]=I,r[4]=U,r[5]=B):B=r[5];const{agentsWorking:E,toolCalls:K,lastToolCall:M}=B;let $;r[6]!==g.sessionId?($=p(g.sessionId),r[6]=g.sessionId,r[7]=$):$=r[7];const F=$;let O;r[8]!==k||r[9]!==b?(O=k??(()=>b("Remote session details dismissed",{display:"system"})),r[8]=k,r[9]=b,r[10]=O):O=r[10];const z=O,[G,N]=i(!1);if(G){let n,t,s,i,l;return r[11]===Symbol.for("react.memo_cache_sentinel")?(n=()=>N(!1),r[11]=n):n=r[11],r[12]===Symbol.for("react.memo_cache_sentinel")?(t=e(u,{dimColor:!0,children:"Esto terminará la sesión de Context Code en la web."}),r[12]=t):t=r[12],r[13]===Symbol.for("react.memo_cache_sentinel")?(s={label:"Terminate session",value:"stop"},r[13]=s):s=r[13],r[14]===Symbol.for("react.memo_cache_sentinel")?(i=[s,{label:"Back",value:"back"}],r[14]=i):i=r[14],r[15]!==z||r[16]!==v?(l=e(R,{title:"Stop ultraplan?",onCancel:n,color:"background",children:o(d,{flexDirection:"column",gap:1,children:[t,e(T,{options:i,onChange:e=>{"stop"===e?(v?.(),z()):N(!1)}})]})}),r[15]=z,r[16]=v,r[17]=l):l=r[17],l}const V="plan_ready"===C?l:a;let W,H,L,Q,Y,J;r[18]!==V?(W=o(u,{color:"background",children:[V," "]}),r[18]=V,r[19]=W):W=r[19],r[20]===Symbol.for("react.memo_cache_sentinel")?(H=e(u,{bold:!0,children:"ultraplan"}),r[20]=H):H=r[20],r[21]!==w||r[22]!==_?(L=o(u,{dimColor:!0,children:[" · ",w," · ",_]}),r[21]=w,r[22]=_,r[23]=L):L=r[23],r[24]!==W||r[25]!==L?(Q=o(u,{children:[W,H,L]}),r[24]=W,r[25]=L,r[26]=Q):Q=r[26],r[27]!==C?(Y="plan_ready"===C&&o(u,{color:"success",children:[t.tick," "]}),r[27]=C,r[28]=Y):Y=r[28],r[29]!==E?(J=D(E,"agent"),r[29]=E,r[30]=J):J=r[30];const X=C?q[C]:"working";let Z,ee,oe,ne,te,se,re,ie,le,ae,ce,de,me;return r[31]!==K?(Z=D(K,"call"),r[31]=K,r[32]=Z):Z=r[32],r[33]!==E||r[34]!==Y||r[35]!==J||r[36]!==X||r[37]!==Z||r[38]!==K?(ee=o(u,{children:[Y,E," ",J," ",X," · ",K," tool"," ",Z]}),r[33]=E,r[34]=Y,r[35]=J,r[36]=X,r[37]=Z,r[38]=K,r[39]=ee):ee=r[39],r[40]!==M?(oe=M&&e(u,{dimColor:!0,children:M}),r[40]=M,r[41]=oe):oe=r[41],r[42]!==F?(ne=e(u,{dimColor:!0,children:F}),r[42]=F,r[43]=ne):ne=r[43],r[44]!==F||r[45]!==ne?(te=e(m,{url:F,children:ne}),r[44]=F,r[45]=ne,r[46]=te):te=r[46],r[47]===Symbol.for("react.memo_cache_sentinel")?(se={label:"Review in Context Code on the web",value:"open"},r[47]=se):se=r[47],r[48]!==v||r[49]!==S?(re=v&&S?[{label:"Stop ultraplan",value:"stop"}]:[],r[48]=v,r[49]=S,r[50]=re):re=r[50],r[51]===Symbol.for("react.memo_cache_sentinel")?(ie={label:"Back",value:"back"},r[51]=ie):ie=r[51],r[52]!==re?(le=[se,...re,ie],r[52]=re,r[53]=le):le=r[53],r[54]!==z||r[55]!==b||r[56]!==F?(ae=e=>{switch(e){case"open":return y(F),void b();case"stop":return void N(!0);case"back":return void z()}},r[54]=z,r[55]=b,r[56]=F,r[57]=ae):ae=r[57],r[58]!==le||r[59]!==ae?(ce=e(T,{options:le,onChange:ae}),r[58]=le,r[59]=ae,r[60]=ce):ce=r[60],r[61]!==ee||r[62]!==oe||r[63]!==te||r[64]!==ce?(de=o(d,{flexDirection:"column",gap:1,children:[ee,oe,te,ce]}),r[61]=ee,r[62]=oe,r[63]=te,r[64]=ce,r[65]=de):de=r[65],r[66]!==z||r[67]!==Q||r[68]!==de?(me=e(R,{title:Q,onCancel:z,color:"background",children:de}),r[66]=z,r[67]=Q,r[68]=de,r[69]=me):me=r[69],me}const E=["finding","verifying","synthesizing"],K={finding:"Find",verifying:"Verify",synthesizing:"Dedupe"};function StagePipeline(t){const r=n(15),{stage:i,completed:l,hasProgress:a}=t;let c;r[0]!==i?(c=i?E.indexOf(i):-1,r[0]=i,r[1]=c):c=r[1];const d=c,m=!l&&!a;let p,h,f,g,b;return r[2]!==m?(p=e(u,m?{color:"background",children:"Setup"}:{dimColor:!0,children:"Setup"}),r[2]=m,r[3]=p):p=r[3],r[4]===Symbol.for("react.memo_cache_sentinel")?(h=e(u,{dimColor:!0,children:" → "}),r[4]=h):h=r[4],r[5]!==l||r[6]!==d||r[7]!==m?(f=E.map((n,t)=>{const r=!l&&!m&&t===d;return o(s.Fragment,{children:[t>0&&e(u,{dimColor:!0,children:" → "}),e(u,r?{color:"background",children:K[n]}:{dimColor:!0,children:K[n]})]},n)}),r[5]=l,r[6]=d,r[7]=m,r[8]=f):f=r[8],r[9]!==l?(g=l&&e(u,{color:"success",children:" ✓"}),r[9]=l,r[10]=g):g=r[10],r[11]!==p||r[12]!==f||r[13]!==g?(b=o(u,{children:[p,h,f,g]}),r[11]=p,r[12]=f,r[13]=g,r[14]=b):b=r[14],b}function ReviewSessionDetail(t){const s=n(56),{session:r,onDone:h,onBack:f,onKill:g}=t,b="completed"===r.status,k="running"===r.status||"pending"===r.status,[v,S]=i(!1),C=c(r.startTime,k,1e3,0,r.endTime);let _;s[0]!==h?(_=()=>h("Remote session details dismissed",{display:"system"}),s[0]=h,s[1]=_):_=s[1];const w=_,j=f??w;let x;s[2]!==r.sessionId?(x=p(r.sessionId),s[2]=r.sessionId,s[3]=x):x=s[3];const P=x,I=b?"listo":k?"ejecutando":r.status;if(v){let n,t,r,i,l;return s[4]===Symbol.for("react.memo_cache_sentinel")?(n=()=>S(!1),s[4]=n):n=s[4],s[5]===Symbol.for("react.memo_cache_sentinel")?(t=e(u,{dimColor:!0,children:"This archives the remote session and stops local tracking. The review will not complete and any findings so far are discarded."}),s[5]=t):t=s[5],s[6]===Symbol.for("react.memo_cache_sentinel")?(r={label:"Stop ultrareview",value:"stop"},s[6]=r):r=s[6],s[7]===Symbol.for("react.memo_cache_sentinel")?(i=[r,{label:"Back",value:"back"}],s[7]=i):i=s[7],s[8]!==j||s[9]!==g?(l=e(R,{title:"Stop ultrareview?",onCancel:n,color:"background",children:o(d,{flexDirection:"column",gap:1,children:[t,e(T,{options:i,onChange:e=>{"stop"===e?(g?.(),j()):S(!1)}})]})}),s[8]=j,s[9]=g,s[10]=l):l=s[10],l}let B;s[11]!==b||s[12]!==g||s[13]!==k?(B=b?[{label:"Open in Context Code on the web",value:"open"},{label:"Dismiss",value:"dismiss"}]:[{label:"Open in Context Code on the web",value:"open"},...g&&k?[{label:"Stop ultrareview",value:"stop"}]:[],{label:"Back",value:"back"}],s[11]=b,s[12]=g,s[13]=k,s[14]=B):B=s[14];const A=B;let q;s[15]!==j||s[16]!==w||s[17]!==h||s[18]!==P?(q=e=>{e:switch(e){case"open":y(P),h();break e;case"stop":S(!0);break e;case"back":j();break e;case"dismiss":w()}},s[15]=j,s[16]=w,s[17]=h,s[18]=P,s[19]=q):q=s[19];const E=q,K=b?l:a;let M,$,F,O;s[20]!==K?(M=o(u,{color:"background",children:[K," "]}),s[20]=K,s[21]=M):M=s[21],s[22]===Symbol.for("react.memo_cache_sentinel")?($=e(u,{bold:!0,children:"ultrareview"}),s[22]=$):$=s[22],s[23]!==C||s[24]!==I?(F=o(u,{dimColor:!0,children:[" · ",C," · ",I]}),s[23]=C,s[24]=I,s[25]=F):F=s[25],s[26]!==M||s[27]!==F?(O=o(u,{children:[M,$,F]}),s[26]=M,s[27]=F,s[28]=O):O=s[28];const z=r.reviewProgress?.stage,G=!!r.reviewProgress;let N,V,W,H,L,Q,Y,J,X;return s[29]!==b||s[30]!==z||s[31]!==G?(N=e(StagePipeline,{stage:z,completed:b,hasProgress:G}),s[29]=b,s[30]=z,s[31]=G,s[32]=N):N=s[32],s[33]!==r?(V=function(e){const o=e.reviewProgress;if(!o)return"completed"===e.status?"done":"setting up";const n=o.bugsVerified,t=o.bugsRefuted??0;if("completed"===e.status){const e=[`${n} ${D(n,"finding")}`];return t>0&&e.push(`${t} refuted`),e.join(" · ")}return U(o.stage,o.bugsFound,n,t)}(r),s[33]=r,s[34]=V):V=s[34],s[35]!==V?(W=e(u,{children:V}),s[35]=V,s[36]=W):W=s[36],s[37]!==P?(H=e(u,{dimColor:!0,children:P}),s[37]=P,s[38]=H):H=s[38],s[39]!==P||s[40]!==H?(L=e(m,{url:P,children:H}),s[39]=P,s[40]=H,s[41]=L):L=s[41],s[42]!==W||s[43]!==L?(Q=o(d,{flexDirection:"column",children:[W,L]}),s[42]=W,s[43]=L,s[44]=Q):Q=s[44],s[45]!==E||s[46]!==A?(Y=e(T,{options:A,onChange:E}),s[45]=E,s[46]=A,s[47]=Y):Y=s[47],s[48]!==N||s[49]!==Q||s[50]!==Y?(J=o(d,{flexDirection:"column",gap:1,children:[N,Q,Y]}),s[48]=N,s[49]=Q,s[50]=Y,s[51]=J):J=s[51],s[52]!==j||s[53]!==J||s[54]!==O?(X=e(R,{title:O,onCancel:j,color:"background",inputGuide:_temp,children:J}),s[52]=j,s[53]=J,s[54]=O,s[55]=X):X=s[55],X}function _temp(n){return n.pending?o(u,{children:["Presiona ",n.keyName," de nuevo para salir"]}):o(x,{children:[e(P,{shortcut:"Enter",action:"seleccionar"}),e(P,{shortcut:"Esc",action:"volver"})]})}export function RemoteSessionDetailDialog({session:n,toolUseContext:t,onDone:s,onBack:l,onKill:a}){const[c,h]=i(!1),[f,g]=i(null),b=r(()=>n.isUltraplan||n.isRemoteReview?[]:w(C(n.log)).filter(e=>"progress"!==e.type).slice(-3),[n]);if(n.isUltraplan)return e(UltraplanSessionDetail,{session:n,onDone:s,onBack:l,onKill:a});if(n.isRemoteReview)return e(ReviewSessionDetail,{session:n,onDone:s,onBack:l,onKill:a});const handleClose=()=>s("Remote session details dismissed",{display:"system"});const y=S(n.title,50),D="pending"===n.status?"starting":n.status;return e(d,{flexDirection:"column",tabIndex:0,autoFocus:!0,onKeyDown:e=>{" "===e.key?(e.preventDefault(),s("Remote session details dismissed",{display:"system"})):"left"===e.key&&l?(e.preventDefault(),l()):"t"!==e.key||c?"return"===e.key&&(e.preventDefault(),handleClose()):(e.preventDefault(),async function(){h(!0),g(null);try{await j(n.sessionId)}catch(e){g(k(e))}finally{h(!1)}}())},children:o(R,{title:"Remote session details",onCancel:handleClose,color:"background",inputGuide:n=>n.pending?o(u,{children:["Presiona ",n.keyName," de nuevo para salir"]}):o(x,{children:[l&&e(P,{shortcut:"←",action:"volver"}),e(P,{shortcut:"Esc/Enter/Space",action:"cerrar"}),!c&&e(P,{shortcut:"t",action:"teleport"})]}),children:[o(d,{flexDirection:"column",children:[o(u,{children:[e(u,{bold:!0,children:"Status"}),":"," ",e(u,"running"===D||"starting"===D?{color:"background",children:D}:"completed"===D?{color:"success",children:D}:{color:"error",children:D})]}),o(u,{children:[e(u,{bold:!0,children:"Runtime"}),":"," ",v((n.endTime??Date.now())-n.startTime)]}),o(u,{wrap:"truncate-end",children:[e(u,{bold:!0,children:"Title"}),": ",y]}),o(u,{children:[e(u,{bold:!0,children:"Progress"}),":"," ",e(B,{session:n})]}),o(u,{children:[e(u,{bold:!0,children:"Session URL"}),":"," ",e(m,{url:p(n.sessionId),children:e(u,{dimColor:!0,children:p(n.sessionId)})})]})]}),n.log.length>0&&o(d,{flexDirection:"column",marginTop:1,children:[o(u,{children:[e(u,{bold:!0,children:"Recent messages"}),":"]}),e(d,{flexDirection:"column",height:10,overflowY:"hidden",children:b.map((o,n)=>e(I,{message:o,lookups:_,addMargin:n>0,tools:t.options.tools,commands:t.options.commands,verbose:t.options.verbose,inProgressToolUseIDs:new Set,progressMessagesForMessage:[],shouldAnimate:!1,shouldShowDot:!1,style:"condensed",isTranscriptMode:!1,isStatic:!0},n))}),e(d,{marginTop:1,children:o(u,{dimColor:!0,italic:!0,children:["Showing last ",b.length," of ",n.log.length," ","messages"]})})]}),f&&e(d,{marginTop:1,children:o(u,{color:"error",children:["Teleport failed: ",f]})}),c&&e(u,{color:"background",children:"Teletransportando a la sesión…"})]})})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"figures";import n from"lodash-es/memoize.js";import{getOutputStyleDirStyles as t}from"../outputStyles/loadOutputStylesDir.js";import{getCwd as i}from"../utils/cwd.js";import{logForDebugging as o}from"../utils/debug.js";import{loadPluginOutputStyles as s}from"../utils/plugins/loadPluginOutputStyles.js";import{getSettings_DEPRECATED as a}from"../utils/settings/settings.js";const r=`\n## Insights\nIn order to encourage learning, before and after writing code, always provide brief educational explanations about implementation choices using (with backticks):\n"\`${e.star} Insight ─────────────────────────────────────\`\n[2-3 key educational points]\n\`─────────────────────────────────────────────────\`"\n\nThese insights should be included in the conversation, not in the codebase. You should generally focus on interesting insights that are specific to the codebase or the code you just wrote, rather than general programming concepts.`;export const DEFAULT_OUTPUT_STYLE_NAME="default";export const OUTPUT_STYLE_CONFIG={[DEFAULT_OUTPUT_STYLE_NAME]:null,Explanatory:{name:"Explanatory",source:"built-in",description:"
|
|
1
|
+
import e from"figures";import n from"lodash-es/memoize.js";import{getOutputStyleDirStyles as t}from"../outputStyles/loadOutputStylesDir.js";import{getCwd as i}from"../utils/cwd.js";import{logForDebugging as o}from"../utils/debug.js";import{loadPluginOutputStyles as s}from"../utils/plugins/loadPluginOutputStyles.js";import{getSettings_DEPRECATED as a}from"../utils/settings/settings.js";const r=`\n## Insights\nIn order to encourage learning, before and after writing code, always provide brief educational explanations about implementation choices using (with backticks):\n"\`${e.star} Insight ─────────────────────────────────────\`\n[2-3 key educational points]\n\`─────────────────────────────────────────────────\`"\n\nThese insights should be included in the conversation, not in the codebase. You should generally focus on interesting insights that are specific to the codebase or the code you just wrote, rather than general programming concepts.`;export const DEFAULT_OUTPUT_STYLE_NAME="default";export const OUTPUT_STYLE_CONFIG={[DEFAULT_OUTPUT_STYLE_NAME]:null,Explanatory:{name:"Explanatory",source:"built-in",description:"Context explica sus decisiones de implementación y patrones del codebase",keepCodingInstructions:!0,prompt:`You are an interactive CLI tool that helps users with software engineering tasks. In addition to software engineering tasks, you should provide educational insights about the codebase along the way.\n\nYou should be clear and educational, providing helpful explanations while remaining focused on the task. Balance educational content with task completion. When providing insights, you may exceed typical length constraints, but remain focused and relevant.\n\n# Explanatory Style Active\n${r}`},Learning:{name:"Learning",source:"built-in",description:"Context pausa y te pide escribir pequeños fragmentos de código para practicar",keepCodingInstructions:!0,prompt:`You are an interactive CLI tool that helps users with software engineering tasks. In addition to software engineering tasks, you should help users learn more about the codebase through hands-on practice and educational insights.\n\nYou should be collaborative and encouraging. Balance task completion with learning by requesting user input for meaningful design decisions while handling routine implementation yourself. \n\n# Learning Style Active\n## Requesting Human Contributions\nIn order to encourage learning, ask the human to contribute 2-10 line code pieces when generating 20+ lines involving:\n- Design decisions (error handling, data structures)\n- Business logic with multiple valid approaches \n- Key algorithms or interface definitions\n\n**TodoList Integration**: If using a TodoList for the overall task, include a specific todo item like "Request human input on [specific decision]" when planning to request human input. This ensures proper task tracking. Note: TodoList is not required for all tasks.\n\nExample TodoList flow:\n ✓ "Set up component structure with placeholder for logic"\n ✓ "Request human collaboration on decision logic implementation"\n ✓ "Integrate contribution and complete feature"\n\n### Request Format\n\`\`\`\n${e.bullet} **Learn by Doing**\n**Context:** [what's built and why this decision matters]\n**Your Task:** [specific function/section in file, mention file and TODO(human) but do not include line numbers]\n**Guidance:** [trade-offs and constraints to consider]\n\`\`\`\n\n### Key Guidelines\n- Frame contributions as valuable design decisions, not busy work\n- You must first add a TODO(human) section into the codebase with your editing tools before making the Learn by Doing request \n- Make sure there is one and only one TODO(human) section in the code\n- Don't take any action or output anything after the Learn by Doing request. Wait for human implementation before proceeding.\n\n### Example Requests\n\n**Whole Function Example:**\n\`\`\`\n${e.bullet} **Learn by Doing**\n\n**Context:** I've set up the hint feature UI with a button that triggers the hint system. The infrastructure is ready: when clicked, it calls selectHintCell() to determine which cell to hint, then highlights that cell with a yellow background and shows possible values. The hint system needs to decide which empty cell would be most helpful to reveal to the user.\n\n**Your Task:** In sudoku.js, implement the selectHintCell(board) function. Look for TODO(human). This function should analyze the board and return {row, col} for the best cell to hint, or null if the puzzle is complete.\n\n**Guidance:** Consider multiple strategies: prioritize cells with only one possible value (naked singles), or cells that appear in rows/columns/boxes with many filled cells. You could also consider a balanced approach that helps without making it too easy. The board parameter is a 9x9 array where 0 represents empty cells.\n\`\`\`\n\n**Partial Function Example:**\n\`\`\`\n${e.bullet} **Learn by Doing**\n\n**Context:** I've built a file upload component that validates files before accepting them. The main validation logic is complete, but it needs specific handling for different file type categories in the switch statement.\n\n**Your Task:** In upload.js, inside the validateFile() function's switch statement, implement the 'case "document":' branch. Look for TODO(human). This should validate document files (pdf, doc, docx).\n\n**Guidance:** Consider checking file size limits (maybe 10MB for documents?), validating the file extension matches the MIME type, and returning {valid: boolean, error?: string}. The file object has properties: name, size, type.\n\`\`\`\n\n**Debugging Example:**\n\`\`\`\n${e.bullet} **Learn by Doing**\n\n**Context:** The user reported that number inputs aren't working correctly in the calculator. I've identified the handleInput() function as the likely source, but need to understand what values are being processed.\n\n**Your Task:** In calculator.js, inside the handleInput() function, add 2-3 console.log statements after the TODO(human) comment to help debug why number inputs fail.\n\n**Guidance:** Consider logging: the raw input value, the parsed result, and any validation state. This will help us understand where the conversion breaks.\n\`\`\`\n\n### After Contributions\nShare one insight connecting their code to broader patterns or system effects. Avoid praise or repetition.\n\n## Insights\n${r}`}};export const getAllOutputStyles=n(async function(e){const n=await t(e),i=await s(),o={...OUTPUT_STYLE_CONFIG},a=n.filter(e=>"policySettings"===e.source),r=[i,n.filter(e=>"userSettings"===e.source),n.filter(e=>"projectSettings"===e.source),a];for(const e of r)for(const n of e)o[n.name]={name:n.name,description:n.description,prompt:n.prompt,source:n.source,keepCodingInstructions:n.keepCodingInstructions,forceForPlugin:n.forceForPlugin};return o});export function clearAllOutputStylesCache(){getAllOutputStyles.cache?.clear?.()}export async function getOutputStyleConfig(){const e=await getAllOutputStyles(i()),n=Object.values(e).filter(e=>null!==e&&"plugin"===e.source&&!0===e.forceForPlugin),t=n[0];if(t)return n.length>1&&o(`Multiple plugins have forced output styles: ${n.map(e=>e.name).join(", ")}. Using: ${t.name}`,{level:"warn"}),o(`Using forced plugin output style: ${t.name}`),t;const s=a();return e[s?.outputStyle||"default"]??null}export function hasCustomOutputStyle(){const e=a()?.outputStyle;return void 0!==e&&"default"!==e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MACRO as e,feature as t}from"../recovery/bunBundleShim.js";if(process.env.COREPACK_ENABLE_AUTO_PIN="0",process.env.MAX_THINKING_TOKENS??="0","true"===process.env.CONTEXT_CODE_REMOTE||"true"===process.env.CLAUDE_CODE_REMOTE){const e=process.env.NODE_OPTIONS||"";process.env.NODE_OPTIONS=e?`${e} --max-old-space-size=8192`:"--max-old-space-size=8192"}if(t("ABLATION_BASELINE")&&(process.env.CONTEXT_CODE_ABLATION_BASELINE||process.env.CLAUDE_CODE_ABLATION_BASELINE))for(const e of["CLAUDE_CODE_SIMPLE","CONTEXT_CODE_SIMPLE","CLAUDE_CODE_DISABLE_THINKING","CONTEXT_CODE_DISABLE_THINKING","DISABLE_INTERLEAVED_THINKING","DISABLE_COMPACT","DISABLE_AUTO_COMPACT","CLAUDE_CODE_DISABLE_AUTO_MEMORY","CONTEXT_CODE_DISABLE_AUTO_MEMORY","CLAUDE_CODE_DISABLE_BACKGROUND_TASKS","CONTEXT_CODE_DISABLE_BACKGROUND_TASKS"])process.env[e]??="1";!async function(){const
|
|
1
|
+
import{MACRO as e,feature as t}from"../recovery/bunBundleShim.js";if(process.env.COREPACK_ENABLE_AUTO_PIN="0",process.env.MAX_THINKING_TOKENS??="0","true"===process.env.CONTEXT_CODE_REMOTE||"true"===process.env.CLAUDE_CODE_REMOTE){const e=process.env.NODE_OPTIONS||"";process.env.NODE_OPTIONS=e?`${e} --max-old-space-size=8192`:"--max-old-space-size=8192"}if(t("ABLATION_BASELINE")&&(process.env.CONTEXT_CODE_ABLATION_BASELINE||process.env.CLAUDE_CODE_ABLATION_BASELINE))for(const e of["CLAUDE_CODE_SIMPLE","CONTEXT_CODE_SIMPLE","CLAUDE_CODE_DISABLE_THINKING","CONTEXT_CODE_DISABLE_THINKING","DISABLE_INTERLEAVED_THINKING","DISABLE_COMPACT","DISABLE_AUTO_COMPACT","CLAUDE_CODE_DISABLE_AUTO_MEMORY","CONTEXT_CODE_DISABLE_AUTO_MEMORY","CLAUDE_CODE_DISABLE_BACKGROUND_TASKS","CONTEXT_CODE_DISABLE_BACKGROUND_TASKS"])process.env[e]??="1";!async function(){const r=process.argv.slice(2);if(1===r.length&&("--version"===r[0]||"-v"===r[0]||"-V"===r[0]))return void console.log(`${e.VERSION} (Context Code)`);const{profileCheckpoint:i}=await import("../utils/startupProfiler.js");if(i("cli_entry"),t("DUMP_SYSTEM_PROMPT")&&"--dump-system-prompt"===r[0]){i("cli_dump_system_prompt_path");const{enableConfigs:e}=await import("../utils/config.js");e();const{getMainLoopModel:t}=await import("../utils/model/model.js"),s=r.indexOf("--model"),a=-1!==s&&r[s+1]||t(),{getSystemPrompt:o}=await import("../constants/prompts.js"),n=await o([],a);return void console.log(n.join("\n"))}if("--claude-in-chrome-mcp"===process.argv[2]){i("cli_claude_in_chrome_mcp_path");const{runClaudeInChromeMcpServer:e}=await import("../utils/claudeInChrome/mcpServer.js");return void await e()}if("--chrome-native-host"===process.argv[2]){i("cli_chrome_native_host_path");const{runChromeNativeHost:e}=await import("../utils/claudeInChrome/chromeNativeHost.js");return void await e()}if(t("CHICAGO_MCP")&&"--computer-use-mcp"===process.argv[2]){i("cli_computer_use_mcp_path");const{runComputerUseMcpServer:e}=await import("../utils/computerUse/mcpServer.js");return void await e()}if("--database-mcp"===process.argv[2]){i("cli_database_mcp_path");const{runDatabaseMcpServer:e}=await import("../utils/databaseMcp/mcpServer.js");return void await e()}if("--ssh-mcp"===process.argv[2]){i("cli_ssh_mcp_path");const{runSshMcpServer:e}=await import("../utils/sshMcp/sshMcpServer.js");return void await e()}if("--remotion-mcp"===process.argv[2]){i("cli_remotion_mcp_path");const{runRemotionMcpServer:e}=await import("../utils/remotionMcp/mcpServer.js");return void await e()}if("--bridge-global-daemon"===process.argv[2]){i("cli_bridge_global_daemon_path");const{runGlobalBridgeDaemon:e}=await import("../bridgeGlobal/daemon.js");return void await e()}if("--headless"===process.argv[2]||"--json-channels"===process.argv[2]){i("cli_headless_channels_path");const{runHeadlessChannelServer:e}=await import("../server/channelServer.js"),t=process.argv.indexOf("--channel-port"),r=-1!==t&&process.argv[t+1]?parseInt(process.argv[t+1]):9878,s=process.argv.includes("--use-websocket")||process.argv.includes("--use-ws");return void await e({port:r,useWs:s})}if(t("DAEMON")&&"--daemon-worker"===r[0]){const{runDaemonWorker:e}=await import("../daemon/workerRegistry.js");return void await e(r[1])}if(t("BRIDGE_MODE")&&("remote-control"===r[0]||"rc"===r[0]||"remote"===r[0]||"sync"===r[0]||"bridge"===r[0])){i("cli_bridge_path");const{enableConfigs:e}=await import("../utils/config.js");e();const{getBridgeDisabledReason:t,checkBridgeMinVersion:s}=await import("../bridge/bridgeEnabled.js"),{BRIDGE_LOGIN_ERROR:a}=await import("../bridge/types.js"),{bridgeMain:o}=await import("../bridge/bridgeMain.js"),{exitWithError:n}=await import("../utils/process.js"),{getClaudeAIOAuthTokens:c}=await import("../utils/auth.js");c()?.accessToken||n(a);const l=await t();l&&n(`Error: ${l}`);const p=s();p&&n(p);const{waitForPolicyLimitsToLoad:_,isPolicyAllowed:m}=await import("../services/policyLimits/index.js");return await _(),m("allow_remote_control")||n("Error: Remote Control is disabled by your organization's policy."),void await o(r.slice(1))}if(t("DAEMON")&&"daemon"===r[0]){i("cli_daemon_path");const{enableConfigs:e}=await import("../utils/config.js");e();const{initSinks:t}=await import("../utils/sinks.js");t();const{daemonMain:s}=await import("../daemon/main.js");return void await s(r.slice(1))}if(t("BG_SESSIONS")&&("ps"===r[0]||"logs"===r[0]||"attach"===r[0]||"kill"===r[0]||r.includes("--bg")||r.includes("--background"))){i("cli_bg_path");const{enableConfigs:e}=await import("../utils/config.js");e();const t=await import("../cli/bg.js");switch(r[0]){case"ps":await t.psHandler(r.slice(1));break;case"logs":await t.logsHandler(r[1]);break;case"attach":await t.attachHandler(r[1]);break;case"kill":await t.killHandler(r[1]);break;default:await t.handleBgFlag(r)}return}if(t("TEMPLATES")&&("new"===r[0]||"list"===r[0]||"reply"===r[0])){i("cli_templates_path");const{templatesMain:e}=await import("../cli/handlers/templateJobs.js");await e(r),process.exit(0)}if(t("BYOC_ENVIRONMENT_RUNNER")&&"environment-runner"===r[0]){i("cli_environment_runner_path");const{environmentRunnerMain:e}=await import("../environment-runner/main.js");return void await e(r.slice(1))}if(t("SELF_HOSTED_RUNNER")&&"self-hosted-runner"===r[0]){i("cli_self_hosted_runner_path");const{selfHostedRunnerMain:e}=await import("../self-hosted-runner/main.js");return void await e(r.slice(1))}if((r.includes("--tmux")||r.includes("--tmux=classic"))&&(r.includes("-w")||r.includes("--worktree")||r.some(e=>e.startsWith("--worktree=")))){i("cli_tmux_worktree_fast_path");const{enableConfigs:e}=await import("../utils/config.js");e();const{isWorktreeModeEnabled:t}=await import("../utils/worktreeModeEnabled.js");if(t()){const{execIntoTmuxWorktree:e}=await import("../utils/worktree.js"),t=await e(r);if(t.handled)return;if(t.error){const{exitWithError:e}=await import("../utils/process.js");e(t.error)}}}1!==r.length||"--update"!==r[0]&&"--upgrade"!==r[0]||(process.argv=[process.argv[0],process.argv[1],"update"]),r.includes("--bare")&&(process.env.CLAUDE_CODE_SIMPLE="1");const{startCapturingEarlyInput:s}=await import("../utils/earlyInput.js");s(),i("cli_before_main_import");const{main:a}=await import("../main.js");i("cli_after_main_import"),await a(),i("cli_after_main_complete")}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as t}from"react/jsx-runtime";import{getOauthProfileFromApiKey as i}from"../../services/oauth/getOauthProfile.js";import{isClaudeAISubscriber as o}from"../../utils/auth.js";import{Text as n}from"../../ink.js";import{logEvent as r}from"../../services/analytics/index.js";import{getGlobalConfig as s,saveGlobalConfig as u}from"../../utils/config.js";import{useStartupNotification as e}from"./useStartupNotification.js";export function useCanSwitchToExistingSubscription(){e(_temp2)}async function _temp2(){if((s().subscriptionNoticeCount??0)>=3)return null;const e=await async function(){if(o())return null;const t=await i();if(!t)return null;if(t.account.has_claude_max)return"Max";if(t.account.has_claude_pro)return"Pro";return null}();return null===e?null:(u(_temp),r("tengu_switch_to_subscription_notice_shown",{}),{key:"switch-to-subscription",jsx:t(n,{color:"suggestion",children:["
|
|
1
|
+
import{jsxs as t}from"react/jsx-runtime";import{getOauthProfileFromApiKey as i}from"../../services/oauth/getOauthProfile.js";import{isClaudeAISubscriber as o}from"../../utils/auth.js";import{Text as n}from"../../ink.js";import{logEvent as r}from"../../services/analytics/index.js";import{getGlobalConfig as s,saveGlobalConfig as u}from"../../utils/config.js";import{useStartupNotification as e}from"./useStartupNotification.js";export function useCanSwitchToExistingSubscription(){e(_temp2)}async function _temp2(){if((s().subscriptionNoticeCount??0)>=3)return null;const e=await async function(){if(o())return null;const t=await i();if(!t)return null;if(t.account.has_claude_max)return"Max";if(t.account.has_claude_pro)return"Pro";return null}();return null===e?null:(u(_temp),r("tengu_switch_to_subscription_notice_shown",{}),{key:"switch-to-subscription",jsx:t(n,{color:"suggestion",children:["Usa tu plan ",e," existente con Context Code",t(n,{color:"text",dimColor:!0,children:[" ","· /login para activarlo"]})]}),priority:"low"})}function _temp(t){return{...t,subscriptionNoticeCount:(t.subscriptionNoticeCount??0)+1}}
|