Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
Kit Langton
87480f598f feat: unwrap ACP, Agent, Workspace, Identifier, Shell namespaces 2026-04-16 07:29:00 -04:00
68 changed files with 2494 additions and 2499 deletions

View file

@ -39,7 +39,7 @@ import { ACPSessionManager } from "./session"
import type { ACPConfig } from "./types" import type { ACPConfig } from "./types"
import { Provider } from "../provider" import { Provider } from "../provider"
import { ModelID, ProviderID } from "../provider/schema" import { ModelID, ProviderID } from "../provider/schema"
import { Agent as AgentModule } from "../agent/agent" import { Agent as AgentModule } from "../agent"
import { AppRuntime } from "@/effect/app-runtime" import { AppRuntime } from "@/effect/app-runtime"
import { Installation } from "@/installation" import { Installation } from "@/installation"
import { MessageV2 } from "@/session/message-v2" import { MessageV2 } from "@/session/message-v2"
@ -56,7 +56,6 @@ type ModelOption = { modelId: string; name: string }
const DEFAULT_VARIANT_VALUE = "default" const DEFAULT_VARIANT_VALUE = "default"
export namespace ACP {
const log = Log.create({ service: "acp-agent" }) const log = Log.create({ service: "acp-agent" })
async function getContextLimit( async function getContextLimit(
@ -1837,4 +1836,3 @@ export namespace ACP {
} }
return options return options
} }
}

View file

@ -0,0 +1 @@
export * as ACP from "./agent"

View file

@ -24,7 +24,6 @@ import { InstanceState } from "@/effect"
import * as Option from "effect/Option" import * as Option from "effect/Option"
import * as OtelTracer from "@effect/opentelemetry/Tracer" import * as OtelTracer from "@effect/opentelemetry/Tracer"
export namespace Agent {
export const Info = z export const Info = z
.object({ .object({
name: z.string(), name: z.string(),
@ -53,8 +52,8 @@ export namespace Agent {
export type Info = z.infer<typeof Info> export type Info = z.infer<typeof Info>
export interface Interface { export interface Interface {
readonly get: (agent: string) => Effect.Effect<Agent.Info> readonly get: (agent: string) => Effect.Effect<Info>
readonly list: () => Effect.Effect<Agent.Info[]> readonly list: () => Effect.Effect<Info[]>
readonly defaultAgent: () => Effect.Effect<string> readonly defaultAgent: () => Effect.Effect<string>
readonly generate: (input: { readonly generate: (input: {
description: string description: string
@ -409,4 +408,3 @@ export namespace Agent {
Layer.provide(Config.defaultLayer), Layer.provide(Config.defaultLayer),
Layer.provide(Skill.defaultLayer), Layer.provide(Skill.defaultLayer),
) )
}

View file

@ -0,0 +1 @@
export * as Agent from "./agent"

View file

@ -2,7 +2,7 @@ import { Log } from "@/util"
import { bootstrap } from "../bootstrap" import { bootstrap } from "../bootstrap"
import { cmd } from "./cmd" import { cmd } from "./cmd"
import { AgentSideConnection, ndJsonStream } from "@agentclientprotocol/sdk" import { AgentSideConnection, ndJsonStream } from "@agentclientprotocol/sdk"
import { ACP } from "@/acp/agent" import { ACP } from "@/acp"
import { Server } from "@/server/server" import { Server } from "@/server/server"
import { createOpencodeClient } from "@opencode-ai/sdk/v2" import { createOpencodeClient } from "@opencode-ai/sdk/v2"
import { withNetworkOptions, resolveNetworkOptions } from "../network" import { withNetworkOptions, resolveNetworkOptions } from "../network"

View file

@ -3,7 +3,7 @@ import * as prompts from "@clack/prompts"
import { AppRuntime } from "@/effect/app-runtime" import { AppRuntime } from "@/effect/app-runtime"
import { UI } from "../ui" import { UI } from "../ui"
import { Global } from "../../global" import { Global } from "../../global"
import { Agent } from "../../agent/agent" import { Agent } from "../../agent"
import { Provider } from "../../provider" import { Provider } from "../../provider"
import path from "path" import path from "path"
import fs from "fs/promises" import fs from "fs/promises"

View file

@ -1,7 +1,7 @@
import { EOL } from "os" import { EOL } from "os"
import { basename } from "path" import { basename } from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { Agent } from "../../../agent/agent" import { Agent } from "../../../agent"
import { Provider } from "../../../provider" import { Provider } from "../../../provider"
import { Session } from "../../../session" import { Session } from "../../../session"
import type { MessageV2 } from "../../../session/message-v2" import type { MessageV2 } from "../../../session/message-v2"

View file

@ -10,7 +10,7 @@ import { Filesystem } from "../../util"
import { createOpencodeClient, type OpencodeClient, type ToolPart } from "@opencode-ai/sdk/v2" import { createOpencodeClient, type OpencodeClient, type ToolPart } from "@opencode-ai/sdk/v2"
import { Server } from "../../server/server" import { Server } from "../../server/server"
import { Provider } from "../../provider" import { Provider } from "../../provider"
import { Agent } from "../../agent/agent" import { Agent } from "../../agent"
import { Permission } from "../../permission" import { Permission } from "../../permission"
import { Tool } from "../../tool" import { Tool } from "../../tool"
import { GlobTool } from "../../tool/glob" import { GlobTool } from "../../tool/glob"

View file

@ -0,0 +1 @@
export * as Workspace from "./workspace"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { withStatics } from "@/util/schema" import { withStatics } from "@/util/schema"

View file

@ -25,7 +25,6 @@ import { AppRuntime } from "@/effect/app-runtime"
import { EventSequenceTable } from "@/sync/event.sql" import { EventSequenceTable } from "@/sync/event.sql"
import { waitEvent } from "./util" import { waitEvent } from "./util"
export namespace Workspace {
export const Info = WorkspaceInfo.meta({ export const Info = WorkspaceInfo.meta({
ref: "Workspace", ref: "Workspace",
}) })
@ -522,4 +521,3 @@ export namespace Workspace {
aborts.delete(id) aborts.delete(id)
connections.delete(id) connections.delete(id)
} }
}

View file

@ -17,7 +17,7 @@ import { Snapshot } from "@/snapshot"
import { Plugin } from "@/plugin" import { Plugin } from "@/plugin"
import { Provider } from "@/provider" import { Provider } from "@/provider"
import { ProviderAuth } from "@/provider" import { ProviderAuth } from "@/provider"
import { Agent } from "@/agent/agent" import { Agent } from "@/agent"
import { Skill } from "@/skill" import { Skill } from "@/skill"
import { Discovery } from "@/skill/discovery" import { Discovery } from "@/skill/discovery"
import { Question } from "@/question" import { Question } from "@/question"

View file

@ -1,7 +1,6 @@
import z from "zod" import z from "zod"
import { randomBytes } from "crypto" import { randomBytes } from "crypto"
export namespace Identifier {
const prefixes = { const prefixes = {
event: "evt", event: "evt",
session: "ses", session: "ses",
@ -83,4 +82,3 @@ export namespace Identifier {
const encoded = BigInt("0x" + hex) const encoded = BigInt("0x" + hex)
return Number(encoded / BigInt(0x1000)) return Number(encoded / BigInt(0x1000))
} }
}

View file

@ -0,0 +1 @@
export * as Identifier from "./id"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { Newtype } from "@/util/schema" import { Newtype } from "@/util/schema"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { withStatics } from "@/util/schema" import { withStatics } from "@/util/schema"

View file

@ -6,7 +6,7 @@ import type { Proc } from "#pty"
import z from "zod" import z from "zod"
import { Log } from "../util" import { Log } from "../util"
import { lazy } from "@opencode-ai/shared/util/lazy" import { lazy } from "@opencode-ai/shared/util/lazy"
import { Shell } from "@/shell/shell" import { Shell } from "@/shell"
import { Plugin } from "@/plugin" import { Plugin } from "@/plugin"
import { PtyID } from "./schema" import { PtyID } from "./schema"
import { Effect, Layer, Context } from "effect" import { Effect, Layer, Context } from "effect"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { Newtype } from "@/util/schema" import { Newtype } from "@/util/schema"

View file

@ -1,7 +1,7 @@
import type { MiddlewareHandler } from "hono" import type { MiddlewareHandler } from "hono"
import { Database, inArray } from "@/storage" import { Database, inArray } from "@/storage"
import { EventSequenceTable } from "@/sync/event.sql" import { EventSequenceTable } from "@/sync/event.sql"
import { Workspace } from "@/control-plane/workspace" import { Workspace } from "@/control-plane"
import type { WorkspaceID } from "@/control-plane/schema" import type { WorkspaceID } from "@/control-plane/schema"
import { Log } from "@/util" import { Log } from "@/util"

View file

@ -17,7 +17,7 @@ import { errors } from "../error"
import { lazy } from "../../util/lazy" import { lazy } from "../../util/lazy"
import { Effect, Option } from "effect" import { Effect, Option } from "effect"
import { WorkspaceRoutes } from "./workspace" import { WorkspaceRoutes } from "./workspace"
import { Agent } from "@/agent/agent" import { Agent } from "@/agent"
const ConsoleOrgOption = z.object({ const ConsoleOrgOption = z.object({
accountID: z.string(), accountID: z.string(),

View file

@ -7,7 +7,7 @@ import { Format } from "../../format"
import { TuiRoutes } from "./tui" import { TuiRoutes } from "./tui"
import { Instance } from "../../project/instance" import { Instance } from "../../project/instance"
import { Vcs } from "../../project" import { Vcs } from "../../project"
import { Agent } from "../../agent/agent" import { Agent } from "../../agent"
import { Skill } from "../../skill" import { Skill } from "../../skill"
import { Global } from "../../global" import { Global } from "../../global"
import { LSP } from "../../lsp" import { LSP } from "../../lsp"

View file

@ -2,7 +2,7 @@ import type { MiddlewareHandler } from "hono"
import type { UpgradeWebSocket } from "hono/ws" import type { UpgradeWebSocket } from "hono/ws"
import { getAdaptor } from "@/control-plane/adaptors" import { getAdaptor } from "@/control-plane/adaptors"
import { WorkspaceID } from "@/control-plane/schema" import { WorkspaceID } from "@/control-plane/schema"
import { Workspace } from "@/control-plane/workspace" import { Workspace } from "@/control-plane"
import { ServerProxy } from "../proxy" import { ServerProxy } from "../proxy"
import { Instance } from "@/project/instance" import { Instance } from "@/project/instance"
import { InstanceBootstrap } from "@/project/bootstrap" import { InstanceBootstrap } from "@/project/bootstrap"

View file

@ -15,7 +15,7 @@ import { SessionSummary } from "@/session/summary"
import { Todo } from "../../session/todo" import { Todo } from "../../session/todo"
import { Effect } from "effect" import { Effect } from "effect"
import { AppRuntime } from "../../effect/app-runtime" import { AppRuntime } from "../../effect/app-runtime"
import { Agent } from "../../agent/agent" import { Agent } from "../../agent"
import { Snapshot } from "@/snapshot" import { Snapshot } from "@/snapshot"
import { Command } from "../../command" import { Command } from "../../command"
import { Log } from "../../util" import { Log } from "../../util"

View file

@ -2,7 +2,7 @@ import { Hono } from "hono"
import { describeRoute, resolver, validator } from "hono-openapi" import { describeRoute, resolver, validator } from "hono-openapi"
import z from "zod" import z from "zod"
import { listAdaptors } from "../../control-plane/adaptors" import { listAdaptors } from "../../control-plane/adaptors"
import { Workspace } from "../../control-plane/workspace" import { Workspace } from "../../control-plane"
import { Instance } from "../../project/instance" import { Instance } from "../../project/instance"
import { errors } from "../error" import { errors } from "../error"
import { lazy } from "../../util/lazy" import { lazy } from "../../util/lazy"

View file

@ -3,7 +3,7 @@ import type { UpgradeWebSocket } from "hono/ws"
import { Log } from "@/util" import { Log } from "@/util"
import * as Fence from "./fence" import * as Fence from "./fence"
import type { WorkspaceID } from "@/control-plane/schema" import type { WorkspaceID } from "@/control-plane/schema"
import { Workspace } from "@/control-plane/workspace" import { Workspace } from "@/control-plane"
const hop = new Set([ const hop = new Set([
"connection", "connection",

View file

@ -8,7 +8,7 @@ import z from "zod"
import { Token } from "../util" import { Token } from "../util"
import { Log } from "../util" import { Log } from "../util"
import { SessionProcessor } from "./processor" import { SessionProcessor } from "./processor"
import { Agent } from "@/agent/agent" import { Agent } from "@/agent"
import { Plugin } from "@/plugin" import { Plugin } from "@/plugin"
import { Config } from "@/config" import { Config } from "@/config"
import { NotFoundError } from "@/storage" import { NotFoundError } from "@/storage"

View file

@ -8,7 +8,7 @@ import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
import { ProviderTransform } from "@/provider" import { ProviderTransform } from "@/provider"
import { Config } from "@/config" import { Config } from "@/config"
import { Instance } from "@/project/instance" import { Instance } from "@/project/instance"
import type { Agent } from "@/agent/agent" import type { Agent } from "@/agent"
import type { MessageV2 } from "./message-v2" import type { MessageV2 } from "./message-v2"
import { Plugin } from "@/plugin" import { Plugin } from "@/plugin"
import { SystemPrompt } from "./system" import { SystemPrompt } from "./system"

View file

@ -1,6 +1,6 @@
import { Cause, Deferred, Effect, Layer, Context, Scope } from "effect" import { Cause, Deferred, Effect, Layer, Context, Scope } from "effect"
import * as Stream from "effect/Stream" import * as Stream from "effect/Stream"
import { Agent } from "@/agent/agent" import { Agent } from "@/agent"
import { Bus } from "@/bus" import { Bus } from "@/bus"
import { Config } from "@/config" import { Config } from "@/config"
import { Permission } from "@/permission" import { Permission } from "@/permission"

View file

@ -6,7 +6,7 @@ import { MessageV2 } from "./message-v2"
import { Log } from "../util" import { Log } from "../util"
import { SessionRevert } from "./revert" import { SessionRevert } from "./revert"
import * as Session from "./session" import * as Session from "./session"
import { Agent } from "../agent/agent" import { Agent } from "../agent"
import { Provider } from "../provider" import { Provider } from "../provider"
import { ModelID, ProviderID } from "../provider/schema" import { ModelID, ProviderID } from "../provider/schema"
import { type Tool as AITool, tool, jsonSchema, type ToolExecutionOptions, asSchema } from "ai" import { type Tool as AITool, tool, jsonSchema, type ToolExecutionOptions, asSchema } from "ai"
@ -38,7 +38,7 @@ import { Tool } from "@/tool"
import { Permission } from "@/permission" import { Permission } from "@/permission"
import { SessionStatus } from "./status" import { SessionStatus } from "./status"
import { LLM } from "./llm" import { LLM } from "./llm"
import { Shell } from "@/shell/shell" import { Shell } from "@/shell"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Truncate } from "@/tool" import { Truncate } from "@/tool"
import { decodeDataUrl } from "@/util/data-url" import { decodeDataUrl } from "@/util/data-url"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { withStatics } from "@/util/schema" import { withStatics } from "@/util/schema"

View file

@ -12,7 +12,7 @@ import PROMPT_KIMI from "./prompt/kimi.txt"
import PROMPT_CODEX from "./prompt/codex.txt" import PROMPT_CODEX from "./prompt/codex.txt"
import PROMPT_TRINITY from "./prompt/trinity.txt" import PROMPT_TRINITY from "./prompt/trinity.txt"
import type { Provider } from "@/provider" import type { Provider } from "@/provider"
import type { Agent } from "@/agent/agent" import type { Agent } from "@/agent"
import { Permission } from "@/permission" import { Permission } from "@/permission"
import { Skill } from "@/skill" import { Skill } from "@/skill"

View file

@ -0,0 +1 @@
export * as Shell from "./shell"

View file

@ -8,7 +8,6 @@ import { setTimeout as sleep } from "node:timers/promises"
const SIGKILL_TIMEOUT_MS = 200 const SIGKILL_TIMEOUT_MS = 200
export namespace Shell {
const BLACKLIST = new Set(["fish", "nu"]) const BLACKLIST = new Set(["fish", "nu"])
const LOGIN = new Set(["bash", "dash", "fish", "ksh", "sh", "zsh"]) const LOGIN = new Set(["bash", "dash", "fish", "ksh", "sh", "zsh"])
const POSIX = new Set(["bash", "dash", "ksh", "sh", "zsh"]) const POSIX = new Set(["bash", "dash", "ksh", "sh", "zsh"])
@ -107,4 +106,3 @@ export namespace Shell {
export const preferred = lazy(() => select(process.env.SHELL)) export const preferred = lazy(() => select(process.env.SHELL))
export const acceptable = lazy(() => select(process.env.SHELL, { acceptable: true })) export const acceptable = lazy(() => select(process.env.SHELL, { acceptable: true }))
}

View file

@ -4,7 +4,7 @@ import { pathToFileURL } from "url"
import z from "zod" import z from "zod"
import { Effect, Layer, Context } from "effect" import { Effect, Layer, Context } from "effect"
import { NamedError } from "@opencode-ai/shared/util/error" import { NamedError } from "@opencode-ai/shared/util/error"
import type { Agent } from "@/agent/agent" import type { Agent } from "@/agent"
import { Bus } from "@/bus" import { Bus } from "@/bus"
import { InstanceState } from "@/effect" import { InstanceState } from "@/effect"
import { Flag } from "@/flag/flag" import { Flag } from "@/flag/flag"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { withStatics } from "@/util/schema" import { withStatics } from "@/util/schema"

View file

@ -12,7 +12,7 @@ import { Language, type Node } from "web-tree-sitter"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { fileURLToPath } from "url" import { fileURLToPath } from "url"
import { Flag } from "@/flag/flag" import { Flag } from "@/flag/flag"
import { Shell } from "@/shell/shell" import { Shell } from "@/shell"
import { BashArity } from "@/permission/arity" import { BashArity } from "@/permission/arity"
import * as Truncate from "./truncate" import * as Truncate from "./truncate"

View file

@ -43,7 +43,7 @@ import { FileTime } from "../file/time"
import { Instruction } from "../session/instruction" import { Instruction } from "../session/instruction"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Bus } from "../bus" import { Bus } from "../bus"
import { Agent } from "../agent/agent" import { Agent } from "../agent"
import { Skill } from "../skill" import { Skill } from "../skill"
import { Permission } from "@/permission" import { Permission } from "@/permission"

View file

@ -1,7 +1,7 @@
import { Schema } from "effect" import { Schema } from "effect"
import z from "zod" import z from "zod"
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { ZodOverride } from "@/util/effect-zod" import { ZodOverride } from "@/util/effect-zod"
import { withStatics } from "@/util/schema" import { withStatics } from "@/util/schema"

View file

@ -4,7 +4,7 @@ import z from "zod"
import { Session } from "../session" import { Session } from "../session"
import { SessionID, MessageID } from "../session/schema" import { SessionID, MessageID } from "../session/schema"
import { MessageV2 } from "../session/message-v2" import { MessageV2 } from "../session/message-v2"
import { Agent } from "../agent/agent" import { Agent } from "../agent"
import type { SessionPrompt } from "../session/prompt" import type { SessionPrompt } from "../session/prompt"
import { Config } from "../config" import { Config } from "../config"
import { Effect } from "effect" import { Effect } from "effect"

View file

@ -4,7 +4,7 @@ import type { MessageV2 } from "../session/message-v2"
import type { Permission } from "../permission" import type { Permission } from "../permission"
import type { SessionID, MessageID } from "../session/schema" import type { SessionID, MessageID } from "../session/schema"
import * as Truncate from "./truncate" import * as Truncate from "./truncate"
import { Agent } from "@/agent/agent" import { Agent } from "@/agent"
interface Metadata { interface Metadata {
[key: string]: any [key: string]: any

View file

@ -1,10 +1,10 @@
import { NodePath } from "@effect/platform-node" import { NodePath } from "@effect/platform-node"
import { Cause, Duration, Effect, Layer, Schedule, Context } from "effect" import { Cause, Duration, Effect, Layer, Schedule, Context } from "effect"
import path from "path" import path from "path"
import type { Agent } from "../agent/agent" import type { Agent } from "../agent"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { evaluate } from "@/permission/evaluate" import { evaluate } from "@/permission/evaluate"
import { Identifier } from "../id/id" import { Identifier } from "../id"
import { Log } from "../util" import { Log } from "../util"
import { ToolID } from "./schema" import { ToolID } from "./schema"
import { TRUNCATION_DIR } from "./truncation-dir" import { TRUNCATION_DIR } from "./truncation-dir"

View file

@ -1,4 +1,4 @@
import { Identifier } from "@/id/id" import { Identifier } from "@/id"
import { withStatics } from "@/util/schema" import { withStatics } from "@/util/schema"
import * as DateTime from "effect/DateTime" import * as DateTime from "effect/DateTime"
import { Schema } from "effect" import { Schema } from "effect"

View file

@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test" import { describe, expect, test } from "bun:test"
import { ACP } from "../../src/acp/agent" import { ACP } from "../../src/acp"
import type { Agent as ACPAgent } from "@agentclientprotocol/sdk" import type { Agent as ACPAgent } from "@agentclientprotocol/sdk"
/** /**

View file

@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test" import { describe, expect, test } from "bun:test"
import { ACP } from "../../src/acp/agent" import { ACP } from "../../src/acp"
import type { AgentSideConnection } from "@agentclientprotocol/sdk" import type { AgentSideConnection } from "@agentclientprotocol/sdk"
import type { Event, EventMessagePartUpdated, ToolStatePending, ToolStateRunning } from "@opencode-ai/sdk/v2" import type { Event, EventMessagePartUpdated, ToolStatePending, ToolStateRunning } from "@opencode-ai/sdk/v2"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"

View file

@ -3,7 +3,7 @@ import { Effect } from "effect"
import path from "path" import path from "path"
import { provideInstance, tmpdir } from "../fixture/fixture" import { provideInstance, tmpdir } from "../fixture/fixture"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Permission } from "../../src/permission" import { Permission } from "../../src/permission"
// Helper to evaluate permission for a tool with wildcard pattern // Helper to evaluate permission for a tool with wildcard pattern

View file

@ -4,7 +4,7 @@ import path from "path"
import { provideInstance, tmpdir } from "../fixture/fixture" import { provideInstance, tmpdir } from "../fixture/fixture"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { Config } from "../../src/config" import { Config } from "../../src/config"
import { Agent as AgentSvc } from "../../src/agent/agent" import { Agent as AgentSvc } from "../../src/agent"
import { Color } from "../../src/util" import { Color } from "../../src/util"
import { AppRuntime } from "../../src/effect/app-runtime" import { AppRuntime } from "../../src/effect/app-runtime"

View file

@ -9,7 +9,7 @@ process.env.OPENCODE_DISABLE_DEFAULT_PLUGINS = "1"
const { Flag } = await import("../../src/flag/flag") const { Flag } = await import("../../src/flag/flag")
const { Plugin } = await import("../../src/plugin/index") const { Plugin } = await import("../../src/plugin/index")
const { Workspace } = await import("../../src/control-plane/workspace") const { Workspace } = await import("../../src/control-plane")
const { Instance } = await import("../../src/project/instance") const { Instance } = await import("../../src/project/instance")
const experimental = Flag.OPENCODE_EXPERIMENTAL_WORKSPACES const experimental = Flag.OPENCODE_EXPERIMENTAL_WORKSPACES

View file

@ -3,7 +3,7 @@ import { AppRuntime } from "../../src/effect/app-runtime"
import { Effect } from "effect" import { Effect } from "effect"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { Pty } from "../../src/pty" import { Pty } from "../../src/pty"
import { Shell } from "../../src/shell/shell" import { Shell } from "../../src/shell"
import { tmpdir } from "../fixture/fixture" import { tmpdir } from "../fixture/fixture"
Shell.preferred.reset() Shell.preferred.reset()

View file

@ -5,7 +5,7 @@ import * as Stream from "effect/Stream"
import z from "zod" import z from "zod"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Config } from "../../src/config" import { Config } from "../../src/config"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { LLM } from "../../src/session/llm" import { LLM } from "../../src/session/llm"
import { SessionCompaction } from "../../src/session/compaction" import { SessionCompaction } from "../../src/session/compaction"
import { Token } from "../../src/util" import { Token } from "../../src/util"

View file

@ -12,7 +12,7 @@ import { ModelsDev } from "../../src/provider"
import { ProviderID, ModelID } from "../../src/provider/schema" import { ProviderID, ModelID } from "../../src/provider/schema"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
import { tmpdir } from "../fixture/fixture" import { tmpdir } from "../fixture/fixture"
import type { Agent } from "../../src/agent/agent" import type { Agent } from "../../src/agent"
import { MessageV2 } from "../../src/session/message-v2" import { MessageV2 } from "../../src/session/message-v2"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import { AppRuntime } from "../../src/effect/app-runtime" import { AppRuntime } from "../../src/effect/app-runtime"

View file

@ -2,8 +2,8 @@ import { NodeFileSystem } from "@effect/platform-node"
import { expect } from "bun:test" import { expect } from "bun:test"
import { Cause, Effect, Exit, Fiber, Layer } from "effect" import { Cause, Effect, Exit, Fiber, Layer } from "effect"
import path from "path" import path from "path"
import type { Agent } from "../../src/agent/agent" import type { Agent } from "../../src/agent"
import { Agent as AgentSvc } from "../../src/agent/agent" import { Agent as AgentSvc } from "../../src/agent"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Config } from "../../src/config" import { Config } from "../../src/config"
import { Permission } from "../../src/permission" import { Permission } from "../../src/permission"

View file

@ -3,7 +3,7 @@ import { FetchHttpClient } from "effect/unstable/http"
import { expect } from "bun:test" import { expect } from "bun:test"
import { Cause, Effect, Exit, Fiber, Layer } from "effect" import { Cause, Effect, Exit, Fiber, Layer } from "effect"
import path from "path" import path from "path"
import { Agent as AgentSvc } from "../../src/agent/agent" import { Agent as AgentSvc } from "../../src/agent"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Command } from "../../src/command" import { Command } from "../../src/command"
import { Config } from "../../src/config" import { Config } from "../../src/config"
@ -32,7 +32,7 @@ import { MessageID, PartID, SessionID } from "../../src/session/schema"
import { SessionStatus } from "../../src/session/status" import { SessionStatus } from "../../src/session/status"
import { Skill } from "../../src/skill" import { Skill } from "../../src/skill"
import { SystemPrompt } from "../../src/session/system" import { SystemPrompt } from "../../src/session/system"
import { Shell } from "../../src/shell/shell" import { Shell } from "../../src/shell"
import { Snapshot } from "../../src/snapshot" import { Snapshot } from "../../src/snapshot"
import { ToolRegistry } from "../../src/tool" import { ToolRegistry } from "../../src/tool"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"

View file

@ -29,7 +29,7 @@ import { TestLLMServer } from "../lib/llm-server"
// Same layer setup as prompt-effect.test.ts // Same layer setup as prompt-effect.test.ts
import { NodeFileSystem } from "@effect/platform-node" import { NodeFileSystem } from "@effect/platform-node"
import { Agent as AgentSvc } from "../../src/agent/agent" import { Agent as AgentSvc } from "../../src/agent"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Command } from "../../src/command" import { Command } from "../../src/command"
import { Config } from "../../src/config" import { Config } from "../../src/config"

View file

@ -1,7 +1,7 @@
import { describe, expect, test } from "bun:test" import { describe, expect, test } from "bun:test"
import path from "path" import path from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { SystemPrompt } from "../../src/session/system" import { SystemPrompt } from "../../src/session/system"
import { provideInstance, tmpdir } from "../fixture/fixture" import { provideInstance, tmpdir } from "../fixture/fixture"

View file

@ -1,6 +1,6 @@
import { describe, expect, test } from "bun:test" import { describe, expect, test } from "bun:test"
import path from "path" import path from "path"
import { Shell } from "../../src/shell/shell" import { Shell } from "../../src/shell"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
const withShell = async (shell: string | undefined, fn: () => void | Promise<void>) => { const withShell = async (shell: string | undefined, fn: () => void | Promise<void>) => {

View file

@ -6,7 +6,7 @@ import { Instance } from "../../src/project/instance"
import { SyncEvent } from "../../src/sync" import { SyncEvent } from "../../src/sync"
import { Database } from "../../src/storage" import { Database } from "../../src/storage"
import { EventTable } from "../../src/sync/event.sql" import { EventTable } from "../../src/sync/event.sql"
import { Identifier } from "../../src/id/id" import { Identifier } from "../../src/id"
import { Flag } from "../../src/flag/flag" import { Flag } from "../../src/flag/flag"
import { initProjectors } from "../../src/server/projectors" import { initProjectors } from "../../src/server/projectors"

View file

@ -7,7 +7,7 @@ import { Instance } from "../../src/project/instance"
import { LSP } from "../../src/lsp" import { LSP } from "../../src/lsp"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Format } from "../../src/format" import { Format } from "../../src/format"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { tmpdir } from "../fixture/fixture" import { tmpdir } from "../fixture/fixture"

View file

@ -2,13 +2,13 @@ import { describe, expect, test } from "bun:test"
import { Effect, Layer, ManagedRuntime } from "effect" import { Effect, Layer, ManagedRuntime } from "effect"
import os from "os" import os from "os"
import path from "path" import path from "path"
import { Shell } from "../../src/shell/shell" import { Shell } from "../../src/shell"
import { BashTool } from "../../src/tool/bash" import { BashTool } from "../../src/tool/bash"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
import { tmpdir } from "../fixture/fixture" import { tmpdir } from "../fixture/fixture"
import type { Permission } from "../../src/permission" import type { Permission } from "../../src/permission"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"

View file

@ -9,7 +9,7 @@ import { FileTime } from "../../src/file/time"
import { LSP } from "../../src/lsp" import { LSP } from "../../src/lsp"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Format } from "../../src/format" import { Format } from "../../src/format"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { BusEvent } from "../../src/bus/bus-event" import { BusEvent } from "../../src/bus/bus-event"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"

View file

@ -7,7 +7,7 @@ import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Ripgrep } from "../../src/file/ripgrep" import { Ripgrep } from "../../src/file/ripgrep"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"

View file

@ -6,7 +6,7 @@ import { provideInstance, provideTmpdirInstance } from "../fixture/fixture"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Ripgrep } from "../../src/file/ripgrep" import { Ripgrep } from "../../src/file/ripgrep"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"

View file

@ -3,7 +3,7 @@ import { Effect, Fiber, Layer } from "effect"
import { QuestionTool } from "../../src/tool/question" import { QuestionTool } from "../../src/tool/question"
import { Question } from "../../src/question" import { Question } from "../../src/question"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"

View file

@ -1,7 +1,7 @@
import { afterEach, describe, expect } from "bun:test" import { afterEach, describe, expect } from "bun:test"
import { Cause, Effect, Exit, Layer } from "effect" import { Cause, Effect, Exit, Layer } from "effect"
import path from "path" import path from "path"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { FileTime } from "../../src/file/time" import { FileTime } from "../../src/file/time"

View file

@ -1,6 +1,6 @@
import { afterEach, describe, expect } from "bun:test" import { afterEach, describe, expect } from "bun:test"
import { Effect, Layer } from "effect" import { Effect, Layer } from "effect"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Config } from "../../src/config" import { Config } from "../../src/config"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"

View file

@ -1,7 +1,7 @@
import { describe, test, expect } from "bun:test" import { describe, test, expect } from "bun:test"
import { Effect, Layer, ManagedRuntime } from "effect" import { Effect, Layer, ManagedRuntime } from "effect"
import z from "zod" import z from "zod"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Tool } from "../../src/tool" import { Tool } from "../../src/tool"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"

View file

@ -2,7 +2,7 @@ import { describe, test, expect } from "bun:test"
import { NodeFileSystem } from "@effect/platform-node" import { NodeFileSystem } from "@effect/platform-node"
import { Effect, FileSystem, Layer } from "effect" import { Effect, FileSystem, Layer } from "effect"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { Identifier } from "../../src/id/id" import { Identifier } from "../../src/id"
import { Process } from "../../src/util" import { Process } from "../../src/util"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
import path from "path" import path from "path"

View file

@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"
import path from "path" import path from "path"
import { Effect, Layer } from "effect" import { Effect, Layer } from "effect"
import { FetchHttpClient } from "effect/unstable/http" import { FetchHttpClient } from "effect/unstable/http"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { WebFetchTool } from "../../src/tool/webfetch" import { WebFetchTool } from "../../src/tool/webfetch"

View file

@ -11,7 +11,7 @@ import { Bus } from "../../src/bus"
import { Format } from "../../src/format" import { Format } from "../../src/format"
import { Truncate } from "../../src/tool" import { Truncate } from "../../src/tool"
import { Tool } from "../../src/tool" import { Tool } from "../../src/tool"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"