25 lines
982 B
TypeScript
25 lines
982 B
TypeScript
import { EOL } from "os"
|
|
import { Effect } from "effect"
|
|
import { OpenCode } from "@opencode-ai/client"
|
|
import { Commands } from "../../commands"
|
|
import { Runtime } from "../../../framework/runtime"
|
|
import { Service } from "@opencode-ai/client/effect"
|
|
import { ServiceConfig } from "../../../services/service-config"
|
|
|
|
export default Runtime.handler(
|
|
Commands.commands.debug.commands.agents,
|
|
Effect.fn("cli.debug.agents")(function* () {
|
|
const options = yield* ServiceConfig.options()
|
|
const found = yield* Service.discover(options)
|
|
const endpoint = found ?? (yield* Service.start(options))
|
|
const client = OpenCode.make({ baseUrl: endpoint.url, headers: Service.headers(endpoint) })
|
|
const response = yield* Effect.promise(() => client.agent.list({ location: { directory: process.cwd() } }))
|
|
process.stdout.write(
|
|
JSON.stringify(
|
|
response.data.toSorted((a, b) => a.id.localeCompare(b.id)),
|
|
null,
|
|
2,
|
|
) + EOL,
|
|
)
|
|
}),
|
|
)
|