8c94e9005f
Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Affan Ali <93028901+affanali2k3@users.noreply.github.com> Co-authored-by: affanali2k3 <affanalikhanxx@gmail.com> Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: 𝓛𝓲𝓽𝓽𝓵𝓮 𝓕𝓻𝓪𝓷𝓴 <little-frank@opencord.local> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: Jay V <air@live.ca> Co-authored-by: Dax Raad <d@ironbay.co> Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com> Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: Ben Guthrie <benjee.012@gmail.com> Co-authored-by: Dax <mail@thdxr.com> Co-authored-by: Filip <34747899+neriousy@users.noreply.github.com> Co-authored-by: Max Anderson <max.a.anderson95@gmail.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: Jack <jack@anoma.ly> Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: starptech <starptech@starptechs-MBP.fritz.box> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com> Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: runvip <164729189+runvip@users.noreply.github.com> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Julian Coy <julian@ex-machina.co> Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com>
62 lines
2.7 KiB
TypeScript
Executable File
62 lines
2.7 KiB
TypeScript
Executable File
#!/usr/bin/env bun
|
|
|
|
import * as NodeRuntime from "@effect/platform-node/NodeRuntime"
|
|
import * as NodeServices from "@effect/platform-node/NodeServices"
|
|
import { NodeFileSystem } from "@effect/platform-node"
|
|
import * as Effect from "effect/Effect"
|
|
import { Layer, Logger, References } from "effect"
|
|
import { Commands } from "./commands/commands"
|
|
import { Runtime } from "./framework/runtime"
|
|
import { Daemon } from "./services/daemon"
|
|
import { Logging } from "@opencode-ai/core/observability/logging"
|
|
import { Updater } from "./services/updater"
|
|
import { InstallationChannel, InstallationVersion, InstallationLocal } from "@opencode-ai/core/installation/version"
|
|
import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
|
|
import { LayerNode } from "@opencode-ai/core/effect/layer-node"
|
|
import { Global } from "@opencode-ai/core/global"
|
|
import { AppProcess } from "@opencode-ai/core/process"
|
|
|
|
const LoggingLayer = Logger.layer(Logging.loggers(), { mergeWithExisting: false }).pipe(
|
|
Layer.provide(NodeFileSystem.layer),
|
|
Layer.orDie,
|
|
Layer.merge(Layer.succeed(References.MinimumLogLevel, Logging.minimumLogLevel())),
|
|
)
|
|
|
|
const Handlers = Runtime.handlers(Commands, {
|
|
$: () => import("./commands/handlers/default"),
|
|
api: () => import("./commands/handlers/api"),
|
|
debug: {
|
|
agents: () => import("./commands/handlers/debug/agents"),
|
|
},
|
|
mcp: {
|
|
list: () => import("./commands/handlers/mcp/list"),
|
|
add: () => import("./commands/handlers/mcp/add"),
|
|
auth: () => import("./commands/handlers/mcp/auth"),
|
|
logout: () => import("./commands/handlers/mcp/logout"),
|
|
},
|
|
migrate: () => import("./commands/handlers/migrate"),
|
|
service: {
|
|
start: () => import("./commands/handlers/service/start"),
|
|
restart: () => import("./commands/handlers/service/restart"),
|
|
status: () => import("./commands/handlers/service/status"),
|
|
stop: () => import("./commands/handlers/service/stop"),
|
|
get: () => import("./commands/handlers/service/get"),
|
|
set: () => import("./commands/handlers/service/set"),
|
|
unset: () => import("./commands/handlers/service/unset"),
|
|
},
|
|
serve: () => import("./commands/handlers/serve"),
|
|
})
|
|
|
|
Effect.logInfo("cli starting", { version: InstallationVersion, channel: InstallationChannel, local: InstallationLocal }).pipe(
|
|
Effect.flatMap(() => Runtime.run(Commands, Handlers, { version: InstallationVersion })),
|
|
Effect.annotateLogs({ role: "cli" }),
|
|
Effect.provide(Daemon.layer),
|
|
Effect.provide(Updater.layer),
|
|
Effect.provide(AppNodeBuilder.build(LayerNode.group([Global.node, AppProcess.node]))),
|
|
Effect.provide(LoggingLayer),
|
|
Effect.provide(NodeServices.layer),
|
|
Effect.scoped,
|
|
Effect.tap(() => Effect.sync(() => process.exit(0))),
|
|
NodeRuntime.runMain,
|
|
)
|