mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-28 12:39:43 +00:00
Fix shell cwd after login startup (#24215)
Some checks are pending
deploy / deploy (push) Waiting to run
generate / generate (push) Waiting to run
nix-eval / nix-eval (push) Waiting to run
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=x64 host:macos-26-intel platform_flag:--mac --x64 target:x86_64-apple-darwin]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:aarch64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:x86_64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-windows-2025 platform_flag:--win target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-electron (map[host:windows-2025 platform_flag:--win --arm64 target:aarch64-pc-windows-msvc]) (push) Blocked by required conditions
publish / version (push) Waiting to run
publish / build-cli (push) Blocked by required conditions
publish / sign-cli-windows (push) Blocked by required conditions
publish / build-tauri (map[host:blacksmith-4vcpu-ubuntu-2404 target:x86_64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-tauri (map[host:blacksmith-4vcpu-windows-2025 target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-tauri (map[host:blacksmith-8vcpu-ubuntu-2404-arm target:aarch64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-tauri (map[host:macos-latest target:aarch64-apple-darwin]) (push) Blocked by required conditions
publish / build-tauri (map[host:macos-latest target:x86_64-apple-darwin]) (push) Blocked by required conditions
publish / build-tauri (map[host:windows-2025 target:aarch64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=arm64 host:macos-26 platform_flag:--mac --arm64 target:aarch64-apple-darwin]) (push) Blocked by required conditions
publish / publish (push) Blocked by required conditions
test / unit (linux) (push) Waiting to run
test / unit (windows) (push) Waiting to run
test / e2e (linux) (push) Waiting to run
test / e2e (windows) (push) Waiting to run
typecheck / typecheck (push) Waiting to run
Some checks are pending
deploy / deploy (push) Waiting to run
generate / generate (push) Waiting to run
nix-eval / nix-eval (push) Waiting to run
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=x64 host:macos-26-intel platform_flag:--mac --x64 target:x86_64-apple-darwin]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:aarch64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:x86_64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-windows-2025 platform_flag:--win target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-electron (map[host:windows-2025 platform_flag:--win --arm64 target:aarch64-pc-windows-msvc]) (push) Blocked by required conditions
publish / version (push) Waiting to run
publish / build-cli (push) Blocked by required conditions
publish / sign-cli-windows (push) Blocked by required conditions
publish / build-tauri (map[host:blacksmith-4vcpu-ubuntu-2404 target:x86_64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-tauri (map[host:blacksmith-4vcpu-windows-2025 target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-tauri (map[host:blacksmith-8vcpu-ubuntu-2404-arm target:aarch64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-tauri (map[host:macos-latest target:aarch64-apple-darwin]) (push) Blocked by required conditions
publish / build-tauri (map[host:macos-latest target:x86_64-apple-darwin]) (push) Blocked by required conditions
publish / build-tauri (map[host:windows-2025 target:aarch64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=arm64 host:macos-26 platform_flag:--mac --arm64 target:aarch64-apple-darwin]) (push) Blocked by required conditions
publish / publish (push) Blocked by required conditions
test / unit (linux) (push) Waiting to run
test / unit (windows) (push) Waiting to run
test / e2e (linux) (push) Waiting to run
test / e2e (windows) (push) Waiting to run
typecheck / typecheck (push) Waiting to run
This commit is contained in:
parent
f7d527cd28
commit
4877eccc0d
2 changed files with 31 additions and 5 deletions
|
|
@ -787,6 +787,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
||||||
const shellName = (
|
const shellName = (
|
||||||
process.platform === "win32" ? path.win32.basename(sh, ".exe") : path.basename(sh)
|
process.platform === "win32" ? path.win32.basename(sh, ".exe") : path.basename(sh)
|
||||||
).toLowerCase()
|
).toLowerCase()
|
||||||
|
const cwd = ctx.directory
|
||||||
const invocations: Record<string, { args: string[] }> = {
|
const invocations: Record<string, { args: string[] }> = {
|
||||||
nu: { args: ["-c", input.command] },
|
nu: { args: ["-c", input.command] },
|
||||||
fish: { args: ["-c", input.command] },
|
fish: { args: ["-c", input.command] },
|
||||||
|
|
@ -795,12 +796,13 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
||||||
"-l",
|
"-l",
|
||||||
"-c",
|
"-c",
|
||||||
`
|
`
|
||||||
__oc_cwd=$PWD
|
|
||||||
[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
|
[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
|
||||||
[[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true
|
[[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true
|
||||||
cd "$__oc_cwd"
|
cd -- "$1"
|
||||||
eval ${JSON.stringify(input.command)}
|
eval ${JSON.stringify(input.command)}
|
||||||
`,
|
`,
|
||||||
|
"opencode",
|
||||||
|
cwd,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
bash: {
|
bash: {
|
||||||
|
|
@ -808,12 +810,13 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
||||||
"-l",
|
"-l",
|
||||||
"-c",
|
"-c",
|
||||||
`
|
`
|
||||||
__oc_cwd=$PWD
|
|
||||||
shopt -s expand_aliases
|
shopt -s expand_aliases
|
||||||
[[ -f ~/.bashrc ]] && source ~/.bashrc >/dev/null 2>&1 || true
|
[[ -f ~/.bashrc ]] && source ~/.bashrc >/dev/null 2>&1 || true
|
||||||
cd "$__oc_cwd"
|
cd -- "$1"
|
||||||
eval ${JSON.stringify(input.command)}
|
eval ${JSON.stringify(input.command)}
|
||||||
`,
|
`,
|
||||||
|
"opencode",
|
||||||
|
cwd,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
cmd: { args: ["/c", input.command] },
|
cmd: { args: ["/c", input.command] },
|
||||||
|
|
@ -823,7 +826,6 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
||||||
}
|
}
|
||||||
|
|
||||||
const args = (invocations[shellName] ?? invocations[""]).args
|
const args = (invocations[shellName] ?? invocations[""]).args
|
||||||
const cwd = ctx.directory
|
|
||||||
const shellEnv = yield* plugin.trigger(
|
const shellEnv = yield* plugin.trigger(
|
||||||
"shell.env",
|
"shell.env",
|
||||||
{ cwd, sessionID: input.sessionID, callID: part.callID },
|
{ cwd, sessionID: input.sessionID, callID: part.callID },
|
||||||
|
|
|
||||||
|
|
@ -1078,6 +1078,30 @@ unix("shell completes a fast command on the preferred shell", () =>
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
unix("shell commands can change directory after startup", () =>
|
||||||
|
provideTmpdirInstance(
|
||||||
|
(dir) =>
|
||||||
|
Effect.gen(function* () {
|
||||||
|
const { prompt, run, chat } = yield* boot()
|
||||||
|
const parent = path.dirname(dir)
|
||||||
|
const result = yield* prompt.shell({
|
||||||
|
sessionID: chat.id,
|
||||||
|
agent: "build",
|
||||||
|
command: "cd .. && pwd",
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(result.info.role).toBe("assistant")
|
||||||
|
const tool = completedTool(result.parts)
|
||||||
|
if (!tool) return
|
||||||
|
|
||||||
|
expect(tool.state.output).toContain(parent)
|
||||||
|
expect(tool.state.metadata.output).toContain(parent)
|
||||||
|
yield* run.assertNotBusy(chat.id)
|
||||||
|
}),
|
||||||
|
{ git: true, config: cfg },
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
unix("shell lists files from the project directory", () =>
|
unix("shell lists files from the project directory", () =>
|
||||||
provideTmpdirInstance(
|
provideTmpdirInstance(
|
||||||
(dir) =>
|
(dir) =>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue