diff --git a/opencode.json b/opencode.json index 59748f92..57b94008 100644 --- a/opencode.json +++ b/opencode.json @@ -3,7 +3,11 @@ "experimental": { "hook": { "file_edited": { - ".json": [] + ".json": [ + { + "command": ["bun", "run", "prettier", "$FILE"] + } + ] }, "session_completed": [ { diff --git a/packages/function/sst-env.d.ts b/packages/function/sst-env.d.ts index 78b7056c..fd95edbb 100644 --- a/packages/function/sst-env.d.ts +++ b/packages/function/sst-env.d.ts @@ -6,20 +6,20 @@ import "sst" declare module "sst" { export interface Resource { - "Web": { - "type": "sst.cloudflare.Astro" - "url": string + Web: { + type: "sst.cloudflare.Astro" + url: string } } } -// cloudflare -import * as cloudflare from "@cloudflare/workers-types"; +// cloudflare +import * as cloudflare from "@cloudflare/workers-types" declare module "sst" { export interface Resource { - "Api": cloudflare.Service - "Bucket": cloudflare.R2Bucket + Api: cloudflare.Service + Bucket: cloudflare.R2Bucket } } import "sst" -export {} \ No newline at end of file +export {} diff --git a/packages/opencode/config.schema.json b/packages/opencode/config.schema.json index 98fadb65..813b1225 100644 --- a/packages/opencode/config.schema.json +++ b/packages/opencode/config.schema.json @@ -202,10 +202,7 @@ "type": "number" } }, - "required": [ - "input", - "output" - ], + "required": ["input", "output"], "additionalProperties": false }, "limit": { @@ -218,10 +215,7 @@ "type": "number" } }, - "required": [ - "context", - "output" - ], + "required": ["context", "output"], "additionalProperties": false }, "id": { @@ -240,9 +234,7 @@ "additionalProperties": {} } }, - "required": [ - "models" - ], + "required": ["models"], "additionalProperties": false }, "description": "Custom provider configurations and model overrides" @@ -274,10 +266,7 @@ "description": "Environment variables to set when running the MCP server" } }, - "required": [ - "type", - "command" - ], + "required": ["type", "command"], "additionalProperties": false }, { @@ -293,10 +282,7 @@ "description": "URL of the remote MCP server" } }, - "required": [ - "type", - "url" - ], + "required": ["type", "url"], "additionalProperties": false } ] @@ -329,9 +315,7 @@ } } }, - "required": [ - "command" - ], + "required": ["command"], "additionalProperties": false } } @@ -354,9 +338,7 @@ } } }, - "required": [ - "command" - ], + "required": ["command"], "additionalProperties": false } } @@ -369,4 +351,4 @@ }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" -} \ No newline at end of file +} diff --git a/packages/opencode/src/app/app.ts b/packages/opencode/src/app/app.ts index 873554d9..b60702f9 100644 --- a/packages/opencode/src/app/app.ts +++ b/packages/opencode/src/app/app.ts @@ -142,4 +142,3 @@ export namespace App { .replace(/[^A-Za-z0-9_]/g, "-") } } - diff --git a/packages/opencode/src/cli/cmd/auth.ts b/packages/opencode/src/cli/cmd/auth.ts index 05314d69..9e8da95b 100644 --- a/packages/opencode/src/cli/cmd/auth.ts +++ b/packages/opencode/src/cli/cmd/auth.ts @@ -31,7 +31,7 @@ export const AuthListCommand = cmd({ UI.empty() const authPath = path.join(Global.Path.data, "auth.json") const homedir = os.homedir() - const displayPath = authPath.startsWith(homedir) + const displayPath = authPath.startsWith(homedir) ? authPath.replace(homedir, "~") : authPath prompts.intro(`Credentials ${UI.Style.TEXT_DIM}${displayPath}`) @@ -46,14 +46,14 @@ export const AuthListCommand = cmd({ prompts.outro(`${results.length} credentials`) // Environment variables section - const activeEnvVars: Array<{ provider: string, envVar: string }> = [] - + const activeEnvVars: Array<{ provider: string; envVar: string }> = [] + for (const [providerID, provider] of Object.entries(database)) { for (const envVar of provider.env) { if (process.env[envVar]) { - activeEnvVars.push({ - provider: provider.name || providerID, - envVar + activeEnvVars.push({ + provider: provider.name || providerID, + envVar, }) } } @@ -62,11 +62,11 @@ export const AuthListCommand = cmd({ if (activeEnvVars.length > 0) { UI.empty() prompts.intro("Environment") - + for (const { provider, envVar } of activeEnvVars) { prompts.log.info(`${provider} ${UI.Style.TEXT_DIM}${envVar}`) } - + prompts.outro(`${activeEnvVars.length} environment variables`) } }, diff --git a/packages/opencode/src/cli/cmd/models.ts b/packages/opencode/src/cli/cmd/models.ts index 9380cec8..e385a310 100644 --- a/packages/opencode/src/cli/cmd/models.ts +++ b/packages/opencode/src/cli/cmd/models.ts @@ -8,7 +8,7 @@ export const ModelsCommand = cmd({ handler: async () => { await App.provide({ cwd: process.cwd() }, async () => { const providers = await Provider.list() - + for (const [providerID, provider] of Object.entries(providers)) { for (const modelID of Object.keys(provider.info.models)) { console.log(`${providerID}/${modelID}`) @@ -16,4 +16,4 @@ export const ModelsCommand = cmd({ } }) }, -}) \ No newline at end of file +}) diff --git a/packages/opencode/src/cli/cmd/scrap.ts b/packages/opencode/src/cli/cmd/scrap.ts index 03b69d4e..20b0f52a 100644 --- a/packages/opencode/src/cli/cmd/scrap.ts +++ b/packages/opencode/src/cli/cmd/scrap.ts @@ -7,12 +7,9 @@ export const ScrapCommand = cmd({ builder: (yargs) => yargs.positional("file", { type: "string", demandOption: true }), async handler(args) { - await App.provide( - { cwd: process.cwd() }, - async () => { - await LSP.touchFile(args.file, true) - console.log(await LSP.diagnostics()) - }, - ) + await App.provide({ cwd: process.cwd() }, async () => { + await LSP.touchFile(args.file, true) + console.log(await LSP.diagnostics()) + }) }, }) diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts index 7aef384c..0a873ce1 100644 --- a/packages/opencode/src/format/index.ts +++ b/packages/opencode/src/format/index.ts @@ -1,13 +1,13 @@ -import { App } from '../app/app' -import { BunProc } from '../bun' -import { Config } from '../config/config' -import { Log } from '../util/log' -import path from 'path' +import { App } from "../app/app" +import { BunProc } from "../bun" +import { Config } from "../config/config" +import { Log } from "../util/log" +import path from "path" export namespace Format { - const log = Log.create({ service: 'format' }) + const log = Log.create({ service: "format" }) - const state = App.state('format', async () => { + const state = App.state("format", async () => { const hooks: Record = {} for (const item of FORMATTERS) { if (await item.enabled()) { @@ -42,22 +42,22 @@ export namespace Format { }) export async function run(file: string) { - log.info('formatting', { file }) + log.info("formatting", { file }) const { hooks } = await state() const ext = path.extname(file) const match = hooks[ext] if (!match) return for (const item of match) { - log.info('running', { command: item.command }) + log.info("running", { command: item.command }) const proc = Bun.spawn({ - cmd: item.command.map((x) => x.replace('$FILE', file)), + cmd: item.command.map((x) => x.replace("$FILE", file)), cwd: App.info().path.cwd, env: item.environment, }) const exit = await proc.exited if (exit !== 0) - log.error('failed', { + log.error("failed", { command: item.command, ...item.environment, }) @@ -79,58 +79,58 @@ export namespace Format { const FORMATTERS: Native[] = [ { - name: 'prettier', - extensions: [ - '.js', - '.jsx', - '.mjs', - '.cjs', - '.ts', - '.tsx', - '.mts', - '.cts', - '.html', - '.htm', - '.css', - '.scss', - '.sass', - '.less', - '.vue', - '.svelte', - '.json', - '.jsonc', - '.yaml', - '.yml', - '.toml', - '.xml', - '.md', - '.mdx', - '.php', - '.rb', - '.java', - '.go', - '.rs', - '.swift', - '.kt', - '.kts', - '.sol', - '.graphql', - '.gql', - ], - command: [BunProc.which(), 'run', 'prettier', '--write', '$FILE'], + name: "prettier", + command: [BunProc.which(), "run", "prettier", "--write", "$FILE"], environment: { - BUN_BE_BUN: '1', + BUN_BE_BUN: "1", }, + extensions: [ + ".js", + ".jsx", + ".mjs", + ".cjs", + ".ts", + ".tsx", + ".mts", + ".cts", + ".html", + ".htm", + ".css", + ".scss", + ".sass", + ".less", + ".vue", + ".svelte", + ".json", + ".jsonc", + ".yaml", + ".yml", + ".toml", + ".xml", + ".md", + ".mdx", + ".php", + ".rb", + ".java", + ".go", + ".rs", + ".swift", + ".kt", + ".kts", + ".sol", + ".graphql", + ".gql", + ], async enabled() { try { const proc = Bun.spawn({ - cmd: [BunProc.which(), 'run', 'prettier', '--version'], + cmd: [BunProc.which(), "run", "prettier", "--version"], cwd: App.info().path.cwd, env: { - BUN_BE_BUN: '1', + BUN_BE_BUN: "1", }, - stdout: 'ignore', - stderr: 'ignore', + stdout: "ignore", + stderr: "ignore", }) const exit = await proc.exited return exit === 0 diff --git a/packages/opencode/src/tool/edit.ts b/packages/opencode/src/tool/edit.ts index f1e6535d..d597635e 100644 --- a/packages/opencode/src/tool/edit.ts +++ b/packages/opencode/src/tool/edit.ts @@ -80,6 +80,7 @@ export const EditTool = Tool.define({ ) await file.write(contentNew) await Format.run(filepath) + contentNew = await file.text() })() const diff = trimDiff( diff --git a/packages/opencode/src/util/lazy.ts b/packages/opencode/src/util/lazy.ts index 8b7ded89..3533bcc8 100644 --- a/packages/opencode/src/util/lazy.ts +++ b/packages/opencode/src/util/lazy.ts @@ -8,4 +8,3 @@ export function lazy(fn: () => T) { return value as T } } - diff --git a/packages/opencode/src/util/log.ts b/packages/opencode/src/util/log.ts index 7db81de0..b73e2dee 100644 --- a/packages/opencode/src/util/log.ts +++ b/packages/opencode/src/util/log.ts @@ -19,7 +19,10 @@ export namespace Log { await fs.mkdir(dir, { recursive: true }) cleanup(dir) if (options.print) return - logpath = path.join(dir, new Date().toISOString().split(".")[0].replace(/:/g, "") + ".log") + logpath = path.join( + dir, + new Date().toISOString().split(".")[0].replace(/:/g, "") + ".log", + ) const logfile = Bun.file(logpath) await fs.truncate(logpath).catch(() => {}) const writer = logfile.writer() diff --git a/packages/opencode/sst-env.d.ts b/packages/opencode/sst-env.d.ts index b6a7e906..0397645b 100644 --- a/packages/opencode/sst-env.d.ts +++ b/packages/opencode/sst-env.d.ts @@ -6,4 +6,4 @@ /// import "sst" -export {} \ No newline at end of file +export {} diff --git a/packages/opencode/test/tool/edit.test.ts b/packages/opencode/test/tool/edit.test.ts index f5558eaa..6de4f2a7 100644 --- a/packages/opencode/test/tool/edit.test.ts +++ b/packages/opencode/test/tool/edit.test.ts @@ -316,13 +316,13 @@ const testCases: TestCase[] = [ // WhitespaceNormalizedReplacer - test regex special characters that could cause errors { content: 'const pattern = "test[123]";', - find: 'test[123]', - replace: 'test[456]', + find: "test[123]", + replace: "test[456]", }, { content: 'const regex = "^start.*end$";', - find: '^start.*end$', - replace: '^begin.*finish$', + find: "^start.*end$", + replace: "^begin.*finish$", }, // EscapeNormalizedReplacer - test single backslash vs double backslash diff --git a/packages/tui/AGENTS.md b/packages/tui/AGENTS.md index a757e926..0000db9b 100644 --- a/packages/tui/AGENTS.md +++ b/packages/tui/AGENTS.md @@ -23,4 +23,4 @@ - **Client**: Generated OpenAPI client communicates with TypeScript server - **Components**: Reusable UI components in `internal/components/` - **Themes**: JSON-based theming system with override hierarchy -- **State**: Centralized app state with message passing \ No newline at end of file +- **State**: Centralized app state with message passing diff --git a/packages/tui/internal/theme/themes/ayu.json b/packages/tui/internal/theme/themes/ayu.json index 3ea7a5ca..a42fce4c 100644 --- a/packages/tui/internal/theme/themes/ayu.json +++ b/packages/tui/internal/theme/themes/ayu.json @@ -78,4 +78,3 @@ "syntaxPunctuation": "darkFg" } } - diff --git a/packages/tui/internal/theme/themes/catppuccin.json b/packages/tui/internal/theme/themes/catppuccin.json index cc4d99f4..d0fa6a11 100644 --- a/packages/tui/internal/theme/themes/catppuccin.json +++ b/packages/tui/internal/theme/themes/catppuccin.json @@ -110,4 +110,3 @@ "syntaxPunctuation": { "dark": "darkText", "light": "lightText" } } } - diff --git a/packages/tui/internal/theme/themes/cobalt2.json b/packages/tui/internal/theme/themes/cobalt2.json index 5b9740e3..2967eae5 100644 --- a/packages/tui/internal/theme/themes/cobalt2.json +++ b/packages/tui/internal/theme/themes/cobalt2.json @@ -225,4 +225,4 @@ "light": "#193549" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/dracula.json b/packages/tui/internal/theme/themes/dracula.json index d57692fb..c837a0b5 100644 --- a/packages/tui/internal/theme/themes/dracula.json +++ b/packages/tui/internal/theme/themes/dracula.json @@ -216,4 +216,4 @@ "light": "#282a36" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/everforest.json b/packages/tui/internal/theme/themes/everforest.json index 19cbb9ac..62dfb31b 100644 --- a/packages/tui/internal/theme/themes/everforest.json +++ b/packages/tui/internal/theme/themes/everforest.json @@ -239,4 +239,3 @@ } } } - diff --git a/packages/tui/internal/theme/themes/github.json b/packages/tui/internal/theme/themes/github.json index b2708010..99a80879 100644 --- a/packages/tui/internal/theme/themes/github.json +++ b/packages/tui/internal/theme/themes/github.json @@ -230,4 +230,4 @@ "light": "lightFg" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/material.json b/packages/tui/internal/theme/themes/material.json index bdb10a7f..c3a10680 100644 --- a/packages/tui/internal/theme/themes/material.json +++ b/packages/tui/internal/theme/themes/material.json @@ -232,4 +232,4 @@ "light": "lightFg" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/monokai.json b/packages/tui/internal/theme/themes/monokai.json index 39a5385e..09637a1e 100644 --- a/packages/tui/internal/theme/themes/monokai.json +++ b/packages/tui/internal/theme/themes/monokai.json @@ -218,4 +218,4 @@ "light": "#272822" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/opencode.json b/packages/tui/internal/theme/themes/opencode.json index bdef5ab3..8f585a45 100644 --- a/packages/tui/internal/theme/themes/opencode.json +++ b/packages/tui/internal/theme/themes/opencode.json @@ -243,4 +243,3 @@ } } } - diff --git a/packages/tui/internal/theme/themes/palenight.json b/packages/tui/internal/theme/themes/palenight.json index c786b4c6..79f7c59e 100644 --- a/packages/tui/internal/theme/themes/palenight.json +++ b/packages/tui/internal/theme/themes/palenight.json @@ -219,4 +219,4 @@ "light": "#292d3e" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/rosepine.json b/packages/tui/internal/theme/themes/rosepine.json index 612951d0..444cdbd1 100644 --- a/packages/tui/internal/theme/themes/rosepine.json +++ b/packages/tui/internal/theme/themes/rosepine.json @@ -231,4 +231,4 @@ "light": "dawnSubtle" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/solarized.json b/packages/tui/internal/theme/themes/solarized.json index 2a8a3698..e4de1136 100644 --- a/packages/tui/internal/theme/themes/solarized.json +++ b/packages/tui/internal/theme/themes/solarized.json @@ -220,4 +220,4 @@ "light": "base00" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/synthwave84.json b/packages/tui/internal/theme/themes/synthwave84.json index a886eb94..d25bf3b4 100644 --- a/packages/tui/internal/theme/themes/synthwave84.json +++ b/packages/tui/internal/theme/themes/synthwave84.json @@ -223,4 +223,4 @@ "light": "#262335" } } -} \ No newline at end of file +} diff --git a/packages/tui/internal/theme/themes/tokyonight.json b/packages/tui/internal/theme/themes/tokyonight.json index cfd3c7ce..1c9503a4 100644 --- a/packages/tui/internal/theme/themes/tokyonight.json +++ b/packages/tui/internal/theme/themes/tokyonight.json @@ -241,4 +241,3 @@ } } } - diff --git a/packages/tui/internal/theme/themes/zenburn.json b/packages/tui/internal/theme/themes/zenburn.json index 04b338eb..c4475923 100644 --- a/packages/tui/internal/theme/themes/zenburn.json +++ b/packages/tui/internal/theme/themes/zenburn.json @@ -220,4 +220,4 @@ "light": "#3f3f3f" } } -} \ No newline at end of file +} diff --git a/packages/tui/pkg/client/gen/openapi.json b/packages/tui/pkg/client/gen/openapi.json index e804accf..78d499e7 100644 --- a/packages/tui/pkg/client/gen/openapi.json +++ b/packages/tui/pkg/client/gen/openapi.json @@ -115,11 +115,7 @@ "type": "string" } }, - "required": [ - "sessionID", - "providerID", - "modelID" - ] + "required": ["sessionID", "providerID", "modelID"] } } } @@ -149,12 +145,7 @@ "type": "string" } }, - "required": [ - "root", - "data", - "cwd", - "config" - ] + "required": ["root", "data", "cwd", "config"] } } } @@ -221,9 +212,7 @@ "type": "string" } }, - "required": [ - "sessionID" - ] + "required": ["sessionID"] } } } @@ -257,9 +246,7 @@ "type": "string" } }, - "required": [ - "sessionID" - ] + "required": ["sessionID"] } } } @@ -296,9 +283,7 @@ "type": "string" } }, - "required": [ - "sessionID" - ] + "required": ["sessionID"] } } } @@ -354,9 +339,7 @@ "type": "string" } }, - "required": [ - "sessionID" - ] + "required": ["sessionID"] } } } @@ -390,9 +373,7 @@ "type": "string" } }, - "required": [ - "sessionID" - ] + "required": ["sessionID"] } } } @@ -432,11 +413,7 @@ "type": "string" } }, - "required": [ - "sessionID", - "providerID", - "modelID" - ] + "required": ["sessionID", "providerID", "modelID"] } } } @@ -482,12 +459,7 @@ } } }, - "required": [ - "sessionID", - "providerID", - "modelID", - "parts" - ] + "required": ["sessionID", "providerID", "modelID", "parts"] } } } @@ -517,10 +489,7 @@ } } }, - "required": [ - "providers", - "default" - ] + "required": ["providers", "default"] } } } @@ -561,9 +530,7 @@ "type": "string" } }, - "required": [ - "query" - ] + "required": ["query"] } } } @@ -652,15 +619,10 @@ }, "content": {} }, - "required": [ - "key" - ] + "required": ["key"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "Event.installation.updated": { "type": "object", @@ -676,15 +638,10 @@ "type": "string" } }, - "required": [ - "version" - ] + "required": ["version"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "Event.lsp.client.diagnostics": { "type": "object", @@ -703,16 +660,10 @@ "type": "string" } }, - "required": [ - "serverID", - "path" - ] + "required": ["serverID", "path"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "Event.permission.updated": { "type": "object", @@ -725,10 +676,7 @@ "$ref": "#/components/schemas/permission.info" } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "permission.info": { "type": "object", @@ -753,18 +701,10 @@ "type": "number" } }, - "required": [ - "created" - ] + "required": ["created"] } }, - "required": [ - "id", - "sessionID", - "title", - "metadata", - "time" - ] + "required": ["id", "sessionID", "title", "metadata", "time"] }, "Event.message.updated": { "type": "object", @@ -780,15 +720,10 @@ "$ref": "#/components/schemas/Message.Info" } }, - "required": [ - "info" - ] + "required": ["info"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "Message.Info": { "type": "object", @@ -798,10 +733,7 @@ }, "role": { "type": "string", - "enum": [ - "user", - "assistant" - ] + "enum": ["user", "assistant"] }, "parts": { "type": "array", @@ -813,12 +745,7 @@ "$ref": "#/components/schemas/Message.Metadata" } }, - "required": [ - "id", - "role", - "parts", - "metadata" - ] + "required": ["id", "role", "parts", "metadata"] }, "Message.Part": { "oneOf": [ @@ -864,10 +791,7 @@ "type": "string" } }, - "required": [ - "type", - "text" - ] + "required": ["type", "text"] }, "Message.Part.Reasoning": { "type": "object", @@ -884,10 +808,7 @@ "additionalProperties": {} } }, - "required": [ - "type", - "text" - ] + "required": ["type", "text"] }, "Message.Part.ToolInvocation": { "type": "object", @@ -900,10 +821,7 @@ "$ref": "#/components/schemas/Message.ToolInvocation" } }, - "required": [ - "type", - "toolInvocation" - ] + "required": ["type", "toolInvocation"] }, "Message.ToolInvocation": { "oneOf": [ @@ -944,11 +862,7 @@ }, "args": {} }, - "required": [ - "state", - "toolCallId", - "toolName" - ] + "required": ["state", "toolCallId", "toolName"] }, "Message.ToolInvocation.ToolPartialCall": { "type": "object", @@ -968,11 +882,7 @@ }, "args": {} }, - "required": [ - "state", - "toolCallId", - "toolName" - ] + "required": ["state", "toolCallId", "toolName"] }, "Message.ToolInvocation.ToolResult": { "type": "object", @@ -995,12 +905,7 @@ "type": "string" } }, - "required": [ - "state", - "toolCallId", - "toolName", - "result" - ] + "required": ["state", "toolCallId", "toolName", "result"] }, "Message.Part.SourceUrl": { "type": "object", @@ -1023,11 +928,7 @@ "additionalProperties": {} } }, - "required": [ - "type", - "sourceId", - "url" - ] + "required": ["type", "sourceId", "url"] }, "Message.Part.File": { "type": "object", @@ -1046,11 +947,7 @@ "type": "string" } }, - "required": [ - "type", - "mediaType", - "url" - ] + "required": ["type", "mediaType", "url"] }, "Message.Part.StepStart": { "type": "object", @@ -1060,9 +957,7 @@ "const": "step-start" } }, - "required": [ - "type" - ] + "required": ["type"] }, "Message.Metadata": { "type": "object", @@ -1077,9 +972,7 @@ "type": "number" } }, - "required": [ - "created" - ] + "required": ["created"] }, "error": { "oneOf": [ @@ -1119,16 +1012,10 @@ "type": "number" } }, - "required": [ - "start", - "end" - ] + "required": ["start", "end"] } }, - "required": [ - "title", - "time" - ], + "required": ["title", "time"], "additionalProperties": {} } }, @@ -1157,10 +1044,7 @@ "type": "string" } }, - "required": [ - "cwd", - "root" - ] + "required": ["cwd", "root"] }, "cost": { "type": "number" @@ -1190,18 +1074,10 @@ "type": "number" } }, - "required": [ - "read", - "write" - ] + "required": ["read", "write"] } }, - "required": [ - "input", - "output", - "reasoning", - "cache" - ] + "required": ["input", "output", "reasoning", "cache"] } }, "required": [ @@ -1214,11 +1090,7 @@ ] } }, - "required": [ - "time", - "sessionID", - "tool" - ] + "required": ["time", "sessionID", "tool"] }, "ProviderAuthError": { "type": "object", @@ -1237,16 +1109,10 @@ "type": "string" } }, - "required": [ - "providerID", - "message" - ] + "required": ["providerID", "message"] } }, - "required": [ - "name", - "data" - ] + "required": ["name", "data"] }, "UnknownError": { "type": "object", @@ -1262,15 +1128,10 @@ "type": "string" } }, - "required": [ - "message" - ] + "required": ["message"] } }, - "required": [ - "name", - "data" - ] + "required": ["name", "data"] }, "Event.message.part.updated": { "type": "object", @@ -1292,17 +1153,10 @@ "type": "string" } }, - "required": [ - "part", - "sessionID", - "messageID" - ] + "required": ["part", "sessionID", "messageID"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "Event.session.updated": { "type": "object", @@ -1318,15 +1172,10 @@ "$ref": "#/components/schemas/session.info" } }, - "required": [ - "info" - ] + "required": ["info"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "session.info": { "type": "object", @@ -1346,9 +1195,7 @@ "type": "string" } }, - "required": [ - "url" - ] + "required": ["url"] }, "title": { "type": "string" @@ -1366,18 +1213,10 @@ "type": "number" } }, - "required": [ - "created", - "updated" - ] + "required": ["created", "updated"] } }, - "required": [ - "id", - "title", - "version", - "time" - ] + "required": ["id", "title", "version", "time"] }, "Event.session.deleted": { "type": "object", @@ -1393,15 +1232,10 @@ "$ref": "#/components/schemas/session.info" } }, - "required": [ - "info" - ] + "required": ["info"] } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "Event.session.error": { "type": "object", @@ -1433,10 +1267,7 @@ } } }, - "required": [ - "type", - "properties" - ] + "required": ["type", "properties"] }, "App.Info": { "type": "object", @@ -1466,13 +1297,7 @@ "type": "string" } }, - "required": [ - "config", - "data", - "root", - "cwd", - "state" - ] + "required": ["config", "data", "root", "cwd", "state"] }, "time": { "type": "object", @@ -1483,12 +1308,7 @@ } } }, - "required": [ - "user", - "git", - "path", - "time" - ] + "required": ["user", "git", "path", "time"] }, "Config.Info": { "type": "object", @@ -1583,10 +1403,7 @@ "type": "number" } }, - "required": [ - "input", - "output" - ] + "required": ["input", "output"] }, "limit": { "type": "object", @@ -1598,10 +1415,7 @@ "type": "number" } }, - "required": [ - "context", - "output" - ] + "required": ["context", "output"] }, "id": { "type": "string" @@ -1618,9 +1432,7 @@ "additionalProperties": {} } }, - "required": [ - "models" - ] + "required": ["models"] }, "description": "Custom provider configurations and model overrides" }, @@ -1790,12 +1602,7 @@ } } }, - "required": [ - "name", - "env", - "id", - "models" - ] + "required": ["name", "env", "id", "models"] }, "Model.Info": { "type": "object", @@ -1831,10 +1638,7 @@ "type": "number" } }, - "required": [ - "input", - "output" - ] + "required": ["input", "output"] }, "limit": { "type": "object", @@ -1846,10 +1650,7 @@ "type": "number" } }, - "required": [ - "context", - "output" - ] + "required": ["context", "output"] }, "id": { "type": "string" @@ -1894,10 +1695,7 @@ "description": "Environment variables to set when running the MCP server" } }, - "required": [ - "type", - "command" - ], + "required": ["type", "command"], "additionalProperties": false }, "Config.McpRemote": { @@ -1913,10 +1711,7 @@ "description": "URL of the remote MCP server" } }, - "required": [ - "type", - "url" - ], + "required": ["type", "url"], "additionalProperties": false }, "Error": { @@ -1927,9 +1722,7 @@ "additionalProperties": {} } }, - "required": [ - "data" - ] + "required": ["data"] }, "InstallationInfo": { "type": "object", @@ -1941,11 +1734,8 @@ "type": "string" } }, - "required": [ - "version", - "latest" - ] + "required": ["version", "latest"] } } } -} \ No newline at end of file +} diff --git a/packages/web/astro.config.mjs b/packages/web/astro.config.mjs index e1b3496d..9099c6df 100644 --- a/packages/web/astro.config.mjs +++ b/packages/web/astro.config.mjs @@ -32,9 +32,7 @@ export default defineConfig({ starlight({ title: "opencode", expressiveCode: { themes: ["github-light", "github-dark"] }, - social: [ - { icon: "github", label: "GitHub", href: config.github }, - ], + social: [{ icon: "github", label: "GitHub", href: config.github }], head: [ { tag: "link",