refactor(core): remove tool layer exports (#34622)
This commit is contained in:
@@ -109,7 +109,7 @@ const lineCount = (text: string) => {
|
|||||||
return count
|
return count
|
||||||
}
|
}
|
||||||
|
|
||||||
export const layer = Layer.effect(
|
const layer = Layer.effect(
|
||||||
Service,
|
Service,
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const fs = yield* FSUtil.Service
|
const fs = yield* FSUtil.Service
|
||||||
@@ -192,8 +192,6 @@ export const layer = Layer.effect(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
export const defaultLayer = layer.pipe(Layer.provide(FSUtil.defaultLayer), Layer.provide(Global.defaultLayer))
|
|
||||||
|
|
||||||
export const node = makeLocationNode({ service: Service, layer, deps: [FSUtil.node, Global.node, Config.node] })
|
export const node = makeLocationNode({ service: Service, layer, deps: [FSUtil.node, Global.node, Config.node] })
|
||||||
|
|
||||||
export const nodeWithoutConfig = makeLocationNode({ service: Service, layer, deps: [FSUtil.node, Global.node] })
|
export const nodeWithoutConfig = makeLocationNode({ service: Service, layer, deps: [FSUtil.node, Global.node] })
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export interface Interface {
|
|||||||
|
|
||||||
export class Service extends Context.Service<Service, Interface>()("@opencode/ApplicationTools") {}
|
export class Service extends Context.Service<Service, Interface>()("@opencode/ApplicationTools") {}
|
||||||
|
|
||||||
export const layer = Layer.effect(
|
const layer = Layer.effect(
|
||||||
Service,
|
Service,
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const state = State.create<Data, Draft>({
|
const state = State.create<Data, Draft>({
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ type Prepared =
|
|||||||
readonly after: string
|
readonly after: string
|
||||||
})
|
})
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const mutation = yield* LocationMutation.Service
|
const mutation = yield* LocationMutation.Service
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ const externalCommandDirectories = (command: string, cwd: string) => {
|
|||||||
return [...directories]
|
return [...directories]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const mutation = yield* LocationMutation.Service
|
const mutation = yield* LocationMutation.Service
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { GlobTool } from "./glob"
|
|||||||
import { GrepTool } from "./grep"
|
import { GrepTool } from "./grep"
|
||||||
import { QuestionTool } from "./question"
|
import { QuestionTool } from "./question"
|
||||||
import { ReadTool } from "./read"
|
import { ReadTool } from "./read"
|
||||||
import { ReadToolFileSystem } from "./read-filesystem"
|
|
||||||
import { SkillTool } from "./skill"
|
import { SkillTool } from "./skill"
|
||||||
import { TodoWriteTool } from "./todowrite"
|
import { TodoWriteTool } from "./todowrite"
|
||||||
import { WebFetchTool } from "./webfetch"
|
import { WebFetchTool } from "./webfetch"
|
||||||
@@ -29,21 +28,6 @@ import { WriteTool } from "./write"
|
|||||||
* repo_clone, repo_overview, plan_exit, and Rune/code mode. Keep MCP and plugin
|
* repo_clone, repo_overview, plan_exit, and Rune/code mode. Keep MCP and plugin
|
||||||
* transforms separate from this static built-in list.
|
* transforms separate from this static built-in list.
|
||||||
*/
|
*/
|
||||||
export const locationLayer = Layer.mergeAll(
|
|
||||||
ApplyPatchTool.layer,
|
|
||||||
BashTool.layer,
|
|
||||||
EditTool.layer,
|
|
||||||
GlobTool.layer,
|
|
||||||
GrepTool.layer,
|
|
||||||
QuestionTool.layer,
|
|
||||||
ReadTool.layer.pipe(Layer.provide(ReadToolFileSystem.layer)),
|
|
||||||
SkillTool.layer,
|
|
||||||
TodoWriteTool.layer,
|
|
||||||
WebFetchTool.layer,
|
|
||||||
WebSearchTool.layer.pipe(Layer.provide(WebSearchTool.defaultConfigLayer)),
|
|
||||||
WriteTool.layer,
|
|
||||||
)
|
|
||||||
|
|
||||||
export const node = makeLocationNode({
|
export const node = makeLocationNode({
|
||||||
name: "built-in-tools",
|
name: "built-in-tools",
|
||||||
layer: Layer.empty,
|
layer: Layer.empty,
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ export const toModelOutput = (output: Output, oldString: string, newString: stri
|
|||||||
// TODO: Add snapshots / undo after design exists.
|
// TODO: Add snapshots / undo after design exists.
|
||||||
// TODO: Add LSP notification and diagnostics after V2 LSP runtime exists.
|
// TODO: Add LSP notification and diagnostics after V2 LSP runtime exists.
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const mutation = yield* LocationMutation.Service
|
const mutation = yield* LocationMutation.Service
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export const toModelOutput = (output: ModelOutput) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Glob leaf that defaults its filesystem root to the active Location. */
|
/** Glob leaf that defaults its filesystem root to the active Location. */
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const ripgrep = yield* Ripgrep.Service
|
const ripgrep = yield* Ripgrep.Service
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ export const toModelOutput = (output: ModelOutput) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Grep leaf that defaults its filesystem root to the active Location. */
|
/** Grep leaf that defaults its filesystem root to the active Location. */
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const fs = yield* FSUtil.Service
|
const fs = yield* FSUtil.Service
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export const toModelOutput = (
|
|||||||
return `User has answered your questions: ${formatted}. You can now continue with the user's answers in mind.`
|
return `User has answered your questions: ${formatted}. You can now continue with the user's answers in mind.`
|
||||||
}
|
}
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const question = yield* QuestionV2.Service
|
const question = yield* QuestionV2.Service
|
||||||
|
|||||||
@@ -351,7 +351,7 @@ export const list = Effect.fn("ReadTool.list")(function* (fs: FSUtil.Interface,
|
|||||||
return new ListPage({ entries: selected, truncated, ...(truncated ? { next: offset + selected.length } : {}) })
|
return new ListPage({ entries: selected, truncated, ...(truncated ? { next: offset + selected.length } : {}) })
|
||||||
})
|
})
|
||||||
|
|
||||||
export const layer = Layer.effect(
|
const layer = Layer.effect(
|
||||||
Service,
|
Service,
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const fs = yield* FSUtil.Service
|
const fs = yield* FSUtil.Service
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ const LocationInput = Schema.Struct({
|
|||||||
const Input = LocationInput
|
const Input = LocationInput
|
||||||
const Output = Schema.Union([FileSystem.Content, ReadToolFileSystem.TextPage, ReadToolFileSystem.ListPage])
|
const Output = Schema.Union([FileSystem.Content, ReadToolFileSystem.TextPage, ReadToolFileSystem.ListPage])
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const reader = yield* ReadToolFileSystem.Service
|
const reader = yield* ReadToolFileSystem.Service
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ const registryLayer = Layer.effect(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
export const layer = Layer.effect(
|
const layer = Layer.effect(
|
||||||
Tools.Service,
|
Tools.Service,
|
||||||
Service.use((registry) => Effect.succeed(Tools.Service.of({ register: registry.register }))),
|
Service.use((registry) => Effect.succeed(Tools.Service.of({ register: registry.register }))),
|
||||||
).pipe(Layer.provideMerge(registryLayer))
|
).pipe(Layer.provideMerge(registryLayer))
|
||||||
@@ -134,11 +134,6 @@ function whollyDisabled(action: string, rules: PermissionV2.Ruleset) {
|
|||||||
return rule?.resource === "*" && rule.effect === "deny"
|
return rule?.resource === "*" && rule.effect === "deny"
|
||||||
}
|
}
|
||||||
|
|
||||||
export const defaultLayer = layer.pipe(
|
|
||||||
Layer.provide(ApplicationTools.layer),
|
|
||||||
Layer.provide(ToolOutputStore.defaultLayer),
|
|
||||||
)
|
|
||||||
|
|
||||||
export const node = makeLocationNode({
|
export const node = makeLocationNode({
|
||||||
service: Service,
|
service: Service,
|
||||||
layer,
|
layer,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export const toModelOutput = (skill: SkillV2.Info, files: ReadonlyArray<string>)
|
|||||||
const unableToLoad = (name: string, error?: unknown) =>
|
const unableToLoad = (name: string, error?: unknown) =>
|
||||||
new ToolFailure({ message: `Unable to load skill ${name}`, error })
|
new ToolFailure({ message: `Unable to load skill ${name}`, error })
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const fs = yield* FSUtil.Service
|
const fs = yield* FSUtil.Service
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export type Output = typeof Output.Type
|
|||||||
|
|
||||||
export const toModelOutput = (output: Output) => JSON.stringify(output.todos, null, 2)
|
export const toModelOutput = (output: Output) => JSON.stringify(output.todos, null, 2)
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const todos = yield* SessionTodo.Service
|
const todos = yield* SessionTodo.Service
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ const convert = (content: string, contentType: string, format: Format) => {
|
|||||||
return content
|
return content
|
||||||
}
|
}
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const http = yield* HttpClient.HttpClient
|
const http = yield* HttpClient.HttpClient
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ const Output = Schema.Struct({
|
|||||||
text: Schema.String,
|
text: Schema.String,
|
||||||
})
|
})
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const http = yield* HttpClient.HttpClient
|
const http = yield* HttpClient.HttpClient
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export const toModelOutput = (output: Output) =>
|
|||||||
// TODO: Add snapshots / undo after design exists.
|
// TODO: Add snapshots / undo after design exists.
|
||||||
// TODO: Add LSP notification and diagnostics after V2 LSP runtime exists.
|
// TODO: Add LSP notification and diagnostics after V2 LSP runtime exists.
|
||||||
|
|
||||||
export const layer = Layer.effectDiscard(
|
const layer = Layer.effectDiscard(
|
||||||
Effect.gen(function* () {
|
Effect.gen(function* () {
|
||||||
const tools = yield* Tools.Service
|
const tools = yield* Tools.Service
|
||||||
const mutation = yield* LocationMutation.Service
|
const mutation = yield* LocationMutation.Service
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import { OpenCode } from "@opencode-ai/client/effect"
|
import { OpenCode } from "@opencode-ai/client/effect"
|
||||||
|
import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
|
||||||
|
import { LayerNode } from "@opencode-ai/core/effect/layer-node"
|
||||||
import { PermissionSaved } from "@opencode-ai/core/permission/saved"
|
import { PermissionSaved } from "@opencode-ai/core/permission/saved"
|
||||||
import { ApplicationTools } from "@opencode-ai/core/tool/application-tools"
|
import { ApplicationTools } from "@opencode-ai/core/tool/application-tools"
|
||||||
import { createEmbeddedRoutes } from "@opencode-ai/server/routes"
|
import { createEmbeddedRoutes } from "@opencode-ai/server/routes"
|
||||||
@@ -9,7 +11,7 @@ export const create = Effect.fn("OpenCode.create")(function* () {
|
|||||||
const scope = yield* Scope.Scope
|
const scope = yield* Scope.Scope
|
||||||
const memoMap = yield* Layer.makeMemoMap
|
const memoMap = yield* Layer.makeMemoMap
|
||||||
const context = yield* Layer.buildWithMemoMap(
|
const context = yield* Layer.buildWithMemoMap(
|
||||||
Layer.merge(ApplicationTools.layer, PermissionSaved.defaultLayer),
|
AppNodeBuilder.build(LayerNode.group([ApplicationTools.node, PermissionSaved.node])),
|
||||||
memoMap,
|
memoMap,
|
||||||
scope,
|
scope,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user