ignore: run prettier

This commit is contained in:
Dax Raad 2025-06-26 22:30:44 -04:00
parent f8b78f08b4
commit 51bf193889
31 changed files with 179 additions and 411 deletions

View file

@ -3,7 +3,11 @@
"experimental": { "experimental": {
"hook": { "hook": {
"file_edited": { "file_edited": {
".json": [] ".json": [
{
"command": ["bun", "run", "prettier", "$FILE"]
}
]
}, },
"session_completed": [ "session_completed": [
{ {

View file

@ -6,18 +6,18 @@
import "sst" import "sst"
declare module "sst" { declare module "sst" {
export interface Resource { export interface Resource {
"Web": { Web: {
"type": "sst.cloudflare.Astro" type: "sst.cloudflare.Astro"
"url": string url: string
} }
} }
} }
// cloudflare // cloudflare
import * as cloudflare from "@cloudflare/workers-types"; import * as cloudflare from "@cloudflare/workers-types"
declare module "sst" { declare module "sst" {
export interface Resource { export interface Resource {
"Api": cloudflare.Service Api: cloudflare.Service
"Bucket": cloudflare.R2Bucket Bucket: cloudflare.R2Bucket
} }
} }

View file

@ -202,10 +202,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["input", "output"],
"input",
"output"
],
"additionalProperties": false "additionalProperties": false
}, },
"limit": { "limit": {
@ -218,10 +215,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["context", "output"],
"context",
"output"
],
"additionalProperties": false "additionalProperties": false
}, },
"id": { "id": {
@ -240,9 +234,7 @@
"additionalProperties": {} "additionalProperties": {}
} }
}, },
"required": [ "required": ["models"],
"models"
],
"additionalProperties": false "additionalProperties": false
}, },
"description": "Custom provider configurations and model overrides" "description": "Custom provider configurations and model overrides"
@ -274,10 +266,7 @@
"description": "Environment variables to set when running the MCP server" "description": "Environment variables to set when running the MCP server"
} }
}, },
"required": [ "required": ["type", "command"],
"type",
"command"
],
"additionalProperties": false "additionalProperties": false
}, },
{ {
@ -293,10 +282,7 @@
"description": "URL of the remote MCP server" "description": "URL of the remote MCP server"
} }
}, },
"required": [ "required": ["type", "url"],
"type",
"url"
],
"additionalProperties": false "additionalProperties": false
} }
] ]
@ -329,9 +315,7 @@
} }
} }
}, },
"required": [ "required": ["command"],
"command"
],
"additionalProperties": false "additionalProperties": false
} }
} }
@ -354,9 +338,7 @@
} }
} }
}, },
"required": [ "required": ["command"],
"command"
],
"additionalProperties": false "additionalProperties": false
} }
} }

View file

@ -142,4 +142,3 @@ export namespace App {
.replace(/[^A-Za-z0-9_]/g, "-") .replace(/[^A-Za-z0-9_]/g, "-")
} }
} }

View file

@ -46,14 +46,14 @@ export const AuthListCommand = cmd({
prompts.outro(`${results.length} credentials`) prompts.outro(`${results.length} credentials`)
// Environment variables section // 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 [providerID, provider] of Object.entries(database)) {
for (const envVar of provider.env) { for (const envVar of provider.env) {
if (process.env[envVar]) { if (process.env[envVar]) {
activeEnvVars.push({ activeEnvVars.push({
provider: provider.name || providerID, provider: provider.name || providerID,
envVar envVar,
}) })
} }
} }

View file

@ -7,12 +7,9 @@ export const ScrapCommand = cmd({
builder: (yargs) => builder: (yargs) =>
yargs.positional("file", { type: "string", demandOption: true }), yargs.positional("file", { type: "string", demandOption: true }),
async handler(args) { async handler(args) {
await App.provide( await App.provide({ cwd: process.cwd() }, async () => {
{ cwd: process.cwd() },
async () => {
await LSP.touchFile(args.file, true) await LSP.touchFile(args.file, true)
console.log(await LSP.diagnostics()) console.log(await LSP.diagnostics())
}, })
)
}, },
}) })

View file

@ -1,13 +1,13 @@
import { App } from '../app/app' import { App } from "../app/app"
import { BunProc } from '../bun' import { BunProc } from "../bun"
import { Config } from '../config/config' import { Config } from "../config/config"
import { Log } from '../util/log' import { Log } from "../util/log"
import path from 'path' import path from "path"
export namespace Format { 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<string, Hook[]> = {} const hooks: Record<string, Hook[]> = {}
for (const item of FORMATTERS) { for (const item of FORMATTERS) {
if (await item.enabled()) { if (await item.enabled()) {
@ -42,22 +42,22 @@ export namespace Format {
}) })
export async function run(file: string) { export async function run(file: string) {
log.info('formatting', { file }) log.info("formatting", { file })
const { hooks } = await state() const { hooks } = await state()
const ext = path.extname(file) const ext = path.extname(file)
const match = hooks[ext] const match = hooks[ext]
if (!match) return if (!match) return
for (const item of match) { for (const item of match) {
log.info('running', { command: item.command }) log.info("running", { command: item.command })
const proc = Bun.spawn({ 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, cwd: App.info().path.cwd,
env: item.environment, env: item.environment,
}) })
const exit = await proc.exited const exit = await proc.exited
if (exit !== 0) if (exit !== 0)
log.error('failed', { log.error("failed", {
command: item.command, command: item.command,
...item.environment, ...item.environment,
}) })
@ -79,58 +79,58 @@ export namespace Format {
const FORMATTERS: Native[] = [ const FORMATTERS: Native[] = [
{ {
name: 'prettier', name: "prettier",
extensions: [ command: [BunProc.which(), "run", "prettier", "--write", "$FILE"],
'.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'],
environment: { 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() { async enabled() {
try { try {
const proc = Bun.spawn({ const proc = Bun.spawn({
cmd: [BunProc.which(), 'run', 'prettier', '--version'], cmd: [BunProc.which(), "run", "prettier", "--version"],
cwd: App.info().path.cwd, cwd: App.info().path.cwd,
env: { env: {
BUN_BE_BUN: '1', BUN_BE_BUN: "1",
}, },
stdout: 'ignore', stdout: "ignore",
stderr: 'ignore', stderr: "ignore",
}) })
const exit = await proc.exited const exit = await proc.exited
return exit === 0 return exit === 0

View file

@ -80,6 +80,7 @@ export const EditTool = Tool.define({
) )
await file.write(contentNew) await file.write(contentNew)
await Format.run(filepath) await Format.run(filepath)
contentNew = await file.text()
})() })()
const diff = trimDiff( const diff = trimDiff(

View file

@ -8,4 +8,3 @@ export function lazy<T>(fn: () => T) {
return value as T return value as T
} }
} }

View file

@ -19,7 +19,10 @@ export namespace Log {
await fs.mkdir(dir, { recursive: true }) await fs.mkdir(dir, { recursive: true })
cleanup(dir) cleanup(dir)
if (options.print) return 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) const logfile = Bun.file(logpath)
await fs.truncate(logpath).catch(() => {}) await fs.truncate(logpath).catch(() => {})
const writer = logfile.writer() const writer = logfile.writer()

View file

@ -316,13 +316,13 @@ const testCases: TestCase[] = [
// WhitespaceNormalizedReplacer - test regex special characters that could cause errors // WhitespaceNormalizedReplacer - test regex special characters that could cause errors
{ {
content: 'const pattern = "test[123]";', content: 'const pattern = "test[123]";',
find: 'test[123]', find: "test[123]",
replace: 'test[456]', replace: "test[456]",
}, },
{ {
content: 'const regex = "^start.*end$";', content: 'const regex = "^start.*end$";',
find: '^start.*end$', find: "^start.*end$",
replace: '^begin.*finish$', replace: "^begin.*finish$",
}, },
// EscapeNormalizedReplacer - test single backslash vs double backslash // EscapeNormalizedReplacer - test single backslash vs double backslash

View file

@ -78,4 +78,3 @@
"syntaxPunctuation": "darkFg" "syntaxPunctuation": "darkFg"
} }
} }

View file

@ -110,4 +110,3 @@
"syntaxPunctuation": { "dark": "darkText", "light": "lightText" } "syntaxPunctuation": { "dark": "darkText", "light": "lightText" }
} }
} }

View file

@ -239,4 +239,3 @@
} }
} }
} }

View file

@ -243,4 +243,3 @@
} }
} }
} }

View file

@ -241,4 +241,3 @@
} }
} }
} }

View file

@ -115,11 +115,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID", "providerID", "modelID"]
"sessionID",
"providerID",
"modelID"
]
} }
} }
} }
@ -149,12 +145,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["root", "data", "cwd", "config"]
"root",
"data",
"cwd",
"config"
]
} }
} }
} }
@ -221,9 +212,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID"]
"sessionID"
]
} }
} }
} }
@ -257,9 +246,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID"]
"sessionID"
]
} }
} }
} }
@ -296,9 +283,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID"]
"sessionID"
]
} }
} }
} }
@ -354,9 +339,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID"]
"sessionID"
]
} }
} }
} }
@ -390,9 +373,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID"]
"sessionID"
]
} }
} }
} }
@ -432,11 +413,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["sessionID", "providerID", "modelID"]
"sessionID",
"providerID",
"modelID"
]
} }
} }
} }
@ -482,12 +459,7 @@
} }
} }
}, },
"required": [ "required": ["sessionID", "providerID", "modelID", "parts"]
"sessionID",
"providerID",
"modelID",
"parts"
]
} }
} }
} }
@ -517,10 +489,7 @@
} }
} }
}, },
"required": [ "required": ["providers", "default"]
"providers",
"default"
]
} }
} }
} }
@ -561,9 +530,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["query"]
"query"
]
} }
} }
} }
@ -652,15 +619,10 @@
}, },
"content": {} "content": {}
}, },
"required": [ "required": ["key"]
"key"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"Event.installation.updated": { "Event.installation.updated": {
"type": "object", "type": "object",
@ -676,15 +638,10 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["version"]
"version"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"Event.lsp.client.diagnostics": { "Event.lsp.client.diagnostics": {
"type": "object", "type": "object",
@ -703,16 +660,10 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["serverID", "path"]
"serverID",
"path"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"Event.permission.updated": { "Event.permission.updated": {
"type": "object", "type": "object",
@ -725,10 +676,7 @@
"$ref": "#/components/schemas/permission.info" "$ref": "#/components/schemas/permission.info"
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"permission.info": { "permission.info": {
"type": "object", "type": "object",
@ -753,18 +701,10 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["created"]
"created"
]
} }
}, },
"required": [ "required": ["id", "sessionID", "title", "metadata", "time"]
"id",
"sessionID",
"title",
"metadata",
"time"
]
}, },
"Event.message.updated": { "Event.message.updated": {
"type": "object", "type": "object",
@ -780,15 +720,10 @@
"$ref": "#/components/schemas/Message.Info" "$ref": "#/components/schemas/Message.Info"
} }
}, },
"required": [ "required": ["info"]
"info"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"Message.Info": { "Message.Info": {
"type": "object", "type": "object",
@ -798,10 +733,7 @@
}, },
"role": { "role": {
"type": "string", "type": "string",
"enum": [ "enum": ["user", "assistant"]
"user",
"assistant"
]
}, },
"parts": { "parts": {
"type": "array", "type": "array",
@ -813,12 +745,7 @@
"$ref": "#/components/schemas/Message.Metadata" "$ref": "#/components/schemas/Message.Metadata"
} }
}, },
"required": [ "required": ["id", "role", "parts", "metadata"]
"id",
"role",
"parts",
"metadata"
]
}, },
"Message.Part": { "Message.Part": {
"oneOf": [ "oneOf": [
@ -864,10 +791,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["type", "text"]
"type",
"text"
]
}, },
"Message.Part.Reasoning": { "Message.Part.Reasoning": {
"type": "object", "type": "object",
@ -884,10 +808,7 @@
"additionalProperties": {} "additionalProperties": {}
} }
}, },
"required": [ "required": ["type", "text"]
"type",
"text"
]
}, },
"Message.Part.ToolInvocation": { "Message.Part.ToolInvocation": {
"type": "object", "type": "object",
@ -900,10 +821,7 @@
"$ref": "#/components/schemas/Message.ToolInvocation" "$ref": "#/components/schemas/Message.ToolInvocation"
} }
}, },
"required": [ "required": ["type", "toolInvocation"]
"type",
"toolInvocation"
]
}, },
"Message.ToolInvocation": { "Message.ToolInvocation": {
"oneOf": [ "oneOf": [
@ -944,11 +862,7 @@
}, },
"args": {} "args": {}
}, },
"required": [ "required": ["state", "toolCallId", "toolName"]
"state",
"toolCallId",
"toolName"
]
}, },
"Message.ToolInvocation.ToolPartialCall": { "Message.ToolInvocation.ToolPartialCall": {
"type": "object", "type": "object",
@ -968,11 +882,7 @@
}, },
"args": {} "args": {}
}, },
"required": [ "required": ["state", "toolCallId", "toolName"]
"state",
"toolCallId",
"toolName"
]
}, },
"Message.ToolInvocation.ToolResult": { "Message.ToolInvocation.ToolResult": {
"type": "object", "type": "object",
@ -995,12 +905,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["state", "toolCallId", "toolName", "result"]
"state",
"toolCallId",
"toolName",
"result"
]
}, },
"Message.Part.SourceUrl": { "Message.Part.SourceUrl": {
"type": "object", "type": "object",
@ -1023,11 +928,7 @@
"additionalProperties": {} "additionalProperties": {}
} }
}, },
"required": [ "required": ["type", "sourceId", "url"]
"type",
"sourceId",
"url"
]
}, },
"Message.Part.File": { "Message.Part.File": {
"type": "object", "type": "object",
@ -1046,11 +947,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["type", "mediaType", "url"]
"type",
"mediaType",
"url"
]
}, },
"Message.Part.StepStart": { "Message.Part.StepStart": {
"type": "object", "type": "object",
@ -1060,9 +957,7 @@
"const": "step-start" "const": "step-start"
} }
}, },
"required": [ "required": ["type"]
"type"
]
}, },
"Message.Metadata": { "Message.Metadata": {
"type": "object", "type": "object",
@ -1077,9 +972,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["created"]
"created"
]
}, },
"error": { "error": {
"oneOf": [ "oneOf": [
@ -1119,16 +1012,10 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["start", "end"]
"start",
"end"
]
} }
}, },
"required": [ "required": ["title", "time"],
"title",
"time"
],
"additionalProperties": {} "additionalProperties": {}
} }
}, },
@ -1157,10 +1044,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["cwd", "root"]
"cwd",
"root"
]
}, },
"cost": { "cost": {
"type": "number" "type": "number"
@ -1190,18 +1074,10 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["read", "write"]
"read",
"write"
]
} }
}, },
"required": [ "required": ["input", "output", "reasoning", "cache"]
"input",
"output",
"reasoning",
"cache"
]
} }
}, },
"required": [ "required": [
@ -1214,11 +1090,7 @@
] ]
} }
}, },
"required": [ "required": ["time", "sessionID", "tool"]
"time",
"sessionID",
"tool"
]
}, },
"ProviderAuthError": { "ProviderAuthError": {
"type": "object", "type": "object",
@ -1237,16 +1109,10 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["providerID", "message"]
"providerID",
"message"
]
} }
}, },
"required": [ "required": ["name", "data"]
"name",
"data"
]
}, },
"UnknownError": { "UnknownError": {
"type": "object", "type": "object",
@ -1262,15 +1128,10 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["message"]
"message"
]
} }
}, },
"required": [ "required": ["name", "data"]
"name",
"data"
]
}, },
"Event.message.part.updated": { "Event.message.part.updated": {
"type": "object", "type": "object",
@ -1292,17 +1153,10 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["part", "sessionID", "messageID"]
"part",
"sessionID",
"messageID"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"Event.session.updated": { "Event.session.updated": {
"type": "object", "type": "object",
@ -1318,15 +1172,10 @@
"$ref": "#/components/schemas/session.info" "$ref": "#/components/schemas/session.info"
} }
}, },
"required": [ "required": ["info"]
"info"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"session.info": { "session.info": {
"type": "object", "type": "object",
@ -1346,9 +1195,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["url"]
"url"
]
}, },
"title": { "title": {
"type": "string" "type": "string"
@ -1366,18 +1213,10 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["created", "updated"]
"created",
"updated"
]
} }
}, },
"required": [ "required": ["id", "title", "version", "time"]
"id",
"title",
"version",
"time"
]
}, },
"Event.session.deleted": { "Event.session.deleted": {
"type": "object", "type": "object",
@ -1393,15 +1232,10 @@
"$ref": "#/components/schemas/session.info" "$ref": "#/components/schemas/session.info"
} }
}, },
"required": [ "required": ["info"]
"info"
]
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"Event.session.error": { "Event.session.error": {
"type": "object", "type": "object",
@ -1433,10 +1267,7 @@
} }
} }
}, },
"required": [ "required": ["type", "properties"]
"type",
"properties"
]
}, },
"App.Info": { "App.Info": {
"type": "object", "type": "object",
@ -1466,13 +1297,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["config", "data", "root", "cwd", "state"]
"config",
"data",
"root",
"cwd",
"state"
]
}, },
"time": { "time": {
"type": "object", "type": "object",
@ -1483,12 +1308,7 @@
} }
} }
}, },
"required": [ "required": ["user", "git", "path", "time"]
"user",
"git",
"path",
"time"
]
}, },
"Config.Info": { "Config.Info": {
"type": "object", "type": "object",
@ -1583,10 +1403,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["input", "output"]
"input",
"output"
]
}, },
"limit": { "limit": {
"type": "object", "type": "object",
@ -1598,10 +1415,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["context", "output"]
"context",
"output"
]
}, },
"id": { "id": {
"type": "string" "type": "string"
@ -1618,9 +1432,7 @@
"additionalProperties": {} "additionalProperties": {}
} }
}, },
"required": [ "required": ["models"]
"models"
]
}, },
"description": "Custom provider configurations and model overrides" "description": "Custom provider configurations and model overrides"
}, },
@ -1790,12 +1602,7 @@
} }
} }
}, },
"required": [ "required": ["name", "env", "id", "models"]
"name",
"env",
"id",
"models"
]
}, },
"Model.Info": { "Model.Info": {
"type": "object", "type": "object",
@ -1831,10 +1638,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["input", "output"]
"input",
"output"
]
}, },
"limit": { "limit": {
"type": "object", "type": "object",
@ -1846,10 +1650,7 @@
"type": "number" "type": "number"
} }
}, },
"required": [ "required": ["context", "output"]
"context",
"output"
]
}, },
"id": { "id": {
"type": "string" "type": "string"
@ -1894,10 +1695,7 @@
"description": "Environment variables to set when running the MCP server" "description": "Environment variables to set when running the MCP server"
} }
}, },
"required": [ "required": ["type", "command"],
"type",
"command"
],
"additionalProperties": false "additionalProperties": false
}, },
"Config.McpRemote": { "Config.McpRemote": {
@ -1913,10 +1711,7 @@
"description": "URL of the remote MCP server" "description": "URL of the remote MCP server"
} }
}, },
"required": [ "required": ["type", "url"],
"type",
"url"
],
"additionalProperties": false "additionalProperties": false
}, },
"Error": { "Error": {
@ -1927,9 +1722,7 @@
"additionalProperties": {} "additionalProperties": {}
} }
}, },
"required": [ "required": ["data"]
"data"
]
}, },
"InstallationInfo": { "InstallationInfo": {
"type": "object", "type": "object",
@ -1941,10 +1734,7 @@
"type": "string" "type": "string"
} }
}, },
"required": [ "required": ["version", "latest"]
"version",
"latest"
]
} }
} }
} }

View file

@ -32,9 +32,7 @@ export default defineConfig({
starlight({ starlight({
title: "opencode", title: "opencode",
expressiveCode: { themes: ["github-light", "github-dark"] }, expressiveCode: { themes: ["github-light", "github-dark"] },
social: [ social: [{ icon: "github", label: "GitHub", href: config.github }],
{ icon: "github", label: "GitHub", href: config.github },
],
head: [ head: [
{ {
tag: "link", tag: "link",