fix(agent-manager): rename "workspace" to "worktree" across agent manager UI and code (#7224)

Replace all user-facing "workspace" references with "worktree" in the
agent manager to use correct git terminology. Updates i18n strings in
all 16 locales, renames internal methods (getWorkspaceRoot → getRoot,
workspacePath → repoPath), and updates comments throughout.
This commit is contained in:
Marius
2026-03-18 14:31:08 +01:00
committed by GitHub
parent 3fbd95e63a
commit 74b0fb2f4f
24 changed files with 67 additions and 67 deletions
@@ -32,7 +32,7 @@ import { getWorkspaceRoot, hashFileDiffs, openFileInEditor, resolveLocalDiffTarg
* Uses WorktreeStateManager for centralized state persistence. Worktrees and
* sessions are stored in `.kilo/agent-manager.json`. The UI shows two
* sections: WORKTREES (top) with managed worktrees + their sessions, and
* SESSIONS (bottom) with unassociated workspace sessions.
* SESSIONS (bottom) with unassociated local sessions.
*/
const LOCAL_DIFF_ID = "local" as const
@@ -76,7 +76,7 @@ export class AgentManagerProvider implements vscode.Disposable {
this.gitOps = new GitOps({ log: (...args) => this.log(...args) })
this.statsPoller = new GitStatsPoller({
getWorktrees: () => this.state?.getWorktrees() ?? [],
getWorkspaceRoot: () => this.getWorkspaceRoot(),
getWorkspaceRoot: () => this.getRoot(),
getClient: () => this.connectionService.getClient(),
onStats: (stats) => {
const msg = { type: "agentManager.worktreeStats" as const, stats }
@@ -261,7 +261,7 @@ export class AgentManagerProvider implements vscode.Disposable {
if (m.type === "agentManager.requestState") {
void this.stateReady
?.then(() => {
// When the workspace is not a git repo (or has no folder open),
// When the folder is not a git repo (or has no folder open),
// this.state is never created. pushState() silently returns in that
// case, so re-send the empty/non-git state explicitly.
if (!this.state) {
@@ -368,7 +368,7 @@ export class AgentManagerProvider implements vscode.Disposable {
// Intercept generic "openFile" from DataBridge (markdown links, tool subtitle clicks)
// and route through worktree-aware resolution — but only for worktree sessions.
// Local sessions fall through to KiloProvider which resolves against workspace root.
// Local sessions fall through to KiloProvider which resolves against the repo root.
// Uses activeSessionId (set synchronously by loadMessages) rather than
// KiloProvider.currentSession which can be stale during rapid tab switches.
if (m.type === "openFile") {
@@ -507,7 +507,7 @@ export class AgentManagerProvider implements vscode.Disposable {
this.postToWebview({
type: "agentManager.worktreeSetup",
status: "creating",
message: "Setting up workspace...",
message: "Setting up worktree...",
branch: result.branch,
worktreeId: worktree.id,
})
@@ -1170,7 +1170,7 @@ export class AgentManagerProvider implements vscode.Disposable {
this.postToWebview({
type: "agentManager.worktreeSetup",
status: "creating",
message: "Setting up workspace...",
message: "Setting up worktree...",
branch: result.branch,
worktreeId: worktree.id,
})
@@ -1339,7 +1339,7 @@ export class AgentManagerProvider implements vscode.Disposable {
this.postToWebview({
type: "agentManager.importResult",
success: true,
message: `Imported ${imported} workspace${imported !== 1 ? "s" : ""}`,
message: `Imported ${imported} worktree${imported !== 1 ? "s" : ""}`,
})
this.log(`Imported ${imported}/${externals.length} external worktrees`)
} catch (error) {
@@ -1385,7 +1385,7 @@ export class AgentManagerProvider implements vscode.Disposable {
/** Run the worktree setup script if configured. Blocks until complete. Shows progress in overlay. */
private async runSetupScriptForWorktree(worktreePath: string, branch?: string, worktreeId?: string): Promise<void> {
const root = this.getWorkspaceRoot()
const root = this.getRoot()
if (!root) return
try {
const service = this.getSetupScriptService()
@@ -1504,7 +1504,7 @@ export class AgentManagerProvider implements vscode.Disposable {
this.statsPoller.setEnabled(worktrees.length > 0 || this.panel !== undefined)
}
/** Push empty state when the workspace is not a git repo or has no workspace folder. */
/** Push empty state when the folder is not a git repo or has no folder open. */
private pushEmptyState(): void {
this.staleWorktreeIds.clear()
this.postToWebview({
@@ -1521,15 +1521,15 @@ export class AgentManagerProvider implements vscode.Disposable {
// Manager accessors
// ---------------------------------------------------------------------------
private getWorkspaceRoot(): string | undefined {
private getRoot(): string | undefined {
return getWorkspaceRoot()
}
private getWorktreeManager(): WorktreeManager | undefined {
if (this.worktrees) return this.worktrees
const root = this.getWorkspaceRoot()
const root = this.getRoot()
if (!root) {
this.log("getWorktreeManager: no workspace folder available")
this.log("getWorktreeManager: no folder available")
return undefined
}
this.worktrees = new WorktreeManager(
@@ -1542,9 +1542,9 @@ export class AgentManagerProvider implements vscode.Disposable {
private getStateManager(): WorktreeStateManager | undefined {
if (this.state) return this.state
const root = this.getWorkspaceRoot()
const root = this.getRoot()
if (!root) {
this.log("getStateManager: no workspace folder available")
this.log("getStateManager: no folder available")
return undefined
}
this.state = new WorktreeStateManager(root, (msg) => this.outputChannel.appendLine(`[StateManager] ${msg}`))
@@ -1553,9 +1553,9 @@ export class AgentManagerProvider implements vscode.Disposable {
private getSetupScriptService(): SetupScriptService | undefined {
if (this.setupScript) return this.setupScript
const root = this.getWorkspaceRoot()
const root = this.getRoot()
if (!root) {
this.log("getSetupScriptService: no workspace folder available")
this.log("getSetupScriptService: no folder available")
return undefined
}
this.setupScript = new SetupScriptService(root)
@@ -1593,9 +1593,9 @@ export class AgentManagerProvider implements vscode.Disposable {
}
const state = this.getStateManager()
const root = this.getWorkspaceRoot()
const root = this.getRoot()
if (!state || !root) {
this.postApplyResult(worktreeId, "error", "Open a git workspace to apply changes")
this.postApplyResult(worktreeId, "error", "Open a git repository to apply changes")
return
}
@@ -1664,7 +1664,7 @@ export class AgentManagerProvider implements vscode.Disposable {
/** Open a file from a worktree or local session in the VS Code editor.
* Absolute paths (Unix `/…` or Windows `C:\…`) are opened directly.
* Relative paths are resolved against the session's worktree directory
* (or workspace root for local sessions) with symlink-traversal protection. */
* (or repo root for local sessions) with symlink-traversal protection. */
private openWorktreeFile(sessionId: string, filePath: string, line?: number, column?: number): void {
if (isAbsolutePath(filePath)) {
const uri = vscode.Uri.file(filePath)
@@ -1674,7 +1674,7 @@ export class AgentManagerProvider implements vscode.Disposable {
const state = this.getStateManager()
if (!state) return
const session = state.getSession(sessionId)
const base = session?.worktreeId ? state.getWorktree(session.worktreeId)?.path : this.getWorkspaceRoot()
const base = session?.worktreeId ? state.getWorktree(session.worktreeId)?.path : this.getRoot()
if (!base) return
// Resolve real paths to prevent symlink traversal and normalize for
// consistent comparison on both Unix and Windows.
@@ -1719,7 +1719,7 @@ export class AgentManagerProvider implements vscode.Disposable {
return { directory: worktree.path, baseBranch: remoteRef(worktree) }
}
/** Resolve diff target for the local workspace — diffs against the remote tracking
/** Resolve diff target for the local repo — diffs against the remote tracking
* branch, falling back to the repo's default branch, and ultimately to HEAD so
* local-only repos (no remote) still show working-tree changes in the diff panel. */
private async resolveLocalDiffTarget(): Promise<{ directory: string; baseBranch: string } | undefined> {
@@ -14,7 +14,7 @@ export interface TerminalHandle {
export interface TerminalHost {
createTerminal(opts: { cwd: string; name: string }): TerminalHandle
activeTerminal(): TerminalHandle | undefined
workspacePath(): string | undefined
repoPath(): string | undefined
showWarning(msg: string): void
setContext(key: string, value: boolean): void
onTerminalClosed(cb: (handle: TerminalHandle) => void): Disposable
@@ -30,7 +30,7 @@ export interface Disposable {
/**
* Manages terminals for agent manager sessions.
* Each session can have an associated terminal that opens in the session's worktree directory,
* or the main workspace folder for local sessions.
* or the main repo folder for local sessions.
*/
export class SessionTerminalManager {
private static readonly LOCAL_KEY = "__local__"
@@ -82,15 +82,15 @@ export class SessionTerminalManager {
/**
* Show (or create) a terminal for the given session.
* Resolves CWD from the worktree state, falling back to workspace root.
* Resolves CWD from the worktree state, falling back to repo root.
*/
showTerminal(sessionId: string, state: WorktreeStateManager | undefined): void {
// If terminal already exists, just focus it
if (this.showExisting(sessionId, false)) return
const workspacePath = this.host.workspacePath()
const repoPath = this.host.repoPath()
const worktreePath = state?.directoryFor(sessionId)
const cwd = worktreePath ?? workspacePath
const cwd = worktreePath ?? repoPath
if (!cwd) {
this.log(`showTerminal: no cwd resolved for session ${sessionId}`)
@@ -106,15 +106,15 @@ export class SessionTerminalManager {
}
/**
* Show (or create) a terminal for the local workspace (no session required).
* Show (or create) a terminal for the local repo (no session required).
* Used when the user triggers a terminal in local mode without an active session.
*/
showLocalTerminal(): void {
if (this.showExisting(SessionTerminalManager.LOCAL_KEY, false)) return
const cwd = this.host.workspacePath()
const cwd = this.host.repoPath()
if (!cwd) {
this.log("showLocalTerminal: no workspace folder open")
this.log("showLocalTerminal: no repo folder open")
this.host.showWarning("Open a folder to use the local terminal")
return
}
@@ -35,7 +35,7 @@ export function createTerminalHost(): TerminalHost {
const t = vscode.window.activeTerminal
return t ? wrap(t) : undefined
},
workspacePath: () => vscode.workspace.workspaceFolders?.[0]?.uri.fsPath,
repoPath: () => vscode.workspace.workspaceFolders?.[0]?.uri.fsPath,
showWarning: (msg) => void vscode.window.showWarningMessage(msg),
setContext: (key, value) => void vscode.commands.executeCommand("setContext", key, value),
onTerminalClosed: (cb) => vscode.window.onDidCloseTerminal((terminal) => cb(wrap(terminal))),
@@ -46,11 +46,11 @@ describe("SessionTerminalManager structure", () => {
expect(text).toContain("terminals.clear()")
})
it("showTerminal resolves CWD from worktree with workspace fallback", () => {
it("showTerminal resolves CWD from worktree with repo fallback", () => {
const text = body("showTerminal")
// The fallback chain must be worktreePath ?? workspacePath, not the reverse.
// The fallback chain must be worktreePath ?? repoPath, not the reverse.
// Getting this wrong would run agents in the wrong directory.
expect(text).toContain("worktreePath ?? workspacePath")
expect(text).toContain("worktreePath ?? repoPath")
})
/**
@@ -106,7 +106,7 @@ interface ApplyState {
conflicts: AgentManagerApplyWorktreeDiffConflict[]
}
/** Sidebar selection: LOCAL for workspace, worktree ID for a worktree, or null for an unassigned session. */
/** Sidebar selection: LOCAL for local repo, worktree ID for a worktree, or null for an unassigned session. */
type SidebarSelection = typeof LOCAL | string | null
const isMac = typeof navigator !== "undefined" && /Mac|iPhone|iPad/.test(navigator.userAgent)
@@ -343,7 +343,7 @@ const AgentManagerContent: Component = () => {
// Per-worktree git stats (diff additions/deletions, commits missing from origin)
const [worktreeStats, setWorktreeStats] = createSignal<Record<string, WorktreeGitStats>>({})
// Local workspace git stats (branch name, diff additions/deletions, commits)
// Local repo git stats (branch name, diff additions/deletions, commits)
const [localStats, setLocalStats] = createSignal<LocalGitStats | undefined>()
// Per-worktree apply-to-local status
@@ -1920,7 +1920,7 @@ const AgentManagerContent: Component = () => {
max={9999}
onResize={(width) => setSidebarWidth(Math.min(width, window.innerWidth * MAX_SIDEBAR_WIDTH_RATIO))}
/>
{/* Local workspace item */}
{/* Local repo item */}
<button
class={`am-local-item ${selection() === LOCAL ? "am-local-item-active" : ""}`}
data-sidebar-id="local"
@@ -533,7 +533,7 @@ export const NewWorktreeDialog: Component<{ onClose: () => void; defaultBaseBran
</>
}
>
{t("agentManager.dialog.createWorkspace")}
{t("agentManager.dialog.createWorktree")}
</Show>
</Button>
</div>
@@ -22,7 +22,7 @@
background: var(--surface-interactive-base);
}
/* Fixed local workspace item */
/* Fixed local repo item */
.am-local-item {
position: relative;
@@ -84,7 +84,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "البحث عن النماذج...",
"agentManager.dialog.compareModels.selectModels": "اختر النماذج...",
"agentManager.dialog.creating": "جارٍ الإنشاء...",
"agentManager.dialog.createWorkspace": "إنشاء شجرة العمل",
"agentManager.dialog.createWorktree": "إنشاء شجرة العمل",
"agentManager.dialog.removeImage": "إزالة الصورة",
"agentManager.dialog.advanced": "متقدم...",
@@ -33,8 +33,8 @@ export const dict = {
"agentManager.tab.forkSession": "Bifurcar sessão",
"agentManager.tab.terminal": "Terminal",
"agentManager.tab.openTerminal": "Abrir Terminal",
"agentManager.setup.failed": "Falha na configuração do workspace",
"agentManager.setup.settingUp": "Configurando workspace",
"agentManager.setup.failed": "Falha na configuração do worktree",
"agentManager.setup.settingUp": "Configurando worktree",
"agentManager.setup.error.git_not_found":
"O Git não está instalado ou não foi encontrado no PATH. Instale o Git e reinicie o VS Code.",
"agentManager.setup.error.not_git_repo": "Abra uma pasta que contém um repositório git para usar worktrees.",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Pesquisar modelos...",
"agentManager.dialog.compareModels.selectModels": "Selecionar modelos...",
"agentManager.dialog.creating": "Criando...",
"agentManager.dialog.createWorkspace": "Criar Worktree",
"agentManager.dialog.createWorktree": "Criar Worktree",
"agentManager.dialog.removeImage": "Remover imagem",
"agentManager.dialog.advanced": "Avançado...",
@@ -86,7 +86,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Pretraži modele...",
"agentManager.dialog.compareModels.selectModels": "Odaberi modele...",
"agentManager.dialog.creating": "Kreiranje...",
"agentManager.dialog.createWorkspace": "Kreiraj worktree",
"agentManager.dialog.createWorktree": "Kreiraj worktree",
"agentManager.dialog.removeImage": "Ukloni sliku",
"agentManager.dialog.advanced": "Napredno...",
@@ -33,8 +33,8 @@ export const dict = {
"agentManager.tab.forkSession": "Forgren session",
"agentManager.tab.terminal": "Terminal",
"agentManager.tab.openTerminal": "Åbn Terminal",
"agentManager.setup.failed": "Opsætning af workspace mislykkedes",
"agentManager.setup.settingUp": "Opsætter workspace",
"agentManager.setup.failed": "Opsætning af worktree mislykkedes",
"agentManager.setup.settingUp": "Opsætter worktree",
"agentManager.setup.error.git_not_found":
"Git er ikke installeret eller blev ikke fundet i PATH. Installer venligst Git og genstart VS Code.",
"agentManager.setup.error.not_git_repo": "Åbn en mappe, der indeholder et git-repository for at bruge worktrees.",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Søg modeller...",
"agentManager.dialog.compareModels.selectModels": "Vælg modeller...",
"agentManager.dialog.creating": "Opretter...",
"agentManager.dialog.createWorkspace": "Opret Worktree",
"agentManager.dialog.createWorktree": "Opret Worktree",
"agentManager.dialog.removeImage": "Fjern billede",
"agentManager.dialog.advanced": "Avanceret...",
@@ -86,7 +86,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Modelle suchen...",
"agentManager.dialog.compareModels.selectModels": "Modelle auswählen...",
"agentManager.dialog.creating": "Wird erstellt...",
"agentManager.dialog.createWorkspace": "Worktree erstellen",
"agentManager.dialog.createWorktree": "Worktree erstellen",
"agentManager.dialog.removeImage": "Bild entfernen",
"agentManager.dialog.advanced": "Erweitert...",
@@ -38,8 +38,8 @@ export const dict = {
"agentManager.tab.terminal": "Terminal",
"agentManager.tab.openTerminal": "Open Terminal",
"agentManager.setup.failed": "Workspace setup failed",
"agentManager.setup.settingUp": "Setting up workspace",
"agentManager.setup.failed": "Worktree setup failed",
"agentManager.setup.settingUp": "Setting up worktree",
"agentManager.setup.error.git_not_found":
"Git is not installed or not found in PATH. Please install Git and restart VS Code.",
"agentManager.setup.error.not_git_repo": "Open a folder that contains a git repository to use worktrees.",
@@ -91,7 +91,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Search models...",
"agentManager.dialog.compareModels.selectModels": "Select models...",
"agentManager.dialog.creating": "Creating...",
"agentManager.dialog.createWorkspace": "Create Worktree",
"agentManager.dialog.createWorktree": "Create Worktree",
"agentManager.dialog.removeImage": "Remove image",
"agentManager.dialog.advanced": "Advanced...",
@@ -33,8 +33,8 @@ export const dict = {
"agentManager.tab.forkSession": "Bifurcar sesión",
"agentManager.tab.terminal": "Terminal",
"agentManager.tab.openTerminal": "Abrir Terminal",
"agentManager.setup.failed": "Error en la configuración del workspace",
"agentManager.setup.settingUp": "Configurando workspace",
"agentManager.setup.failed": "Error en la configuración del worktree",
"agentManager.setup.settingUp": "Configurando worktree",
"agentManager.setup.error.git_not_found":
"Git no está instalado o no se encuentra en el PATH. Por favor instale Git y reinicie VS Code.",
"agentManager.setup.error.not_git_repo": "Abra una carpeta que contenga un repositorio git para usar worktrees.",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Buscar modelos...",
"agentManager.dialog.compareModels.selectModels": "Seleccionar modelos...",
"agentManager.dialog.creating": "Creando...",
"agentManager.dialog.createWorkspace": "Crear Worktree",
"agentManager.dialog.createWorktree": "Crear Worktree",
"agentManager.dialog.removeImage": "Eliminar imagen",
"agentManager.dialog.advanced": "Avanzado...",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Rechercher des modèles...",
"agentManager.dialog.compareModels.selectModels": "Sélectionner des modèles...",
"agentManager.dialog.creating": "Création...",
"agentManager.dialog.createWorkspace": "Créer un worktree",
"agentManager.dialog.createWorktree": "Créer un worktree",
"agentManager.dialog.removeImage": "Supprimer l'image",
"agentManager.dialog.advanced": "Avancé...",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "モデルを検索...",
"agentManager.dialog.compareModels.selectModels": "モデルを選択...",
"agentManager.dialog.creating": "作成中...",
"agentManager.dialog.createWorkspace": "ワークツリーを作成",
"agentManager.dialog.createWorktree": "ワークツリーを作成",
"agentManager.dialog.removeImage": "画像を削除",
"agentManager.dialog.advanced": "詳細...",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "모델 검색...",
"agentManager.dialog.compareModels.selectModels": "모델 선택...",
"agentManager.dialog.creating": "생성 중...",
"agentManager.dialog.createWorkspace": "워크트리 생성",
"agentManager.dialog.createWorktree": "워크트리 생성",
"agentManager.dialog.removeImage": "이미지 제거",
"agentManager.dialog.advanced": "고급...",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Søk modeller...",
"agentManager.dialog.compareModels.selectModels": "Velg modeller...",
"agentManager.dialog.creating": "Oppretter...",
"agentManager.dialog.createWorkspace": "Opprett worktree",
"agentManager.dialog.createWorktree": "Opprett worktree",
"agentManager.dialog.removeImage": "Fjern bilde",
"agentManager.dialog.advanced": "Avansert...",
@@ -33,8 +33,8 @@ export const dict = {
"agentManager.tab.forkSession": "Rozgałęź sesję",
"agentManager.tab.terminal": "Terminal",
"agentManager.tab.openTerminal": "Otwórz Terminal",
"agentManager.setup.failed": "Konfiguracja workspace nie powiodła się",
"agentManager.setup.settingUp": "Konfigurowanie workspace",
"agentManager.setup.failed": "Konfiguracja worktree nie powiodła się",
"agentManager.setup.settingUp": "Konfigurowanie worktree",
"agentManager.setup.error.git_not_found":
"Git nie jest zainstalowany lub nie został znaleziony w zmiennej PATH. Zainstaluj Git i uruchom ponownie VS Code.",
"agentManager.setup.error.not_git_repo": "Otwórz folder zawierający repozytorium git, aby używać worktrees.",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Szukaj modeli...",
"agentManager.dialog.compareModels.selectModels": "Wybierz modele...",
"agentManager.dialog.creating": "Tworzenie...",
"agentManager.dialog.createWorkspace": "Utwórz Worktree",
"agentManager.dialog.createWorktree": "Utwórz Worktree",
"agentManager.dialog.removeImage": "Usuń obraz",
"agentManager.dialog.advanced": "Zaawansowane...",
@@ -85,7 +85,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "Поиск моделей...",
"agentManager.dialog.compareModels.selectModels": "Выбрать модели...",
"agentManager.dialog.creating": "Создание...",
"agentManager.dialog.createWorkspace": "Создать worktree",
"agentManager.dialog.createWorktree": "Создать worktree",
"agentManager.dialog.removeImage": "Удалить изображение",
"agentManager.dialog.advanced": "Дополнительно...",
@@ -33,8 +33,8 @@ export const dict = {
"agentManager.tab.forkSession": "แยกเซสชัน",
"agentManager.tab.terminal": "เทอร์มินัล",
"agentManager.tab.openTerminal": "เปิดเทอร์มินัล",
"agentManager.setup.failed": "ตั้งค่า Workspace ล้มเหลว",
"agentManager.setup.settingUp": "กำลังตั้งค่า Workspace",
"agentManager.setup.failed": "ตั้งค่า Worktree ล้มเหลว",
"agentManager.setup.settingUp": "กำลังตั้งค่า Worktree",
"agentManager.setup.error.git_not_found": "ไม่ได้ติดตั้ง Git หรือไม่พบใน PATH โปรดติดตั้ง Git และรีสตาร์ท VS Code",
"agentManager.setup.error.not_git_repo": "เปิดโฟลเดอร์ที่มีที่เก็บ git เพื่อใช้ worktrees",
"agentManager.setup.error.lfs_missing": "ที่เก็บนี้ใช้ Git LFS แต่ไม่พบ git-lfs โปรดติดตั้ง Git LFS",
@@ -83,7 +83,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "ค้นหาโมเดล...",
"agentManager.dialog.compareModels.selectModels": "เลือกโมเดล...",
"agentManager.dialog.creating": "กำลังสร้าง...",
"agentManager.dialog.createWorkspace": "สร้าง Worktree",
"agentManager.dialog.createWorktree": "สร้าง Worktree",
"agentManager.dialog.removeImage": "ลบรูปภาพ",
"agentManager.dialog.advanced": "ขั้นสูง...",
@@ -82,7 +82,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "搜索模型...",
"agentManager.dialog.compareModels.selectModels": "选择模型...",
"agentManager.dialog.creating": "创建中...",
"agentManager.dialog.createWorkspace": "创建工作树",
"agentManager.dialog.createWorktree": "创建工作树",
"agentManager.dialog.removeImage": "移除图片",
"agentManager.dialog.advanced": "高级...",
@@ -82,7 +82,7 @@ export const dict = {
"agentManager.dialog.compareModels.searchModels": "搜尋模型...",
"agentManager.dialog.compareModels.selectModels": "選擇模型...",
"agentManager.dialog.creating": "建立中...",
"agentManager.dialog.createWorkspace": "建立工作樹",
"agentManager.dialog.createWorktree": "建立工作樹",
"agentManager.dialog.removeImage": "移除圖片",
"agentManager.dialog.advanced": "進階...",
@@ -7,7 +7,7 @@
* Returns the action to take: select a session by ID, go to local, or do nothing.
*/
/** Sentinel value for the local workspace selection. */
/** Sentinel value for the local repo selection. */
export const LOCAL = "local" as const
type NavResult = { action: "select"; id: string } | { action: typeof LOCAL } | { action: "none" }