feat: unwrap tool namespaces to flat exports + barrel (#22762)

This commit is contained in:
Kit Langton
2026-04-16 03:56:54 +00:00
committed by GitHub
parent f6cc228684
commit 5011465c81
48 changed files with 585 additions and 588 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ import { Provider } from "../provider"
import { ModelID, ProviderID } from "../provider/schema" import { ModelID, ProviderID } from "../provider/schema"
import { generateObject, streamObject, type ModelMessage } from "ai" import { generateObject, streamObject, type ModelMessage } from "ai"
import { Instance } from "../project/instance" import { Instance } from "../project/instance"
import { Truncate } from "../tool/truncate" import { Truncate } from "../tool"
import { Auth } from "../auth" import { Auth } from "../auth"
import { ProviderTransform } from "../provider/transform" import { ProviderTransform } from "../provider/transform"
+1 -1
View File
@@ -6,7 +6,7 @@ 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"
import { MessageID, PartID } from "../../../session/schema" import { MessageID, PartID } from "../../../session/schema"
import { ToolRegistry } from "../../../tool/registry" import { ToolRegistry } from "../../../tool"
import { Instance } from "../../../project/instance" import { Instance } from "../../../project/instance"
import { Permission } from "../../../permission" import { Permission } from "../../../permission"
import { iife } from "../../../util/iife" import { iife } from "../../../util/iife"
+1 -1
View File
@@ -12,7 +12,7 @@ import { Server } from "../../server/server"
import { Provider } from "../../provider" import { Provider } from "../../provider"
import { Agent } from "../../agent/agent" import { Agent } from "../../agent/agent"
import { Permission } from "../../permission" import { Permission } from "../../permission"
import { Tool } from "../../tool/tool" import { Tool } from "../../tool"
import { GlobTool } from "../../tool/glob" import { GlobTool } from "../../tool/glob"
import { GrepTool } from "../../tool/grep" import { GrepTool } from "../../tool/grep"
import { ReadTool } from "../../tool/read" import { ReadTool } from "../../tool/read"
@@ -34,7 +34,7 @@ import type {
} from "@opencode-ai/sdk/v2" } from "@opencode-ai/sdk/v2"
import { useLocal } from "@tui/context/local" import { useLocal } from "@tui/context/local"
import { Locale } from "@/util" import { Locale } from "@/util"
import type { Tool } from "@/tool/tool" import type { Tool } from "@/tool"
import type { ReadTool } from "@/tool/read" import type { ReadTool } from "@/tool/read"
import type { WriteTool } from "@/tool/write" import type { WriteTool } from "@/tool/write"
import { BashTool } from "@/tool/bash" import { BashTool } from "@/tool/bash"
+2 -2
View File
@@ -37,8 +37,8 @@ import { LSP } from "@/lsp"
import { MCP } from "@/mcp" import { MCP } from "@/mcp"
import { McpAuth } from "@/mcp/auth" import { McpAuth } from "@/mcp/auth"
import { Command } from "@/command" import { Command } from "@/command"
import { Truncate } from "@/tool/truncate" import { Truncate } from "@/tool"
import { ToolRegistry } from "@/tool/registry" import { ToolRegistry } from "@/tool"
import { Format } from "@/format" import { Format } from "@/format"
import { Project } from "@/project" import { Project } from "@/project"
import { Vcs } from "@/project" import { Vcs } from "@/project"
@@ -2,7 +2,7 @@ import { Hono } from "hono"
import { describeRoute, validator, resolver } from "hono-openapi" import { describeRoute, validator, resolver } from "hono-openapi"
import z from "zod" import z from "zod"
import { ProviderID, ModelID } from "../../provider/schema" import { ProviderID, ModelID } from "../../provider/schema"
import { ToolRegistry } from "../../tool/registry" import { ToolRegistry } from "../../tool"
import { Worktree } from "../../worktree" import { Worktree } from "../../worktree"
import { Instance } from "../../project/instance" import { Instance } from "../../project/instance"
import { Project } from "../../project" import { Project } from "../../project"
+3 -3
View File
@@ -19,7 +19,7 @@ import { Plugin } from "../plugin"
import PROMPT_PLAN from "../session/prompt/plan.txt" import PROMPT_PLAN from "../session/prompt/plan.txt"
import BUILD_SWITCH from "../session/prompt/build-switch.txt" import BUILD_SWITCH from "../session/prompt/build-switch.txt"
import MAX_STEPS from "../session/prompt/max-steps.txt" import MAX_STEPS from "../session/prompt/max-steps.txt"
import { ToolRegistry } from "../tool/registry" import { ToolRegistry } from "../tool"
import { MCP } from "../mcp" import { MCP } from "../mcp"
import { LSP } from "../lsp" import { LSP } from "../lsp"
import { FileTime } from "../file/time" import { FileTime } from "../file/time"
@@ -34,13 +34,13 @@ import { ConfigMarkdown } from "../config"
import { SessionSummary } from "./summary" import { SessionSummary } from "./summary"
import { NamedError } from "@opencode-ai/shared/util/error" import { NamedError } from "@opencode-ai/shared/util/error"
import { SessionProcessor } from "./processor" import { SessionProcessor } from "./processor"
import { Tool } from "@/tool/tool" 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/shell"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Truncate } from "@/tool/truncate" import { Truncate } from "@/tool"
import { decodeDataUrl } from "@/util/data-url" import { decodeDataUrl } from "@/util/data-url"
import { Process } from "@/util" import { Process } from "@/util"
import { Cause, Effect, Exit, Layer, Option, Scope, Context } from "effect" import { Cause, Effect, Exit, Layer, Option, Scope, Context } from "effect"
+1 -1
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import * as path from "path" import * as path from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import { Bus } from "../bus" import { Bus } from "../bus"
import { FileWatcher } from "../file/watcher" import { FileWatcher } from "../file/watcher"
import { Instance } from "../project/instance" import { Instance } from "../project/instance"
+2 -2
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import os from "os" import os from "os"
import { createWriteStream } from "node:fs" import { createWriteStream } from "node:fs"
import { Tool } from "./tool" import * as Tool from "./tool"
import path from "path" import path from "path"
import DESCRIPTION from "./bash.txt" import DESCRIPTION from "./bash.txt"
import { Log } from "../util" import { Log } from "../util"
@@ -15,7 +15,7 @@ import { Flag } from "@/flag/flag"
import { Shell } from "@/shell/shell" import { Shell } from "@/shell/shell"
import { BashArity } from "@/permission/arity" import { BashArity } from "@/permission/arity"
import { Truncate } from "./truncate" import * as Truncate from "./truncate"
import { Plugin } from "@/plugin" import { Plugin } from "@/plugin"
import { Effect, Stream } from "effect" import { Effect, Stream } from "effect"
import { ChildProcess } from "effect/unstable/process" import { ChildProcess } from "effect/unstable/process"
+1 -1
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { HttpClient } from "effect/unstable/http" import { HttpClient } from "effect/unstable/http"
import { Tool } from "./tool" import * as Tool from "./tool"
import * as McpExa from "./mcp-exa" import * as McpExa from "./mcp-exa"
import DESCRIPTION from "./codesearch.txt" import DESCRIPTION from "./codesearch.txt"
+1 -1
View File
@@ -6,7 +6,7 @@
import z from "zod" import z from "zod"
import * as path from "path" import * as path from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import { LSP } from "../lsp" import { LSP } from "../lsp"
import { createTwoFilesPatch, diffLines } from "diff" import { createTwoFilesPatch, diffLines } from "diff"
import DESCRIPTION from "./edit.txt" import DESCRIPTION from "./edit.txt"
@@ -2,7 +2,7 @@ import path from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { EffectLogger } from "@/effect" import { EffectLogger } from "@/effect"
import { InstanceState } from "@/effect" import { InstanceState } from "@/effect"
import type { Tool } from "./tool" import type * as Tool from "./tool"
import { Instance } from "../project/instance" import { Instance } from "../project/instance"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
+1 -1
View File
@@ -7,7 +7,7 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Ripgrep } from "../file/ripgrep" import { Ripgrep } from "../file/ripgrep"
import { assertExternalDirectoryEffect } from "./external-directory" import { assertExternalDirectoryEffect } from "./external-directory"
import DESCRIPTION from "./glob.txt" import DESCRIPTION from "./glob.txt"
import { Tool } from "./tool" import * as Tool from "./tool"
export const GlobTool = Tool.define( export const GlobTool = Tool.define(
"glob", "glob",
+1 -1
View File
@@ -6,7 +6,7 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { Ripgrep } from "../file/ripgrep" import { Ripgrep } from "../file/ripgrep"
import { assertExternalDirectoryEffect } from "./external-directory" import { assertExternalDirectoryEffect } from "./external-directory"
import DESCRIPTION from "./grep.txt" import DESCRIPTION from "./grep.txt"
import { Tool } from "./tool" import * as Tool from "./tool"
const MAX_LINE_LENGTH = 2000 const MAX_LINE_LENGTH = 2000
+3
View File
@@ -0,0 +1,3 @@
export * as Truncate from "./truncate"
export * as ToolRegistry from "./registry"
export * as Tool from "./tool"
+1 -1
View File
@@ -1,6 +1,6 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
export const InvalidTool = Tool.define( export const InvalidTool = Tool.define(
"invalid", "invalid",
+1 -1
View File
@@ -1,6 +1,6 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import path from "path" import path from "path"
import { LSP } from "../lsp" import { LSP } from "../lsp"
import DESCRIPTION from "./lsp.txt" import DESCRIPTION from "./lsp.txt"
+1 -1
View File
@@ -1,6 +1,6 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import { EditTool } from "./edit" import { EditTool } from "./edit"
import DESCRIPTION from "./multiedit.txt" import DESCRIPTION from "./multiedit.txt"
import path from "path" import path from "path"
+1 -1
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import path from "path" import path from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import { Question } from "../question" import { Question } from "../question"
import { Session } from "../session" import { Session } from "../session"
import { MessageV2 } from "../session/message-v2" import { MessageV2 } from "../session/message-v2"
+1 -1
View File
@@ -1,6 +1,6 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import { Question } from "../question" import { Question } from "../question"
import DESCRIPTION from "./question.txt" import DESCRIPTION from "./question.txt"
+1 -1
View File
@@ -4,7 +4,7 @@ import { createReadStream } from "fs"
import { open } from "fs/promises" import { open } from "fs/promises"
import * as path from "path" import * as path from "path"
import { createInterface } from "readline" import { createInterface } from "readline"
import { Tool } from "./tool" import * as Tool from "./tool"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { LSP } from "../lsp" import { LSP } from "../lsp"
import { FileTime } from "../file/time" import { FileTime } from "../file/time"
+2 -4
View File
@@ -12,7 +12,7 @@ import { WebFetchTool } from "./webfetch"
import { WriteTool } from "./write" import { WriteTool } from "./write"
import { InvalidTool } from "./invalid" import { InvalidTool } from "./invalid"
import { SkillTool } from "./skill" import { SkillTool } from "./skill"
import { Tool } from "./tool" import * as Tool from "./tool"
import { Config } from "../config" import { Config } from "../config"
import { type ToolContext as PluginToolContext, type ToolDefinition } from "@opencode-ai/plugin" import { type ToolContext as PluginToolContext, type ToolDefinition } from "@opencode-ai/plugin"
import z from "zod" import z from "zod"
@@ -24,7 +24,7 @@ import { CodeSearchTool } from "./codesearch"
import { Flag } from "@/flag/flag" import { Flag } from "@/flag/flag"
import { Log } from "@/util" import { Log } from "@/util"
import { LspTool } from "./lsp" import { LspTool } from "./lsp"
import { Truncate } from "./truncate" import * as Truncate from "./truncate"
import { ApplyPatchTool } from "./apply_patch" import { ApplyPatchTool } from "./apply_patch"
import { Glob } from "@opencode-ai/shared/util/glob" import { Glob } from "@opencode-ai/shared/util/glob"
import path from "path" import path from "path"
@@ -47,7 +47,6 @@ import { Agent } from "../agent/agent"
import { Skill } from "../skill" import { Skill } from "../skill"
import { Permission } from "@/permission" import { Permission } from "@/permission"
export namespace ToolRegistry {
const log = Log.create({ service: "tool.registry" }) const log = Log.create({ service: "tool.registry" })
type TaskDef = Tool.InferDef<typeof TaskTool> type TaskDef = Tool.InferDef<typeof TaskTool>
@@ -342,4 +341,3 @@ export namespace ToolRegistry {
Layer.provide(Truncate.defaultLayer), Layer.provide(Truncate.defaultLayer),
), ),
) )
}
+1 -1
View File
@@ -6,7 +6,7 @@ import * as Stream from "effect/Stream"
import { EffectLogger } from "@/effect" import { EffectLogger } from "@/effect"
import { Ripgrep } from "../file/ripgrep" import { Ripgrep } from "../file/ripgrep"
import { Skill } from "../skill" import { Skill } from "../skill"
import { Tool } from "./tool" import * as Tool from "./tool"
const Parameters = z.object({ const Parameters = z.object({
name: z.string().describe("The name of the skill from available_skills"), name: z.string().describe("The name of the skill from available_skills"),
+1 -1
View File
@@ -1,4 +1,4 @@
import { Tool } from "./tool" import * as Tool from "./tool"
import DESCRIPTION from "./task.txt" import DESCRIPTION from "./task.txt"
import z from "zod" import z from "zod"
import { Session } from "../session" import { Session } from "../session"
+1 -1
View File
@@ -1,6 +1,6 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import DESCRIPTION_WRITE from "./todowrite.txt" import DESCRIPTION_WRITE from "./todowrite.txt"
import { Todo } from "../session/todo" import { Todo } from "../session/todo"
+1 -3
View File
@@ -3,10 +3,9 @@ import { Effect } from "effect"
import type { MessageV2 } from "../session/message-v2" 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 { Truncate } from "./truncate" import * as Truncate from "./truncate"
import { Agent } from "@/agent/agent" import { Agent } from "@/agent/agent"
export namespace Tool {
interface Metadata { interface Metadata {
[key: string]: any [key: string]: any
} }
@@ -145,4 +144,3 @@ export namespace Tool {
} }
}) })
} }
}
-2
View File
@@ -9,7 +9,6 @@ import { Log } from "../util"
import { ToolID } from "./schema" import { ToolID } from "./schema"
import { TRUNCATION_DIR } from "./truncation-dir" import { TRUNCATION_DIR } from "./truncation-dir"
export namespace Truncate {
const log = Log.create({ service: "truncation" }) const log = Log.create({ service: "truncation" })
const RETENTION = Duration.days(7) const RETENTION = Duration.days(7)
@@ -141,4 +140,3 @@ export namespace Truncate {
) )
export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer), Layer.provide(NodePath.layer)) export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer), Layer.provide(NodePath.layer))
}
+1 -1
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { HttpClient, HttpClientRequest } from "effect/unstable/http" import { HttpClient, HttpClientRequest } from "effect/unstable/http"
import { Tool } from "./tool" import * as Tool from "./tool"
import TurndownService from "turndown" import TurndownService from "turndown"
import DESCRIPTION from "./webfetch.txt" import DESCRIPTION from "./webfetch.txt"
+1 -1
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import { Effect } from "effect" import { Effect } from "effect"
import { HttpClient } from "effect/unstable/http" import { HttpClient } from "effect/unstable/http"
import { Tool } from "./tool" import * as Tool from "./tool"
import * as McpExa from "./mcp-exa" import * as McpExa from "./mcp-exa"
import DESCRIPTION from "./websearch.txt" import DESCRIPTION from "./websearch.txt"
+1 -1
View File
@@ -1,7 +1,7 @@
import z from "zod" import z from "zod"
import * as path from "path" import * as path from "path"
import { Effect } from "effect" import { Effect } from "effect"
import { Tool } from "./tool" import * as Tool from "./tool"
import { LSP } from "../lsp" import { LSP } from "../lsp"
import { createTwoFilesPatch } from "diff" import { createTwoFilesPatch } from "diff"
import DESCRIPTION from "./write.txt" import DESCRIPTION from "./write.txt"
+4 -4
View File
@@ -84,7 +84,7 @@ test("explore agent denies edit and write", async () => {
}) })
test("explore agent asks for external directories and allows Truncate.GLOB", async () => { test("explore agent asks for external directories and allows Truncate.GLOB", async () => {
const { Truncate } = await import("../../src/tool/truncate") const { Truncate } = await import("../../src/tool")
await using tmp = await tmpdir() await using tmp = await tmpdir()
await Instance.provide({ await Instance.provide({
directory: tmp.path, directory: tmp.path,
@@ -496,7 +496,7 @@ test("legacy tools config maps write/edit/patch/multiedit to edit permission", a
}) })
test("Truncate.GLOB is allowed even when user denies external_directory globally", async () => { test("Truncate.GLOB is allowed even when user denies external_directory globally", async () => {
const { Truncate } = await import("../../src/tool/truncate") const { Truncate } = await import("../../src/tool")
await using tmp = await tmpdir({ await using tmp = await tmpdir({
config: { config: {
permission: { permission: {
@@ -516,7 +516,7 @@ test("Truncate.GLOB is allowed even when user denies external_directory globally
}) })
test("Truncate.GLOB is allowed even when user denies external_directory per-agent", async () => { test("Truncate.GLOB is allowed even when user denies external_directory per-agent", async () => {
const { Truncate } = await import("../../src/tool/truncate") const { Truncate } = await import("../../src/tool")
await using tmp = await tmpdir({ await using tmp = await tmpdir({
config: { config: {
agent: { agent: {
@@ -540,7 +540,7 @@ test("Truncate.GLOB is allowed even when user denies external_directory per-agen
}) })
test("explicit Truncate.GLOB deny is respected", async () => { test("explicit Truncate.GLOB deny is respected", async () => {
const { Truncate } = await import("../../src/tool/truncate") const { Truncate } = await import("../../src/tool")
await using tmp = await tmpdir({ await using tmp = await tmpdir({
config: { config: {
permission: { permission: {
@@ -34,8 +34,8 @@ 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/shell"
import { Snapshot } from "../../src/snapshot" import { Snapshot } from "../../src/snapshot"
import { ToolRegistry } from "../../src/tool/registry" import { ToolRegistry } from "../../src/tool"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { Log } from "../../src/util" import { Log } from "../../src/util"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Ripgrep } from "../../src/file/ripgrep" import { Ripgrep } from "../../src/file/ripgrep"
@@ -50,8 +50,8 @@ import { SessionProcessor } from "../../src/session/processor"
import { SessionRunState } from "../../src/session/run-state" import { SessionRunState } from "../../src/session/run-state"
import { SessionStatus } from "../../src/session/status" import { SessionStatus } from "../../src/session/status"
import { Snapshot } from "../../src/snapshot" import { Snapshot } from "../../src/snapshot"
import { ToolRegistry } from "../../src/tool/registry" import { ToolRegistry } from "../../src/tool"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Ripgrep } from "../../src/file/ripgrep" import { Ripgrep } from "../../src/file/ripgrep"
@@ -9,7 +9,7 @@ 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/agent"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { tmpdir } from "../fixture/fixture" import { tmpdir } from "../fixture/fixture"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
+1 -1
View File
@@ -9,7 +9,7 @@ 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/agent"
import { Truncate } from "../../src/tool/truncate" 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"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
+1 -1
View File
@@ -12,7 +12,7 @@ import { Format } from "../../src/format"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent/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/truncate" import { Truncate } from "../../src/tool"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
const ctx = { const ctx = {
@@ -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 type { Tool } from "../../src/tool/tool" import type { Tool } from "../../src/tool"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { assertExternalDirectory } from "../../src/tool/external-directory" import { assertExternalDirectory } from "../../src/tool/external-directory"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
+1 -1
View File
@@ -6,7 +6,7 @@ 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 { 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/truncate" import { Truncate } from "../../src/tool"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent/agent"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"
+1 -1
View File
@@ -5,7 +5,7 @@ import { GrepTool } from "../../src/tool/grep"
import { provideInstance, provideTmpdirInstance } from "../fixture/fixture" 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/truncate" import { Truncate } from "../../src/tool"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent/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"
+1 -1
View File
@@ -5,7 +5,7 @@ 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/agent"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"
+2 -2
View File
@@ -11,8 +11,8 @@ import { Instance } from "../../src/project/instance"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import { Instruction } from "../../src/session/instruction" import { Instruction } from "../../src/session/instruction"
import { ReadTool } from "../../src/tool/read" import { ReadTool } from "../../src/tool/read"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { Tool } from "../../src/tool/tool" import { Tool } from "../../src/tool"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
import { provideInstance, tmpdirScoped } from "../fixture/fixture" import { provideInstance, tmpdirScoped } from "../fixture/fixture"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"
+1 -1
View File
@@ -4,7 +4,7 @@ import fs from "fs/promises"
import { Effect, Layer } from "effect" import { Effect, Layer } from "effect"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner" import * as CrossSpawnSpawner from "../../src/effect/cross-spawn-spawner"
import { ToolRegistry } from "../../src/tool/registry" import { ToolRegistry } from "../../src/tool"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"
+2 -2
View File
@@ -4,10 +4,10 @@ import { afterEach, describe, expect } from "bun:test"
import path from "path" import path from "path"
import { pathToFileURL } from "url" import { pathToFileURL } from "url"
import type { Permission } from "../../src/permission" import type { Permission } from "../../src/permission"
import type { Tool } from "../../src/tool/tool" import type { Tool } from "../../src/tool"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
import { SkillTool } from "../../src/tool/skill" import { SkillTool } from "../../src/tool/skill"
import { ToolRegistry } from "../../src/tool/registry" import { ToolRegistry } from "../../src/tool"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"
+2 -2
View File
@@ -10,8 +10,8 @@ import type { SessionPrompt } from "../../src/session/prompt"
import { MessageID, PartID } from "../../src/session/schema" import { MessageID, PartID } from "../../src/session/schema"
import { ModelID, ProviderID } from "../../src/provider/schema" import { ModelID, ProviderID } from "../../src/provider/schema"
import { TaskTool, type TaskPromptOps } from "../../src/tool/task" import { TaskTool, type TaskPromptOps } from "../../src/tool/task"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { ToolRegistry } from "../../src/tool/registry" import { ToolRegistry } from "../../src/tool"
import { provideTmpdirInstance } from "../fixture/fixture" import { provideTmpdirInstance } from "../fixture/fixture"
import { testEffect } from "../lib/effect" import { testEffect } from "../lib/effect"
@@ -2,8 +2,8 @@ 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/agent"
import { Tool } from "../../src/tool/tool" import { Tool } from "../../src/tool"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
const runtime = ManagedRuntime.make(Layer.mergeAll(Truncate.defaultLayer, Agent.defaultLayer)) const runtime = ManagedRuntime.make(Layer.mergeAll(Truncate.defaultLayer, Agent.defaultLayer))
@@ -1,7 +1,7 @@
import { describe, test, expect } from "bun:test" 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/truncate" import { Truncate } from "../../src/tool"
import { Identifier } from "../../src/id/id" import { Identifier } from "../../src/id/id"
import { Process } from "../../src/util" import { Process } from "../../src/util"
import { Filesystem } from "../../src/util" import { Filesystem } from "../../src/util"
+1 -1
View File
@@ -3,7 +3,7 @@ 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/agent"
import { Truncate } from "../../src/tool/truncate" 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"
import { SessionID, MessageID } from "../../src/session/schema" import { SessionID, MessageID } from "../../src/session/schema"
+2 -2
View File
@@ -9,8 +9,8 @@ import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { FileTime } from "../../src/file/time" import { FileTime } from "../../src/file/time"
import { Bus } from "../../src/bus" import { Bus } from "../../src/bus"
import { Format } from "../../src/format" import { Format } from "../../src/format"
import { Truncate } from "../../src/tool/truncate" import { Truncate } from "../../src/tool"
import { Tool } from "../../src/tool/tool" import { Tool } from "../../src/tool"
import { Agent } from "../../src/agent/agent" import { Agent } from "../../src/agent/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"