summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-30 21:45:21 -0400
committerGitHub <[email protected]>2026-04-30 21:45:21 -0400
commitc2a97a7a6ce6733a2d4a3c6900e8d617d4dd7fe2 (patch)
tree39a237a336b7508f8864de6597654c7eec9ee2fe
parenta083c88e87ed7bc652209355f7d5ac7e76f15b5a (diff)
downloadopencode-c2a97a7a6ce6733a2d4a3c6900e8d617d4dd7fe2.tar.gz
opencode-c2a97a7a6ce6733a2d4a3c6900e8d617d4dd7fe2.zip
refactor(file): yield instance context in watcher (#25205)
-rw-r--r--packages/opencode/src/file/watcher.ts22
1 files changed, 11 insertions, 11 deletions
diff --git a/packages/opencode/src/file/watcher.ts b/packages/opencode/src/file/watcher.ts
index 004679d64..d07e14cf1 100644
--- a/packages/opencode/src/file/watcher.ts
+++ b/packages/opencode/src/file/watcher.ts
@@ -10,7 +10,6 @@ import { BusEvent } from "@/bus/bus-event"
import { InstanceState } from "@/effect/instance-state"
import { Flag } from "@opencode-ai/core/flag/flag"
import { Git } from "@/git"
-import { Instance } from "@/project/instance"
import { lazy } from "@/util/lazy"
import { Config } from "@/config/config"
import { FileIgnore } from "./ignore"
@@ -76,25 +75,27 @@ export const layer = Layer.effect(
function* () {
if (yield* Flag.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER) return
- log.info("init", { directory: Instance.directory })
+ const ctx = yield* InstanceState.context
+
+ log.info("init", { directory: ctx.directory })
const backend = getBackend()
if (!backend) {
- log.error("watcher backend not supported", { directory: Instance.directory, platform: process.platform })
+ log.error("watcher backend not supported", { directory: ctx.directory, platform: process.platform })
return
}
const w = watcher()
if (!w) return
- log.info("watcher backend", { directory: Instance.directory, platform: process.platform, backend })
+ log.info("watcher backend", { directory: ctx.directory, platform: process.platform, backend })
const subs: ParcelWatcher.AsyncSubscription[] = []
yield* Effect.addFinalizer(() =>
Effect.promise(() => Promise.allSettled(subs.map((sub) => sub.unsubscribe()))),
)
- const cb: ParcelWatcher.SubscribeCallback = Instance.bind((err, evts) => {
+ const cb: ParcelWatcher.SubscribeCallback = InstanceState.bind((err, evts) => {
if (err) return
for (const evt of evts) {
if (evt.type === "create") void Bus.publish(Event.Updated, { file: evt.path, event: "add" })
@@ -122,19 +123,18 @@ export const layer = Layer.effect(
const cfgIgnores = cfg.watcher?.ignore ?? []
if (yield* Flag.OPENCODE_EXPERIMENTAL_FILEWATCHER) {
- yield* subscribe(Instance.directory, [
+ yield* subscribe(ctx.directory, [
...FileIgnore.PATTERNS,
...cfgIgnores,
- ...protecteds(Instance.directory),
+ ...protecteds(ctx.directory),
])
}
- if (Instance.project.vcs === "git") {
+ if (ctx.project.vcs === "git") {
const result = yield* git.run(["rev-parse", "--git-dir"], {
- cwd: Instance.project.worktree,
+ cwd: ctx.worktree,
})
- const vcsDir =
- result.exitCode === 0 ? path.resolve(Instance.project.worktree, result.text().trim()) : undefined
+ const vcsDir = result.exitCode === 0 ? path.resolve(ctx.worktree, result.text().trim()) : undefined
if (vcsDir && !cfgIgnores.includes(".git") && !cfgIgnores.includes(vcsDir)) {
const ignore = (yield* Effect.promise(() => readdir(vcsDir).catch(() => []))).filter(
(entry) => entry !== "HEAD",