Skip to content

Commit 8292039

Browse files
committed
Propagate parent tab's project folder to spawned script tabs
openScriptTab and createMainTab now inherit the project folder from the currently selected tab instead of always using the global self.projectFolder. Fixes agent scripts on custom tabs using the wrong project folder.
1 parent a82217f commit 8292039

3 files changed

Lines changed: 9 additions & 7 deletions

File tree

Agent/AgentViewModel/Features/ScriptTabs.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ extension AgentViewModel {
1313
{
1414
tab.parentTabId = parent.id
1515
}
16-
// Inherit project folder from current context (resolve to directory, not file)
17-
tab.projectFolder = Self.resolvedWorkingDirectory(self.projectFolder)
16+
// Inherit project folder from the currently selected tab (parent), falling back to global
17+
let parentFolder = selectedTabId.flatMap { self.tab(for: $0) }?.projectFolder ?? ""
18+
let sourceFolder = parentFolder.isEmpty ? self.projectFolder : parentFolder
19+
tab.projectFolder = Self.resolvedWorkingDirectory(sourceFolder)
1820
scriptTabs.append(tab)
1921
if selectTab { selectedTabId = tab.id }
2022
persistScriptTabs()
@@ -32,8 +34,10 @@ extension AgentViewModel {
3234
numberedConfig.displayName = "\(baseName) \(existingCount + 1)"
3335
}
3436
let tab = ScriptTab(llmConfig: numberedConfig)
35-
// Inherit project folder from main tab (resolve to directory, not file)
36-
tab.projectFolder = Self.resolvedWorkingDirectory(self.projectFolder)
37+
// Inherit project folder from the currently selected tab, falling back to global
38+
let parentFolder = selectedTabId.flatMap { self.tab(for: $0) }?.projectFolder ?? ""
39+
let sourceFolder = parentFolder.isEmpty ? self.projectFolder : parentFolder
40+
tab.projectFolder = Self.resolvedWorkingDirectory(sourceFolder)
3741
scriptTabs.append(tab)
3842
selectedTabId = tab.id
3943
persistScriptTabs()

Agent/AgentViewModel/NativeToolHandlers/NTH-AgentScript.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ extension AgentViewModel {
3535
// Spawn a fresh ScriptTab so the calling main task is not blocked. The script runs in a detached Task and
3636
// streams output to the spawned tab; this handler returns immediately.
3737
let spawnedTab = openScriptTab(scriptName: scriptName, selectTab: false)
38-
spawnedTab.projectFolder = projectFolder
3938
spawnedTab.isRunning = true
4039
spawnedTab.appendLog("🦾 Spawned from main task")
4140
spawnedTab.flush()

Agent/AgentViewModel/TabHandlers/AgentScript.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,7 @@ extension AgentViewModel {
166166
// Spawn a fresh ScriptTab for the run so the calling LLM tab is not blocked. The script runs in a detached
167167
// Task and streams output to the spawned tab; the calling tool returns immediately.
168168
let spawnedTab = openScriptTab(scriptName: scriptName, selectTab: false)
169-
// Inherit caller's project folder explicitly (openScriptTab uses self.projectFolder, which may not match
170-
// the calling tab when tabs have diverged).
169+
// Inherit caller's project folder explicitly (the calling tab may not be the selected tab).
171170
spawnedTab.projectFolder = tab.projectFolder
172171
spawnedTab.isRunning = true
173172
spawnedTab.appendLog("🦾 Spawned from \(tab.scriptName)")

0 commit comments

Comments
 (0)