From 7053c58d35293aaec07d2302ce6a99d2b13e6940 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Sat, 21 Mar 2026 19:54:09 -0400 Subject: [PATCH] fix(command): resolve rebase artifacts --- packages/opencode/src/command/index.ts | 179 +------------------------ 1 file changed, 4 insertions(+), 175 deletions(-) diff --git a/packages/opencode/src/command/index.ts b/packages/opencode/src/command/index.ts index 2f2f73f51b..5d46a08e8d 100644 --- a/packages/opencode/src/command/index.ts +++ b/packages/opencode/src/command/index.ts @@ -2,17 +2,16 @@ import { BusEvent } from "@/bus/bus-event" import { InstanceState } from "@/effect/instance-state" import { makeRunPromise } from "@/effect/run-service" import { SessionID, MessageID } from "@/session/schema" -import { Effect, Fiber, Layer, ServiceMap } from "effect" +import { Effect, Layer, ServiceMap } from "effect" import z from "zod" import { Config } from "../config/config" -import PROMPT_INITIALIZE from "./template/initialize.txt" -import PROMPT_REVIEW from "./template/review.txt" import { MCP } from "../mcp" import { Skill } from "../skill" import { Log } from "../util/log" +import PROMPT_INITIALIZE from "./template/initialize.txt" +import PROMPT_REVIEW from "./template/review.txt" export namespace Command { -<<<<<<< HEAD const log = Log.create({ service: "command" }) type State = { @@ -20,10 +19,6 @@ export namespace Command { ensure: () => Promise } -||||||| parent of b53a95fd8 (log errors in catchCause instead of silently swallowing) -======= - const log = Log.create({ service: "command" }) ->>>>>>> b53a95fd8 (log errors in catchCause instead of silently swallowing) export const Event = { Executed: BusEvent.define( "command.executed", @@ -53,7 +48,7 @@ export namespace Command { export type Info = Omit, "template"> & { template: Promise | string } - export function hints(template: string): string[] { + export function hints(template: string) { const result: string[] = [] const numbered = template.match(/\$\d+/g) if (numbered) { @@ -83,17 +78,9 @@ export namespace Command { const commands: Record = {} let task: Promise | undefined -<<<<<<< HEAD async function load() { const cfg = await Config.get() -||||||| parent of 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - const commands = yield* Effect.promise(async () => { - const cfg = await Config.get() -======= - const commands: Record = {} ->>>>>>> 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) -<<<<<<< HEAD commands[Default.INIT] = { name: Default.INIT, description: "create/update AGENTS.md", @@ -166,68 +153,8 @@ export namespace Command { hints: [], } } -||||||| parent of 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - const result: Record = { - [Default.INIT]: { - name: Default.INIT, - description: "create/update AGENTS.md", - source: "command", - get template() { - return PROMPT_INITIALIZE.replace("${path}", instance.worktree) - }, - hints: hints(PROMPT_INITIALIZE), - }, - [Default.REVIEW]: { - name: Default.REVIEW, - description: "review changes [commit|branch|pr], defaults to uncommitted", - source: "command", - get template() { - return PROMPT_REVIEW.replace("${path}", instance.worktree) - }, - subtask: true, - hints: hints(PROMPT_REVIEW), - }, - } - - for (const [name, command] of Object.entries(cfg.command ?? {})) { - result[name] = { - name, - agent: command.agent, - model: command.model, - description: command.description, - source: "command", - get template() { - return command.template - }, - subtask: command.subtask, - hints: hints(command.template), -======= - const load = Effect.fn("Command.load")(function* () { - yield* Effect.promise(async () => { - const cfg = await Config.get() - - commands[Default.INIT] = { - name: Default.INIT, - description: "create/update AGENTS.md", - source: "command", - get template() { - return PROMPT_INITIALIZE.replace("${path}", instance.worktree) - }, - hints: hints(PROMPT_INITIALIZE), - } - commands[Default.REVIEW] = { - name: Default.REVIEW, - description: "review changes [commit|branch|pr], defaults to uncommitted", - source: "command", - get template() { - return PROMPT_REVIEW.replace("${path}", instance.worktree) - }, - subtask: true, - hints: hints(PROMPT_REVIEW), ->>>>>>> 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) } -<<<<<<< HEAD return { commands, ensure: () => { @@ -239,118 +166,20 @@ export namespace Command { ) return task }, -||||||| parent of 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - // Add skills as invokable commands - for (const skill of await Skill.all()) { - // Skip if a command with this name already exists - if (result[skill.name]) continue - result[skill.name] = { - name: skill.name, - description: skill.description, - source: "skill", - get template() { - return skill.content - }, - hints: [], -======= - for (const [name, command] of Object.entries(cfg.command ?? {})) { - commands[name] = { - name, - agent: command.agent, - model: command.model, - description: command.description, - source: "command", - get template() { - return command.template - }, - subtask: command.subtask, - hints: hints(command.template), - } } - for (const [name, prompt] of Object.entries(await MCP.prompts())) { - commands[name] = { - name, - source: "mcp", - description: prompt.description, - get template() { - // since a getter can't be async we need to manually return a promise here - return new Promise(async (resolve, reject) => { - const template = await MCP.getPrompt( - prompt.client, - prompt.name, - prompt.arguments - ? // substitute each argument with $1, $2, etc. - Object.fromEntries(prompt.arguments?.map((argument, i) => [argument.name, `$${i + 1}`])) - : {}, - ).catch(reject) - resolve( - template?.messages - .map((message) => (message.content.type === "text" ? message.content.text : "")) - .join("\n") || "", - ) - }) - }, - hints: prompt.arguments?.map((_, i) => `$${i + 1}`) ?? [], - } ->>>>>>> 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - } -<<<<<<< HEAD }), ) -||||||| parent of 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - } - - return result - }) -======= - - // Add skills as invokable commands - for (const skill of await Skill.all()) { - // Skip if a command with this name already exists - if (commands[skill.name]) continue - commands[skill.name] = { - name: skill.name, - description: skill.description, - source: "skill", - get template() { - return skill.content - }, - hints: [], - } - } - }) - }) ->>>>>>> 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - - const loadFiber = yield* load().pipe( - Effect.catchCause((cause) => Effect.sync(() => log.error("init failed", { cause }))), - Effect.forkScoped, - ) const get = Effect.fn("Command.get")(function* (name: string) { -<<<<<<< HEAD const state = yield* InstanceState.get(cache) yield* Effect.promise(() => state.ensure()) return state.commands[name] -||||||| parent of 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - return commands[name] -======= - yield* Fiber.join(loadFiber) - return commands[name] ->>>>>>> 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) }) const list = Effect.fn("Command.list")(function* () { -<<<<<<< HEAD const state = yield* InstanceState.get(cache) yield* Effect.promise(() => state.ensure()) return Object.values(state.commands) -||||||| parent of 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) - return Object.values(commands) -======= - yield* Fiber.join(loadFiber) - return Object.values(commands) ->>>>>>> 8e11a46fe (use forkScoped + Fiber.join for lazy init (match old Instance.state behavior)) }) return Service.of({ get, list })