diff --git a/packages/opencode/src/bus/bus-event.ts b/packages/opencode/src/bus/bus-event.ts index 369a40ed88..7b8e168517 100644 --- a/packages/opencode/src/bus/bus-event.ts +++ b/packages/opencode/src/bus/bus-event.ts @@ -1,33 +1,31 @@ import z from "zod" import type { ZodType } from "zod" -export namespace BusEvent { - export type Definition = ReturnType +export type Definition = ReturnType - const registry = new Map() +const registry = new Map() - export function define(type: Type, properties: Properties) { - const result = { - type, - properties, - } - registry.set(type, result) - return result - } - - export function payloads() { - return registry - .entries() - .map(([type, def]) => { - return z - .object({ - type: z.literal(type), - properties: def.properties, - }) - .meta({ - ref: `Event.${def.type}`, - }) - }) - .toArray() +export function define(type: Type, properties: Properties) { + const result = { + type, + properties, } + registry.set(type, result) + return result +} + +export function payloads() { + return registry + .entries() + .map(([type, def]) => { + return z + .object({ + type: z.literal(type), + properties: def.properties, + }) + .meta({ + ref: `Event.${def.type}`, + }) + }) + .toArray() } diff --git a/packages/opencode/src/bus/bus.ts b/packages/opencode/src/bus/bus.ts index beac809925..e7a7b84c50 100644 --- a/packages/opencode/src/bus/bus.ts +++ b/packages/opencode/src/bus/bus.ts @@ -2,7 +2,7 @@ import z from "zod" import { Effect, Exit, Layer, PubSub, Scope, Context, Stream } from "effect" import { EffectBridge } from "@/effect" import { Log } from "../util" -import { BusEvent } from "./bus-event" +import * as BusEvent from "./bus-event" import { GlobalBus } from "./global" import { InstanceState } from "@/effect" import { makeRuntime } from "@/effect/run-service" diff --git a/packages/opencode/src/bus/index.ts b/packages/opencode/src/bus/index.ts index 3c21d7c7d1..3dea8f2bc7 100644 --- a/packages/opencode/src/bus/index.ts +++ b/packages/opencode/src/bus/index.ts @@ -1 +1,2 @@ export * as Bus from "./bus" +export * as BusEvent from "./bus-event" diff --git a/packages/opencode/src/cli/cmd/tui/event.ts b/packages/opencode/src/cli/cmd/tui/event.ts index fa164d53e8..364704daa9 100644 --- a/packages/opencode/src/cli/cmd/tui/event.ts +++ b/packages/opencode/src/cli/cmd/tui/event.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { SessionID } from "@/session/schema" import z from "zod" diff --git a/packages/opencode/src/command/command.ts b/packages/opencode/src/command/command.ts index 4ea1325240..45f874fdda 100644 --- a/packages/opencode/src/command/command.ts +++ b/packages/opencode/src/command/command.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { InstanceState } from "@/effect" import { EffectBridge } from "@/effect" import type { InstanceContext } from "@/project/instance" diff --git a/packages/opencode/src/control-plane/workspace.ts b/packages/opencode/src/control-plane/workspace.ts index b43fe848ba..dc3445e9fc 100644 --- a/packages/opencode/src/control-plane/workspace.ts +++ b/packages/opencode/src/control-plane/workspace.ts @@ -3,7 +3,7 @@ import { setTimeout as sleep } from "node:timers/promises" import { fn } from "@/util/fn" import { Database, asc, eq, inArray } from "@/storage" import { Project } from "@/project" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { GlobalBus } from "@/bus/global" import { SyncEvent } from "@/sync" import { EventTable } from "@/sync/event.sql" diff --git a/packages/opencode/src/file/file.ts b/packages/opencode/src/file/file.ts index ee8df2b0b9..4c1eaaa893 100644 --- a/packages/opencode/src/file/file.ts +++ b/packages/opencode/src/file/file.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" diff --git a/packages/opencode/src/file/watcher.ts b/packages/opencode/src/file/watcher.ts index 3e3da444a5..482f7c0465 100644 --- a/packages/opencode/src/file/watcher.ts +++ b/packages/opencode/src/file/watcher.ts @@ -6,7 +6,7 @@ import { readdir } from "fs/promises" import path from "path" import z from "zod" import { Bus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { InstanceState } from "@/effect" import { Flag } from "@/flag/flag" import { Git } from "@/git" diff --git a/packages/opencode/src/ide/ide.ts b/packages/opencode/src/ide/ide.ts index 65e80d7f28..60011fc4bf 100644 --- a/packages/opencode/src/ide/ide.ts +++ b/packages/opencode/src/ide/ide.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import z from "zod" import { NamedError } from "@opencode-ai/shared/util/error" import { Log } from "../util" diff --git a/packages/opencode/src/installation/installation.ts b/packages/opencode/src/installation/installation.ts index 96a99b77a3..2b7eb775eb 100644 --- a/packages/opencode/src/installation/installation.ts +++ b/packages/opencode/src/installation/installation.ts @@ -5,7 +5,7 @@ import { withTransientReadRetry } from "@/util/effect-http-client" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" import path from "path" import z from "zod" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Flag } from "../flag/flag" import { Log } from "../util" diff --git a/packages/opencode/src/lsp/client.ts b/packages/opencode/src/lsp/client.ts index 59a64ca1ed..baf6e787ba 100644 --- a/packages/opencode/src/lsp/client.ts +++ b/packages/opencode/src/lsp/client.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import path from "path" import { pathToFileURL, fileURLToPath } from "url" diff --git a/packages/opencode/src/lsp/lsp.ts b/packages/opencode/src/lsp/lsp.ts index 2c0982eca5..6e52c91003 100644 --- a/packages/opencode/src/lsp/lsp.ts +++ b/packages/opencode/src/lsp/lsp.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import { Log } from "../util" import * as LSPClient from "./client" diff --git a/packages/opencode/src/mcp/mcp.ts b/packages/opencode/src/mcp/mcp.ts index 1f1022538f..575018bd48 100644 --- a/packages/opencode/src/mcp/mcp.ts +++ b/packages/opencode/src/mcp/mcp.ts @@ -21,7 +21,7 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { McpOAuthProvider } from "./oauth-provider" import { McpOAuthCallback } from "./oauth-callback" import { McpAuth } from "./auth" -import { BusEvent } from "../bus/bus-event" +import { BusEvent } from "../bus" import { Bus } from "@/bus" import { TuiEvent } from "@/cli/cmd/tui/event" import open from "open" diff --git a/packages/opencode/src/permission/permission.ts b/packages/opencode/src/permission/permission.ts index fe7fb85455..fbb0e16b9a 100644 --- a/packages/opencode/src/permission/permission.ts +++ b/packages/opencode/src/permission/permission.ts @@ -1,5 +1,5 @@ import { Bus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Config } from "@/config" import { InstanceState } from "@/effect" import { ProjectID } from "@/project/schema" diff --git a/packages/opencode/src/project/project.ts b/packages/opencode/src/project/project.ts index f838d9ab43..e2ec36c195 100644 --- a/packages/opencode/src/project/project.ts +++ b/packages/opencode/src/project/project.ts @@ -4,7 +4,7 @@ import { ProjectTable } from "./project.sql" import { SessionTable } from "../session/session.sql" import { Log } from "../util" import { Flag } from "@/flag/flag" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { GlobalBus } from "@/bus/global" import { which } from "../util/which" import { ProjectID } from "./schema" diff --git a/packages/opencode/src/project/vcs.ts b/packages/opencode/src/project/vcs.ts index b1375a7b78..08f43b0fad 100644 --- a/packages/opencode/src/project/vcs.ts +++ b/packages/opencode/src/project/vcs.ts @@ -2,7 +2,7 @@ import { Effect, Layer, Context, Stream, Scope } from "effect" import { formatPatch, structuredPatch } from "diff" import path from "path" import { Bus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { InstanceState } from "@/effect" import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { FileWatcher } from "@/file/watcher" diff --git a/packages/opencode/src/pty/service.ts b/packages/opencode/src/pty/service.ts index 0c810be88f..cd465d3fc4 100644 --- a/packages/opencode/src/pty/service.ts +++ b/packages/opencode/src/pty/service.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import { InstanceState } from "@/effect" import { Instance } from "@/project/instance" diff --git a/packages/opencode/src/question/index.ts b/packages/opencode/src/question/index.ts index 627d04564d..b7652d5a89 100644 --- a/packages/opencode/src/question/index.ts +++ b/packages/opencode/src/question/index.ts @@ -1,6 +1,6 @@ import { Deferred, Effect, Layer, Schema, Context } from "effect" import { Bus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { InstanceState } from "@/effect" import { SessionID, MessageID } from "@/session/schema" import { zod } from "@/util/effect-zod" diff --git a/packages/opencode/src/server/event.ts b/packages/opencode/src/server/event.ts index 49325b2bb6..e033d4c478 100644 --- a/packages/opencode/src/server/event.ts +++ b/packages/opencode/src/server/event.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import z from "zod" export const Event = { diff --git a/packages/opencode/src/server/instance/event.ts b/packages/opencode/src/server/instance/event.ts index 103d3d7cfb..065f8b4611 100644 --- a/packages/opencode/src/server/instance/event.ts +++ b/packages/opencode/src/server/instance/event.ts @@ -3,7 +3,7 @@ import { Hono } from "hono" import { describeRoute, resolver } from "hono-openapi" import { streamSSE } from "hono/streaming" import { Log } from "@/util" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import { AsyncQueue } from "../../util/queue" diff --git a/packages/opencode/src/server/instance/global.ts b/packages/opencode/src/server/instance/global.ts index 8208cf9669..fda3ee06d6 100644 --- a/packages/opencode/src/server/instance/global.ts +++ b/packages/opencode/src/server/instance/global.ts @@ -3,7 +3,7 @@ import { describeRoute, resolver, validator } from "hono-openapi" import { streamSSE } from "hono/streaming" import { Effect } from "effect" import z from "zod" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { SyncEvent } from "@/sync" import { GlobalBus } from "@/bus/global" import { AppRuntime } from "@/effect/app-runtime" diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 3ef6977547..0dd668a18a 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import * as Session from "./session" import { SessionID, MessageID, PartID } from "./schema" diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index f5ba74826d..89d25fa838 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { SessionID, MessageID, PartID } from "./schema" import z from "zod" import { NamedError } from "@opencode-ai/shared/util/error" diff --git a/packages/opencode/src/session/session.ts b/packages/opencode/src/session/session.ts index e288aec73a..c0c7200033 100644 --- a/packages/opencode/src/session/session.ts +++ b/packages/opencode/src/session/session.ts @@ -1,6 +1,6 @@ import { Slug } from "@opencode-ai/shared/util/slug" import path from "path" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import { Decimal } from "decimal.js" import z from "zod" diff --git a/packages/opencode/src/session/status.ts b/packages/opencode/src/session/status.ts index f0d4e6cf79..83b6806b0f 100644 --- a/packages/opencode/src/session/status.ts +++ b/packages/opencode/src/session/status.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import { InstanceState } from "@/effect" import { SessionID } from "./schema" diff --git a/packages/opencode/src/session/todo.ts b/packages/opencode/src/session/todo.ts index eec2bb3a30..e2fb5ed360 100644 --- a/packages/opencode/src/session/todo.ts +++ b/packages/opencode/src/session/todo.ts @@ -1,4 +1,4 @@ -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Bus } from "@/bus" import { SessionID } from "./schema" import { Effect, Layer, Context } from "effect" diff --git a/packages/opencode/src/sync/sync-event.ts b/packages/opencode/src/sync/sync-event.ts index db487ddd24..2d498d8602 100644 --- a/packages/opencode/src/sync/sync-event.ts +++ b/packages/opencode/src/sync/sync-event.ts @@ -3,7 +3,7 @@ import type { ZodObject } from "zod" import { Database, eq } from "@/storage" import { GlobalBus } from "@/bus/global" import { Bus as ProjectBus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { Instance } from "@/project/instance" import { EventSequenceTable, EventTable } from "./event.sql" import { WorkspaceContext } from "@/control-plane/workspace-context" diff --git a/packages/opencode/src/worktree/worktree.ts b/packages/opencode/src/worktree/worktree.ts index d4fab2030b..ae55556696 100644 --- a/packages/opencode/src/worktree/worktree.ts +++ b/packages/opencode/src/worktree/worktree.ts @@ -10,7 +10,7 @@ import type { ProjectID } from "../project/schema" import { Log } from "../util" import { Slug } from "@opencode-ai/shared/util/slug" import { errorMessage } from "../util/error" -import { BusEvent } from "@/bus/bus-event" +import { BusEvent } from "@/bus" import { GlobalBus } from "@/bus/global" import { Git } from "@/git" import { Effect, Layer, Path, Scope, Context, Stream } from "effect" diff --git a/packages/opencode/test/bus/bus-effect.test.ts b/packages/opencode/test/bus/bus-effect.test.ts index 6f96a89c87..fda8db688c 100644 --- a/packages/opencode/test/bus/bus-effect.test.ts +++ b/packages/opencode/test/bus/bus-effect.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import { Deferred, Effect, Layer, Stream } from "effect" import z from "zod" import { Bus } from "../../src/bus" -import { BusEvent } from "../../src/bus/bus-event" +import { BusEvent } from "../../src/bus" import { Instance } from "../../src/project/instance" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import { provideInstance, provideTmpdirInstance, tmpdirScoped } from "../fixture/fixture" diff --git a/packages/opencode/test/bus/bus-integration.test.ts b/packages/opencode/test/bus/bus-integration.test.ts index e42bd5299e..17f2925744 100644 --- a/packages/opencode/test/bus/bus-integration.test.ts +++ b/packages/opencode/test/bus/bus-integration.test.ts @@ -1,7 +1,7 @@ import { afterEach, describe, expect, test } from "bun:test" import z from "zod" import { Bus } from "../../src/bus" -import { BusEvent } from "../../src/bus/bus-event" +import { BusEvent } from "../../src/bus" import { Instance } from "../../src/project/instance" import { tmpdir } from "../fixture/fixture" diff --git a/packages/opencode/test/bus/bus.test.ts b/packages/opencode/test/bus/bus.test.ts index 3df179787d..559bb47e12 100644 --- a/packages/opencode/test/bus/bus.test.ts +++ b/packages/opencode/test/bus/bus.test.ts @@ -1,7 +1,7 @@ import { afterEach, describe, expect, test } from "bun:test" import z from "zod" import { Bus } from "../../src/bus" -import { BusEvent } from "../../src/bus/bus-event" +import { BusEvent } from "../../src/bus" import { Instance } from "../../src/project/instance" import { tmpdir } from "../fixture/fixture" diff --git a/packages/opencode/test/tool/edit.test.ts b/packages/opencode/test/tool/edit.test.ts index 2e3dfa8a69..035acfd7bf 100644 --- a/packages/opencode/test/tool/edit.test.ts +++ b/packages/opencode/test/tool/edit.test.ts @@ -11,7 +11,7 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { Format } from "../../src/format" import { Agent } from "../../src/agent/agent" import { Bus } from "../../src/bus" -import { BusEvent } from "../../src/bus/bus-event" +import { BusEvent } from "../../src/bus" import { Truncate } from "../../src/tool" import { SessionID, MessageID } from "../../src/session/schema"