From 8dfdd3927ea7142395088bac1187b1cfc6e56602 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 5 Jun 2025 12:06:21 -0400 Subject: [PATCH] sync --- .../opencode/src/cli/cmd/login-anthropic.ts | 2 +- packages/opencode/src/cli/cmd/run.ts | 76 ++++++------------- packages/opencode/src/provider/provider.ts | 2 +- packages/opencode/src/tool/todo.ts | 2 +- 4 files changed, 26 insertions(+), 56 deletions(-) diff --git a/packages/opencode/src/cli/cmd/login-anthropic.ts b/packages/opencode/src/cli/cmd/login-anthropic.ts index 12291fbe..57533c5f 100644 --- a/packages/opencode/src/cli/cmd/login-anthropic.ts +++ b/packages/opencode/src/cli/cmd/login-anthropic.ts @@ -3,7 +3,7 @@ import { UI } from "../ui" // Example: https://claude.ai/oauth/authorize?code=true&client_id=9d1c250a-e61b-44d9-88ed-5944d1962f5e&response_type=code&redirect_uri=https%3A%2F%2Fconsole.anthropic.com%2Foauth%2Fcode%2Fcallback&scope=org%3Acreate_api_key+user%3Aprofile+user%3Ainference&code_challenge=MdFtFgFap23AWDSN0oa3-eaKjQRFE4CaEhXx8M9fHZg&code_challenge_method=S256&state=rKLtaDzm88GSwekyEqdi0wXX-YqIr13tSzYymSzpvfs -import { generatePKCE } from "@openauthjs/openauth/pkce" + export const LoginAnthropicCommand = { command: "anthropic", diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index c28ae430..e5ce3784 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -6,6 +6,7 @@ import { Provider } from "../../provider/provider" import { Session } from "../../session" import { Share } from "../../share/share" import { Message } from "../../session/message" +import { UI } from "../ui" export const RunCommand = { command: "run [message..]", @@ -31,52 +32,25 @@ export const RunCommand = { ? await Session.get(args.session) : await Session.create() - const styles = { - TEXT_HIGHLIGHT: "\x1b[96m", - TEXT_HIGHLIGHT_BOLD: "\x1b[96m\x1b[1m", - TEXT_DIM: "\x1b[90m", - TEXT_DIM_BOLD: "\x1b[90m\x1b[1m", - TEXT_NORMAL: "\x1b[0m", - TEXT_NORMAL_BOLD: "\x1b[1m", - TEXT_WARNING: "\x1b[93m", - TEXT_WARNING_BOLD: "\x1b[93m\x1b[1m", - TEXT_DANGER: "\x1b[91m", - TEXT_DANGER_BOLD: "\x1b[91m\x1b[1m", - TEXT_SUCCESS: "\x1b[92m", - TEXT_SUCCESS_BOLD: "\x1b[92m\x1b[1m", - TEXT_INFO: "\x1b[94m", - TEXT_INFO_BOLD: "\x1b[94m\x1b[1m", - } - let isEmpty = false - function stderr(...message: string[]) { - isEmpty = true - Bun.stderr.write(message.join(" ")) - Bun.stderr.write("\n") - } - function empty() { - stderr("" + styles.TEXT_NORMAL) - isEmpty = true - } - - stderr(styles.TEXT_HIGHLIGHT_BOLD + "◍ OpenCode", version) - empty() - stderr(styles.TEXT_NORMAL_BOLD + "> ", message) - empty() - stderr( - styles.TEXT_INFO_BOLD + + UI.print(UI.Style.TEXT_HIGHLIGHT_BOLD + "◍ OpenCode", version) + UI.empty() + UI.print(UI.Style.TEXT_NORMAL_BOLD + "> ", message) + UI.empty() + UI.print( + UI.Style.TEXT_INFO_BOLD + "~ https://dev.opencode.ai/s?id=" + session.id.slice(-8), ) - empty() + UI.empty() function printEvent(color: string, type: string, title: string) { - stderr( + UI.print( color + `|`, - styles.TEXT_NORMAL + styles.TEXT_DIM + ` ${type.padEnd(7, " ")}`, + UI.Style.TEXT_NORMAL + UI.Style.TEXT_DIM + ` ${type.padEnd(7, " ")}`, "", - styles.TEXT_NORMAL + title, + UI.Style.TEXT_NORMAL + title, ) } @@ -87,25 +61,21 @@ export const RunCommand = { part.toolInvocation.state === "result" ) { if (part.toolInvocation.toolName === "opencode_todowrite") return - const messages = await Session.messages(session.id) - const metadata = - messages[messages.length - 1].metadata.tool[ - part.toolInvocation.toolCallId - ] + const args = part.toolInvocation.args as any const tool = part.toolInvocation.toolName if (tool === "opencode_edit") - printEvent(styles.TEXT_SUCCESS_BOLD, "Edit", args.filePath) + printEvent(UI.Style.TEXT_SUCCESS_BOLD, "Edit", args.filePath) if (tool === "opencode_bash") - printEvent(styles.TEXT_WARNING_BOLD, "Execute", args.command) + printEvent(UI.Style.TEXT_WARNING_BOLD, "Execute", args.command) if (tool === "opencode_read") - printEvent(styles.TEXT_INFO_BOLD, "Read", args.filePath) + printEvent(UI.Style.TEXT_INFO_BOLD, "Read", args.filePath) if (tool === "opencode_write") - printEvent(styles.TEXT_SUCCESS_BOLD, "Create", args.filePath) + printEvent(UI.Style.TEXT_SUCCESS_BOLD, "Create", args.filePath) if (tool === "opencode_glob") printEvent( - styles.TEXT_INFO_BOLD, + UI.Style.TEXT_INFO_BOLD, "Glob", args.pattern + (args.path ? " in " + args.path : ""), ) @@ -113,17 +83,17 @@ export const RunCommand = { if (part.type === "text") { if (part.text.includes("\n")) { - empty() - stderr(part.text) - empty() + UI.empty() + UI.print(part.text) + UI.empty() return } - printEvent(styles.TEXT_NORMAL_BOLD, "Text", part.text) + printEvent(UI.Style.TEXT_NORMAL_BOLD, "Text", part.text) } }) const { providerID, modelID } = await Provider.defaultModel() - const result = await Session.chat({ + await Session.chat({ sessionID: session.id, providerID, modelID, @@ -134,7 +104,7 @@ export const RunCommand = { }, ], }) - empty() + UI.empty() }) }, } diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 6c2b34e1..9c79825a 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -18,7 +18,7 @@ import { LspHoverTool } from "../tool/lsp-hover" import { PatchTool } from "../tool/patch" import { ReadTool } from "../tool/read" import type { Tool } from "../tool/tool" -import { MultiEditTool } from "../tool/multiedit" + import { WriteTool } from "../tool/write" import { TodoReadTool, TodoWriteTool } from "../tool/todo" import { AuthAnthropic } from "../auth/anthropic" diff --git a/packages/opencode/src/tool/todo.ts b/packages/opencode/src/tool/todo.ts index 058dbd62..188a344c 100644 --- a/packages/opencode/src/tool/todo.ts +++ b/packages/opencode/src/tool/todo.ts @@ -44,7 +44,7 @@ export const TodoReadTool = Tool.define({ id: "opencode.todoread", description: "Use this tool to read your todo list", parameters: z.object({}), - async execute(params, opts) { + async execute(_params, opts) { const todos = state()[opts.sessionID] ?? [] return { metadata: {