| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/usr/bin/env bun
- import * as NodeRuntime from "@effect/platform-node/NodeRuntime"
- import * as NodeServices from "@effect/platform-node/NodeServices"
- import { AccountV2 } from "@opencode-ai/core/account"
- import { AgentV2 } from "@opencode-ai/core/agent"
- import { Catalog } from "@opencode-ai/core/catalog"
- import { Config } from "@opencode-ai/core/config"
- import { EventV2 } from "@opencode-ai/core/event"
- import { Location } from "@opencode-ai/core/location"
- import { Npm } from "@opencode-ai/core/npm"
- import { PluginV2 } from "@opencode-ai/core/plugin"
- import { PluginBoot } from "@opencode-ai/core/plugin/boot"
- import { Policy } from "@opencode-ai/core/policy"
- import { AbsolutePath } from "@opencode-ai/core/schema"
- import * as Effect from "effect/Effect"
- import * as Layer from "effect/Layer"
- import * as Command from "effect/unstable/cli/Command"
- import { DebugCommand } from "./debug"
- const cli = Command.make("opencode", {}, () => Effect.void).pipe(
- Command.withDescription("OpenCode command line interface"),
- Command.withSubcommands([DebugCommand]),
- )
- const locationLayer = Location.defaultLayer({
- directory: AbsolutePath.make(process.cwd()),
- })
- const policyLayer = Policy.defaultLayer.pipe(Layer.provideMerge(locationLayer))
- const pluginLayer = PluginV2.defaultLayer
- const eventLayer = EventV2.defaultLayer
- const layer = PluginBoot.layer.pipe(
- Layer.provideMerge(
- Layer.mergeAll(
- NodeServices.layer,
- Catalog.layer.pipe(Layer.provideMerge(Layer.mergeAll(eventLayer, pluginLayer, policyLayer))),
- eventLayer,
- pluginLayer,
- AccountV2.defaultLayer,
- AgentV2.defaultLayer,
- Config.defaultLayer.pipe(Layer.provideMerge(policyLayer)),
- Npm.defaultLayer,
- ),
- ),
- )
- Command.run(cli, { version: "local" }).pipe(Effect.provide(layer), Effect.scoped, NodeRuntime.runMain)
|