From 5fd833aa18d2cc71c977925c0646392a7f78ece2 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Wed, 1 Apr 2026 10:39:43 -0400 Subject: [PATCH] refactor: standardize InstanceState variable name to state (#20267) --- packages/opencode/src/bus/index.ts | 24 +++++++------- packages/opencode/src/command/index.ts | 10 +++--- packages/opencode/src/mcp/index.ts | 20 ++++++------ packages/opencode/src/plugin/index.ts | 12 +++---- packages/opencode/src/provider/provider.ts | 16 ++++----- packages/opencode/src/pty/index.ts | 38 +++++++++++----------- packages/opencode/src/session/prompt.ts | 10 +++--- packages/opencode/src/tool/registry.ts | 18 +++++----- 8 files changed, 74 insertions(+), 74 deletions(-) diff --git a/packages/opencode/src/bus/index.ts b/packages/opencode/src/bus/index.ts index 2a841920d9..fe26a6672e 100644 --- a/packages/opencode/src/bus/index.ts +++ b/packages/opencode/src/bus/index.ts @@ -46,7 +46,7 @@ export namespace Bus { export const layer = Layer.effect( Service, Effect.gen(function* () { - const cache = yield* InstanceState.make( + const state = yield* InstanceState.make( Effect.fn("Bus.state")(function* (ctx) { const wildcard = yield* PubSub.unbounded() const typed = new Map>() @@ -82,13 +82,13 @@ export namespace Bus { function publish(def: D, properties: z.output) { return Effect.gen(function* () { - const state = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const payload: Payload = { type: def.type, properties } log.info("publishing", { type: def.type }) - const ps = state.typed.get(def.type) + const ps = s.typed.get(def.type) if (ps) yield* PubSub.publish(ps, payload) - yield* PubSub.publish(state.wildcard, payload) + yield* PubSub.publish(s.wildcard, payload) const dir = yield* InstanceState.directory GlobalBus.emit("event", { @@ -102,8 +102,8 @@ export namespace Bus { log.info("subscribing", { type: def.type }) return Stream.unwrap( Effect.gen(function* () { - const state = yield* InstanceState.get(cache) - const ps = yield* getOrCreate(state, def) + const s = yield* InstanceState.get(state) + const ps = yield* getOrCreate(s, def) return Stream.fromPubSub(ps) }), ).pipe(Stream.ensuring(Effect.sync(() => log.info("unsubscribing", { type: def.type })))) @@ -113,8 +113,8 @@ export namespace Bus { log.info("subscribing", { type: "*" }) return Stream.unwrap( Effect.gen(function* () { - const state = yield* InstanceState.get(cache) - return Stream.fromPubSub(state.wildcard) + const s = yield* InstanceState.get(state) + return Stream.fromPubSub(s.wildcard) }), ).pipe(Stream.ensuring(Effect.sync(() => log.info("unsubscribing", { type: "*" })))) } @@ -150,14 +150,14 @@ export namespace Bus { def: D, callback: (event: Payload) => unknown, ) { - const state = yield* InstanceState.get(cache) - const ps = yield* getOrCreate(state, def) + const s = yield* InstanceState.get(state) + const ps = yield* getOrCreate(s, def) return yield* on(ps, def.type, callback) }) const subscribeAllCallback = Effect.fn("Bus.subscribeAllCallback")(function* (callback: (event: any) => unknown) { - const state = yield* InstanceState.get(cache) - return yield* on(state.wildcard, "*", callback) + const s = yield* InstanceState.get(state) + return yield* on(s.wildcard, "*", callback) }) return Service.of({ publish, subscribe, subscribeAll, subscribeCallback, subscribeAllCallback }) diff --git a/packages/opencode/src/command/index.ts b/packages/opencode/src/command/index.ts index 8cdb578419..365c598137 100644 --- a/packages/opencode/src/command/index.ts +++ b/packages/opencode/src/command/index.ts @@ -161,16 +161,16 @@ export namespace Command { } }) - const cache = yield* InstanceState.make((ctx) => init(ctx)) + const state = yield* InstanceState.make((ctx) => init(ctx)) const get = Effect.fn("Command.get")(function* (name: string) { - const state = yield* InstanceState.get(cache) - return state.commands[name] + const s = yield* InstanceState.get(state) + return s.commands[name] }) const list = Effect.fn("Command.list")(function* () { - const state = yield* InstanceState.get(cache) - return Object.values(state.commands) + const s = yield* InstanceState.get(state) + return Object.values(s.commands) }) return Service.of({ get, list }) diff --git a/packages/opencode/src/mcp/index.ts b/packages/opencode/src/mcp/index.ts index e3bf4cac06..47c39aad56 100644 --- a/packages/opencode/src/mcp/index.ts +++ b/packages/opencode/src/mcp/index.ts @@ -477,7 +477,7 @@ export namespace MCP { }) } - const cache = yield* InstanceState.make( + const state = yield* InstanceState.make( Effect.fn("MCP.state")(function* () { const cfg = yield* cfgSvc.get() const config = cfg.mcp ?? {} @@ -549,7 +549,7 @@ export namespace MCP { } const status = Effect.fn("MCP.status")(function* () { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const cfg = yield* cfgSvc.get() const config = cfg.mcp ?? {} @@ -564,12 +564,12 @@ export namespace MCP { }) const clients = Effect.fn("MCP.clients")(function* () { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) return s.clients }) const createAndStore = Effect.fn("MCP.createAndStore")(function* (name: string, mcp: Config.Mcp) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const result = yield* create(name, mcp) s.status[name] = result.status @@ -588,7 +588,7 @@ export namespace MCP { const add = Effect.fn("MCP.add")(function* (name: string, mcp: Config.Mcp) { yield* createAndStore(name, mcp) - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) return { status: s.status } }) @@ -602,7 +602,7 @@ export namespace MCP { }) const disconnect = Effect.fn("MCP.disconnect")(function* (name: string) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) yield* closeClient(s, name) delete s.clients[name] s.status[name] = { status: "disabled" } @@ -610,7 +610,7 @@ export namespace MCP { const tools = Effect.fn("MCP.tools")(function* () { const result: Record = {} - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const cfg = yield* cfgSvc.get() const config = cfg.mcp ?? {} @@ -657,12 +657,12 @@ export namespace MCP { } const prompts = Effect.fn("MCP.prompts")(function* () { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) return yield* collectFromConnected(s, (c) => c.listPrompts().then((r) => r.prompts), "prompts") }) const resources = Effect.fn("MCP.resources")(function* () { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) return yield* collectFromConnected(s, (c) => c.listResources().then((r) => r.resources), "resources") }) @@ -672,7 +672,7 @@ export namespace MCP { label: string, meta?: Record, ) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const client = s.clients[clientName] if (!client) { log.warn(`client not found for ${label}`, { clientName }) diff --git a/packages/opencode/src/plugin/index.ts b/packages/opencode/src/plugin/index.ts index b05dd86259..8cd9776cd8 100644 --- a/packages/opencode/src/plugin/index.ts +++ b/packages/opencode/src/plugin/index.ts @@ -103,7 +103,7 @@ export namespace Plugin { const bus = yield* Bus.Service const config = yield* Config.Service - const cache = yield* InstanceState.make( + const state = yield* InstanceState.make( Effect.fn("Plugin.state")(function* (ctx) { const hooks: Hooks[] = [] @@ -279,8 +279,8 @@ export namespace Plugin { Output = Parameters[Name]>[1], >(name: Name, input: Input, output: Output) { if (!name) return output - const state = yield* InstanceState.get(cache) - for (const hook of state.hooks) { + const s = yield* InstanceState.get(state) + for (const hook of s.hooks) { const fn = hook[name] as any if (!fn) continue yield* Effect.promise(async () => fn(input, output)) @@ -289,12 +289,12 @@ export namespace Plugin { }) const list = Effect.fn("Plugin.list")(function* () { - const state = yield* InstanceState.get(cache) - return state.hooks + const s = yield* InstanceState.get(state) + return s.hooks }) const init = Effect.fn("Plugin.init")(function* () { - yield* InstanceState.get(cache) + yield* InstanceState.get(state) }) return Service.of({ trigger, list, init }) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index b2f7d848d0..40ab69e0f3 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -967,7 +967,7 @@ export namespace Provider { const config = yield* Config.Service const auth = yield* Auth.Service - const cache = yield* InstanceState.make(() => + const state = yield* InstanceState.make(() => Effect.gen(function* () { using _ = log.time("state") const cfg = yield* config.get() @@ -1247,7 +1247,7 @@ export namespace Provider { }), ) - const list = Effect.fn("Provider.list")(() => InstanceState.use(cache, (s) => s.providers)) + const list = Effect.fn("Provider.list")(() => InstanceState.use(state, (s) => s.providers)) async function resolveSDK(model: Model, s: State) { try { @@ -1385,11 +1385,11 @@ export namespace Provider { } const getProvider = Effect.fn("Provider.getProvider")((providerID: ProviderID) => - InstanceState.use(cache, (s) => s.providers[providerID]), + InstanceState.use(state, (s) => s.providers[providerID]), ) const getModel = Effect.fn("Provider.getModel")(function* (providerID: ProviderID, modelID: ModelID) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const provider = s.providers[providerID] if (!provider) { const available = Object.keys(s.providers) @@ -1407,7 +1407,7 @@ export namespace Provider { }) const getLanguage = Effect.fn("Provider.getLanguage")(function* (model: Model) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const key = `${model.providerID}/${model.id}` if (s.models.has(key)) return s.models.get(key)! @@ -1439,7 +1439,7 @@ export namespace Provider { }) const closest = Effect.fn("Provider.closest")(function* (providerID: ProviderID, query: string[]) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const provider = s.providers[providerID] if (!provider) return undefined for (const item of query) { @@ -1458,7 +1458,7 @@ export namespace Provider { return yield* getModel(parsed.providerID, parsed.modelID) } - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const provider = s.providers[providerID] if (!provider) return undefined @@ -1510,7 +1510,7 @@ export namespace Provider { const cfg = yield* config.get() if (cfg.model) return parseModel(cfg.model) - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const recent = yield* Effect.promise(() => Filesystem.readJson<{ recent?: { providerID: ProviderID; modelID: ModelID }[] diff --git a/packages/opencode/src/pty/index.ts b/packages/opencode/src/pty/index.ts index dda0f77d4b..72089d8441 100644 --- a/packages/opencode/src/pty/index.ts +++ b/packages/opencode/src/pty/index.ts @@ -130,7 +130,7 @@ export namespace Pty { session.subscribers.clear() } - const cache = yield* InstanceState.make( + const state = yield* InstanceState.make( Effect.fn("Pty.state")(function* (ctx) { const state = { dir: ctx.directory, @@ -151,27 +151,27 @@ export namespace Pty { ) const remove = Effect.fn("Pty.remove")(function* (id: PtyID) { - const state = yield* InstanceState.get(cache) - const session = state.sessions.get(id) + const s = yield* InstanceState.get(state) + const session = s.sessions.get(id) if (!session) return - state.sessions.delete(id) + s.sessions.delete(id) log.info("removing session", { id }) teardown(session) void Bus.publish(Event.Deleted, { id: session.info.id }) }) const list = Effect.fn("Pty.list")(function* () { - const state = yield* InstanceState.get(cache) - return Array.from(state.sessions.values()).map((session) => session.info) + const s = yield* InstanceState.get(state) + return Array.from(s.sessions.values()).map((session) => session.info) }) const get = Effect.fn("Pty.get")(function* (id: PtyID) { - const state = yield* InstanceState.get(cache) - return state.sessions.get(id)?.info + const s = yield* InstanceState.get(state) + return s.sessions.get(id)?.info }) const create = Effect.fn("Pty.create")(function* (input: CreateInput) { - const state = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) return yield* Effect.promise(async () => { const id = PtyID.ascending() const command = input.command || Shell.preferred() @@ -180,7 +180,7 @@ export namespace Pty { args.push("-l") } - const cwd = input.cwd || state.dir + const cwd = input.cwd || s.dir const shellEnv = await Plugin.trigger("shell.env", { cwd }, { env: {} }) const env = { ...process.env, @@ -221,7 +221,7 @@ export namespace Pty { cursor: 0, subscribers: new Map(), } - state.sessions.set(id, session) + s.sessions.set(id, session) proc.onData( Instance.bind((chunk) => { session.cursor += chunk.length @@ -264,8 +264,8 @@ export namespace Pty { }) const update = Effect.fn("Pty.update")(function* (id: PtyID, input: UpdateInput) { - const state = yield* InstanceState.get(cache) - const session = state.sessions.get(id) + const s = yield* InstanceState.get(state) + const session = s.sessions.get(id) if (!session) return if (input.title) { session.info.title = input.title @@ -278,24 +278,24 @@ export namespace Pty { }) const resize = Effect.fn("Pty.resize")(function* (id: PtyID, cols: number, rows: number) { - const state = yield* InstanceState.get(cache) - const session = state.sessions.get(id) + const s = yield* InstanceState.get(state) + const session = s.sessions.get(id) if (session && session.info.status === "running") { session.process.resize(cols, rows) } }) const write = Effect.fn("Pty.write")(function* (id: PtyID, data: string) { - const state = yield* InstanceState.get(cache) - const session = state.sessions.get(id) + const s = yield* InstanceState.get(state) + const session = s.sessions.get(id) if (session && session.info.status === "running") { session.process.write(data) } }) const connect = Effect.fn("Pty.connect")(function* (id: PtyID, ws: Socket, cursor?: number) { - const state = yield* InstanceState.get(cache) - const session = state.sessions.get(id) + const s = yield* InstanceState.get(state) + const session = s.sessions.get(id) if (!session) { ws.close() return diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 78f4fae521..821069cca3 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -98,7 +98,7 @@ export namespace SessionPrompt { const truncate = yield* Truncate.Service const scope = yield* Scope.Scope - const cache = yield* InstanceState.make( + const state = yield* InstanceState.make( Effect.fn("SessionPrompt.state")(function* () { const runners = new Map>() yield* Effect.addFinalizer( @@ -132,14 +132,14 @@ export namespace SessionPrompt { const assertNotBusy: (sessionID: SessionID) => Effect.Effect = Effect.fn( "SessionPrompt.assertNotBusy", )(function* (sessionID: SessionID) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const runner = s.runners.get(sessionID) if (runner?.busy) throw new Session.BusyError(sessionID) }) const cancel = Effect.fn("SessionPrompt.cancel")(function* (sessionID: SessionID) { log.info("cancel", { sessionID }) - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const runner = s.runners.get(sessionID) if (!runner || !runner.busy) { yield* status.set(sessionID, { type: "idle" }) @@ -1575,14 +1575,14 @@ NOTE: At any point in time through this workflow you should feel free to ask the const loop: (input: z.infer) => Effect.Effect = Effect.fn( "SessionPrompt.loop", )(function* (input: z.infer) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const runner = getRunner(s.runners, input.sessionID) return yield* runner.ensureRunning(runLoop(input.sessionID)) }) const shell: (input: ShellInput) => Effect.Effect = Effect.fn("SessionPrompt.shell")( function* (input: ShellInput) { - const s = yield* InstanceState.get(cache) + const s = yield* InstanceState.get(state) const runner = getRunner(s.runners, input.sessionID) return yield* runner.startShell((signal) => shellImpl(input, signal)) }, diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index a8349e2c19..133a5018ad 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -57,7 +57,7 @@ export namespace ToolRegistry { const config = yield* Config.Service const plugin = yield* Plugin.Service - const cache = yield* InstanceState.make( + const state = yield* InstanceState.make( Effect.fn("ToolRegistry.state")(function* (ctx) { const custom: Tool.Info[] = [] @@ -139,18 +139,18 @@ export namespace ToolRegistry { }) const register = Effect.fn("ToolRegistry.register")(function* (tool: Tool.Info) { - const state = yield* InstanceState.get(cache) - const idx = state.custom.findIndex((t) => t.id === tool.id) + const s = yield* InstanceState.get(state) + const idx = s.custom.findIndex((t) => t.id === tool.id) if (idx >= 0) { - state.custom.splice(idx, 1, tool) + s.custom.splice(idx, 1, tool) return } - state.custom.push(tool) + s.custom.push(tool) }) const ids = Effect.fn("ToolRegistry.ids")(function* () { - const state = yield* InstanceState.get(cache) - const tools = yield* all(state.custom) + const s = yield* InstanceState.get(state) + const tools = yield* all(s.custom) return tools.map((t) => t.id) }) @@ -158,8 +158,8 @@ export namespace ToolRegistry { model: { providerID: ProviderID; modelID: ModelID }, agent?: Agent.Info, ) { - const state = yield* InstanceState.get(cache) - const allTools = yield* all(state.custom) + const s = yield* InstanceState.get(state) + const allTools = yield* all(s.custom) const filtered = allTools.filter((tool) => { if (tool.id === "codesearch" || tool.id === "websearch") { return model.providerID === ProviderID.opencode || Flag.OPENCODE_ENABLE_EXA