diff --git a/bun.lock b/bun.lock index 53c0b6a..acf27cf 100644 --- a/bun.lock +++ b/bun.lock @@ -3806,7 +3806,7 @@ "get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="], - "ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#513463a", {}, "anomalyco-ghostty-web-513463a"], + "ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#513463a", {}, "anomalyco-ghostty-web-513463a", "sha512-GZR8LSmgGzViWnBJrqRI8MpAZRCJxhcr1Hi9Tyeh7YRooHZQjK9J97FQRD3tbBaM2wjq05gzGY2UEsG+JtZeBw=="], "giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="], diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 35bd2e0..56f8a9a 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -434,26 +434,30 @@ const layer = Layer.effect( yield* ensureGitignore(dir).pipe(Effect.orDie) - const dep = yield* npmSvc - .install(dir, { - add: [ - { - name: "@opencode-ai/plugin", - version: InstallationLocal ? undefined : InstallationVersion, - }, - ], - }) - .pipe( - Effect.exit, - Effect.tap((exit) => - Exit.isFailure(exit) - ? Effect.logWarning("background dependency install failed", { dir, error: String(exit.cause) }) - : Effect.void, - ), - Effect.asVoid, - Effect.forkDetach, - ) - deps.push(dep) + if (Flag.OPENCODE_PURE) { + yield* Effect.logDebug("skipping background dependency install in pure mode", { dir }) + } else { + const dep = yield* npmSvc + .install(dir, { + add: [ + { + name: "@opencode-ai/plugin", + version: InstallationLocal ? undefined : InstallationVersion, + }, + ], + }) + .pipe( + Effect.exit, + Effect.tap((exit) => + Exit.isFailure(exit) + ? Effect.logWarning("background dependency install failed", { dir, error: String(exit.cause) }) + : Effect.void, + ), + Effect.asVoid, + Effect.forkDetach, + ) + deps.push(dep) + } result.command = mergeDeep(result.command ?? {}, yield* Effect.promise(() => ConfigCommand.load(dir))) result.agent = mergeDeep(result.agent ?? {}, yield* Effect.promise(() => ConfigAgent.load(dir))) diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index a99f8ac..bcc2829 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -294,13 +294,33 @@ const live: Layer.Layer< // Copilot returns the authoritative billed amount only in provider-specific response fields. includeRawChunks: input.model.providerID.includes("github-copilot"), async experimental_repairToolCall(failed) { - const lower = failed.toolCall.toolName.toLowerCase() - if (lower !== failed.toolCall.toolName && prepared.tools[lower]) { + const name = failed.toolCall.toolName + const lower = name.toLowerCase() + if (lower !== name && prepared.tools[lower]) { return { ...failed.toolCall, toolName: lower, } } + // Normalize common local-LLM / MCP naming drift before giving up. + const normalized = name + .replaceAll("findevil_mcp_", "findevil-mcp_") + .replaceAll("findevil_agent_mcp_", "findevil-agent-mcp_") + .replaceAll("findevil-mcp-agent-mcp_", "findevil-agent-mcp_") + if (normalized !== name && prepared.tools[normalized]) { + return { + ...failed.toolCall, + toolName: normalized, + } + } + if (prepared.tools[lower.replaceAll("_", "-")]) { + return { + ...failed.toolCall, + toolName: lower.replaceAll("_", "-"), + } + } + // Keep toolName "invalid" so InvalidTool can return a structured error. + // activeTools MUST include "invalid" or the SDK reports "unavailable tool 'invalid'". return { ...failed.toolCall, input: JSON.stringify({ @@ -314,7 +334,8 @@ const live: Layer.Layer< topP: prepared.params.topP, topK: prepared.params.topK, providerOptions: ProviderTransform.providerOptions(input.model, prepared.params.options), - activeTools: Object.keys(prepared.tools).filter((x) => x !== "invalid"), + // Include "invalid" so experimental_repairToolCall can execute; description says do not use. + activeTools: Object.keys(prepared.tools), tools: prepared.tools, toolChoice: input.toolChoice, maxOutputTokens: prepared.params.maxOutputTokens, diff --git a/packages/opencode/src/tool/invalid.ts b/packages/opencode/src/tool/invalid.ts index b8d145d..134233f 100644 --- a/packages/opencode/src/tool/invalid.ts +++ b/packages/opencode/src/tool/invalid.ts @@ -9,12 +9,16 @@ export const Parameters = Schema.Struct({ export const InvalidTool = Tool.define( "invalid", Effect.succeed({ - description: "Do not use", + description: + "Internal repair only — models must never choose this tool. Use exact findevil-mcp_* / findevil-agent-mcp_* names.", parameters: Parameters, execute: (params: { tool: string; error: string }) => Effect.succeed({ title: "Invalid Tool", - output: `The arguments provided to the tool are invalid: ${params.error}`, + output: + `Tool call failed for '${params.tool}': ${params.error}. ` + + `Retry with an exact available tool name (findevil-mcp_* or findevil-agent-mcp_* only). ` + + `Do not call a tool named invalid.`, metadata: {}, }), }), diff --git a/packages/storybook/debug-storybook.log b/packages/storybook/debug-storybook.log deleted file mode 100644 index e13d40c..0000000 --- a/packages/storybook/debug-storybook.log +++ /dev/null @@ -1,307 +0,0 @@ -[14:25:48.462] [INFO] storybook v10.2.10 -[14:25:48.749] [DEBUG] Getting package.json info for /Users/davidhill/Documents/Local/opencode/packages/storybook/package.json... -[14:25:48.997] [INFO] Starting... -[14:25:49.095] [DEBUG] Starting preview.. -[14:25:49.098] [WARN] 🚨 Unable to index files: -- ./../ui/src/components/accordion.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/accordion.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/app-icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/app-icon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/avatar.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/avatar.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/basic-tool.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/basic-tool.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/checkbox.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/checkbox.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/code.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/code.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/collapsible.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/collapsible.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/context-menu.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/context-menu.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/dialog.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/dialog.stories.tsx (line 10, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/diff-changes.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/diff-changes.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/diff-ssr.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/diff-ssr.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/diff.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/diff.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/dock-prompt.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/dock-prompt.stories.tsx (line 15, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/dropdown-menu.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/dropdown-menu.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/favicon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/favicon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/file-icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/file-icon.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/font.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/font.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/hover-card.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/hover-card.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/icon-button.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/icon-button.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/icon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/image-preview.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/image-preview.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/inline-input.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/inline-input.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/keybind.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/keybind.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/line-comment.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/line-comment.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/list.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/list.stories.tsx (line 15, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/logo.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/logo.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/markdown.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/markdown.stories.tsx (line 12, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/message-nav.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/message-nav.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/message-part.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/message-part.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/popover.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/popover.stories.tsx (line 16, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/progress-circle.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/progress-circle.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/progress.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/progress.stories.tsx (line 15, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/provider-icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/provider-icon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/radio-group.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/radio-group.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/resize-handle.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/resize-handle.stories.tsx (line 17, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/select.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/select.stories.tsx (line 16, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/session-review.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/session-review.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/session-turn.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/session-turn.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/spinner.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/spinner.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/sticky-accordion-header.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/sticky-accordion-header.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/switch.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/switch.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/tabs.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/tabs.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/tag.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/tag.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/text-field.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/text-field.stories.tsx (line 14, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/text-shimmer.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/text-shimmer.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/toast.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/toast.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/tooltip.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/tooltip.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/typewriter.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/typewriter.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -[14:25:49.109] [ERROR] Failed to build the preview -[14:25:49.110] [ERROR] Error: Unable to index files: -- ./../ui/src/components/accordion.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/accordion.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/app-icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/app-icon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/avatar.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/avatar.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/basic-tool.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/basic-tool.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/checkbox.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/checkbox.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/code.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/code.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/collapsible.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/collapsible.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/context-menu.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/context-menu.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/dialog.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/dialog.stories.tsx (line 10, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/diff-changes.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/diff-changes.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/diff-ssr.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/diff-ssr.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/diff.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/diff.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/dock-prompt.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/dock-prompt.stories.tsx (line 15, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/dropdown-menu.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/dropdown-menu.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/favicon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/favicon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/file-icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/file-icon.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/font.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/font.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/hover-card.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/hover-card.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/icon-button.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/icon-button.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/icon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/image-preview.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/image-preview.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/inline-input.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/inline-input.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/keybind.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/keybind.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/line-comment.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/line-comment.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/list.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/list.stories.tsx (line 15, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/logo.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/logo.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/markdown.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/markdown.stories.tsx (line 12, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/message-nav.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/message-nav.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/message-part.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/message-part.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/popover.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/popover.stories.tsx (line 16, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/progress-circle.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/progress-circle.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/progress.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/progress.stories.tsx (line 15, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/provider-icon.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/provider-icon.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/radio-group.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/radio-group.stories.tsx (line 13, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/resize-handle.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/resize-handle.stories.tsx (line 17, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/select.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/select.stories.tsx (line 16, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/session-review.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/session-review.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/session-turn.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/session-turn.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/spinner.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/spinner.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/sticky-accordion-header.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/sticky-accordion-header.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/switch.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/switch.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/tabs.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/tabs.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/tag.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/tag.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/text-field.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/text-field.stories.tsx (line 14, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/text-shimmer.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/text-shimmer.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/toast.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/toast.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/tooltip.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/tooltip.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export -- ./../ui/src/components/typewriter.stories.tsx: CSF: default export must be an object /Users/davidhill/Documents/Local/opencode/packages/ui/src/components/typewriter.stories.tsx (line 6, col 0) - -More info: https://storybook.js.org/docs/writing-stories?ref=error#default-export - at _StoryIndexGenerator.getIndexAndStats (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/core-server/index.js:6085:15) - at async _StoryIndexGenerator.getIndex (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/core-server/index.js:6074:13) - at async getOptimizeDeps (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/@storybook+builder-vite@10.2.10+a2a25316dbcddd7f/node_modules/@storybook/builder-vite/dist/index.js:1862:15) - at async createViteServer (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/@storybook+builder-vite@10.2.10+a2a25316dbcddd7f/node_modules/@storybook/builder-vite/dist/index.js:1888:19) - at async Module.start (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/@storybook+builder-vite@10.2.10+a2a25316dbcddd7f/node_modules/@storybook/builder-vite/dist/index.js:1923:17) - at async storybookDevServer (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/core-server/index.js:7241:83) - at async buildOrThrow (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/core-server/index.js:4504:12) - at async buildDevStandalone (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/core-server/index.js:7611:66) - at async withTelemetry (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/_node-chunks/chunk-S3MWHNYJ.js:218:12) - at async dev (file:///Users/davidhill/Documents/Local/opencode/node_modules/.bun/storybook@10.2.10+4edd68b244e756bb/node_modules/storybook/dist/bin/core.js:2734:3) -[14:25:49.118] [WARN] Broken build, fix the error above. -You may need to refresh the browser. \ No newline at end of file diff --git a/packages/tui/src/feature-plugins/home/tips-view.tsx b/packages/tui/src/feature-plugins/home/tips-view.tsx index 8c5ca71..8a7e21b 100644 --- a/packages/tui/src/feature-plugins/home/tips-view.tsx +++ b/packages/tui/src/feature-plugins/home/tips-view.tsx @@ -234,19 +234,19 @@ const TIPS: Tip[] = [ "Add {highlight}.ts{/highlight} files to {highlight}.opencode/plugins/{/highlight} for event hooks", "Use plugins to send OS notifications when sessions complete", "Create a plugin to prevent VERDICT from reading sensitive files", - "Use {highlight}opencode run{/highlight} for non-interactive scripting", - "Use {highlight}opencode --continue{/highlight} to resume the last session", - "Use {highlight}opencode run -f file.ts{/highlight} to attach files via CLI", + "Use {highlight}verdict run{/highlight} for non-interactive scripting", + "Use {highlight}verdict --continue{/highlight} to resume the last session", + "Use {highlight}verdict run -f file.ts{/highlight} to attach files via CLI", "Use {highlight}--format json{/highlight} for machine-readable output in scripts", - "Run {highlight}opencode serve{/highlight} for headless API access to VERDICT", - "Use {highlight}opencode run --attach{/highlight} to connect to a running server", - "Run {highlight}opencode upgrade{/highlight} to update to the latest version", - "Run {highlight}opencode auth list{/highlight} to see all configured providers", - "Run {highlight}opencode agent create{/highlight} for guided agent creation", - "Use {highlight}/opencode{/highlight} in GitHub issues/PRs to trigger AI actions", - "Run {highlight}opencode github install{/highlight} to set up the GitHub workflow", - "Comment {highlight}/opencode fix this{/highlight} on issues to auto-create PRs", - "Comment {highlight}/oc{/highlight} on PR code lines for targeted code reviews", + "Run {highlight}verdict serve{/highlight} for headless API access to VERDICT", + "Use {highlight}verdict run --attach{/highlight} to connect to a running server", + "Run {highlight}verdict upgrade{/highlight} to update to the latest version", + "Run {highlight}verdict auth list{/highlight} to see all configured providers", + "Run {highlight}verdict agent create{/highlight} for guided agent creation", + "Use {highlight}/evtx{/highlight} to examine Windows Event Logs with FindEvil", + "Use {highlight}/triage{/highlight} to collect an initial DFIR summary", + "Use {highlight}/status{/highlight} before a case to confirm MCP tools are connected", + "Keep evidence paths absolute when working through a remote desktop session", 'Use {highlight}"theme": "system"{/highlight} to match your terminal\'s colors', "Create JSON theme files in {highlight}.opencode/themes/{/highlight} directory", "Themes support dark/light variants for both modes", @@ -264,7 +264,7 @@ const TIPS: Tip[] = [ "Run {highlight}/unshare{/highlight} to remove a session from public access", "Permission {highlight}doom_loop{/highlight} prevents infinite tool call loops", "Permission {highlight}external_directory{/highlight} protects files outside project", - "Run {highlight}opencode debug config{/highlight} to troubleshoot configuration", + "Run {highlight}verdict debug config{/highlight} to troubleshoot configuration", "Use {highlight}--print-logs{/highlight} flag to see detailed logs in stderr", (shortcuts) => `Use ${commandText("/timeline", shortcuts.sessionTimeline())} to jump to specific messages`, (shortcuts) => press(shortcuts.messagesToggleConceal(), "to toggle code block visibility in messages"), @@ -274,8 +274,8 @@ const TIPS: Tip[] = [ shortcuts.commandList() ? `Toggle username display in chat via the command palette (${shortcutText(shortcuts.commandList())})` : "Toggle username display in chat via the command palette", - "Run {highlight}docker run -it --rm ghcr.io/anomalyco/opencode{/highlight} for containerized use", - "Use {highlight}/connect{/highlight} with OpenCode Zen for curated, tested models", + "Run {highlight}verdict doctor{/highlight} to verify local model and MCP readiness", + "Use {highlight}/status{/highlight} to confirm VERDICT Local before evidence triage", "Commit your project's {highlight}AGENTS.md{/highlight} file to Git for team sharing", "Use {highlight}/review{/highlight} to review uncommitted changes, branches, or PRs", (shortcuts) => `Use ${commandText("/help", shortcuts.helpShow())} to show the help dialog`, diff --git a/packages/tui/src/feature-plugins/sidebar/footer.tsx b/packages/tui/src/feature-plugins/sidebar/footer.tsx index 284b57b..2d4ff98 100644 --- a/packages/tui/src/feature-plugins/sidebar/footer.tsx +++ b/packages/tui/src/feature-plugins/sidebar/footer.tsx @@ -69,10 +69,7 @@ function View(props: { api: TuiPluginApi; sessionID: string }) { {path().name} - Open - - Code - {" "} + VERDICT{" "} {props.api.app.version} diff --git a/packages/tui/src/routes/session/sidebar.tsx b/packages/tui/src/routes/session/sidebar.tsx index 0c5d2b3..29a07c2 100644 --- a/packages/tui/src/routes/session/sidebar.tsx +++ b/packages/tui/src/routes/session/sidebar.tsx @@ -89,10 +89,7 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) { - Open - - Code - {" "} + VERDICT{" "} {InstallationVersion} diff --git a/packages/tui/src/util/presentation.ts b/packages/tui/src/util/presentation.ts index cf432bf..dcb2521 100644 --- a/packages/tui/src/util/presentation.ts +++ b/packages/tui/src/util/presentation.ts @@ -32,7 +32,7 @@ export function sessionEpilogue(input: { title: string; sessionID?: string }) { ...wordmark(" "), "", ` ${weak("Session")}${bold}${input.title}${reset}`, - ` ${weak("Continue")}${bold}opencode -s ${input.sessionID}${reset}`, + ` ${weak("Continue")}${bold}verdict -s ${input.sessionID}${reset}`, "", ].join("\n") }