diff --git a/nix/hashes.json b/nix/hashes.json index 0b8e34e78646..f592339c2df1 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-r1+AehuOGIOaaxfXkQGracT/6OdFRn5Ub8s7H+MeKFY=", - "aarch64-linux": "sha256-WkMSRF/ZJLyzxNBjpiMR459C9G0NVOEw31tm8roPneA=", - "aarch64-darwin": "sha256-Z127cxFpTl8Ml7PB3CG9TcCU08oYCPuk0FECK2MQ2CI=", - "x86_64-darwin": "sha256-pkRoFtnVjyl+5fm+rrFyRnEwvptxylnFxPAcEv4ZOCg=" + "x86_64-linux": "sha256-85wpU1oCWbthPleNIOj5d5AOuuYZ6rM7gMLZR6YJ2WU=", + "aarch64-linux": "sha256-C3A56SDQGJquCpIRj2JhIzr4A7N4cc9lxtEjl8bXDeM=", + "aarch64-darwin": "sha256-/Ij3qhGRrcLlMfl9uEacDNnGK5URxhctuQFBW4Njrog=", + "x86_64-darwin": "sha256-10sOPuN4eZ75orw4FI8ztCq1+AKS2e8aAfg3Z6Yn56w=" } } diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx index 1fd1c130c6d3..fb6849d72d16 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx @@ -8,7 +8,6 @@ import { createDialogProviderOptions, DialogProvider } from "./dialog-provider" import { DialogVariant } from "./dialog-variant" import { useKeybind } from "../context/keybind" import * as fuzzysort from "fuzzysort" -import { consoleManagedProviderLabel } from "@tui/util/provider-origin" export function useConnected() { const sync = useSync() @@ -47,11 +46,7 @@ export function DialogModel(props: { providerID?: string }) { key: item, value: { providerID: provider.id, modelID: model.id }, title: model.name ?? item.modelID, - description: consoleManagedProviderLabel( - sync.data.console_state.consoleManagedProviders, - provider.id, - provider.name, - ), + description: provider.name, category, disabled: provider.id === "opencode" && model.id.includes("-nano"), footer: model.cost?.input === 0 && provider.id === "opencode" ? "Free" : undefined, @@ -89,9 +84,7 @@ export function DialogModel(props: { providerID?: string }) { description: favorites.some((item) => item.providerID === provider.id && item.modelID === model) ? "(Favorite)" : undefined, - category: connected() - ? consoleManagedProviderLabel(sync.data.console_state.consoleManagedProviders, provider.id, provider.name) - : undefined, + category: connected() ? provider.name : undefined, disabled: provider.id === "opencode" && model.includes("-nano"), footer: info.cost?.input === 0 && provider.id === "opencode" ? "Free" : undefined, onSelect() { @@ -142,7 +135,7 @@ export function DialogModel(props: { providerID?: string }) { const title = createMemo(() => { const value = provider() if (!value) return "Select model" - return consoleManagedProviderLabel(sync.data.console_state.consoleManagedProviders, value.id, value.name) + return value.name }) function onSelect(providerID: string, modelID: string) { diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx index cb7abb8227ed..c0e39e0e2100 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx @@ -13,7 +13,7 @@ import { DialogModel } from "./dialog-model" import { useKeyboard } from "@opentui/solid" import { Clipboard } from "@tui/util/clipboard" import { useToast } from "../ui/toast" -import { CONSOLE_MANAGED_ICON, isConsoleManagedProvider } from "@tui/util/provider-origin" +import { isConsoleManagedProvider } from "@tui/util/provider-origin" const PROVIDER_PRIORITY: Record = { opencode: 0, @@ -49,11 +49,7 @@ export function createDialogProviderOptions() { }[provider.id], footer: consoleManaged ? sync.data.console_state.activeOrgName : undefined, category: provider.id in PROVIDER_PRIORITY ? "Popular" : "Other", - gutter: consoleManaged ? ( - {CONSOLE_MANAGED_ICON} - ) : connected ? ( - - ) : undefined, + gutter: connected ? : undefined, async onSelect() { if (consoleManaged) return diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index 045d730c9ef4..747c61fd0bf9 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -36,7 +36,6 @@ import { useToast } from "../../ui/toast" import { useKV } from "../../context/kv" import { useTextareaKeybindings } from "../textarea-keybindings" import { DialogSkill } from "../dialog-skill" -import { CONSOLE_MANAGED_ICON, consoleManagedProviderLabel } from "@tui/util/provider-origin" export type PromptProps = { sessionID?: string @@ -96,15 +95,8 @@ export function Prompt(props: PromptProps) { const list = createMemo(() => props.placeholders?.normal ?? []) const shell = createMemo(() => props.placeholders?.shell ?? []) const [auto, setAuto] = createSignal() - const activeOrgName = createMemo(() => sync.data.console_state.activeOrgName) - const canSwitchOrgs = createMemo(() => sync.data.console_state.switchableOrgCount > 1) - const currentProviderLabel = createMemo(() => { - const current = local.model.current() - const provider = local.model.parsed().provider - if (!current) return provider - return consoleManagedProviderLabel(sync.data.console_state.consoleManagedProviders, current.providerID, provider) - }) - const hasRightContent = createMemo(() => Boolean(props.right || activeOrgName())) + const currentProviderLabel = createMemo(() => local.model.parsed().provider) + const hasRightContent = createMemo(() => Boolean(props.right)) function promptModelWarning() { toast.show({ @@ -1120,17 +1112,6 @@ export function Prompt(props: PromptProps) { {props.right} - - { - if (!canSwitchOrgs()) return - command.trigger("console.org.switch") - }} - > - {`${CONSOLE_MANAGED_ICON} ${activeOrgName()}`} - - @@ -1162,7 +1143,7 @@ export function Prompt(props: PromptProps) { } /> - + }> , providerID: string) => Array.isArray(consoleManagedProviders) ? consoleManagedProviders.includes(providerID) @@ -7,14 +5,3 @@ const contains = (consoleManagedProviders: string[] | ReadonlySet, provi export const isConsoleManagedProvider = (consoleManagedProviders: string[] | ReadonlySet, providerID: string) => contains(consoleManagedProviders, providerID) - -export const consoleManagedProviderSuffix = ( - consoleManagedProviders: string[] | ReadonlySet, - providerID: string, -) => (contains(consoleManagedProviders, providerID) ? ` ${CONSOLE_MANAGED_ICON}` : "") - -export const consoleManagedProviderLabel = ( - consoleManagedProviders: string[] | ReadonlySet, - providerID: string, - providerName: string, -) => `${providerName}${consoleManagedProviderSuffix(consoleManagedProviders, providerID)}` diff --git a/packages/opencode/test/tool/registry.test.ts b/packages/opencode/test/tool/registry.test.ts index c9951ef198ce..e3a274bb211a 100644 --- a/packages/opencode/test/tool/registry.test.ts +++ b/packages/opencode/test/tool/registry.test.ts @@ -98,6 +98,37 @@ describe("tool.registry", () => { }), ) + await Bun.write( + path.join(opencodeDir, "package-lock.json"), + JSON.stringify({ + name: "custom-tools", + lockfileVersion: 3, + packages: { + "": { + dependencies: { + "@opencode-ai/plugin": "^0.0.0", + cowsay: "^1.6.0", + }, + }, + }, + }), + ) + + const cowsayDir = path.join(opencodeDir, "node_modules", "cowsay") + await fs.mkdir(cowsayDir, { recursive: true }) + await Bun.write( + path.join(cowsayDir, "package.json"), + JSON.stringify({ + name: "cowsay", + type: "module", + exports: "./index.js", + }), + ) + await Bun.write( + path.join(cowsayDir, "index.js"), + ["export function say({ text }) {", " return `moo ${text}`", "}", ""].join("\n"), + ) + await Bun.write( path.join(toolsDir, "cowsay.ts"), [ diff --git a/packages/opencode/test/tool/webfetch.test.ts b/packages/opencode/test/tool/webfetch.test.ts index c37ba3e08a25..5233f10816b5 100644 --- a/packages/opencode/test/tool/webfetch.test.ts +++ b/packages/opencode/test/tool/webfetch.test.ts @@ -147,8 +147,7 @@ describe("tool.webfetch", () => { ) expect(ids).toHaveLength(1) - expect(cleared).toHaveLength(1) - expect(cleared[0]).toBe(ids[0]) + expect(cleared).toContain(ids[0]) }) }) })